上海网站制作顾问,怎么建设h5网站,网站打开速度慢的原因,头条网站模版#x1f4a1;#x1f4a1;#x1f4a1;本文改进内容#xff1a;应订阅者需求#xff0c;如何将YOLOv8 C2f结构引入到YOLOv9
#x1f4a1;#x1f4a1;#x1f4a1;C2f层是一种特殊的卷积层#xff0c;用于将不同尺度的特征图融合在一起#xff0c;以提高目标检测的准… 本文改进内容应订阅者需求如何将YOLOv8 C2f结构引入到YOLOv9
C2f层是一种特殊的卷积层用于将不同尺度的特征图融合在一起以提高目标检测的准确性
使用方法还是跟YOLOv8使用方法类似放在Concat后面 改进结构图如下 《YOLOv9魔术师专栏》将从以下各个方向进行创新
【原创自研模块】【多组合点优化】【注意力机制】【卷积魔改】【block多尺度融合结合】【损失IOU优化】【上下采样优化 】【SPPELAN RepNCSPELAN4优化】【小目标性能提升】【前沿论文分享】【训练实战篇】
订阅者通过添加WX: AI_CV_0624入群沟通提供改进结构图等一系列定制化服务。
订阅者可以申请发票便于报销 YOLOv9魔术师专栏 为本专栏订阅者提供创新点改进代码改进网络结构图方便paper写作
适用场景红外、小目标检测、工业缺陷检测、医学影像、遥感目标检测、低对比度场景
适用任务所有改进点适用【检测】、【分割】、【pose】、【分类】等
全网独家首发创新【自研多个自研模块】【多创新点组合适合paper 】 ☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️ ☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️
包含注意力机制魔改、卷积魔改、检测头创新、损失IOU优化、block优化多层特征融合、 轻量级网络设计、24年最新顶会改进思路、原创自研paper级创新等 本项目持续更新 | 更新完结保底≥80 冲刺100 联系WX: AI_CV_0624 欢迎交流
⭐⭐⭐专栏涨价趋势 99 -199-259-299越早订阅越划算⭐⭐⭐ 2024年计算机视觉顶会创新点适用于Yolov5、Yolov7、Yolov8等各个Yolo系列专栏文章提供每一步步骤和源码轻松带你上手魔改网络
重点通过本专栏的阅读后续你也可以设计魔改网络在网络不同位置Backbone、head、detect、loss等进行魔改实现创新
☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️ ☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️ 1.YOLOv9原理介绍
论文 2402.13616.pdf (arxiv.org)
代码GitHub - WongKinYiu/yolov9: Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information摘要 如今的深度学习方法重点关注如何设计最合适的目标函数从而使得模型的预测结果能够最接近真实情况。同时必须设计一个适当的架构可以帮助获取足够的信息进行预测。然而现有方法忽略了一个事实即当输入数据经过逐层特征提取和空间变换时大量信息将会丢失。因此YOLOv9 深入研究了数据通过深度网络传输时数据丢失的重要问题即信息瓶颈和可逆函数。作者提出了可编程梯度信息programmable gradient informationPGI的概念来应对深度网络实现多个目标所需要的各种变化。PGI 可以为目标任务计算目标函数提供完整的输入信息从而获得可靠的梯度信息来更新网络权值。此外研究者基于梯度路径规划设计了一种新的轻量级网络架构即通用高效层聚合网络Generalized Efficient Layer Aggregation NetworkGELAN。该架构证实了 PGI 可以在轻量级模型上取得优异的结果。研究者在基于 MS COCO 数据集的目标检测任务上验证所提出的 GELAN 和 PGI。结果表明与其他 SOTA 方法相比GELAN 仅使用传统卷积算子即可实现更好的参数利用率。对于 PGI 而言它的适用性很强可用于从轻型到大型的各种模型。我们可以用它来获取完整的信息从而使从头开始训练的模型能够比使用大型数据集预训练的 SOTA 模型获得更好的结果。对比结果如图1所示。
YOLOv9框架图 1.1 YOLOv9框架介绍
YOLOv9各个模型介绍
2.C2f介绍
C2f模块的结构图如下 C2f模块就是参考了C3模块以及ELAN的思想进行的设计让YOLOv8可以在保证轻量化的同时获得更加丰富的梯度流信息。
作用C2f层是一种特殊的卷积层用于将不同尺度的特征图融合在一起以提高目标检测的准确性 3.C2f加入到YOLOv9
3.1 加入到models/block/common.py class C2f(nn.Module):Faster Implementation of CSP Bottleneck with 2 convolutions.def __init__(self, c1, c2, n1, shortcutFalse, g1, e0.5):Initialize CSP bottleneck layer with two convolutions with arguments ch_in, ch_out, number, shortcut, groups,expansion.super().__init__()self.c int(c2 * e) # hidden channelsself.cv1 Conv(c1, 2 * self.c, 1, 1)self.cv2 Conv((2 n) * self.c, c2, 1) # optional actFReLU(c2)self.m nn.ModuleList(Bottleneck(self.c, self.c, shortcut, g, k((3, 3), (3, 3)), e1.0) for _ in range(n))def forward(self, x):Forward pass through C2f layer.y list(self.cv1(x).chunk(2, 1))y.extend(m(y[-1]) for m in self.m)return self.cv2(torch.cat(y, 1))def forward_split(self, x):Forward pass using split() instead of chunk().y list(self.cv1(x).split((self.c, self.c), 1))y.extend(m(y[-1]) for m in self.m)return self.cv2(torch.cat(y, 1))
3.2修改yolo.py 1修改def parse_model(d, ch): # model_dict, input_channels(3)
在源码基础上加入C2f if m in {Conv, AConv, ConvTranspose, Bottleneck, SPP, SPPF, DWConv, BottleneckCSP, nn.ConvTranspose2d, DWConvTranspose2d, SPPCSPC, ADown,RepNCSPELAN4, SPPELAN,C2f}:c1, c2 ch[f], args[0]if c2 ! no: # if not outputc2 make_divisible(c2 * gw, 8)args [c1, c2, *args[1:]]if m in {BottleneckCSP, SPPCSPC,C2f}:args.insert(2, n) # number of repeatsn 1
3.3 yolov9-c-C2f.yaml
后续开源