理解yolo系列目标检测算法

本文详细介绍了YOLO(You Only Look Once)系列目标检测算法的发展历程,从YOLOv1到YOLOv3的改进,包括动机、优点、inference过程以及各个版本的关键tricks,如使用anchors和batch normalization等。作者对比了YOLO系列与其他检测算法如R-CNN、Fast R-CNN和Faster R-CNN,并讨论了不同算法在速度、精度和实时性上的优劣。
摘要由CSDN通过智能技术生成


在计算机视觉任务中,如果说做的最成熟的是图像识别领域,那么紧随其后的应该就是目标检测了。笔者接触目标检测也有一段时间了,用mobilenet_ssd算法做过手机端的实时目标检测,也用faster-rcnn做过服务器端的二维码检测,尽管一直都知道yolo的效果也很不错,但没抽出时间细细研究,最近刚好闲出空来,就把yolo系列算法论文细读了一遍,在思考的过程中,也使我对之前的知识点有了新的体会,这里一并记录下来,也希望能对读者有所帮助。

1. 目标检测算法发展史

这几年目标检测方面的文章很多,如果只是单纯地研究其中的某几个算法的话,可能会“一叶障目,不见泰山”,庆幸有网友整理了下面这张非常棒的图,按时间顺序罗列了比较经典的检测算法(附录中有列原图链接)。
img
说说对已经看过的算法的体会吧,

1) R-CNN,它的全称是"region based CNN",显然,从名字可以看出,这种算法的CNN网络的输入是region。其实,最直接的想法应该是,从输入图像中选取所有尺度的regions,然后分别送到CNN网络中进行训练和测试,这种想法存在的问题是,不同尺度的regions,数量会达到指数级别,所以这种想法是行不通的。R-CNN则是在此基础上进行创新,使用了"selective search"的方法预筛选2k个最可能的regions,然后使用CNN网络提取特征,显然,一般来说,对于一幅图像,2k个目标是足够了的,从而使得CNN做目标检测成为了可能;

2) Fast R-CNN,从名字来看,它比R-CNN更快,快在哪里呢?并不是因为它把2k个regions减少了,而是因为它一次输入一整张图像,相对于R-CNN,它的计算量是原来的1/2k,所以名字上多了一个’Fast’;

3) Faster R-CNN,从名字来看,它比Fast R-CNN更快,那么它又是从什么角度做的优化呢?特征提取网络不变,只是把“ selective search”替换成了RPN。因为“ selective search”非常耗时,而RPN的小网络会比较快,虽然交替训练会直觉上比较困难,但是做inference的时候,整个网络的耗时,相对于改进前提升了10倍以上,所以作者称之“Faster”也当之无愧了,具体的对比数据参见下表,
在这里插入图片描述
  这里顺便提及一下,R-CNN系列算法都属于“two-stage”的目标检测算法,为什么呢?其实,这里指的stage分别是 region proposals 和 prediction,显然,上面的3个方法都是要先生成proposals,然后预测这些proposals对应的边界框和目标类别,所以称之为“two-stage”。而Yolo和ssd算法因为不需要预先生成" region proposals",所以我们称之为“one-stage”的目标检测算法。

2. yolo-v1

2.1 动机

尽管R-CNN系列算法每一版本的优化效果很明显,但是即便是Faster R-CNN也很难满足pc实时性的要求,为了提升算法inference速度,对Faster R-CNN继续改进已经很难了,必须开发一种全新的检测框架。

2.2 优点

a) “end-to-end”:输入一副原始图像,单一网络直接inference出目标位置;

b) Fast,可以满足pc上的实时性要求;

c) 效果鲁棒,从自然图像迁移到艺术等其他领域的图像时,效果也很好。

2.3 inference过程

yolo-v1把输入图像划分成了SxS 的网格,显然

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值