小目标检测一直以来是CV领域的难点之一,那么,YOLOv5该如何增加小目标检测层呢?

YOLOv5代码修改————针对微小目标检测

1.YOLOv5算法简介

YOLOv5主要由输入端、Backone、Neck以及Prediction四部分组成。其中:

(1) Backbone:在不同图像细粒度上聚合并形成图像特征的卷积神经网络。

(2) Neck:一系列混合和组合图像特征的网络层,并将图像特征传递到预测层。

(3) Head: 对图像特征进行预测,生成边界框和并预测类别。

检测框架:

2.原始YOLOv5模型

# YOLOv5 head
head:
  [[-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)
 
   [[17, 20, 23], 1, Detect, [nc, anchors]],  # Detect(P3, P4, P5)
  ]

若输入图像尺寸=640X640,

# P3/8 对应的检测特征图大小为80X80,用于检测大小在8X8以上的目标。

# P4/16对应的检测特征图大小为40X40,用于检测大小在16X16以上的目标。

# P5/32对应的检测特征图大小为20X20,用于检测大小在32X32以上的目标。

3.增加小目标检测层

# parameters
nc: 1  # number of classes
depth_multiple: 0.33  # model depth multiple
width_multiple: 0.50  # layer channel multiple
 
# anchors
anchors:
  - [5,6, 8,14, 15,11]  #4
  - [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, BottleneckCSP, [128]],   #160*160
   [-1, 1, Conv, [256, 3, 2]],  # 3-P3/8
   [-1, 9, BottleneckCSP, [256]],  #80*80
   [-1, 1, Conv, [512, 3, 2]],  # 5-P4/16
   [-1, 9, BottleneckCSP, [512]], #40*40
   [-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32
   [-1, 1, SPP, [1024, [5, 9, 13]]],
   [-1, 3, BottleneckCSP, [1024, False]],  # 9   20*20
  ]
 
# YOLOv5 head
head:
  [[-1, 1, Conv, [512, 1, 1]],  #20*20
   [-1, 1, nn.Upsample, [None, 2, 'nearest']], #40*40
   [[-1, 6], 1, Concat, [1]],  # cat backbone P4  40*40
   [-1, 3, BottleneckCSP, [512, False]],  # 13     40*40
 
   [-1, 1, Conv, [512, 1, 1]], #40*40
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 4], 1, Concat, [1]],  # cat backbone P3   80*80
   [-1, 3, BottleneckCSP, [512, False]],  # 17 (P3/8-small)  80*80
 
   [-1, 1, Conv, [256, 1, 1]], #18  80*80
   [-1, 1, nn.Upsample, [None, 2, 'nearest']], #19  160*160
   [[-1, 2], 1, Concat, [1]], #20 cat backbone p2  160*160
   [-1, 3, BottleneckCSP, [256, False]], #21 160*160
 
   [-1, 1, Conv, [256, 3, 2]],  #22   80*80
   [[-1, 18], 1, Concat, [1]], #23 80*80
   [-1, 3, BottleneckCSP, [256, False]], #24 80*80
 
   [-1, 1, Conv, [256, 3, 2]], #25  40*40
   [[-1, 14], 1, Concat, [1]],  # 26  cat head P4  40*40
   [-1, 3, BottleneckCSP, [512, False]],  # 27 (P4/16-medium) 40*40
 
   [-1, 1, Conv, [512, 3, 2]],  #28  20*20
   [[-1, 10], 1, Concat, [1]],  #29 cat head P5  #20*20
   [-1, 3, BottleneckCSP, [1024, False]],  # 30 (P5/32-large)  20*20
 
   [[21, 24, 27, 30], 1, Detect, [nc, anchors]],  # Detect(p2, P3, P4, P5)
  ]
 

# 新增加160X160的检测特征图,用于检测4X4以上的目标。

改进后,虽然计算量和检测速度有所增加,但对小目标的检测精度有明显改善。

总结

到此这篇关于YOLOv5改进系列之增加小目标检测层的文章就介绍到这了,更多相关YOLOv5增加小目标检测层内容请搜索Devmax以前的文章或继续浏览下面的相关文章希望大家以后多多支持Devmax!

YOLOv5改进系列之增加小目标检测层的更多相关文章

  1. YOLOv5改进教程之添加注意力机制

    注意力机制最先被用在NLP领域,Attention就是为了让模型认识到数据中哪一部分是最重要的,为它分配更大的权重,获得更多的注意力在一些特征上,让模型表现更好,这篇文章主要给大家介绍了关于YOLOv5改进教程之添加注意力机制的相关资料,需要的朋友可以参考下

  2. YOLOV5超参数介绍以及优化策略

    yolov5提供了一种超参数优化的方法,这篇文章主要给大家介绍了关于YOLOV5超参数介绍以及优化策略的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或工具有一定的参考学习价值,需要的朋友可以参考下

  3. Pytorch搭建YoloV5目标检测平台实现过程

    这篇文章主要为大家介绍了Pytorch搭建YoloV5目标检测平台实现过程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. 如何将Yolov5的detect.py修改为可以直接调用的函数详解

    YOLOv4还没有退热,YOLOv5已经发布,下面这篇文章主要给大家介绍了关于如何将Yolov5的detect.py修改为可以直接调用的函数的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

  5. yolov5中anchors设置实例详解

    在YOLOV5算法之中,针对不同的数据集,一般会预先设置固定的Anchor,下面这篇文章主要给大家介绍了关于yolov5中anchors设置的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

  6. yolov5模型配置yaml文件详细讲解

    YOLOV5模型配置文件存放在modules文件夹下,这里使用的是 yolov5s.yaml,下面这篇文章主要给大家介绍了关于yolov5模型配置yaml文件的相关资料,需要的朋友可以参考下

  7. YOLOv5目标检测之anchor设定

    在训练yolo网络检测目标时,需要根据待检测目标的位置大小分布情况对anchor进行调整,使其检测效果尽可能提高,下面这篇文章主要给大家介绍了关于YOLOv5目标检测之anchor设定的相关资料,需要的朋友可以参考下

  8. 关于yolov5的一些简单说明(txt文件、训练结果分析等)

    使用YOLOV5训练数据之后我们需要一些评判标准来告诉我们所训练的效果究竟如何,下面这篇文章主要给大家介绍了关于yolov5的一些简单说明,主要是txt文件、训练结果分析等的相关资料,需要的朋友可以参考下

  9. YOLOv5改进之添加SE注意力机制的详细过程

    作为当前先进的深度学习目标检测算法YOLOv5,已经集合了大量的trick,但是还是有提高和改进的空间,针对具体应用场景下的检测难点,可以不同的改进方法,下面这篇文章主要给大家介绍了关于YOLOv5改进之添加SE注意力机制的相关资料,需要的朋友可以参考下

  10. YOLOv5中SPP/SPPF结构源码详析(内含注释分析)

    其实关于YOLOv5的网络结构其实网上相关的讲解已经有很多了,但是觉着还是有必要再给大家介绍下,下面这篇文章主要给大家介绍了关于YOLOv5中SPP/SPPF结构源码的相关资料,需要的朋友可以参考下

随机推荐

  1. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

  2. python数学建模之三大模型与十大常用算法详情

    这篇文章主要介绍了python数学建模之三大模型与十大常用算法详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感想取得小伙伴可以参考一下

  3. Python爬取奶茶店数据分析哪家最好喝以及性价比

    这篇文章主要介绍了用Python告诉你奶茶哪家最好喝性价比最高,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

  4. 使用pyinstaller打包.exe文件的详细教程

    PyInstaller是一个跨平台的Python应用打包工具,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,下面这篇文章主要给大家介绍了关于使用pyinstaller打包.exe文件的相关资料,需要的朋友可以参考下

  5. 基于Python实现射击小游戏的制作

    这篇文章主要介绍了如何利用Python制作一个自己专属的第一人称射击小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试

  6. Python list append方法之给列表追加元素

    这篇文章主要介绍了Python list append方法如何给列表追加元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  7. Pytest+Request+Allure+Jenkins实现接口自动化

    这篇文章介绍了Pytest+Request+Allure+Jenkins实现接口自动化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  8. 利用python实现简单的情感分析实例教程

    商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地,下面这篇文章主要给大家介绍了关于利用python实现简单的情感分析的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

  9. 利用Python上传日志并监控告警的方法详解

    这篇文章将详细为大家介绍如何通过阿里云日志服务搭建一套通过Python上传日志、配置日志告警的监控服务,感兴趣的小伙伴可以了解一下

  10. Pycharm中运行程序在Python console中执行,不是直接Run问题

    这篇文章主要介绍了Pycharm中运行程序在Python console中执行,不是直接Run问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

返回
顶部