今天说说使用深度学习进行目标检测的文章,第一部分讲讲Single shot detector(SSD)和MobileNet。这二者相结合,可以用来实现更快速的,实时的目标检测,尤其是在资源有限的设备上(包括Raspberry Pi, smartphones等等)。
这里就说说如何使用OpenCV中的dnn模块,用来导入一个实现训练好的目标检测网络。使我们可以把图像传送到深度网络中,然后得到图中每个物体的包围框(x,y)坐标。最后,我们使用MobileNet SSDs来检验这些图像。
使用Single Shot Detectors进行目标检测
当提到用深度学习进行目标检测时,主要有下面三种方法:
-
Faster R-CNNs
-
You Only Look Once(YOLO)
-
Single Shot Detectors(SSDs)
Faster R-CNNs是最常听说的基于深度学习的神经网络了。然而,这种方法在技术上是很难懂的(尤其是对于深度学习新手),也难以实现,训练起来也是很困难。
此外,即使是使用了“Faster”的方法实现R-CNNs(这里R表示候选区域Region Proposal),算法依然是比较慢的,大约是7FPS。
如果我们追求速度,我们可以转向YOLO,因为它非常的快,在TianXGPU上可以达到40-90 FPS,最快的版本可能达到155 FPS。但YOLO的问题在于它的精度还有待提高。
SSDs最初是由谷歌开发的,可以说是以上两者之间的平衡。相对于Faster R-CNNs,它的算法更加直接