YOLOv5 引入 最新 BiFusion Neck | 附详细结构图
创始人
2024-05-13 21:09:23
0

在这里插入图片描述
YOLO 社区自前两次发布以来一直情绪高涨!随着中国农历新年2023兔年的到来,美团对YOLOv6进行了许多新的网络架构和训练方案改进。此版本标识为 YOLOv6 v3.0。对于性能,YOLOv6-N在COCO数据集上的AP为37.5%,通过NVIDIA Tesla T4 GPU测试的吞吐量为1187 FPS。YOLOv6-S以484 FPS的速度得到了超过45.0%的AP,超过了相同规模的其他主流检测器(YOLOv5-S、YOLOv8-S、YOLOX-S和PPYOLOE-S)。YOLOv6-M/L在相似的推理速度下也比其他检测器实现了更好的精度性能(分别为50.0%/52.8%)。此外,凭借扩展的Backbone和Neck设计,YOLOv6-L6实现了最先进的实时精度。


在这里插入图片描述

YOLOv6 3.0 结构

YOLOv6贡献

YOLOv6的新功能总结如下:

  1. 我们用双向级联(BiC)模块更新检测器的颈部,以提供更准确的定位信号。SPPF被简化为SimCSPSPF块,它带来了性能提高,速度下降可忽略不计。(SimCSPSPF和我之前提出的SPPFCSPC结构相同)
  2. 我们提出了一种锚辅助训练(AAT)策略,以在不影响推理效率的情况下,享受基于锚和无锚范例的优点。(这一点也比较有意思,v7作者在我的issue中是这么回答的issue)
  3. 我们深化 YOLOv6,使其在主干和颈部具有另一个阶段,这增强了它在 COCO 数据集上以高分辨率输入实现新的最先进性能。
  4. 我们采用了一种新的自蒸馏策略来提高 YOLOv6 小模型的性能,其中 DFL 的较重分支在训练期间被用作增强的辅助回归分支,并在推断时被移除,以避免显著的速度下降。

BiFusion Neck 融合的原理

BiFusion Neck 融合的原理其实并不是很难理解,有些博主解析的过于复杂,其实无非就是4步:

  1. 同尺度特征图使用 1×1 卷积降维;
  2. 大尺度特征图先使用 1×1 卷积降维,再使用 3×3 步长为 2 的卷积进行下采样
  3. 小尺度特征图 使用 2×2 的转置卷积进行上采样
  4. 然后将这三部分得到的特征图 Conca 拼接起来,使用 1×1 卷积再次降维;

BiFusion Neck结构图

我这里把YOLOv6的颈部网络完美移植到了YOLOv5


请添加图片描述

完整无水印高清结构图请关注博主本人公众号 `深度之灵` 回复 `bif` 领取;

参数量与计算量

模型参数量(parameters)计算量(GFLOPs)
yolov5s722588516.5
yolov5s BiFusion Neck739756517.5

很巧妙的改进~


代码修改方式:
yolo.py中加入nn.ConvTranspose2d

在这里插入图片描述
在这里插入图片描述


BiFusion Neck 配置文件

yolov5s-Bifusion.yaml

# YOLOv5 🚀 by Ultralytics, GPL-3.0 license
# by迪菲赫尔曼 ,仅供学习交流,别tm倒卖!
# Parameters
nc: 80  # number of classes
depth_multiple: 0.33  # model depth multiple
width_multiple: 0.50  # layer channel multiple
anchors:- [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 v6.0 backbone
backbone:# [from, number, module, args][[-1, 1, Conv, [64, 6, 2, 2]],  # 0-P1/2[-1, 1, Conv, [128, 3, 2]],  # 1-P2/4[-1, 3, C3, [128]],[-1, 1, Conv, [256, 3, 2]],  # 3-P3/8[-1, 6, C3, [256]],[-1, 1, Conv, [512, 3, 2]],  # 5-P4/16[-1, 9, C3, [512]],[-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32[-1, 3, C3, [1024]],[-1, 1, SPPF, [1024, 5]],  # 9]# YOLOv5 v6.0 head
head:[[-1, 1, Conv, [512, 1, 1]], #10[-1, 1, nn.ConvTranspose2d, [512, 2, 2, 0, 0, 512]], #11[ 6, 1, Conv, [256, 1,1]],  #12[ 4, 1, Conv, [128, 1,1]],  #13[-1, 1, Conv, [128, 3,2]],  #14[[11, 12, 14], 1, Concat, [1]],  # cat backbone P4  #15[-1, 1, Conv, [512, 1,1]],    # 16[-1, 3, C3  , [512, False]],  # 17[-1, 1, Conv, [256, 1, 1]],   # 18[-1, 1, nn.ConvTranspose2d, [256, 2, 2, 0, 0, 256]], #19[ 4, 1, Conv, [ 128, 1,1 ] ],  #20[ 2, 1, Conv, [ 64, 1,1 ] ],   #21[-1, 1, Conv, [ 64, 3,2 ] ],   #22[[19, 20, 22], 1, Concat, [1]],  #23  cat backbone P3[-1, 1, Conv, [256, 1,1]],    #24[-1, 3, C3  , [256, False]],  #25 out[-1, 1, Conv, [256, 3, 2]],   #26[[-1, 18], 1, Concat, [1]],   #27  cat head P4[-1, 3, C3  , [512, False]],  #28 out (P4/16-medium)[-1, 1, Conv, [512, 3, 2]],   #29[[-1, 10], 1, Concat, [1]],   #30 cat head P5[-1, 3, C3  , [1024, False]], # 31 (P5/32-large)[[25, 28, 31], 1, Detect, [nc, anchors]],  # Detect(P3, P4, P5)]

yolov5m-Bifusion.yaml

# YOLOv5 🚀 by Ultralytics, GPL-3.0 license
# by迪菲赫尔曼 ,仅供学习交流,别tm倒卖!
# Parameters
nc: 80  # number of classes
depth_multiple: 0.67  # model depth multiple
width_multiple: 0.75  # layer channel multiple
anchors:- [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 v6.0 backbone
backbone:# [from, number, module, args][[-1, 1, Conv, [64, 6, 2, 2]],  # 0-P1/2[-1, 1, Conv, [128, 3, 2]],  # 1-P2/4[-1, 3, C3, [128]],[-1, 1, Conv, [256, 3, 2]],  # 3-P3/8[-1, 6, C3, [256]],[-1, 1, Conv, [512, 3, 2]],  # 5-P4/16[-1, 9, C3, [512]],[-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32[-1, 3, C3, [1024]],[-1, 1, SPPF, [1024, 5]],  # 9]# YOLOv5 v6.0 head
head:[[-1, 1, Conv, [512, 1, 1]], #10[-1, 1, nn.ConvTranspose2d, [512, 2, 2, 0, 0, 512]], #11[ 6, 1, Conv, [256, 1,1]],  #12[ 4, 1, Conv, [128, 1,1]],  #13[-1, 1, Conv, [128, 3,2]],  #14[[11, 12, 14], 1, Concat, [1]],  # cat backbone P4  #15[-1, 1, Conv, [512, 1,1]],    # 16[-1, 3, C3  , [512, False]],  # 17[-1, 1, Conv, [256, 1, 1]],   # 18[-1, 1, nn.ConvTranspose2d, [256, 2, 2, 0, 0, 256]], #19[ 4, 1, Conv, [ 128, 1,1 ] ],  #20[ 2, 1, Conv, [ 64, 1,1 ] ],   #21[-1, 1, Conv, [ 64, 3,2 ] ],   #22[[19, 20, 22], 1, Concat, [1]],  #23  cat backbone P3[-1, 1, Conv, [256, 1,1]],    #24[-1, 3, C3  , [256, False]],  #25 out[-1, 1, Conv, [256, 3, 2]],   #26[[-1, 18], 1, Concat, [1]],   #27  cat head P4[-1, 3, C3  , [512, False]],  #28 out (P4/16-medium)[-1, 1, Conv, [512, 3, 2]],   #29[[-1, 10], 1, Concat, [1]],   #30 cat head P5[-1, 3, C3  , [1024, False]], # 31 (P5/32-large)[[25, 28, 31], 1, Detect, [nc, anchors]],  # Detect(P3, P4, P5)]

在这里插入图片描述

本代码仅供学习交流使用,切勿倒卖,转载请注明出处 !!

相关内容

热门资讯

我的伙伴小学作文【精彩6篇】 我的伙伴小学作文 篇一 我的伙伴小学作文 篇二我的伙伴小学作文 篇三   一天,我在院子里玩耍,无意...
春节联欢晚会小学作文(通用6... 春节联欢晚会小学作文 篇一喜迎新春,迎接春节联欢晚会今年的春节联欢晚会真是精彩纷呈!我和家人一起坐在...
同一个屋檐下作文600字【精... 同一个屋檐下作文600字 篇一家是一个温暖的港湾,是每个人一生中最重要的地方。在同一个屋檐下生活,意...
养兔真让我着迷小学作文(实用... 养兔真让我着迷小学作文 篇一 我家养了一只可爱的小兔子,从那时起,我就对养兔子产生了浓厚的兴趣...
春天作文【通用6篇】 春天作文 篇一春天的美丽春天是四季中最美丽的季节之一。当冬天的寒冷逐渐消退,春天的阳光温暖地洒在大地...
牛奶的自述小学作文(精彩3篇... 牛奶的自述小学作文 篇一我是一杯牛奶,来自一头温柔的奶牛妈妈。在牧场上,我见证了奶牛妈妈们辛勤的劳动...
言而有信小学作文(推荐5篇) 言而有信小学作文 篇一:诚信的重要性诚信是一种美德,是一个人最基本的道德品质之一。作为小学生,我们更...
我喜欢的小动物作文【实用6篇... 我喜欢的小动物作文 篇一我喜欢的小动物是松鼠。每次看到它们在树上迅速爬行,我总会被它们的灵活和机敏所...
杭州游之虎跑公园小学作文【经... 杭州游之虎跑公园小学作文 篇一我最喜欢的杭州景点之一就是虎跑公园。这个公园坐落在风景如画的西湖边,是...
“日”字变形记小学作文【推荐... “日”字变形记小学作文 篇一太阳的日子我喜欢太阳,因为它给了我们光明和温暖。太阳每天都会升起,照亮大...
小小的欲望作文350字(最新... 篇一:小小的欲望小小的欲望作文350字 篇一小小的欲望,是我们内心深处微不可见的火花,它时而燃烧得熊...
奇思妙想的作文400字(精选... 奇思妙想的作文400字 篇一标题:梦幻的花园我有一个奇妙的梦想,梦见自己拥有了一个令人惊叹的花园。这...
成长的烦恼四年级作文【优秀5... 成长的烦恼四年级作文 篇一成长的烦恼我是一名四年级的学生,正在经历着成长的烦恼。在成长的道路上,我遇...
爱人的作文【最新3篇】 爱人的作文 篇一爱人的作文我有一个特别重要的人,那就是我的爱人。他是我生命中最亲密的伴侣,也是我最深...
中秋之夜的小学作文500字 中秋之夜的小学作文500字  中秋节已悄悄的离我们近了,近了,此时我的心情又怎能不振奋呢?面临三天的...
有你真好的作文(最新6篇) 有你真好的作文 篇一爱与陪伴人生中,有太多的瞬间让我感受到了你的好。你是我最亲近的人,也是我最信任的...
火烧云小学作文【最新6篇】 火烧云小学作文篇一:火烧云的美丽火烧云是一种非常美丽的自然景观,它们在天空中绽放出绚丽的色彩,给人们...
人间自有温情在作文(精简3篇... 人间自有温情在作文 篇一温情的力量人间自有温情,在日常生活中,我们时常能够感受到这种力量。温情是指人...
小学三年级抗疫情作文(精简5... 小学三年级抗疫情作文 篇一:我们一起抗疫,共克时艰新冠疫情的突然爆发给全世界带来了巨大的挑战,人们的...
有你真好的作文(通用6篇) 有你真好的作文 篇一有你真好每个人的生活中都会有那么一个重要的人,他们的存在让我们的生活变得更加美好...