YOLOv5

———————————yolov5—————————

有YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四个版本,只有模型宽度与深度的区别。

四个组成部分:

输入端:对输入图像进行缩放、归一化、数据增强等操作

backbone基准网络:分类器网络提取特征

Neck网络:进一步提升特征的表达能力

Predition/Head输出端:预测,进行回归分类

基础组件及其实现脚本

CBL

即Conv+BN+Leaky_relu。

 

CBM

2cbl组成的一种残差结构

CSP1_X

由cbl、cbm组成,x为cbm数量,即图中x个残差组件

进一步特征融合

CSP2_X

由cbl组成,x为cbl数量,即图中2*x个

Focus

将多个slice结果Concat起来,然后将其送入CBL模块中。

目的是剪裁特征图,使特征图数量减少,通道变多。

class Focus(nn.Module):
   
# Focus wh information into c-space
   
def __init__(self, c1, c2, k=1, s=1, p=None, g=1, act=True):  # ch_in, ch_out, kernel, stride, padding, groups
       
super(Focus, self).__Cblinit__()
       
self.conv = Conv(c1 * 4, c2, k, s, p, g, act)
       
# self.contract = Contract(gain=2)

   
def forward(self, x):  # x(b,c,w,h) -> y(b,4c,w/2,h/2)
       
return self.conv(torch.cat([x[..., ::2, ::2], x[..., 1::2, ::2], x[..., ::2, 1::2], x[..., 1::2, 1::2]], 1))
       
# return self.conv(self.contract(x))

SPP

采用1×1、5×5、9×9和13×13的最大池化方式,进行多尺度特征融合

Mosaic数据增强

CutMix基于2张图像,而Mosaic基于4张图像,进行随机缩放、随机裁剪和随机排布

自适应锚框计算

Yolov5有,Yolov4没有,可设置参数noautoanchor

自适应图片缩放

只在推理阶段进行,保持图片的长宽比,减小短边填充的黑边。例如网络向下执行了5次下采样,2^5=32,则原图中32*32的区域为最后特征图的一个点,减少的黑边宽度需要是32的整数倍,余数仍然要补充黑边。

例如原图800*600,目标特征图大小416*416,可以缩放后短边两侧分别补4

Neck网络FPN+PAN结构

即自顶向下fpn+自底向上pan的双塔结构

Yolov4yolov5neck层的区别

GIOU_Loss DIOU_nms

YOLOv5算法详解

https://blog.csdn.net/WZZ18191171661/article/details/113789486

github代码:

https://github.com/ultralytics/yolov5

个人评价:融合了很多算法的思路,作者没有和yolov4比较,这一点一直为人诟病。但实际使用还是不错的,在小麦检测比赛中乱杀。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值