65.9K
CodeProject 正在变化。 阅读更多。
Home

边缘设备的实时 AI 病虫害消除:入门

2020年12月15日

CPOL

4分钟阅读

viewsIcon

11817

downloadIcon

751

在本文中,我们比较了可用于检测害虫的两种DNN类型:检测器和分类器。

引言

不受控制的野生动物对于企业和房主来说都是一个难题。像鹿、驼鹿甚至猫这样的动物都会对花园、庄稼和财产造成破坏。

在本系列文章中,我们将演示如何在树莓派上实时(或接近实时)地检测害虫(例如驼鹿),然后采取行动来消除害虫。由于我们不想造成任何伤害,我们将专注于通过播放响亮的声音来吓跑害虫。

本系列将引导您完成几个步骤。首先,我们将向您展示如何应用预训练的深度神经网络 (DNN) 检测器来查找视频中的害虫。然后,我们将介绍检测异常害虫的可能解决方案,这些害虫无法通过大多数现有的 DNN 检测器检测到。接下来,我们将重点介绍所选方法的实现。我们将解释如何收集用于 DNN 训练的数据集,并提供用于扩展数据集的数据增强方法。我们将训练一个 DNN 来检测一种罕见的害虫,然后我们将开发用于简单运动检测器的计算机代码,并解释如何将其与训练好的 DNN 一起使用。最后,我们将调整树莓派的代码,并向您展示如何播放恐怖的声音来驱赶检测到的害虫。

项目代码将用 Python 3.7 编写,以在 PC 和树莓派设备上运行。OpenCV 库将为我们提供计算机视觉算法,Caffe DL 框架将用于 DNN 训练。这些软件组件很容易在您的 PC 上下载和安装。

欢迎下载该项目的源代码。我们假设您熟悉 Python 并且对神经网络的工作原理有基本的了解。

选择器与检测器

我们的首要任务是使用像树莓派这样的边缘设备,从摄像头拍摄的视频流中检测害虫。我们将使用人工智能来解决这个问题。目前图像识别和视频处理领域最强大的人工智能方法是使用深度神经网络 (DNN)。各种类型的 DNN 已成功应用于计算机视觉中最困难的问题,包括检测各种物体:人类、动物等等。

为了实现我们的目标,我们可以使用两种主要的 DNN 类型。第一种网络类型是一个简单的分类器。这是一种经过训练的 DNN,用于定义图像中的对象属于哪个类别。

图像分类是卷积神经网络 (CNN) 的主要成功之处。这导致了图像处理领域的深度学习 (DL) 革命。分类器的优点之一是其高精度。现代 DNN 分类器对于具有数百甚至数千个类别的图像数据集可以实现 90% 或更高的分类准确率。

但是,将分类器应用于我们的任务提出了一些挑战。一个问题是提交给分类器的图像应仅包含一个可识别的对象。另一个问题是,诸如人类或动物之类的对象通常必须占据图像的大部分区域,分类器才能正确处理它。由于害虫可能不会占据摄像头帧的大部分,因此我们需要找到一种方法来检测仅占据图像一部分的对象。

我们可以通过使用另一种 DNN 类型来规避分类器的限制:检测器。检测器网络可以确定图像是否包含某个特定类别的对象,并且还可以识别对象在图像中的位置。

检测器 DNN 可用于包含多个不同类别对象的图像,因为它们首先定位单独的对象,然后对每个定位的对象进行分类。检测器 DNN 的唯一缺点是它们的精度不如分类器。

总的来说,在我们的案例中,检测器网络将是一个更可行的选择,所以选择检测器!

实时性如何?

检测器 DNN 绝对可以帮助我们解决问题的第一个部分 - 检测图像中的害虫。如果我们能做到这一点,我们也将能够检测视频流中的害虫。唯一的问题是我们是否可以在边缘设备(例如树莓派)上实时执行此操作。这些设备不是很强大,因此我们在选择神经网络时应该非常小心。我们需要一个可以在我们的边缘设备上实时运行的网络。请参阅这篇文章,深入了解选择适合边缘设备的对象检测器神经网络。

下一步

下一篇文章中,我们将使用预训练的 DNN 来检测视频中的害虫。

历史

  • 2020年12月15日: 初始版本
© . All rights reserved.