深度学习-目标检测综述

一、目标检测任务
1、任务综述

给定一张图像或者视频帧,找出其中所有目标的位置,并给出每个目标的具体类别,图片中可能有一个目标或几个目标。如下图所示
深度学习-目标检测综述_第1张图片
对计算机来说,目标检测最困难的部分在于计算机不清楚目标出现在图像中哪个区域。图像中的目标可能出现在任何位置,目标的形态可能存在各种各样的变化。
2、模型框架
传统的目标检测中,常见的算法是DPM(Deformable Part Model)。2013年利用深度学习算法的R-CNN(Region-based Convolutional Neural Networks)的诞生使基于深度学习的目标检测进入了一个全新的时期。R-CNN在VOC 2007测试集的mAP达到48%。从此Ross Girshick一发不可收拾,连续推出了Fast R-CNN、Faster R-CNN。受Ross Girshick启发许多基于深度学习的目标检测算法被提出
(一)使用Region Proposal方法
(1)、R-CNN

论文地址:https://arxiv.org/abs/1311.2524
代码地址:https://github.com/rbgirshick/rcnn
(2)、Fast R-CNN
论文地址:https://arxiv.org/abs/1504.08083
代码地址:https://github.com/rbgirshick/fast-rcnn
(3)、Faster R-CNN
论文地址:https://arxiv.org/abs/1506.01497
代码地址:https://github.com/rbgirshick/py-faster-rcnn
(4)、R-FCN
论文地址:https://arxiv.org/abs/1605.06409
代码地址:https://github.com/daijifeng001/R-FCN (matlab版)
代码地址:https://github.com/Orpine/py-R-FCN (Python版)
(二) 使用回归方法
(1)、YOLO2

论文地址:https://arxiv.org/abs/1506.02640
代码地址:http://pjreddie.com/darknet/yolo/
(2)、SSD
论文地址:https://arxiv.org/abs/1512.02325
代码地址:https://github.com/weiliu89/caffe/tree/ssd (caffe版)
代码地址:https://github.com/zhreshold/mxnet-ssd (MXnet版)
3、目前结果
2016PASCAL VOC视觉识别竞赛,海康威视以87.9%的mAP(平均正确率)夺得冠军,下图为目前(2017.1)各个模型在PASCAL VOC 2012上的排名
这里写图片描述
这里写图片描述

二、目标检测公共数据集

三、自己创建数据集
1、图像标注工具(labelImg)

目前的目标检测算法很多都是在PASCAL VOC数据集上训练和验证的,该标注工具可以在windows、Linux上运行,标注格式与PASCAL VOC数据集的格式一样。但是有个BUG,就是000001.jpg中,没有jpg,解决方法参考这篇博客http://blog.csdn.net/ch_liu23/article/details/53558549
工具地址:https://github.com/tzutalin/labelImg
2、图像标注工具(BBox-Label-Tool)
可以标注数据集,用于yolo的训练
工具地址:https://github.com/puzzledqs/BBox-Label-Tool
3、图像标注工具(ImageLabel)
可以标注问题轮廓,制作分割数据集
工具地址:https://github.com/lanbing510/ImageLabel
四、开源项目
1、重要资源(转载)
这篇博客对目标检测方面的总结很全面,推荐
博客地址:http://blog.csdn.net/zhang11wu4/article/details/53967688
2、目标检测算法概述(转载)
这篇博客对SPP介绍的比较详细,讲述了如何进行pooling
博客地址:http://www.cnblogs.com/venus024/p/5590044.html
3、这篇博客对rcnn、fast rcnn、faster rcnn进行了比较,可以很清晰的看出它们的区别,并且对RPN进行了比较详细的讲解
博客地址:http://blog.csdn.net/ture_dream/article/details/52896452
4、目标检测综述(英文版)
这个博客对目标检测进行了综述,而且作者博客其它的文章对各个会议进行了总结,很不错。也许需要搬梯子
博客地址:https://handong1587.github.io/deep_learning/2015/10/09/object-detection.html (目标检测)
博客地址:https://handong1587.github.io/deep_learning/2016/12/06/keep-up-with-new-trends.html (会议综述)
5、自动驾驶资源
github地址:https://github.com/takeitallsource/awesome-autonomous-vehicles
6、Soft-NMS
提出新的NMS,论文里面介绍了2种,线性NMS和高斯NMS,提高了准确率
论文地址:https://arxiv.org/pdf/1704.04503.pdf
代码地址:https://github.com/bharatsingh430/soft-nms
五、移动端深度学习
1、tensorflow in Android
在安卓设备上运行tensorflow,可能需要梯子
博客地址:https://www.oreilly.com/learning/tensorflow-on-android
2、MobileNets
论文提出了一种新的未来结构形式,将原来的卷积过程分成二步进行,减少了计算量。
论文地址:https://arxiv.org/pdf/1704.04861.pdf
代码地址:https://github.com/rcmalli/keras-mobilenet (非官方代码)
代码地址:https://github.com/pby5/MobileNet (非官方代码)
六、常见问题
1、在使用faster rcnn训练自己的数据集时,出现loss_bbox=nan的情况,此时如果调节lr_base没有效果的化,并且报如下的错误

RuntimeWarning: invalid value encountered in log targets_dw = np.log(gt_widths / ex_widths)
  • 1
  • 1

那么将lib/datasets/pascal_voc.py中的_load_pascal_annotation(,)函数修改为如下所示:

x1 = float(bbox.find('xmin').text)                                                                 
y1 = float(bbox.find('ymin').text)                                      
x2 = float(bbox.find('xmax').text)                                                                 
y2 = float(bbox.find('ymax').text)
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

也就是把后面的1去掉,原因见这里http://caffecn.cn/?/question/1055

你可能感兴趣的:(图像识别,目标检测,深度学习)