yolov3(v4)

转载:yolov3(yolov4)原理对比改进创新

YoLoV3原理详解

Yolo的整个网络,吸取了Resnet、Densenet、FPN的精髓,可以说是融合了目标检测当前业界最有效的全部技巧。
在这里插入图片描述

一、backbone主网络

1、升级为Darknet-53

yolov3的backbone部分由Yolov2时期的Darknet-19进化至Darknet-53,加深了网络层数,引入了Resnet中的跨层加和操作,达到了resNet-152的精度,却更快了两倍。对比如下:
在这里插入图片描述

2、Darknet-53的网络结构

共计大概53层,个人感觉就是resnet的轻微改版。
darknet-53、顾名思义有53个卷积层:
1)
DarkNet_53= Conv3x3 + Sum_(下采样 Conv3x3_步长为2 + N x DarkNetBlock) —N为下采样次数
2)
DarkNetBlock(含2层卷积)= Conv1x1 + Conv3x3 + Residual
3)
所以我们可以发现DarkNet-53一共有1 + (1 + 1 x 2 ) + (1 + 2 x2) + (1 + 8 x 2) + (1 + 8 x 2) + (1 + 4 x 2) +全连接= 53个卷积层。
在这里插入图片描述
DarkNet-53相对DarkNet-19的有如下几点改进

1、加深网络层,提升精度,虽然速度有所下降,但是精度有极大提升,可达到resnet-152精度。
2、进入了残差网络resNet模块,防止梯度下降
3、用卷积strid==2代替了池化,防止信息丢失
4、使用空间金字塔池化网络算法SPP(sppnet spatial pyramid pooling)实现多尺寸输入,同尺寸输出。

二、Head

1、多尺度预测

Yolov3采用了类似SSD的mul-scales策略,使用3个scale(13* 13,26* 26,52* 52)的feature map进行预测。yolov2没有,所以对于小目标很差。

有别于yolov2,这里作者将每个grid cell预测的边框数从yolov2的5个减为yolov3的3个。

和yolov2一样,anchor的大小作者还是使用kmeans聚类得出。在coco数据集上的9个anchor大小分别为:(10× 13); (16× 30); (33× 23); (30× 61); (62× 45); (59×119); (116 × 90); (156 × 198); (373 × 326)。
其中在yolov3中,最终有3个分支输出做预测,输出的特征图大小分别为13x13,26x26,52x52,每个特征图使用3个anchor,

13*13的特征图使用(116 × 90); (156 × 198); (373 × 326);这3个anchor

26*26的特征图使用(30× 61); (62× 45); (59×119);这3个anchor

52*52的特征图使用(10× 13); (16× 30); (33× 23);这3个anchor
在这里插入图片描述

anchor的参数构成:

N × N × [3 ∗ (4 + 1 + 80)] 。其中N为feature map的长宽,3表示3个anchor的边框,4表示边框的tx,ty,tw,th,1表示预测的边框的置信度,80表示分类的类别数。

类别预测-激活函数改变

考虑到检测物体的重叠情况,用多标签的方式sigmoid函数替代了之前softmax单标签方式;在这里插入图片描述https://zhuanlan.zhihu.com/p/42865896

YoLoV4原理详解

总结一下YOLOv4框架:
Backbone: CSPDarknet53
Neck: SPP,FPN+PAN
Head: YOLOv3
YOLOv4 = CSPDarknet53 + SPP + (FPN+PAN) + YOLOv3

在这里插入图片描述

一、输入端创新

Yolov4对训练时的输入端进行改进,使得训练在单张GPU上也能有不错的成绩。比如数据增强Mosaic、cmBN、SAT自对抗训练。

但感觉cmBN和SAT影响并不是很大,所以这里主要讲解Mosaic数据增强。

1、Mosaic数据增强

在这里插入图片描述
Yolov4中使用的Mosaic是参考2019年底提出的CutMix数据增强的方式,但CutMix只使用了两张图片进行拼接,而Mosaic数据增强则采用了4张图片,随机缩放、随机裁剪、随机排布的方式进行拼接。
使用原因:
  在平时项目训练时,小目标的AP一般比中目标和大目标低很多。而Coco数据集中也包含大量的小目标,但比较麻烦的是小目标的分布并不均匀。所以为了平衡小、中、大目标的占比数量。
优点:
1.扩充了数据集,均衡大中小目标数量:随机使用4张图片随机拼接,且通过随机缩放可以获得很多小目标,让网络的鲁棒性更好。
2.减少GPU:因为使用Mosaic增强进行训练时,4张图片被整合成一张图片,这样一来可以使mini-batch大小并不用很大,这样一个GPU就能达到比较好的效果。

二、backbone主网络创新

1、由yolov3的darknet-53升级为了CSPDarknet53.

主要变化为在DarkNet53网络结构中,融入了CSP这一网络架构。
在这里插入图片描述
在这里插入图片描述
https://blog.csdn.net/qq_48984174/article/details/111680645

2、Mish激活函数(backbone主干网络部分):

Mish:x * tanh(ln(1+e^x))
在这里插入图片描述
ReLU和Mish的对比,Mish的梯度更平滑。相比之下,Mish能更好地保持准确性,这可能是因为它能更好地传播信息。平滑的激活函数允许更好的信息深入神经网络,从而得到更好的准确性和泛化。(具体的可以看mish论文)。
作者只在Backbone中采用了Mish激活函数,网络后面仍然采用Leaky_relu激活函数。

3、Dropblock

Yolov4中使用的Dropblock,其实和常见网络中的Dropout功能类似,也是缓解过拟合的一种正则化方式。

三、Neck

Neck: SPP,FPN+PAN

FPN结构:

在这里插入图片描述

FPN+PAN结构

在这里插入图片描述

四、Head

相对于yolov3没有什么改变。

输出层的锚框机制和Yolov3相同,主要改进的是训练时的损失函数CIOU_Loss,以及预测框筛选的nms变为DIOU_nms

五、其他技巧

训练用到的小技巧:
训练用到的小技巧:Mosaic数据增强、Label Smoothing平滑、CIOU、学习率余弦退火衰减。
1、C_IOU
Yolov3&Yolov4网络结构与源码分析 - 吴建明wujianming - 博客园 https://www.cnblogs.com/wujianming-110117/p/13845974.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值