目标检测的算法
基于深度学习的目标检测算法分为 2 类:Two Stage 和 One Stage。Two Stage:先预设一个区域,改区域称为 region proposal,即一个可能包含待检测物体的预选框(简称 RP),再通过卷积神经网络进行样本分类计算。流程是:特征提取 -> 生成 RP -> 分类/回归定位。常见的 Two Stage 算法有:R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN、R-FCN 等。
One Stage:不用生成 RP,直接在网络中提取特征值来分类目标和定位。流程是:特征提取 -> 分类/回归定位。常见的 One Stage 算法有:OverFeat、YOLOv1、YOLOv2、YOLOv3、YOLOv5、SSD、RetinaNet 等。
利用滑动窗口生成 RP
对于 Two Stage 的算法,RP 的产生是一个很耗时的过程:通过一个窗口从左到右,从上到下的在整张图片上以一定的步长进行滑动扫描,每次滑动的时候对当前窗口执行分类计算,如果当前窗口得到较高的概率,则认为检测到了物体。过程如下图所示,这个方法也叫滑动窗口。
滑动窗口其实就是个穷举的过程,由于事先不知道要检测的目标大小,所以要设置不同大小比例的窗口去滑动,而且要选取合适的步长。这样做就会非常耗时。R-CNN 就是针对此的一个改进策略,利用一种启发式的方法只扫描可能包含目标的子区域。
利用非极大值抑制算法来挑出最优解
不管是哪个目标检测的算法,一个目标都会被多次检测到,我们会有很多结果,但是大多数的结果置信度都不高,我们利用非极大值抑制算法(NMS)就能挑出那个置信度最好的结果。
算法选择
那么我们该选择哪个算法来完成我们的任务呢?
我们需要根据前文确定的性能衡量指标,对所有的算法做横向对比,这样才能挑出来最好的那个方法。这个过程会比较耗时,对于我们完成任务将会是一个障碍,庆幸的是这个比较已经有牛人帮我们做了,我们此时先使用结果,然后在将来有时间自己再尝试做这个横向的性能比较。
根据 mAP 和识别时间对各种目标检测算法做的结果统计图,如果单从 mAP 的角度看,最好的选择是 FPN FRCN,但是交互时间却能达到 172ms;如果看 YOLOv3,mAP 是 57.9,交互时间只有 51ms。所以我们的识别算法选用 YOLOv3。
YOLO 网络设计
YOLO 采用卷积网络来提取特征,使用全连接层来得到预测值。网络结构参考 GooLeNet 模型,包含 24 个卷积层和 2 个全连接层。对于卷积层,主要使用 1x1 卷积来做 channle reduction,然后紧跟 3x3 卷积。对于卷积层和全连接层,采用 Leaky ReLU 激活函数,但是最后一层却采用线性激活函数。如图所示:
版权声明: 本文为 InfoQ 作者【黎燃】的原创文章。
原文链接:【http://xie.infoq.cn/article/3598e784b12f150dc61a9c956】。文章转载请联系作者。
评论