上一篇文章中,我们详细介绍了几种常见的两阶段目标检测算法,两阶段目标检测算法由于proposal的产生,在精度上面更具优势,但是单阶段目标检测算法在速度上面更快

本文将整理几种常见的单阶段目标检测算法(YOLO, YOLOv2, YOLOv3, SSD, RetinaNet),主要从解决的问题、创新点、算法具体流程、仍然存在的问题等方面进行阐述

YOLO

时间:2015

解决的问题

两阶段目标检测中检测速度太慢的问题

创新点

YOLO是深度学习目标检测领域第一个单阶段目标检测算法,在Pascal VOC2007数据集上面实现了52.7%的mAP,155fps。作者完全舍弃了之前存在的”proposal + classification”的固有检测模式,将检测问题由一个分类问题转换为一个回归问题

算法流程

1.将输入图片resize到$448\times 448$

2.通过CNN将输入图像分割成$S\times S$的网格,每个网格负责去检测中心点落在其中的目标

3.每个网格需要预测B个边界框,每个边界框具有位置以及置信度信息,每个网格同时需要预测一个类别信息,最终$S\times S\times(B*5+C)$

4.S=7, B=2, C=20 (Pascal数据集)

存在的问题

YOLO中最大的问题在于对于一个cell,我们只能预测一个类别信息,也就意味着一个cell最终只能预测一个物体,如果有两个ground truth的中心点同时落到一个cell中,那么只能保留其中的一个

YOLOv2

时间:2016

解决的问题

在继续保持速度的基础上,从预测更加准确(Better),速度更快(Faster), 识别更多对象(Stronger)这三个方面进行了改进。针对YOLO每个cell只能预测一个物体的问题,YOLOv2引入了anchor的概念

改进策略

1.BN

Batch Normalization使得mAP有2.4的提升。引入BN有助于解决反向传播中出现的梯度消失和梯度爆炸的问题,降低对于超参数的敏感性,同时起到了一定的正则化的作用

2.使用高分辨率图像微调分类模型

mAP提升了3.7。YOLO采用ImageNet数据集$224\times 224$的样本来预训练CNN,然后在检测任务中,检测样本采用$448\times 448$的分辨率图像,这样会对模型精度产生影响,所以YOLOv2在利用$224\times 224$图像进行分类模型训练之后,再采用$448\times 448$高分辨率图像对模型进行微调(10 epoch),使得网络特征逐渐适应$448\times 448$分辨率的图像,在利用$448\times 448$的检测样本进行训练,缓解了分辨率带来的差异

3.引入anchor

召回率大幅度提升到88%,mAP轻微下降0.2。借鉴Fater RCNN的思想,在模型中引入了anchor的概念。虽然精度有所下降,但是紧接着对anchor进行了改良

4.聚类提取先验框尺寸

使得mAP有4.8的提升,这也是YOLOv2中作出的最大改进。之前的先验框尺寸都是人工设置的,YOLOv2尝试使用更加符合样本对象尺寸的先验框,但是聚类时并不是采用的欧式距离,因为欧式距离受到尺度的影响,往往大的边框误差也会相应变大,YOLOv2中采用的是$1-IOU(A, B)$来作为距离

5.约束预测边界框位置

借鉴Faster RCNN的思想,训练的早期阶段,位置预测非常不稳定,因此YOLOv2中不是直接预测,而是利用图像尺寸对边界框位置及尺寸进行归一化,预测一个相对值,然后进行边界框回归,进一步调整边界框位置

6.多尺度训练

对mAP有1.4的提升。训练的时候每10个batch随机更换一个尺寸,使得图像能够适应各种大小的图像检测

7.使用更高分辨率的图像输入

mAP提升1.8。YOLOv2调整之后能够接受各种图像尺寸输入,通常是采用$416\times 416$大小的数据,如果使用$544\times 544$大小的输入,精度会有提升

8.提出DarkNet-19的网络结构

DarkNet-19模型要比VGG-16要小,但是精度不弱于VGG-16,浮点运算减少到接近1/5,因此更快

YOLOv3

时间:2018

YOLOv3网络结构

1.YOLOv3采用了Darknet-53的结构,虽然相较于Darknet-19速度有所降低,但是依然保持高性能,并且精度上面的提升很大。YOLOv3中只有卷积层,通过调节卷积层的步长控制特征图的尺寸。

2.借鉴了特征金字塔的思想,小尺寸特征用于检测大物体,大尺寸特征用于检测小物体,特征图的输出维度为$N\times N \times [3\times (4+1+80)]$,$N\times N$为输出特征图尺寸,3代表anchor数目,4表示$(t_x, t_y, t_w, t_h)$,1代表置信度,80代表物体类别

3.YOLOv3一共有三个特征图,分别下采样8倍,16倍,32倍

4.其中含有两种特征融合的方法。shortcut和route,shortcut就是resnet的思想,直接两层特征相加,route是两层特征在channel维度上面进行拼接

SSD

SSD是深度学习单阶段目标检测模型的第二个模型,VOC07 mAP=76.8%, VOC12 mAP=74.9%,59fps,

时间:2015

创新

1.SSD提取了不同尺度的特征图来做检测,大尺度特征图可以用来检测小物体,小尺度特征图可以用来检测大物体

2.SSD采用不同尺度和长宽比的anchor

YOLO的缺点是难以检测小物体,定位不准,这两点改进使得SSD在一定程度上面克服了YOLO的缺点

RetinaNet

时间:2017

创新

这篇文章的创新点不在于其网络模型结构,而在于其提出了一种解决单阶段目标检测中难易样本分布不均匀问题的方法:Focal loss。

Focal loss的提出主要是为了解决难易样本分布不均衡的问题,正样本分类为正样本,负样本分类为负样本,这样的都算易样本,而将正样本分类为负样本,负样本分类为正样本的,并且他们的置信度还很高,这种属于难样本

为了解决正负样本分布不均,我们可以加上一个alpha参数对其进行加权

但是这并不能解决问题,为了进一步解决难易样本分布不均的问题,提出了focal loss,本质上是将高置信度的样本损失再降低一些,低置信度样本损失增加一些

综合两者,最终的Focal loss形式



object detection

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!