yoloV5
v5和v4没有很大的创新型改进,但是改进了很多tricks,这些tricks都是当前目标检测中比较流行或者有用的,而且高集成度让目标检测更加容易了!
Yolov5
模型
先看理论知识,不然直接看代码会一头蒙
v5对比v4出了4个基础模型,分别对应4个大小:s(mall),m(ediam),l(arge),x(吃我大X)
实际上就是对几个关键位置加了深度,如果你看了前面yolov4的网络源码,你就会很清楚知道区别。
偷张大白的图:
可以看到前面backbone是不是有v4的影子,先别急,我们先了解到各个网络的区别就可以了
每一个CSP对应不同的数字 比如CSP1_1 后面的1对应着我们的残差组件(yolov4中是固定的)
哦对了,v5中的网络框架改用yaml方式写的,我们直接看参数可以更直观了解
贴个v5s模型的yaml:
下面代码先不用看全,我们只需要知道各个模型不一样的地方在哪里
# Parameters
nc: 80 # number of classes
depth_multiple: 0.33 # 模型深度乘子 s:0.33,m:0.67,l:1,x:1.33
width_multiple: 0.50 # 模型宽度乘子:s:0.5,m:0.75,l:1,x:1.25
# 后面都一样 各个模型只有上面的mutiple不一样
anchors:
- [10,13, 16,30, 33,23] # P3/8
- [30,61, 62,45, 59,119] # P4/16
- [116,90, 156,198, 373,326] # P5/32
# YOLOv5 backbone
backbone:
# [from, number, module, args]
[[-1, 1, Focus, [64, 3]], # 0-P1/2
[-1, 1, Conv, [128, 3, 2]], # 1-P2/4
[-1, 3, C3, [128]],
[-1, 1, Conv, [256, 3, 2]], # 3-P3/8
[-1, 9, C3, [256]],
[-1, 1, Conv, [512, 3, 2]], # 5-P4/16
[-1, 9, C3, [512]],
[-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
[-1, 1, SPP, [1024, [5, 9, 13]]],
[-1, 3, C3, [1024, False]], # 9
]
# YOLOv5 head
head:
[[-1, 1, Conv, [512, 1, 1]],
[-1, 1, nn.Upsample, [None, 2, 'nearest']