点击进入专栏:
《人工智能专栏》 Python与Python | 机器学习 | 深度学习 | 目标检测 | YOLOv5及其改进 | YOLOv8及其改进 | 关键知识点 | 各种工具教程
文章目录
-
-
-
- 1. 为什么要在Neck中使用GSConv?
- 2. Slim-Neck中的模块
- 3. Slim-Neck在YOLOv5中的应用
- 4. Slim-Neck的实验结果
- 5. 代码改进方式
-
- 5.1 修改common.py
- 5.2 修改yolo.py
- 5.3 修改配置文件
-
- GSConv-yolov5s.yaml
- SNc-yolov5s.yaml
- GSConv-yolov5s-attention.yaml
- Shufflenetv2-Slim-Neck-yolov5s.yaml
- 6. 参数量与计算量对比
-
-
论文地址:https://arxiv.org/abs/2206.02424
1. 为什么要在Neck中使用GSConv?
为了加快预测的计算速度,CNN
中的馈送图像几乎必须在 Backbone
中经历类似的转换过程:空间信息逐步向通道传输。并且每次特征图的空间(宽度和高度)压缩和通道扩展都会导致部分语义信息的丢失。密集卷积计算最大限度地保留了每个通道之间的隐藏连接,而稀疏卷积则完全切断了这些连接。
GSConv
尽可能地保留这些连接。但是如果在模型的所有阶段都使用它,模型的网络层会更深,深层会加剧对数据流的阻力,显著增加推理时间。当这些特征图走到 Neck
时,它们已经变得细长(通道维度达到最大,宽高维度达到最小),不再需要进行变换。因此,更好的选择是仅在 Neck
使用 GSConv</