百度飞桨目标检测教程三:YOLO系列论文解析
Anchor-based 单阶段目标检测算法 YOLO系列论文解析
涉及论文:YOLOv1 YOLOv2 YOLOv3 PPYOLO
YOLOv1
ppt1
性价比最高,不是精度最高的,但是精度没有很大损失的情况下速度大幅领先,实时性要求>30FPS就可以
Network | Accuracy | Speed |
---|---|---|
YOLO | 63.4VOC | 45 |
YOLO-Lite | 52.7VOC | 155 |
YOLOv2 | 78.6VOC | 40 |
YOLOv2-Lite | 76.8VOC | 67 |
YOLOv3 | 33.0coco | SSD * 3 RetianNet * 3.8 |
YOLOv1
[You only look once: Unified, real-time object detection](https://xueshu.lanfanshu.cn/scholar_url?url=https%3A%2F%2F2.zoppoz.workers.dev%3A443%2Fhttps%2Fwww.cv-foundation.org%2Fopenaccess%2Fcontent_cvpr_2016%2Fhtml%2FRedmon_You_Only_Look_CVPR_2016_paper.html&hl=zh-CN&sa=T&ct=res&cd=0&d=6382612685700818764&ei=bzNOX8XcGPCF6rQPyO6SqAE&scisig=AAGBfm2gowB_5J8mZ-5ucoALdgg32yaPsg&nossl=1&ws=1855x932&at=You only look once%3A Unified%2C real-time object detection)
2016 CVPR
引用次数:10791
作者:Joseph Redmon University of Washington, USA
联系方式:Email: [email protected]
代码复现:http://pjreddie.com/yolo/
you only look once,一张图片放到深度学习网络中一次就可以得到输出,而前面的RCNN系列的论文是先提取proposal,再对proposal做分类和回归,相当于是看了两次。
ppt2
YOLO的基本原理
把图像划分成S * S的网格,物体的真实框的中心落在哪个网格上,就由该网格对应锚框负责检测该物体。
输出特征图是S * S * C,长和宽分别表示划分的网格,而通道C来表示想要得到的信息,包括[x, y, w, h, 置信度pobject, one-hot分类信息]
类似于前面的FPN网络,YOLO也用到了预设锚框的算法,对每一个格子预设B个锚框,输出的特征图的通道C的大小应该是 C = 85 ∗ B C = 85 * B C=85∗B。
85是说,前面4个坐标表示,该预设锚框与真实框的偏移量,类似于RCNN系列中的回归分支,第5个坐标代表该锚框的置信度,即有多大概率包含一个物体,最后80个坐标是coco数据集80个类别的one-hot向量输出,如果用其他的数据集进行训练,数量也会不尽相同。
YOLOv2
ppt1
YOLOv2
YOLO9000: better, faster, stronger
2017 CVPR
引用次数:5553
作者:Joseph Redmon University of Washington, USA
联系方式:Email: [email protected]
代码复现:http://pjreddie.com/yolo/
yolov2是基于v1做的优化
Backbone升级:用DarkNet19作为骨架网络,输入图像分辨率从224 * 224
升级到了448 * 448
。
网络结构完全改为全卷积网络结构:网络结构层中只有Conv和Batch Norm。
在数据集上用Kmeans聚类得到anchor。
引入多尺度训练:每个batch输入的图像resize的大小是不同的。
优势:精度提升,速度提升
弊端:小目标的召回率不高,靠近的群体目标检测效果不好,精度还可以再提高。
YOLOv3
ppt1
YOLOv3
Yolov3: An incremental improvement
2018 arXiv technical report
引用次数:3702
作者:Joseph Redmon University of Washington, USA
联系方式:Email: [email protected]
代码复现:http://pjreddie.com/yolo/
优化方法:
骨架网络改为DarkNet53。
多尺度预测,跨尺度特征融合。
coco数据集聚类9种不同尺度的anchor,每个尺度有3个。
分类用sigmoid激活,支持目标多分类。
优势:精度提升,速度提升,通用性强。
弊端:小目标的召回率仍然不高,靠近的群体目标检测效果仍然不好,定位精度仍然还可以再提高。
但是总体来说YOLOv3的性价比已经很高了。
ppt2
yolov3结构图
图源:https://blog.csdn.net/leviopku/article/details/82660381
首先是图像输入到backbone中,backbone由5个ResNet Block组成,每一个block都会进行一次倍数为2的下采样。
且有三个尺度的输出,分别进行特征提取,得到不同尺度的结果输出。
ppt3
为什么要用3个输出分支?在coco数据集聚类9种尺度的anchor。
下采样倍率较多的那支输出,说明它经过的卷积层数比较多,感受野比较大,融合了更多的图像信息,因此需要比较大的那三个anchor与之匹配。
剩下的两个分支也是这样来分析。
ppt4
偏移量的预测
预测出来的偏移量是[tx, ty, tw, th]
,最后真实的偏移量是[bx, by, bw, bh]
,它们之间的变换关系如下
锚框尺寸[pw, ph]
中心点偏移 b x = c x + σ ( t x ) , b y = c y + σ ( t y ) b_x = c_x + \sigma(t_x), b_y = c_y + \sigma(t_y) <