目录
介绍
使用其他模型?
也许是另一个数据集?
不,使用其他模型——一个简单的模型
下一步
在这里,我们陈述使用预训练的SSD模型的问题。然后,我们提出了两种方法来检测这种不寻常的动物:1 ——针对动物类型微调预训练的SSD。2 ——开发我们自己的轻量级DNN(不是SSD)模型,并将其与运动检测器一起使用。最后,我们使用第二种方法并检测驼鹿。
- 下载源34.8 KB
- 下载模型-26 MB(外部链接)
野蛮的野生生物可能给企业和房主带来痛苦。鹿、驼鹿甚至猫等动物都会对花园、庄稼和财产造成破坏。
在本系列文章中,我们将演示如何在Raspberry Pi上实时(或近实时)检测有害生物(例如驼鹿),然后采取措施消除有害生物。由于我们不想造成任何伤害,我们将通过播放巨大的噪音来吓跑害虫。
欢迎您下载该项目的源代码。我们假设您熟悉Python并且对神经网络的工作原理有基本的了解。
在上一篇文章中,我们描述了如何使用在Pascal VOC 2012数据集上预先训练的MobileNet SSD模型检测动物。该模型可以检测二十种物体,包括猫和狗等潜在的家庭有害生物。不幸的是,它无法检测到野生动植物。在本文中,我们将探讨检测鹿、驼鹿和犰狳等野生生物害虫的方法。
使用其他模型?我们发现了一个似乎运作良好的物体检测器网络——只是它无法检测到我们想要识别的所有害虫。
我们是否应该使用包含鹿、驼鹿和犰狳类的替代DNN检测器模型?这可能可行,但请记住,我们的选择仅限于可以在没有太多计算能力的设备上运行的模型。
通常在少于100个类别的数据集上训练在此类设备上运行良好的模型。例如,流行的COCO数据集包含80个对象类别。因此,我们处于一种情况,即没有合适的经过预训练的DNN模型为我们要检测的每只动物都设有一个类。例如,COCO数据集没有驼鹿类。
也许是另一个数据集?这是另一个想法:如果我们在包含我们选择的害虫的新数据集上训练MobileNet模型,该怎么办?这种方法称为转移学习。它已被证明在计算机视觉的许多领域都有效。但是,转移学习如何工作?我们如何使用它?
首先,我们需要获取一个数据集,其中包含网络应识别的新有害生物的图像。
然后,在新数据集上训练基本DNN模型时,可以冻结网络的某些卷积层,以防止其内核(卷积滤波器)在训练过程中发生变化。其他层在新数据集上受到训练,使得模型被“调整”以检测新类。
这种方法的一个优势是,它使用了可靠的DNN模型,这为我们提供了获得准确结果以检测我们的“外来”害虫的良好机会。另一方面,微调SSD模型并非易事。它需要一个包含新有害生物的大型数据集,并且需要大量的经验和精力来对模型进行高精度调整。
不,使用其他模型——一个简单的模型另一种方法是创建我们自己的轻量级模型,该模型在边缘设备上可能更有效。在这种情况下,为简化分类器,我们可能应该牺牲SSD模型的多功能性。我们的目标是创建一个可以识别特定类型动物的AI系统,并可以开发适合此任务的分类DNN。与我们在本系列前面使用的SSD模型相比,该模型可以非常简单。另一方面,我们可以预期该模型在边缘设备上运行时会更有效。
如前所述,分类器DNN进行有害生物检测的能力是有限的。使用分类器,检测对象必须在图像中被视为一个整体,因此我们需要设计一种算法来选择包含对象的图像部分。
这可以通过使用简单的运动检测器来实现。因为我们的最终目标是检测视频流中的有害生物(而不是在单独的帧中),所以我们可以使用运动检测算法来选择感兴趣的片段,然后应用分类器来检查所选片段是否包含有害生物。
下一步我们将为害虫消除系统选择最后一种方法——开发轻便、简单的分类器模型。在接下来的文章中,我们将创建供我们选择的害虫的训练数据集:驼鹿。
https://www.codeproject.com/Articles/5289749/Detecting-Unusual-Pests