前言
最近在学习 object detection 领域的相关知识,从传统的目标检测如 DPM 模型,到基于候选区的R-CNN系列模型,再到 single network && end to end 的 yolo 模型,还有针对 yolo 模型的缺陷进一步完善的 SSD 模型等等。一系列的理论和实践需要学习,希望能够记录学习过程中的点点滴滴,不断修改、完善和总结,系统的学习一遍。当然,最后还是要付诸于实践,才能更深入的掌握相关知识。
继 R-CNN 系列的 object detection 之后, YOLO 是一种新的目标检测方法,该方法的特点是实现快速检测的同时还达到较高的准确率。作者将目标检测任务看作目标区域预测和类别预测的回归问题。该方法采用单个神经网络直接预测物品边界和类别概率,实现端到端的物体检测。同时,该方法检测速非常快,基础版可以达到 45fps 的实时检测,Fast YOLO 可以达到 155fps。与当前最好系统相比,虽然 YOLO 网络模型检测得到的目标区域定位误差更大,但是背景预测的假阳性优于当前最好的方法(YOLO 采用全图信息来进行预测。与滑动窗口方法和 region proposal-based 方法不同,YOLO 在训练和预测过程中可以利用全图信息。Fast R-CNN 检测方法会错误的将背景中的斑块检测为目标,原因在于Fast R-CNN在检测中无法看到全局图像。所以相对于Fast R-CNN,YOLO背景预测错误率低一半)。
YOLO-v1 的主要特点:
1)速度快,能够达到实时的要求。在 Titan X 的 GPU 上 能够达到 45 帧每秒。
2)使用全图作为 Context 信息,背景错误(把背景错认为物体)比较少。
3)泛化能力强:在自然图像上训练好的结果在艺术作品中的依然具有很好的效果。
YOLO-v1 在 Pascal VOC- 数据集上训练,能识别如下 20 种物体类别:
1)person
2)bird, cat, cow, dog, horse, sheep
3)aeroplane, bicycle, boat, bus, car, motorbike, train
4)bottle, chair, dining table, potted plant, sofa, tv/monitor
darknet 的主要特点:
1)darknet 完全由C语言实现,没有任何依赖项。为了更好的可视化,可以使用 OpenCV 来显示图片;
2)darknet 支持 CPU 和 GPU(CUDA/cuDNN);
3)因为较为轻型,没有像TensorFlow那般强大的API,有另一种味道的灵活性,更为方便的从底层对其进行改进与扩展;4)darknet 的实现与 caffe 的实现存在相似的地方,熟悉了darknet,相信对上手caffe有帮助;
《You only look once: Unified, Real-Time Object Detection》原文 中还提到很多其他 Detection System,如下:
1)Deformable parts models(DPM):在深度神经网络之前,早期的 Object detection 方法是通过提取图像的一些 robust 的特征如( Haar,SIFT,HOG )等特征,使用 DPM 模型,用 silding window 的方式来预测具有较高 score 的 bounding box。DPM 模型把物体看成了多个组成的部件(比如人脸的鼻子、嘴巴等),用部件间的关系来描述物体,这个特性非常符合自然界很多物体的非刚体特征。DPM可以看做是HOG+SVM的扩展,很好的继承了两者的优点,在人脸检测、行人检测等任务上取得了不错的效果,但是DPM相对复杂,检测速度也较慢,从而也出现了很多改进的方法。正当大家热火朝天改进DPM性能的时候,基于深度学习的目标检测横空出世,迅速盖过了DPM的风头,很多之前研究传统目标检测算法的研究者也开始转向深度学习。(更详细的理论知识可以参考这篇 博文)
Felzenszwalb P F, Girshick R B, McAllester D, et al. Object detection with discriminatively trained part-based models[J]. Pattern Analysis and Machine Intelligence, IEEE Transactions on, , 32(9): 1627-1645.
2)R-CNN Series:包括 R-CNN、SPP-net、Fast R-CNN、Faster R-CNN、R-FCN 等经典的网络模型。
[1] R. Girshick, J. Donahue, T. Darrell, J. Malik. Rich feature hierarchies for accurate object detection and semantic segmentation. ImageNet Large-Scale Visual Recognition Challenge workshop, ICCV, .
[2] R. Girshick, J. Donahue, T. Darrell, J. Malik. Rich feature hierarchies for accurate object detection and semantic segmentation. IEEE Conference on Computer Vision and Pattern Recognition (CVPR), .
[3] R. Girshick, J. Donahue, T. Darrell, J. Malik. Region-Based Convolutional Networks for Accurate Object Detection and Segmentation. IEEE Transactions on Pattern Analysis and Machine Intelligence, May. .
[4] K. He, X. Zhang, S. Ren, and J. Sun. Spatial pyramid pooling in deep convolutional networks for visual recognition. In ECCV. .
[5] S. Ren, K. He, R. Girshick, J. Sun. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks. Advances in Neural Information Processing Systems 28 (NIPS), .
3)Deep MultiBox:Szegedy et al. train a convolutional neural network to predict regions of interest instead of using Selective Search. (Szegedy 等人训练一个卷积神经网络来预测感兴趣的区域,而不是使用 SelectiveSearch 算法直接获得候选区)YOLO 也是通过训练一个 CNN 预测 bounding-box。相对 MultiBox,YOLO 是一个完整的检测系统。
D. Erhan, C. Szegedy, A. Toshev, and D. Anguelov. Scalable object detection using deep neural networks. In Computer Visio