YOLO笔记

You Only Look Once

介绍

Joseph Redmon作者 V1 V2 V3,已退出

CV领域常见任务

1)classification

2)Classification + Localization

3)Object Detection

4)Segmentation 分为Semantic Segmentation语义分割和Instance Segmentation实例分割

5)Keypoint Detection关键点检测,比如人关节点识别

推荐论文《Object Detection in 20 years: A survey》包含著名数据集与算法

从AlexNet后,目标检测分为One-stage detector(YOLO,Retina-Net)和two-stage detector(RCNN, Fast RCNN,Faster RCNN)。Two-stage detector先识别候选框,再分类 。两阶段识别比较准确,但是现在单阶段准确率也提升上来了。

1、YOLO V1

1.1 预测阶段 (前向推断)

1648718566934

1648718324223

448x448x3作为输入,7x7x30=1470作为输出,30维分别为2个bbox,再加该grid cell对应20个类别的条件概率(Pascal Voc数据集20个类别)

7×7个grid cell -> 每个grid cell预测2个bounding box(x,y,h,w,confidence),框的粗细代表置信度

每个grid cell只能从20个类别中确定1个概率最高的类别,所以模型只能预测7×7=49个物体

20个条件概率 x bbox中的置信度(条件发生的概率即该bbox包含物体的概率) = 20个类别全概率。这里每个grid cell得到2个20维的全概率。整个模型得到7x7x2x20 = 98×20(每个bbox对应20个全概率)

1648718446983

后处理:98个bbox去除置信度低的,去除重复的(nms非极大抑制),获得最终预测结果。98×20的向量,对于第一行dog的概率,将小于阈值0.2的归零,再将20个列向量按dog概率由高到低排序。对于dog概率最高的第一个框bbox_max,其他所有框与之计算IoU(bbox_max,bbox_cur),如果IoU>0.5,则将当前框的dog概率置为0。接着,将第二个非零框作为参照,其后所有框与之计算IoU去重。最后得到98×20的稀疏矩阵。98个框中不全为零的画在预测结果上。

1.2训练阶段(反向传播)

标注框(ground truth)中心点落在grid cell中,则由该grid cell拟合,对应的两个框,与标注框IOU比较大的负责检测拟合。而如果grid cell没有ground truth中心点落入,则对应两个bbox无需检测拟合,置信度接近于0即可。

1648718486891

损失函数:1、负责检测的bbox与ground truth的中心点定位误差(差值平方和) ;2、负责检测的bbox与ground truth的宽高误差(差值平方和);3、负责检测的bbox置信度误差;4、不负责检测的bbox置信度误差;5、负责检测的bbox的分类误差。

1.3优缺点

优点:全图识别能力强,适合迁移泛化,识别背景的能力强于Fast RCNN

缺点:定位能力弱于Fast RCNN;每一个grid cell只能预测一种物体,对于小或密集的物体识别比较差。

2、YOLO V2

CVPR 2017

2.1 改进

2.1.1Batch Normalization

神经元输出不集中在0附近,过多处于sigmoid函数的饱和区(平缓区域),会造成梯度消失问题(平缓区梯度几乎为0)。经过BN处理,分散数据会集中在0附近。BN层一般在线性层FC后,激活函数前。

BN一般不可与Dropout一起用。

2.1.2High高分辨率分类器

2.1.3Anchor

1648718869729

相比于YOLO V1,V2每个grid cell对应的两个bbox不再随机,而是有先验的固定形状。13×13个grid cell,每个grid cell对应5个Anchor,5种长宽比。

1648718923539

每个Anchor对应xywhc(预测框)+20classes共25个输出,这样一共5×25=125维输出,最终模型输出为13x13x125张量输出。

对VOC 2007和COCO数据集进行K-means聚类,对不同的数量的Anchor,有对应的平均IOU,选择5个Anchor兼顾平均IOU与计算复杂程度。这里选择方法有欧式距离、聚类、手动选。

预测框b中心点被限制在grid cell中,宽和高不做限制。预测框b的xywh根据anchor和grid cell中心点算出。

1648719070284

预测框变多了最多13x13x5个,大大增加recall,但是map降低,precision降低。

2.1.4 Fine-Grained Features细粒度特征

1648719147518

增加passthrough层,将feature map分为4份,通道数扩大至4倍,例如26x26x64->13x13x256,拆成4份再拼成一条。将该13x13x256拼接在主通道上。将底层细粒度特征与高层语义特征拼接融合。

1648719314236

2.1.5 Multi-Scale Training

将不同分辨率的图像作为输入,提升1.5%map。

2.1.6 darknet19

1648719844110

2.2优缺点

优点:采用如上测试模型效果更好,采用darknet19的骨干网络更快,类别更多 。Better,Faster,Stronger。

yolo V3采用darknet53

3、YOLO V3

darknet已经停止维护,使用V5版本可以使用GitHub。

3.1.1 更换Backbone骨干网络Darknet-53

1)Backbone骨干网络:

1648719922636

​ Darknet53输出1000类别的分类层。而骨干网络将全连接分类层去掉,采取倒数三个层的输出作为特征提取,分别为32×32 16×16 8×8的特征输出。使用步长为2的卷积实现下采样,所有可以兼容任意尺寸的输入,但必须是32的倍数。

2)Neck颈部网络(也称为FPN特征金字塔Feature Pyramid Networks):

​ 32×32特征->13x13x255对应预测大物体

​ 16×16特征->26x26x255对应预测中等物体

​ 8×8特征->52x52x255对应预测小物体

3)输出层(Head):

​ YOLO V3输出分别为如上张量NxNx[3x(4+1+80)]。255代表每个grid cell对应3个anchor,每个anchor对应85个输出(xywhc+80个类别)。80个类别来自MS COCO数据集。3×85=255。 这里的c称之为Objectness Score更为准确,代表是否有物体存在。c与80分别相乘才是最终的后验概率置信度,即为可视化预测框上的数值。

3.1.2输入图片resize

resize图片至416×416有两种方法,一种是直接resize,一种是保留原始长宽比加灰条

3.1.3Anchor

对于13×13 26×26 52×52三组grid cell。对于一个ground truth标注框的中心点,以上三组分别有一个grid cell,使标准框的中心店落在grid cell中。每个grid cell对于3个Anchor,选出与标准框IOU最大的Anchor。再在三个grid cell对应的三个Anchor中选择IOU最大的Anchor。

对于416x416x3的输入,最终预测框数量为13x13x3+26x26x3+52x52x3=10647个。

3.1.4输出预测框数量与输入端图片大小相关

例如608x608x3的输入,输出为19x19x255 38x38x255 76x76x255

tips:画图软件process on

3.1.5损失函数

1648460626399

正样本:与标注框IOU最大的Anchor,不参与:与标注框IOU比较大但不是最大的Anchor,负样本:与标注框IOU小于阈值的Anchor。

损失函数

1648460827046

3.1.6预测过程

1)计算预测框的信息,设置阈值,过滤得分低的框

2)多分类nms非极大值抑制消除重叠较大的预测框

发表评论

邮箱地址不会被公开。 必填项已用*标注