查看原文
其他

【源头活水】实时目标检测算法

“问渠那得清如许,为有源头活水来”,通过前沿领域知识的学习,从其他研究领域得到启发,对研究问题的本质有更清晰的认识和理解,是自我提高的不竭源泉。为此,我们特别精选论文阅读笔记,开辟“源头活水”专栏,帮助你广泛而深入的阅读科研文献,敬请关注。

来源:知乎—bearbee
地址:https://zhuanlan.zhihu.com/p/57782435
首先说声抱歉,隔了这么久才第一次更新专栏(中间经历了DAC和CVPR的rebuttal,导致拖到了现在)。。
在此期间,也针对这个比赛尝试了一些目标检测算法并做了大量的优化,目前由于Jetson TX2开发板还没到,只能在1080Ti和CPU上进行测速,最终模型精度为0.83mIOU,模型参数量是2.33M,模型大小是9.7M,在1080Ti可以达到342.2fps,在CPU上可以达到30.5fps(去年第一名在Jetson TX2上达到24.55fps,精度为0.697mIOU)。。。言归正传,接下来的几期专栏会分别从实时目标检测算法,数据集分析和指标分析以及一些涨点黑科技进行分析。

场景需求:

给定一张图片,需要实时地识别出图片中的目标并确定其位置。这也是这个比赛比较有趣的地方,极少的目标检测比赛有实时性的要求,而这个需求是更加偏向产品的。通过这个需求分析,就可以快速帮助我们过滤掉一些目标检测算法。

粗筛:

目前目标检测算法可以分为两大派系,(1)Two stage: 以RCNN系为代表,这个派系的突出特点就是准,口号是“目标检测两步走,先找框再修框”。(2)One stage: 以Yolo系,SSD系以及Retinanet为代表,这个派系的突出特点就是快,口号是“目标检测一步走,看完图就出框”。当然这两个派系的特点是相对的,One stage也会有比Two stage更准的模型,Two stage也会有比One stage更快的模型。这么说的原因是:影响目标检测速度和精度不仅仅是派系不同,还可能是采用的特征提取模型(也就是常说的backbone),输入分辨率,特征图尺寸,候选框的个数(锚框的个数)等等。贴一张谷歌CVPR18的一篇论文Speed/accuracy trade-offs for modern convolutional object detectors(arxiv.org/abs/1611.1001)来说明这个问题:

图一:不同backbone对模型的精度和速度的影响

看完这个图后,我们会发现仅仅从派系判断模型是快是慢,是准还是不准,这显然是不行的。这就让我们不得不思考一个问题,Two stage派系到底慢在哪?这就引出了两篇论文,第一篇就是上图所画的R-FCN(R-FCN: Object Detection via Region-based Fully Convolutional Networks),另外一篇就是Light-Head RCNN(Light-Head R-CNN: In Defense of Two-Stage Object Detector)。这里所说的Two stage派系特指进化后的R-CNN,即最终的Faster R-CNN,这个版本在速度和精度上比起之前的R-CNN和Fast R-CNN已经有了大大的提升。首先我们再来理一下Faster R-CNN的流程,先通过区域推荐网络(RPN)确定候选框,然后每一个候选框都会分别送入 ROI Pooling 层,再接几层全连接层做分类和回归,如图二所示。
图二:Faster R-CNN 流程图
显然对每个候选框都做特征提取并用全连接层做分类和回归是极其耗时的,而且速度和保留的候选框数目相关,一般为了保证精度,这里候选框数目会设定为512。那么一个最直接的想法就是能不能把最后的全连接层去掉,这样不就可以大大提升速度了吗?答案是可以的,这就是R-FCN干的事情,采用了位置敏感得分图和选择性池化(Position-sensitive score map和Position-sensitive RoI pooling),并利用一个平均池化层来产生分类和回归的向量,如图三所示,以这种方式可以减少了上百个候选框的FC层运算,因而R-FCN在速度上比 Faster R-CNN 快了 2.5 倍(这个速度提升还有一部分gain是来自减少了候选框的个数)。
图三:R-FCN 流程图
但是为了让最终的特征图具有位置敏感的特点,必须满足channel数为  , 其中C是类别数,  是分成空间网格的数目,对于COCO来说,P设置为7,C为80,则总的channel数为3969,这就必然造成很大的时间和存储的开销。于是这就有了Light-Head RCNN的工作,首先采用大的可分离卷积(large separable convolution)生成channel数更少的特征图,并且利用FC层代替R-FCN中的平均池化层,从而避免空间信息的丢失,如图四所示。通过一系列的优化,可以在速度和精度上都超过One stage系列的算法,如图五所示。
图四:Light-Head RCNN 流程图
图五:Light-Head RCNN 精度/速度
到此,经过激烈的斗争,进入第二轮细选的选手有:Two stage派代表:Light-Head RCNN, One stage代表:YOLOv1,YOLOv2,YOLOv3,SSD,Retinanet。
下一期将会对第二轮选手进行进一步的分析,待续.....

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“源头活水”历史文章


更多源头活水专栏文章,

请点击文章底部“阅读原文”查看



分享、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存