yolo v3制作自己的数据_YOLO系列算法(V1-V3)

b20b6c7ceedd36f5b7d65d8708c8497c.png

yolo系列检测算法目前包括v1-v4版本,本文对其发展脉络及核心思想进行介绍。

一、YOLO-V1:

v1的主打点是real-time,正如其名:you only look once: unified, real-time object detection。

f8492dc358fe45af3c96aad361d8f420.png

网络结构:上图是网络结构图,输入448x448的图片,经过特征抽象,网络倒数第三层输出7x7x1024大小的Tensor,倒数第二层是全连接层,输出4096个unit,这里面每一个unit都包含全局信息,最后一层输出1470个unit,最终reshape为7x7x30大小的Tensor。

277237cfb0223fe96225c631985f816c.png

这里7x7x30的设置是有特殊含义的:

,其中4表示预测的位置信息:
,1表示预测框精准度(预测框和GT的IoU),2表示每个grid预测两个框,20表示类别信息,对应VOC数据集中20个物体类别。7x7(对应上图SxS大小的grid)表示将在图片的49个grid进行预测,这里7x7可以调节,越大可检出的物体越多,当然计算复杂度也越高。另外每个grid预测框的数量也是一个可调节的超参,越大,召回率越高。

4bd030fc969eb1182bef12379b3bddac.png

上面公式是loss function,其中

表示当有物体框的中心点落在当前grid内部时,其为1,否则为0。
  1. 第一行采用
    回归中心点位置,这里其实回归的是预测框中点相比grid左上角的偏差,降低了回归难度,类似于SSD中anchor设置(插播一下,设置anchor有两个本质原因:筛选训练中的正负样本,再者就是降低位置回归难度);
  2. 第二行回归检测框宽高,需要注意到回归值取了根号,这样可减小物体尺度差异的影响;
  3. 第三行&第四行为预测框准度loss,若grid包含物体,回归值为预测矿和GT的IoU,否则回归值为0;
  4. 最后一行是预测框分类loss,同分类任务;
  5. 是loss function的权重,考虑到包含物体的grid数量远小于不包含物体的grid数量,所以作者设置
    &

另外还有几个trick需要注意:

  1. 前面提到每个grid预测2个框,不过在训练中,只选取一个框用于计算loss function,选择的依据是哪个预测框和GT的IoU更大,这样做的好处在于每一个grid对应的框经过训练,可分别负责不同大小,aspect ratio的物体,类似anchor-based方法手动设置不同配置的anchor;
  2. 在inference过程中,预测框的置信度会综合分类置信度&IoU准度,输出结果更可信。这一点其实对mAP计算有利,因为mAP计算中涉及预测框排序,对SSD来说,根据分类置信度排序,但分类置信度和物体定位准度之间并不完全对等,可能导致mAP指标偏低(IoUNet对此有研究),而这里最终的置信度综合考虑了分类&定位置信度;
  3. 考虑到当一个物体较大时,多个grid可能都会输出预测结果,所以在inference阶段需要添加NMS进行后处理,这个是检测算法标配(CenterNet类似算法除外);

就检测结果来说,v1的不足在于:

  1. 多个类别不同物体中心点落在同一个grid内部时,分类loss出现歧义;
  2. 定位准度相比faster-rcnn有较大差距,小物体检出效果不佳;

优势在于误检少,当然也与其grid数量少相对应;速度快;

二、YOLO-V2

v2有两个主打点:stronger & faster,更强&更快。

v2基于v1改进而来,包含以下策略:

  1. BN:加快模型收敛,标配;
  2. High resolution classifier:保证ImageNet数据集上预训练模型输入分辨率同检测模型输入分辨率。不过目前检测模型可直接train from scratch,这一点不再是问题;
  3. Convolutional with anchor boxes:引入anchor机制,在基本不影响mAP的情况下极大提升了recall(~8%)。前面提到,anchor机制降低了模型的学习难度,对v1来说,虽然每一个grid可以设置多个框(v1中设置2个),这里每个框未添加任何先验,只是通过后期训练逐渐分化,分别处理不同大小&aspect ratio的框,而采用anchor机制每一个框对应不同的大小&aspect ratio的配置,相当于引入针对当前任务的先验,降低了学习难度(尤其是在采用dimension cluster策略的情况下);
  4. Dimension cluster:anchor的宽高通过在当前数据集聚类而来,提升了anchor和标注信息match程度;
  5. Direct local prediction:考虑到随机初始化&anchor-based方法对框中点offset预测未添加约束,可能导致网络训练初期不稳定,由此v2采用了v1的预测方式,输出中点相比当前grid左上点的offset,约束offset介于当前grid内。
  6. Fine-grained features:引入passthrough layer做下采样,本质是reshape,将空间维度的feature放置到通道维度,降低了空间分辨率,模型输出层的复杂度也降低了。
  7. Multi-scale training:相比v1,v2中无全连接层,可接受任意大小的输入,作者采取了多尺度训练的方式,训练的模型可接受任意大小的输入。

就精度而言,v2和同期的SSD接近,但速度更快。

三、YOLO-V3

对v2结构和训练技巧进行改进,在基本不增加inference time的情况下提升精度,包含以下核心改进:

  1. FPN,目前检测算法标配,在多个不同分辨率特征图输出预测信息;FPN的核心在于综合了浅层特征图的细节纹理信息&深层特征图语义信息。
  2. 检测框解码,如下图所示,中心点预测的是相对grid左上角的offset(添加sigmoid函数限制了范围介于[0,1]),这点和SSD不同,SSD预测的是相比anchor中点的偏差,预测值无约束,这种方式训练不稳定,但最终预框可能更精准。

3952136813e51ac3ba9ab9a264ef7cf8.png

3. v3对输出特征图每一个cell,输出255维向量, 其中

,这里3表示每个cell放置3个anchor,每个anchor有4维位置信息(x,y,w,h),1维置信度信息,80维COCO类别信息。可以看到在yolo系列算法中,预测框包含物体的置信度和分类类别置信度都进行了解耦,这是其和SSD的又一点不同,SSD使用分类类别置信度当做包含物体置信度,相比之下,yolo这种方式更为合理。

YOLO-V4中介绍目标检测中常用的trick,另写一篇文章分享。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值