[yolov11改进系列]基于yolov11引入轻量级通用上采样算子CARAFE的python源码+训练源码

日期: 2025-09-08 00:08:43|浏览: 10|编号: 127522

友情提醒:信息内容由网友发布,本站并不对内容真实性负责,请自鉴内容真实性。

【介绍】

上采样过程涉及将每个位置的上采样滤波器与输入特征图中相应区域的像素值相乘,这一步骤被称作特征整合。我们设计的上采样方法在整合阶段能够覆盖更宽广的范围,会依据输入特征来引导整合步骤,并且整个运算模块相当高效。详细而言,我们起初借助输入的图像特征来推算上采样滤波器,每个位置所用的滤波器都不相同,接着根据推算出的滤波器进行特征整合。在各类任务里,都获得了显著的进步,并且只增加了极少的参数数量和运算负担。

上采样的表示

把特征图的上采样运算理解为一种特征重新配置的方式。输出特征图中的每一个像素点 L',都能对应到输入特征图中的某个位置 L,L' 这个点的数值,能够表述为输入特征图中以 L 为核心的一个区域内的像素值,与一个上采样滤波器的点乘结果(一种加法组合)。以双线性插值为例,输出特征图的每一个点可以看作是 2x2 的放大模板与输入特征图里一个 2x2 的区域进行逐元素相乘后求和的结果,在下图中,放大模板里的四个数值都是 0.5

上采样过程仅依据像素点的邻近关系来设定插值核心,未能借助特征图所蕴含的语义内容,这种做法可视为一种等比扩展方式,并且感知区域普遍狭窄,例如最近邻方法仅覆盖1x1范围,双线性方法则限定在2x2区间内上采样核的确定并非依据像素点之间的间隔,而是经由网络进行学习得到的,然而在特征图的各个点上,都套用同一个上采样核,导致无法获取特征图内部的有效信息,并且增加了许多参数和运算负担,特别是当上采样核的尺寸比较可观时。如果针对特征图的每个位置都去预测一组不同的上采样核,虽然参数数量和计算强度会急剧增长,不过人们普遍认为这种做法的学习难度相当高。

那么我们所希望的上采样算子应该具备以下几个特性。

广阔区域:必须拥有更宽广的感知范围,以便充分运用周边数据。-关联:提升分辨率时,滤波器必须与特征图的含义关联,依据原始数据执行放大操作。-简洁:不应增加太多参数和运算负担,务必维持精简设计。

由全称 -Aware 可知,该上采样算子拥有这些特质。

方法概述

由两部分构成,其一为上采样核推断单元,其二为特征整合单元,设定上采样比例值为σ

,输入特征图具有 HXWXC 的尺寸,我们首先借助上采样核预测单元来生成上采样核,接着借助特征整合单元来执行上采样操作,最终得到一个尺寸为 σHXσWXC 的输出特征图。

上采样核预测模块

1. 特征图通道压缩

2. 内容编码及上采样核预测

3. 上采样核归一化

我们对第二步中得到的上采样核每个通道

利用 进行归一化,使得卷积核权重和为 1。

特征重组模块

针对输出特征图的每一个点,我们将其反向关联到输入特征图,提取以该点为基准的局部区域,并与其预测的上采样核心进行逐元素乘积运算,从而得出最终结果值。在相同位置的不同特征通道,会共用一个统一的上采样核心。

【框架介绍】

二零二四年九月三十日,通过举办发布会正式推出这款产品。它称作 YOLO 的最新迭代,由美国与西班牙的联合机构研制。YOLO 属于一种针对图像识别的人工智能技术,其核心为计算机模型。

概述

这是 YOLO 系列实时目标识别器的最新型号,凭借卓越的准确度、迅捷性和效能,拓展了技术应用的边界。它得益于前代 YOLO 版本显著的发展成果,在系统构造和训练方式上实现了突破性革新,因此适用于多种计算机视觉领域的应用需求。

Key 主要特点

​​​

与之前的版本相比, 有哪些关键改进?

与其前身相比引入了多项重大进步。主要改进包括:

【测试环境】

x64

==8.3.0

torch==2.3.1

显卡 8GB显存,推荐显存>=6GB,否则可能训练不起来

【改进流程】

增加一个以.py为后缀的文件作为模块,其中代码量较大,其关键部分的源代码请参照修改步骤文档.docx,接着在同一目录位置再建立一个.py文件,并编写相关代码

from . *

2. 文件修改步骤

修改tasks.py文件

创建模型配置文件

-.yaml内容如下:

3. 验证集成

git查找yolo项目代码,接着,以新编写的yaml文件为依据,开启训练作业,

from ultralytics import YOLO
当程序作为主程序运行时,请执行以下操作:
模型源自 YAML 文件构建,并迁移了权重参数,文件名为 yolo11-CARAFE.yaml
        # Train the model
结果由模型处理数据,数据标识为"coco128.yaml",训练周期设定为100次,图像尺寸调整为640像素,批次大小设置为8,设备编号为0,工作进程数为1,执行保存操作,不恢复之前的训练状态

整合完毕,训练记录里会出现组件的初始状况,证明它已经妥当地加进了系统。

【训练说明】

初始阶段,需配置相关组件,可参照系统部署步骤,接着移除原有pip版本,随后部署新版本pip。接着,将个人数据资料整理为目录结构,确保各目录命名维持原样。然后,依次启动train.py文件,.yaml配置文件以及模型参数yaml文档,调整相关设定,最终运行train.py即可开展训练工作。

【提供文件】

官方版本源代码文件名为ultralytics-8.3.0.zip
├── train/
│   ├── coco128.yaml
│   ├── dataset/
│   │   ├── train/
│   │   │   ├── images/
│   │   │   │   ├── 那张名为firc_pic_1.jpg的图片,被放置在了特定的文件夹中
│   │   │   │   ├── 那张名为firc_pic_10.jpg的图片,被放置在了特定的文件夹之中
这个图片文件叫做firc_pic_11.jpg,它被归入一个特定的分类下。
那个图片文件叫作firc_pic_12.jpg,它位于特定的目录下,这个目录由多个层级组成,其中包含四个分隔的路径部分,最后一个部分是这个文件的名称。
那个文件名叫做firc_pic_13.jpg,它是一个图像文件。
│   │   │   ├── labels/
│   │   │   │   └── 课程信息文件
│   │   │   │   ├── 那个名为firc_pic_1.txt的文件
│   │   │   │   ├── 第十张火警图片文本文件
那个文件名叫firc_pic_11.txt,它被包含在某个目录结构里,具体位置在第四级子目录下,前面有三个空白层级,名称以firc_开头,后缀为txt
那个文件叫firc_pic_12.txt
那个文件叫做firc_pic_13.txt
│   │   └── val/
│   │       ├── images/
│   │       │   ├── 那张名为firc_pic_100的图片文件
│   │       │   ├── 那张名为firc_pic_81.jpg的图片
│   │       │   ├── 那张名为firc_pic_82.jpg的图像文件
那个文件名是firc_pic_83.jpg
那个文件名是firc_pic_84.jpg
│   │       ├── labels/
│   │       │   ├── 那个图片文件名是 firc_pic_100.txt
│   │       │   ├── 那个名为firc_pic_81的文本文件
│   │       │   ├── 那个名为firc_pic_82的文本文件
│   │       │   ├── 那个以编号83命名的文档文本文件
那个文件叫firc_pic_84.txt,它被放在了某个目录下,具体位置需要查看更详细的文件结构才能确定。
│   ├── train.py
│   ├── yolo11-CARAFE.yaml
│   └── 训练说明.txt
优化代码库,ultralytics-8.3.0压缩文件
├── 改进原理.docx
└── 改进流程.docx

【常见问题汇总】 问:我的模型在训练过程中epoch数显示的map数值全部为0,或者map准确率非常低? 回答:因为原始代码经过优化调整,所以不能直接利用官方提供的模型进行微调,必须从头开始进行训练,这种方式下模型提取学习特征的能力会比较差,需要经过大量epoch的训练才能逐渐显现出效果。另外改进后的代码基础结构不一定能确保超越官方水准,还可能大幅逊于官方表现,甚至精确度会非常低。这表明优化过的框架未必能获得理想成效。因此针对框架的优化仅给出一种可能的路径,至于优化后能否获得理想的map值,必须依据实际训练过程来验证,或许数据集本身存在缺陷,例如数据集较为单一,样本分布极不均匀,适用场景有限,标注框与实际目标偏差较大,或者检测目标本身尺寸过小等等因素都可能造成影响【关键提示】我们仅给出优化框架这一种尝试,无法确保能够达到理想的训练效果,更谈不上超越官方模型的性能水平。优化体系结构,实际涉及诸多环节,需验证体系运作的合理性,考察数据资源的适配度,进行训练环节的检验,并与相似体系训练成效的参数进行对照,这是一个极为繁琐且耗时较长的阶段。

提醒:请联系我时一定说明是从夜讯箱包皮具网上看到的!