无论是商业还是家庭环境,害虫如鹿、驼鹿甚至猫都可能对花园、作物和财产造成损害。本系列文章将展示如何在Raspberry Pi上实时(或近实时)检测害虫,然后采取措施将其驱赶。目标是避免对害虫造成伤害,因此将专注于通过播放响亮的声音来吓走害虫。
本系列文章将指导完成以下步骤:首先,将展示如何应用预训练的深度神经网络(DNN)检测器来在视频中找到害虫。然后,将描述检测无法通过大多数现有DNN检测器检测到的异常害虫的可能解决方案。接下来,将专注于所选方法的实现。将解释如何收集DNN训练的数据集,并提供数据增强方法以扩展数据集。将训练一个用于检测罕见害虫的DNN,然后开发一个简单的运动检测器的计算机代码,并解释如何将其与训练好的DNN一起使用。最后,将为Raspberry Pi适配代码,并展示如何播放可怕的声音来驱赶检测到的害虫。
项目代码将使用Python 3.7编写,首先在PC上运行,然后在Raspberry Pi设备上运行。OpenCV库将为提供计算机视觉算法,Caffe DL框架将用于DNN训练。这些软件组件易于在PC上下载和安装。
第一个任务是使用像Raspberry Pi这样的边缘设备从摄像头的视频流中检测害虫。将使用AI来解决这个问题。现代AI在图像识别和视频处理中最强大的方法是使用深度神经网络(DNN)。各种类型的DNN已经成功应用于计算机视觉中最困难的问题,包括检测各种对象:人类、动物等。
为了实现目标,可以使用两种主要类型的DNN。第一种网络类型是简单的分类器。这是一个训练有素的DNN,用于定义图像中的对象属于哪个类别。图像分类是卷积神经网络(CNN)的主要成功,这导致了图像处理中深度学习(DL)的革命。分类器的一个优点是它们的高精确度。现代DNN分类器可以实现90%或更高的分类精度,用于具有数百甚至数千个类别的图像数据集。
然而,将分类器应用于任务存在一些挑战。一个问题是提交给分类器的图像应该只包含一个可识别的对象。另一个问题是,一个对象(如人类或动物)通常必须占据图像的大部分区域,分类器才能正确处理。由于害虫可能不会占据相机帧的大部分,需要找到一种方法来检测只占据图像一部分的对象。
可以通过使用另一种类型的DNN:检测器来规避分类器的限制。检测器网络可以确定图像是否包含某个类别的对象,并且还可以识别图像中对象的位置。检测器DNN可以用于包含多个不同类别对象的图像,因为它们首先定位单独的对象,然后对每个定位的对象进行分类。检测器DNN的唯一缺点是它们不如分类器准确。
总体而言,检测器网络将是案例中更可行的选择,所以选择检测器!
检测器DNN肯定可以帮助解决第一部分的问题——在图像中检测害虫。如果能做到这一点,也将能够在视频流中检测害虫。唯一的问题是否能够在边缘设备上实时做到这一点,例如Raspberry Pi。这些设备并不非常强大,所以在选择神经网络时应该非常小心。需要一个能够在边缘设备上实时运行的网络。