yolo和cnn哪个精度高 yolo和rcnn的区别_yolo和cnn哪个精度高

YOLO主页:https://pjreddie.com/darknet/yolo

1、Yolo与RCNN对比

Yolo是“看一眼”:直接在输出层回归bbox的位置和所属类别。

RCNN是“看两眼”:先提取候选框,再进行分类+回归

YoloV1与Faster RCNN等模型的比较:

yolo和cnn哪个精度高 yolo和rcnn的区别_yolo和cnn哪个精度高_02

2、YoloV1(2016年5月)

(2.1)V1网络结构

yolo和cnn哪个精度高 yolo和rcnn的区别_深度学习_03

(2.2)Yolo核心思想

将一幅图像分成S x S个网格(grid cell),如果某个object的中心落在这个网格中,则这个网格就负责预测这个object。

每个网格会生成B个候选框(bbox),每个候选框预测x, y, w, h和confidence 5个值,每个网格预测一个类别C。

输出就是S x S x (5 x B + C)的一个tensor。举例说明:S=7,B=2,C=20,则tensor的大小为:7 x 7 x (5 x 2 + 20) = 1470。

yolo和cnn哪个精度高 yolo和rcnn的区别_计算机视觉_04

(2.3)损失函数

yolo和cnn哪个精度高 yolo和rcnn的区别_计算机视觉_05


yolo和cnn哪个精度高 yolo和rcnn的区别_深度学习_06

预测坐标宽高使用了根号,是为了让偏移量变小,对小物体敏感。

不含object的box的confidence预测,加入权重参数(比如取0.1),是为了降低负例对loss的主导(负例比正例要多很多)。

(2.4)V1的不足

每个网格(Grid Cell)只预测一个类别,如果重叠无法解决。

小物体检测效果一般,长宽比可选但单一。

3、YoloV2(2016年12月)

YoloV2做了如下改进:

yolo和cnn哪个精度高 yolo和rcnn的区别_yolo和cnn哪个精度高_07

(3.1)V2改进1:Batch Normalization

V2版本舍弃了Dropout,卷积后全部加入Batch Normalization。

网络的每一层的输入都做了归一化,收敛相对更容易。

经过BN处理后的网络mAP提升了2%。

(3.2)V2改进2:更大的分辨率

V1训练时用的是224 x 224,测试时用的是448 x 448。V2训练时,先使用224 x 224训练,之后又进行了10轮448 x 448的训练。使用更大的分辨率mAP提升约4%。

(3.3)V2改进3:网络结构

DarkNet19,融合了vgg和resnet,实际输入为416 x 416;

核心网络取消了FC层;

5次降采样(32倍关系,特征图13 x 13),V1是7 x 7的网格,V2是13 x 13的网格;

1 x 1卷积减少了很多参数。

(3.4)V2改进4:聚类提取先验框

V1中一个网格只有两个先验框,与Faster RCNN的9个(3个scale,3个rate)相比太少了,很多小物体检测效果并不好。

V2中对COCO和VOC2007中的检测数据,使用kmeans进行了聚类,并根据K值与平均IOU形成的曲线,选定了K=5(K>5时,IOU上升缓慢),即V2中每个网格将产生5个先验框,框的尺寸都比较接近实际值。

yolo和cnn哪个精度高 yolo和rcnn的区别_深度学习_08

在kmeans聚类时,没有使用欧式距离,而是使用1 - IOU计算距离,重合度越高距离越近:

yolo和cnn哪个精度高 yolo和rcnn的区别_偏移量_09

增加先验框后,mAP降低了0.3个百分点,但召回率增加了7个百分点,漏检的减少了,让整体mAP的提升成为可能。

yolo和cnn哪个精度高 yolo和rcnn的区别_聚类_10

(3.5)V2改进5:相对偏移

V1直接进行偏移,如果偏移量较大,会导致收敛不好,模型不稳定,尤其是在刚开始训练的时候。

V2使用相对偏移(偏移量是相对于当前网格左上角坐标的),使用sigmoid函数将偏移量(预测值)规范到0-1之间,偏移不会偏出当前网格。下图中pw, ph表示先验框,tx, ty, th, tw表示偏移量,bx, by, bh, bw表示预测的box的坐标。偏移是在特征图中进行的,还原到原始图像需要乘以32。

yolo和cnn哪个精度高 yolo和rcnn的区别_yolo和cnn哪个精度高_11


yolo和cnn哪个精度高 yolo和rcnn的区别_计算机视觉_12

(3.6)V2改进6:特征融合

最后一层的感受野太大了,小目标可能丢失,因此融合之前的特征。

yolo和cnn哪个精度高 yolo和rcnn的区别_深度学习_13

关于感受野:

yolo和cnn哪个精度高 yolo和rcnn的区别_yolo和cnn哪个精度高_14

(3.7)V2改进7:多尺度

在训练时,使用多尺度,比如最初使用320 x 320,迭代iterations后,使用352 x 352,再迭代iterations后,使用608 x 608。

yolo和cnn哪个精度高 yolo和rcnn的区别_聚类_15

4、YoloV3(2018年一季度)

V3与其它网络速度对比:

yolo和cnn哪个精度高 yolo和rcnn的区别_yolo和cnn哪个精度高_16

(4.1)V3改进1:多尺度与特征融合

yolo和cnn哪个精度高 yolo和rcnn的区别_yolo和cnn哪个精度高_17

使用三个不同大小的特征图,特征图大小(scale)分别为13 x 13、26 x 26、52 x 52,分别预测大物体、中物体和小物体。

每个特征图对应三个先验框,所以V3共有9个先验框,先验框的尺寸也是聚类的结果(与V2类似),如下图所示:

yolo和cnn哪个精度高 yolo和rcnn的区别_计算机视觉_18

在预测前进行特征融合,方式与FPN类似,参考下图理解:

yolo和cnn哪个精度高 yolo和rcnn的区别_计算机视觉_19

(4.2)V3改进2:优化核心网络架构

Darknet19升级为Darknet53;

没有池化和全连接,全部使用卷积;

下采样通过stride=2实现;

3种scale,9个先验框;

基本上当下经典做法都融入了。

yolo和cnn哪个精度高 yolo和rcnn的区别_计算机视觉_20


yolo和cnn哪个精度高 yolo和rcnn的区别_yolo和cnn哪个精度高_21

(4.3)V3改进3:softmax改进,预测多标签任务

物体检测任务中可能一个物体有多个标签。

yolo和cnn哪个精度高 yolo和rcnn的区别_偏移量_22

5、YoloV4(2020年4月)

paper:https://arxiv.org/pdf/2004.10934.pdf

code:https://github.com/AlexeyAB/darknet

yolo和cnn哪个精度高 yolo和rcnn的区别_偏移量_23

待续