YOLOv5的Neck端设计

这篇具有很好参考价值的文章主要介绍了YOLOv5的Neck端设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

YOLOv5的Neck端设计

在上一篇《YOLOv5的Backbone设计》中,我们从yolov5的backbone配置文件出发,细致讲解了backbone的网络架构及各模块的源码和结构,对骨架网络有了较为全面的初步认知。接下来我们会循着之前的学习思路,继续深入到网络结构源码中去探寻YOLO的Neck端设计。

1 Neck结构总览

YOLOv5的Neck端设计

网络结构配置文件中并未将neck和head进行区分,而是直接以head命名,这也是方便在models/yolo.py中的加载。为了读者能够清晰明白地感知neck的设计,在本文中我们只讨论head中的neck部分:

neck:
  [[-1, 1, Conv, [512, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 6], 1, Concat, [1]],  # cat backbone P4
   [-1, 3, C3, [512, False]],  # 13

   [-1, 1, Conv, [256, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 4], 1, Concat, [1]],  # cat backbone P3
   [-1, 3, C3, [256, False]],  # 17 (P3/8-small)

   [-1, 1, Conv, [256, 3, 2]],
   [[-1, 14], 1, Concat, [1]],  # cat head P4
   [-1, 3, C3, [512, False]],  # 20 (P4/16-medium)

   [-1, 1, Conv, [512, 3, 2]],
   [[-1, 10], 1, Concat, [1]],  # cat head P5
   [-1, 3, C3, [1024, False]],  # 23 (P5/32-large)
  ]

可以看到,Neck部分的组件相较于Backbone较为单一,基本上就由CBS、Upsample、Concat和不带shortcut的CSP(C3)。
FPN与PAN
YOLOv5的Neck端设计

另外,Neck的网络结构设计也是沿用了FPN+PAN的结构。FPN就是使用一种 自顶向下的侧边连接在所有尺度上构建出高级语义特征图,构造了特征金字塔的经典结构,也就是上图中的a,具体细节可以参考我之前的文章:FPN网络结构+源码讲解;PAN的结构也不稀奇,FPN中间经过多层的网络后,底层的目标信息已经非常模糊了,因此PAN又加入了自底向上的路线,弥补并加强了定位信息,也就是上图中的b。贴一下FPN和PAN原文:
FPN:Feature Pyramid Networks for Object Detection
PAN:Path Aggregation Network for Instance Segmentation

2 Neck部件模块

2.1 CBS

在Backbone中,为了进一步提取图像中的信息,CBS在改变特征图通道的同时,也会控制卷积模块中的步长s下采样来改变特征图的尺寸。Neck中左侧采用FPN自顶向下设计的过程中,是特征图上采样的过程,因此这个时候再下采样就不合时宜了,所以在FPN中s=1;而到了右侧PAN再次自下而上提取位置信息时,就需要使用CBS继续下采样抽取高层次的语义信息,这也是CBS前后参数差异的原因。具体的CBS结构可以参考上篇文章:YOLOv5的Backbone详解,这里不再赘述。

2.2 nn.Upsample

[-1, 1, nn.Upsample, [None, 2, 'nearest']]

Pytroch内置的上采样模块,需要指定上采样的倍数和方式。

YOLOv5的Neck端设计
这里我们不指定size,上采样倍数为2,上采样方式为nearest,也就是最近填充。

2.3 Concat

[[-1, 6], 1, Concat, [1]],  # cat backbone P4

Concat即拼接,接对象通过from传入,拼接的维度由args参数指定,此处即按照维度1(channel)拼接,其他维度不变。至于from中的特征图到底是哪一个,我建议大家运行模型将各层特征图打印出来,如:
YOLOv5的Neck端设计
通过上图就很容易确定concat的两个对象了,当然,我在文章最开始的时候已经给大家画出来网络结构,大家按图索骥也可以找到。

class Concat(nn.Module):
    # Concatenate a list of tensors along dimension
    def __init__(self, dimension=1):
        super().__init__()
        self.d = dimension

    def forward(self, x):
        return torch.cat(x, self.d)

2.4 CSP/C3

Backbone需要更深层次的网络获取更多的信息,可以说backbone已经完成了主要特征信息的提取,所以在Neck阶段我们并不需要再一味地加深网络,采取不带残差的C3模块可能会更合适一些。
YOLOv5的Neck端设计
具体的模块结构及源码参考backbone中的介绍。

neck端的主要内容大体就是以上了。文章来源地址https://www.toymoban.com/news/detail-466797.html

OVER

到了这里,关于YOLOv5的Neck端设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • YOLOv5/v7 引入 最新 BiFusion Neck | 附详细结构图

    YOLO 社区自前两次发布以来一直情绪高涨!随着中国农历新年2023兔年的到来,美团对YOLOv6进行了许多新的网络架构和训练方案改进。此版本标识为 YOLOv6 v3.0。对于性能,YOLOv6-N在COCO数据集上的AP为37.5%,通过NVIDIA Tesla T4 GPU测试的吞吐量为1187 FPS。YOLOv6-S以484 FPS的速度得到了超过

    2024年02月05日
    浏览(44)
  • YOLOv5改进 | Neck篇 | 利用ASF-YOLO改进特征融合层(适用于分割和目标检测)

    本文给大家带来的改进机制是 ASF-YOLO(发布于2023.12月份的最新机制) ,其是特别设计用于细胞实例分割。这个模型通过结合空间和尺度特征,提高了在处理细胞图像时的准确性和速度。在实验中, ASF-YOLO在2018年数据科学竞赛 数据集上取得了卓越的分割准确性和速度,达到了

    2024年01月15日
    浏览(44)
  • YOLOv5改进 | 一文汇总:如何在网络结构中添加注意力机制、C3、卷积、Neck、SPPF、检测头

    本篇文章的内容是在大家得到一个改进版本的C3一个新的注意力机制、或者一个新的卷积模块、或者是检测头的时候如何替换我们YOLOv5模型中的原有的模块,从而用你的模块去进行训练模型或者检测。因为最近开了一个专栏里面涉及到挺多改进的地方,不能每篇文章都去讲解

    2024年02月19日
    浏览(42)
  • YOLO Air:YOLO科研改进论文推荐 | 改进组合上千种搭配,包括Backbone,Neck,Head,注意力机制,适用于YOLOv5、YOLOv7、YOLOX等算法

    🔥🔥🔥YOLOAir开源算法库!!! 💡统一使用 YOLOv5、YOLOv7 代码框架, 结合不同模块来构建不同的YOLO目标检测模型。 🌟本项目包含大量的改进方式,降低改进难度,改进点包含 【Backbone特征主干】 、 【Neck特征融合】 、 【Head检测头】 、 【注意力机制】 、 【IoU损失函数】

    2024年02月01日
    浏览(49)
  • 必看新手教程!一篇就够!pycharm链接云服务器--yolov5 yolov7训练自己的数据集(矩池云)

    趁着寒假期间稍微尝试跑了一下yolov5和yolov7的代码,由于自己用的笔记本没有独显,台式机虽有独显但用起来并不顺利,所以选择了租云服务器的方式,选择的平台是矩池云(价格合理,操作便捷) 需要特别指出的是,如果需要用pycharm链接云服务器训练,必须要使用pycharm的

    2024年02月03日
    浏览(48)
  • YOLOv7 更换Neck之 BiFPN

    🌟想了解YOLO系列算法更多教程欢迎订阅我的专栏🌟 对于基础薄弱的同学来说,推荐阅读《目标检测蓝皮书》📘,里面涵盖了丰富的目标检测实用知识,是你迅速掌握目标检测的理想选择! 如果想了解 YOLOv5 和 YOLOv7 系列算法的训练和改进,可以关注专栏《YOLOv5/v7 改进实战

    2024年02月06日
    浏览(40)
  • 基于深度学习YOLOv5电动车头盔佩戴检测设计毕业设计

    wx供重浩:创享日记 对话框发送:625头盔 获取完整源码源文件+标注好的数据集(在源码文件夹-yolov5-5.0-VOCdevkit)+优秀论文+答辩PPT及文稿等 一、环境安装配置等请详见该教程 :点击查看 二、下载该源码解压后从PyCharm中打开 三、下载安装相关包开始训练和识别,可以参考教程

    2024年02月11日
    浏览(69)
  • yolov5车牌识别(2023年毕业设计+python源码)

    第一步:将整个代码从github上下载下来, 网址:GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch ONNX CoreML TFLite 也可以直接到GitHub上搜yolov5 # pip install -r requirements.txt # Base ---------------------------------------- matplotlib=3.2.2 numpy=1.18.5 opencv-python=4.1.2 Pillow=7

    2023年04月25日
    浏览(43)
  • Yolov5(v5.0) + pyqt5界面设计

     2.1 添加QtDesigner  Qt Designer 是通过拖拽的方式放置控件,并实时查看控件效果进行快速UI设计 位置 内容 name 可以随便命名,只要便于记忆就可以,本次采取通用命名:Qt Designer Program designer.exe路径,一般在python中.Librarybindesigner.exe Arguments 固定格式,直接复制也可: $FileDir

    2024年04月15日
    浏览(42)
  • 单目测距(车辆测距+前车碰撞预警)-基于yolov8/yolov7/yolov5——毕业设计

    一、开发环境 部署平台:英伟达的Jetson Nano 环境:Linux + ROS 语言:C++ 设备:1920*1080像素的摄像头、开发板。 模型:yolo-v8s 二、单目测距实现思路 0、标定相机和车辆(假设已经标定完成) 1、通过yolo对目标检测,获得ROI区域 2、根据ROI计算车辆和地面接触的中心点 3、根据车

    2024年02月02日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包