深度学习和OpenCV的对象检测(MobileNet SSD图像识别)
作者头像
  • servicebln_123
  • 2022-06-21 15:32:41 11

在深度学习的对象检测领域,我们主要探讨以下三种重要的方法:

  • Faster R-CNN(后续将详细介绍)
  • You Only Look Once (YOLO),尤其是其最新版本YOLOv3(后续将分享更多内容)
  • Single Shot Detector (SSD)(本节重点介绍,特别适合低配置电脑)

R-CNN 是一种利用深度学习进行物体检测的训练模型,但这种方法理解起来较为困难,实现和训练也相对复杂。

如果我们追求的是检测速度,那么YOLO将是更好的选择,因为它运行更快,但物体定位的精确度和召回率可能会稍逊一筹。

R-CNN 和 YOLO 各有利弊,而由谷歌开发的 SSD 则试图在这两者之间找到平衡。


MobileNets:高效神经网络

在构建对象检测网络时,通常会使用像VGG或ResNet这样的现有网络架构,但这些网络可能会非常庞大,大约在200至500MB之间。

相比之下,我们可以使用MobileNets,这是一种由Google于2017年提出的专为移动设备设计的神经网络模型。MobileNets的主要特点是使用深度可分离卷积(Depthwise Separable Convolution)来减少计算量。具体来说,这种卷积方法将标准卷积核分为深度卷积和逐点卷积两部分,从而大大减少了参数数量和计算量。

MobileNets引入了两个超参数来进一步减少参数和计算量:

  • 宽度乘数(Width Multiplier):减少输入和输出的通道数量。
  • 分辨率乘数(Resolution Multiplier):减少输入和输出特征图的大小。

结合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工具

    本文来源:图灵汇
责任编辑: : servicebln_123
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
MobileNet深度识别图像对象检测OpenCV学习SSD
    下一篇