head里面的模块之前在backbone出现过的,有conv和c2f,还有concat是新的,就是用来做连接的,就是把几个通道的输出给连接起来,有C,H,W三个维度的,就看最后连接的参数,是按照哪个方向把他们加起来,没有可以学习的参数。upsample是直接继承的nn.Upsample,上采样,就是把图片放大;也是没有能学习的参数。还有三个Detect检测头
head: - [-1, 1, nn.Upsample, [None, 2, "nearest"]] - [[-1, 6], 1, Concat, [1]] # cat backbone P4 - [-1, 3, C2f, [512]] # 12 - [-1, 1, nn.Upsample, [None, 2, "nearest"]] - [[-1, 4], 1, Concat, [1]] # cat backbone P3 - [-1, 3, C2f, [256]] # 15 (P3/8-small) - [-1, 1, Conv, [256, 3, 2]] - [[-1, 12], 1, Concat, [1]] # cat head P4 - [-1, 3, C2f, [512]] # 18 (P4/16-medium) - [-1, 1, Conv, [512, 3, 2]] - [[-1, 9], 1, Concat, [1]] # cat head P5 - [-1, 3, C2f, [1024]] # 21 (P5/32-large) - [[15, 18, 21], 1, Detect, [nc]] # Detect(P3, P4, P5)
学习资料:Yolov8网络模型参数之Head介绍_哔哩哔哩_bilibili
检测头:
相比yolov5,v8的检测头计算量增加了很多。
yolov8的检测头是解耦头,每个头都有2个分支。