我是一位没有AI或机器学习经验的软件开发人员,但是现在我对开发这种软件感兴趣。我想开发一种软​​件,该软件可以识别某些特定对象,特别是从视频流(或一系列静态图像)中识别动物。

我看到有一个名为openCV的库,该库在本论坛中经常被评论,但是到目前为止,我看到的是该库是使用图像的助手,但我没有找到对象识别或自学习的部分。

openCV是一个好的起点吗?最好先学习一些理论?还是有其他针对对象识别的已开发库或框架?

EDIT
为了提供一些背景信息:我将用相机检查风景,大部分是静态的,但是有些叶子可能会随着风或某些人可能会介入,并且当某些动物进入视野时,我想发出警报,我可以将“动物”减少为仅鸟类(并非总是我会有很好的鸟类/天空对比度)。

大约15年前,我在有监督的神经网络上做了一些工作,并研究了一些AI和机器学习理论,但是我想从那以后事情已经大大改善了,这就是为什么我要求一些更实际的第一步。 br />
谢谢

评论

xkcd.com/1425

我投票结束这个问题是因为没有话题,因为这不是关于机器人技术的问题。

不一定那么难。如果您具有静态背景,那么您真正需要做的就是使用BackgroundSubtractorMOG2检测运动,而那些运动的部分可能就是动物。如果您的背景是平移的,那么只会稍微复杂一点。

@K。韦伯,我同意查克的观点,从总体上讲,这确实是一个高级话题。但是,如果您要进行“较小”的设置,则有一些方法可以“作弊”。您可以针对您的用例提供更多细节吗?例如,如果您确实只有动物(没有人类)的视频/图像,则可以使用一些可检测人脸的OpenCV库作弊……但这又取决于您真正想要实现的目标。

我确实认为这对机器人技术来说不是话题,但是我发现这是一个有趣的问题。

#1 楼

鉴于您正在使用“大部分”静态背景来执行更“受限”的目标,因此我建议您仅执行“背景图像减法”方法。在过去十年中走了很长一段路的“困难部分”是如何处理阴影,光线变化和树叶运动。

关于此主题的资源很多,但是经过快速的粗略搜索后,我发现了一个很好的资源:
http://www.pyimagesearch.com/2015/05/25 / basic-motion-detection-and-tracking-with-python-and-opencv /

这应该可以为您提供80%的解决方案。

如果您想更深入地尝试识别特定的动物,您可以遵循两种主要方法。最简单的是模板匹配,最困难的是创建贝叶斯分类器。

在这两种方法中,您都将:


收集数据的样本集(最有可能使用上面的输出)
以下任一项:


创建要与之匹配的模板
训练分类器以识别您想要的动物



注意:


开箱即用的模板匹配高度依赖于比例和方向。虽然可以从基本模板匹配开始,但您可能很快会想要创建一个高斯金字塔。这是一个很好的参考:https://stackoverflow.com/questions/22480485/image-matching-in-opencv-python

做好贝叶斯分类器很难,如果您只是在Google Scholar上搜索,您将看到有关该主题的大量论文。但是,这似乎是实现高精度的“必经之路”。通常,您会将基本分类器与其他一些机器学习技术(例如Markov模型)结合起来。如果您确实走这条路,我建议您尝试做一些“简单”的事情,而不是寻找整只鸟。相反,我建议您建议确定一个简单的功能,例如“定位”鸟/动物,例如定位“眼睛”或“喙”。

希望这会有所帮助。