在深度学习的对象检测领域,我们主要探讨以下三种重要的方法:
R-CNN 是一种利用深度学习进行物体检测的训练模型,但这种方法理解起来较为困难,实现和训练也相对复杂。
如果我们追求的是检测速度,那么YOLO将是更好的选择,因为它运行更快,但物体定位的精确度和召回率可能会稍逊一筹。
R-CNN 和 YOLO 各有利弊,而由谷歌开发的 SSD 则试图在这两者之间找到平衡。
MobileNets:高效神经网络
在构建对象检测网络时,通常会使用像VGG或ResNet这样的现有网络架构,但这些网络可能会非常庞大,大约在200至500MB之间。
相比之下,我们可以使用MobileNets,这是一种由Google于2017年提出的专为移动设备设计的神经网络模型。MobileNets的主要特点是使用深度可分离卷积(Depthwise Separable Convolution)来减少计算量。具体来说,这种卷积方法将标准卷积核分为深度卷积和逐点卷积两部分,从而大大减少了参数数量和计算量。
MobileNets引入了两个超参数来进一步减少参数和计算量:
结合MobileNets和SSD,实现快速高效的基于深度学习的物体检测
MobileNet SSD Caffe模型的可视化地址为:http://ethereon.github.io/netscope/#/gist/5b1ffa5d22f6ac1f25f30fbd24a716be
在MobileNet SSD模型中,conv13作为骨干网络的最后一层,作者模仿了VGG-SSD的结构,在其基础上增加了8个卷积层,最终抽取了6层用于检测。其中,conv11、conv13、conv142、conv152、conv162、conv172这六层被用来提取默认框。每层每个单元格产生的默认框数量分别为3、6、6、6、6、6。因此,在这六层之后连接的用于坐标回归的3×3卷积核(如conv11mboxloc)的输出数量分别为12、24、24、24、24、24。
同样地,在这六层之后连接的用于分类得分的3×3卷积核(如conv11mboxconf)的输出数量分别为63、126、126、126、126、126。
通过将MobileNet架构与SSD Caffe框架相结合,我们可以实现快速高效的基于深度学习的对象检测方法。
MobileNet SSD模型的数据集:COCO 数据集
在图像中检测到20种对象(包括背景类),如飞机、自行车、鸟、船、瓶子、公共汽车、汽车、猫、椅子、奶牛、餐桌、狗、马、摩托车、人、盆栽植物、绵羊、沙发、火车和电视监视器。
使用OpenCV进行基于深度学习的对象检测
如果您想获取相关的caffe prototxt和caffemodel文件,只需回复“MobileNet SSD”即可获得下载链接。
在本节中,我们将使用OpenCV中的MobileNet SSD和深度神经网络(dnn)模块来构建我们的对象检测器。当神经网络完成检测后,我们将遍历检测结果,得到检测对象的边界框(box)和标签(label)。
使用已训练好的模型,我们可以通过大约20行代码轻松实现对象检测。再次感谢Google团队对MobileNet SSD模型的研究和训练(关于如何训练自己的模型,我们将在后续分享)。
微信搜索:启示AI科技
可以体验不同的AI工具