YOLO改进
文章平均质量分 84
YOLO改进
欣婷
这个作者很懒,什么都没留下…
展开
-
YOLOv8改进2.6-更换标准卷积为DSConv
这些模型以具有数百万个参数而闻名,即使使用GPU,它也需要更多的计算时间和比许多应用程序所需的更多的存储空间。其中之一是只有整数值的张量,不可训练,并根据预训练网络中浮点(FP)权重的分布进行计算。另一个组件由两个分布移位器张量组成,它们将量化张量的权重定位在模拟原始预训练网络分布的范围内:其中一个移动每个内核的分布,另一个移动每个通道。这些权重可以重新训练,使网络能够适应新的任务和数据集。运行卷积神经网络时所需的大部分内存和计算工作都花在了卷积层中,例ResNet50超过90%的时间/内存。原创 2023-08-10 22:33:21 · 3 阅读 · 0 评论 -
YOLOv8改进2.5-更换QARepVGG主干网络
更重要的是,这些原则引导我们设计了一个全新的架构,我们称之为QARepVGG(即Quantization-Aware RepVGG,量化感知repvgg),它不会遭受严重的量化崩溃,其构建块如图1所示,其量化性能得到了大幅提升。然而,在神经架构设计中,量化感知并不是首要任务,因此在很大程度上被忽视。例如,许多著名的架构存在量化崩溃问题,如MobileNet [20, 21, 36]和EfficientNet [38],这需要解决设计或采用高级量化方案,如[26, 37, 45]和[2, 16]。原创 2023-08-10 22:25:55 · 6 阅读 · 0 评论 -
YOLOv8改进2.4-在C2f模块添加CBAM注意力机制
给定一个中间特征图,我们的模块会沿着两个独立的维度(通道和空间)依次推断注意力图,然后将注意力图乘以输入特征图以进行自适应特征修饰。由于CBAM是轻量级的通用模块,因此可以以可忽略的开销将其无缝集成到任何CNN架构中,并且可以与基础CNN一起进行端到端训练。找到block.py ultralytics/nn/modules/block.py 在代码中添加CBAM注意力机制。这里有两种添加方式,一种在spit和bottleneck间添加,另一种为在cancat后添加。任意空白添加如下代码。原创 2023-08-10 22:19:00 · 14 阅读 · 0 评论 -
YOLOv8改进2.3-在C2f模块添加NAM注意力机制
2017],Hu等人[2018],Park等人[2018]、Woo等人[2018]和Gao等人[199])。许多先前的研究都侧重于通过注意操作捕捉显著特征(Zhang等人[2020],Misra等人[2021年])。然而,它们缺乏对权重的贡献因素的考虑,这能够进一步抑制不重要的通道或像素。受Liu等人的启发。这里有两种添加方式,一种在spit和bottleneck间添加,另一种为在cancat后添加。因此,我们提出了一种有效的注意力机制——基于归一化的注意力模块(NAM)任意空白添加如下代码。原创 2023-08-10 22:12:02 · 21 阅读 · 0 评论 -
YOLOv8改进2.2-更换InceptionNeXt主干网络
尽管Depthwise Convolution的FLOPs很小,但是它实际上是一个“昂贵的”运算符,因为它带来了很高的内存访问成本(memory accesscost),这个问题使它成为了计算密集型设备的瓶颈。此外,ConvNeXt表明,使用像GELU激活函数这样的现代模块和类似于注意力窗口大小的大Kernel,CNN模型在各种设置和任务中可以稳定地优于Swin Transformer。2012年,AlexNet在ImageNet竞赛中获胜,开启了CNN在深度学习特别是计算机视觉领域的新时代。原创 2023-08-10 22:02:03 · 4 阅读 · 0 评论 -
YOLOv8改进2.1-在C2f模块添加Biformer
为此,作者探索了一种动态的、查询感知的稀疏注意力机制,其关键思想是在粗糙区域级别过滤掉大部分不相关的键值对,以便只保留一小部分路由区域(这不就把冗余的信息干掉了吗老铁们)。为了缓解多头自注意力(Mul ti-Head Self-Attenti on,MHSA)的可扩展性问题,先前的一些方法提出了不同的稀疏注意力机制,其中每个查询只关注少量的键值对,而非全部。这里有两种添加方式,一种在spit和bottleneck间添加,另一种为在cancat后添加。1.要么使用手工制作的静态模式(无法自适应);原创 2023-08-10 21:51:25 · 4 阅读 · 0 评论 -
YOLOv8改进2.0-特征上采样CARAFE
在这项工作中,我们提出了内容感知的特征重组(CARAFE),一个通用的、轻量级的和高效的操作符来实现这一目标。与以前只利用亚像素邻域的工作(例如双线性插值)不同,CARAFE可以在一个大的接受域内聚合上下文信息。CARAFE不是对所有样本使用固定的内核(例如反褶积),而是支持特定于实例的内容感知处理,从而实时生成自适应内核。找到yolov8.yaml文件 ultralytics/cfg/models/v8/yolov8.yaml,并对其进行修改。将里面的内容替换为(修改内容较多,推荐直接cv)原创 2023-08-10 18:09:40 · 5 阅读 · 0 评论 -
YOLOv8改进1.9-特征融合CFP
SSD是最早使用特征金字塔Q结构表示多尺度特征信息的方法之一,FPN则依赖于自下而上的特征金字塔结构,通过建立自上而下的路径和横向连接从多尺度高级语义特征图中获取特征信息。在此基础上,PANet提出了一种额外的自下而上路径,使高级特征图也可以从低级特征图中获得足够的细节信息。M2Det通过构建多阶段特征金字塔来提取多阶段和多尺度的特征,实现了跨层级和跨层特征融合。与现有的方法不同,本文方法不仅关注不同层之间的特征交互,还考虑了同一层内的特征调节,该调节在密集预测任务中被证明是有益的。原创 2023-08-10 17:59:28 · 2 阅读 · 0 评论 -
YOLOv8改进1.8-更换ConvNeXtv2主干网络
在改进的架构和更好的表示学习框架的推动下,视觉识别领域在20世纪20年代初实现了快速现代化和性能提升。虽然这些模型最初是为使用ImageNet标签进行监督学习而设计的,但它们也可能受益于自监督学习技术,如掩蔽自动编码器(MAE)。在本文中,我们提出了一个完全卷积屏蔽的自动编码器框架和一个新的全局响应归一化(GRN)层,该层可以添加到ConvNeXt架构中,以增强信道间特征竞争。这种自我监督学习技术和架构改进的共同设计产生了一个名为ConvNeXt V2的新模型家族,它显著提高了系统的性能。原创 2023-08-10 17:52:04 · 9 阅读 · 0 评论 -
YOLOv8改进1.7-在C2f模块中添加EMA注意力机制
与SE注意相比,坐标注意(Coordinate attention,CA)[8]将特定方向的信息沿空间维度方向嵌入到通道注意中,并选择合适的通道维度降维比例,取得了相当的性能。虽然这是适当的信道降维率虽然性能较好,但在提取深度视觉表征时可能会带来副作用,在高效信道注意(Efficient channel attention,ECA)中对不降维的效率进行了探讨[10]大层深度对提高cnn的表示能力起着重要的作用。在分组结构的基础上,改进了CA的顺序处理方法,提出了一种不降维的高效多尺度关注(EMA)方法。原创 2023-08-10 17:43:46 · 14 阅读 · 0 评论 -
YOLOv8改进1.6-更换Next-vit主干网络
在这些工作中,我们提出了在现实工业场景中有效部署的下一代视觉变压器,即next-vit,从延迟/精度权衡的角度来看,它在cnn和vit中都占主导地位。大量实验表明,Next-ViT显著优于现有的cnn、vit和CNN-Transformer的混合架构各种视觉任务之间的延迟/准确性权衡。在CoreML上,Next-ViT超过了EfficientFormer4.6 mAP(从42.6到47.2)对COCO检测和3.5%在类似的延迟下,ADE20K分段的mloU(从45.1%到48.6%)。原创 2023-08-10 17:33:12 · 5 阅读 · 0 评论 -
YOLOv8改进1.5-更换VanillaNet主干网络
基础模型的核心是“越多越好”的哲学,计算机视觉和自然语言处理领域的惊人成功就是例证。在这项研究中,我们介绍了VanillaNet,一种在设计中融入优雅的神经网络架构。每一层都经过精心制作,紧凑而直接,在训练后对非线性激活函数进行修剪,以恢复原始架构。找到yolov8.yaml文件 ultralytics/cfg/models/v8/yolov8.yaml,并对其进行修改。找到ultralytics/nn/tasks.py,修改parse_model函数替换如下代码。在夹头后添加如下代码。原创 2023-08-10 17:21:09 · 6 阅读 · 0 评论 -
YOLOv8改进1.4-添加Wise_iou
找到ultralytics/utils/tal.py的TaskAlignedAssigner类下的get_box_metrics函数做如下操作。找到ultralytics/utils/loss.py,修改BboxLoss类下的forward函数 替换成如下代码。找到ultralytics/utils/metrics.py 修改bbbox_iou函数 替换成下面代码。原创 2023-08-10 16:59:23 · 6 阅读 · 0 评论 -
YOLOv8改进1.3-在C2f模块中添加RepGhostBottleneck模块
提出了一种新的硬件高效的RepGhost模块,通过重新参数化来实现隐式特征重用,而不是使用连接操作符。在ImageNet和COCO基准测试上的实验表明,在移动设备上,RepGhostNett比GhostNet和MobileNetV3更有效和高效。特别是,我们的RepGhostNet在ImageNet数据集上的Top-1精度比GhostNet高2.5%,参数更少,在基于arm的手机上的延迟也相当。虽然连接不需要参数和flops,但它在硬件设备上的计算成本是不可忽略的。在block中添加如下代码。原创 2023-08-10 12:45:19 · 12 阅读 · 0 评论 -
YOLOv8改进1.2-更换EfficientViT主干网络
因此,我们设计了一种具有三明治布局的新构建块,即在高效FFN层之间使用单个内存绑定的MHSA,从而提高了内存效率,同时增强了信道通信。为了解决这个问题,我们提出了一个级联的群体注意模块,以不同的完整特征分割来馈送注意头,不仅节省了计算成本,而且提高了注意多样性。与最近的高效型号MobileViT-XXS相比,efficientvitt-m2的精度提高了1.8%,同时在GPU/CPU上运行速度提高了5.8倍/3.7倍,转换为ONNX格式时速度提高了7.4倍。将里面的内容替换为(修改内容较多,推荐直接cv)原创 2023-08-10 12:31:57 · 10 阅读 · 0 评论 -
YOLOv8改进1.1-在C2f模块添加GAM注意力机制
近年来,注意机制的提高在多种应用中,并引起了研究兴趣。为了放大跨维度的交互作用。本文研究注意机制跨越空间通道的维度,提出了一种“全局”注意机制,保留信息以放大“全局”跨维度的相互作用,在所有三个维度上捕捉重要特征的注意力机制。因此,我们提出了一种全局注意力机制Q,通过减少深度神经网络的注意力来提高深度神经网络的性能信息缩减,放大全局交互表征。对提议的评价CIFAR-100和ImageNet-1K上图像分类任务的机制表明我们的方法稳定地优于最近的几种注意力机制ResNet和轻量级MobileNet。原创 2023-08-10 12:09:49 · 4 阅读 · 0 评论 -
YOLOv8改进1.0-SCConv: 即插即用的空间和通道重建卷积
在本文中我们尝试利用特征之间的空间和通道冗余来进行CNN压缩,并提出了一种高效的卷积模块,称为SCConv (spatial and channel reconstruction convolution),以减少冗余计算并促进代表性特征的学习。具体来说,网络修剪[17,22,30]是一种直接的方法,从现有的学习大模型中修剪不关键的神经元连接,使其更薄。•我们设计了一种名为SCConv的即插即用操作,将SRU和CRU以顺序的方式组合在一起,以取代标准卷积,用于在各种骨干cnn上操作。原创 2023-08-10 11:47:35 · 10 阅读 · 0 评论 -
YOLOv5源码解读1.7-网络架构common.py
学习了yolo.py网络模型后,今天学习common.py,common.py存放这YOLOv5网络搭建的通用模块,如果修改某一块,就要修改这个文件中对应的模块。7.注意力模块TransformerBlock。23.模型扩展模块AutoShape。24.推理模块Detections。17.幻象卷积GhostConv。5.深度可分离卷积DWConv。14.空间金字塔池化模块SPP。3.填充padautopad。10.简化的CSP瓶颈层C3。11.自注意力模块的C3TR。1.导入python包。原创 2023-08-01 15:40:18 · 1633 阅读 · 0 评论 -
YOLOv5源码解读1.6-网络架构yolo.py
----------------------------------3.加载自定义模块----------------------------------from models.common import * # yolov5的网络结构(yolov5)from models.experimental import * # 导入在线下载模块from utils.autoanchor import check_anchor_order # 导入检查anchors合法性的函数。原创 2023-07-31 22:05:44 · 856 阅读 · 0 评论 -
YOLOv5源码解读1.5-配置文件yolov5*.yaml
前面学习了detect train test三个部分的源码,接下来就是对yolov5的网络进行学习。网络结构包括yolo.py和common.py,在具体学习网络结构。yolov5中网络结构采用yaml配置文件,yolov5配置了4种模型,这篇我们以yolov5s.yaml为例来介绍其网络结构。原创 2023-07-31 19:53:59 · 314 阅读 · 1 评论 -
YOLOv5源码解读1.4-测试test.py
----------------------------------3.自定义模块----------------------------------from models.common import DetectMultiBackend # yolov5的网络结构(yolov5)from utils.callbacks import Callbacks # 和日志相关的回调函数from utils.datasets import create_dataloader # 加载数据集的函数。原创 2023-07-31 12:09:57 · 1417 阅读 · 1 评论 -
YOLOv5源码解读1.3-训练train.py
1.导入Python库2.获取文件路径3.自定义模块4.分布式训练初始化(多GPU)5.train5.1创建训练权重路径 设置模型 txt等保存路径5.2读取超参数配置文件5.3设置参数保存路径5.4加载日志信息。原创 2023-07-31 11:00:45 · 1433 阅读 · 0 评论 -
YOLOv5源码解读1.2-推理detect.py
----------------------------------2.定义文件路径----------------------------------"""这部分会将当前项目添加到系统路径上,以使得项目中的模块可以调用。同时将相对路径保存到ROOT中,便于寻找项目中的文件"""FILE = Path(__file__).resolve() # __file__指的是当前文件(即detect.py),FILE最终保存着当前文件的绝对路径,比如D://yolov5/detect.py。原创 2023-07-29 22:48:55 · 529 阅读 · 0 评论 -
YOLOv5源码解读1.1-整体架构
大家下载后,如果不出意外就会和我这个一样。本篇解释一下各个文件夹的作用。原创 2023-07-29 21:16:47 · 441 阅读 · 1 评论