YOLOv3是目前流行的物体检测算法YOLO——-“ 你只能看一次”的最新变种。目前已经发布的YOLO模型可以识别图像和视频中80多种不同的对象,更重要的是,它的运行速度非常快,而且准确率几乎和单次多盒检测器(SSD)一样高。
从OpenCV 3.4.2开始,您可以在自己的OpenCV应用程序中轻松使用YOLOv3模型。
那么YOLO是如何运作的呢?
我们可以将目标检测器视为是一种目标定位器和目标识别器的组合。
在传统的计算机视觉方法中,我们使用滑动窗口来寻找位置和尺寸都不同的物体。这个操作计算量非常大,所以通常假设物体的纵横比是固定的。早期
基于深度学习的目标检测算法(如R-CNN和Fast R-CNN)都是使用一种被称为选择性搜索的方法来缩小算法必须测试的边界框的数量。
另一种称为Overfeat的算法使用滑动窗口式按多个比例对图像进行扫描。
紧随其后的是Faster R-CNN算法,它使用区域提议网络(RPN)来识别需要测试的边界框。 通过巧妙的设计,识别目标的特征提取器也被RPN用于选出候选边界框,从而节省了大量的计算。
但在另一方面,YOLO以完全不同的方式来处理目标检测问题。 它只把图像输入神经网络一次。SSD是另一种目标检测算法,它也是只让图片通过深度学习神经网络一次,但YOLOv3比SSD快得多,同时实现了可与之媲美的精度。在M40,TitanX和1080 Ti GPU上进行测试, YOLOv3的速度甚至高于实时检测。
接下来,让我们看看YOLO如何检测给定图像中的目标。
首先,将图像划分为13×13网格的单元格。 这169个单元的大小取决于输入图像的大小。 对于我们在实验中使用的416×416的图像输入尺寸,单元尺寸为32×32。 每个单元负责预测图像中的多个框。
对于每个边界框,网络还预测边界框实际包围对象的置信度,以及封闭对象是特定种类的概率。
大多数这些边界框最后都会被清除,因为它们的置信度很低,或者因为它们与另一个具有非常高置信度得分的边界框包围相同的对象。 该技术称为非最大值抑制。
YOLOv3的作者,Joseph Redmon和Ali Farhadi让YOLOv3比以前的作品YOLOv2更快更准确。 YOLOv3可以更好地处理多对象。 他们还通过增加网络来改进网络,通过添加简单的连接将这个网络扩展到剩余网络。
我们为什么要在OpenCV上实现YOLO?