在视觉深度学习中,通常将模型分为 2~3 个组成部分:backbone、neck(可选) 和 head。
关于下面经典的架构图的简要说明:
可以看出,YOLOv8 Backbone 为 0~9 层,10~21 层为 YOLOv8 Head。
见图中第 0~9 层。分别为
在yolo v8 的yaml文件中并没有显示地划分出neck部分,实际上neck网络结构就是其head网络结构中部分的前半部分。
head部分整体图:
head: ###neck### - [-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)
yaml配置文件中,注释段落即为neck结构
分清楚neck和head部分,可以很方便的对YOLOv8不同部分进行改进,实现任务涨点!
整理不易🚀🚀,关注和收藏后拿走📌📌欢迎留言🧐👋📣
欢迎专注我的公众号AdaCoding 和 Github:AdaCoding123