手把手教你如何修改YOLO11的模型结构(以CBAM和可变性卷积为例)

手把手教你如何修改YOLO11的模型结构(CBAM和可变性卷积为例)

1 环境准备

​ 基础的Conda环境配置和VsCode软件的使用就不说了,站内有很多大佬都有教程,如果你是用的PyCharm 也是差不多的操作。

1.1 获取可供自己编辑的YOLO11源码

​ 要想自己修改模型,首先要获取YOLO11的源码,安装到系统环境中的YOLO11代码尽量不要去动它。

​ 这里如果你不会操作就新建一个conda环境,然后自己安装pytorch。
​ 附pytorch安装教程:➡️【超详细教程】2024最新Pytorch安装教程(同时讲解安装CPU和GPU版本)-CSDN博客

​ 现在,我们去获得YOLO11的源码,首先去Github ➡️ ultralytics/ultralytics: Ultralytics YOLO11 🚀

​ 然后,下载代码的压缩包

在这里插入图片描述

​ 下载完成之后解压,然后把文件夹放到vscode中。完成后vscode中就能看到 ultralytics-x.x.xx的项目文件夹了,这个版本号无所谓,这样我们就得到了可编辑的YOLO11的源码。

在这里插入图片描述
​ 这里有人可能需要YOLO11的官方文档,附链接:➡️Home - Ultralytics YOLO Docs

​ 另外一个方法:如果你会使用git操作也可以按照官方文档给的方法操作,把源码克隆下来

git clone https://github.com/ultralytics/ultralytics

​ 然后我们去选择虚拟环境,随便点击一个.py文件就可以再右下角选择虚拟环境了。如果你是第一次使用vscode 点击.py文件后 它会弹出让你安装一个python的扩展,直接安装,安装后就可以选择环境了。 我这里选择我新建的yolo11_2虚拟环境。
在这里插入图片描述

1.2 安装配置文件

​ 在选择完虚拟环境后需要安装配置文件,点击终端,新建终端后,可以发现终端进到了 ultralytics-x.x.xx的项目文件夹中

在这里插入图片描述

​ 然后按照官方文档的操作 在终端中输入

pip install -e .

​ 等待安装完成,如果下载超时可以加上镜像

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -e .

2 模型修改

​ 修改模型,不仅要修改模型的yaml配置文件,还有进入到源码中对具体代码进行修改。

2.1 模型配置文件的修改

​ 我现在要在 模型里面加入一个CBAM的即插即用模块。首先要去模型配置文件中进行修改模型的结构

这里我把原来的yolo11.yaml复制了一份并命名为myyolo11.yaml。然后再进行修改

​ 模型配置文件路径如下

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

​ 修改后的yaml如下:
在这里插入图片描述

​ 可以看到,跟原来的yolo11.yaml相比,在 1 处(第9层处)多加了一个CBAM层 , 那这个配置文件的 1 处后面的层号 应该都要加一层 这个能理解吧 ,比如原来的第11层就 变为了现在的第12层了。

​ 而 2 3 4 这里代表的是 接受哪些层的输出 那原来大于9层的一个就要加一层吧。比如2这个位置 原来接受 -1层(即上一层)和13层的输出,但13层 变为现在的14层了。

​ 这个 args列表后面仔细说怎么处理

​ 这样模型配置文件就改好了,当然还有其他情况,比如加了不止一层的情况,就要更用心的计算层号问题了。

​ 还有就是单纯的把原来的某一层,变为了另外一种模块,没有多加层,这种就不用考虑层号了

2.2 源码的修改

2.2.1 模块的实现和导出

​ 首先先进入到conv.py中

在这里插入图片描述

​ 这里就是要添加或者修改的层的具体实现。比如我的这个CBAM模块,作者已经写了,我们就可以直接用,在文件中的309行。可以ctrl+f 查找CBAM模块

在这里插入图片描述

如果你加的模块是这个conv.py中没有的,就要你自己去实现。

​ 比如我现在要加一个可变性卷积DCNConv模块,假设我已经修改完模型配置文件yaml了。现在应该在conv.py中实现这个作者没有帮我们实现的DCNConv模块。代码如下。

在这里插入图片描述

​ 可以看到,我加的这个DCNConv模块 其实就是在官方给的Conv模块的基础上加了一点东西,它的输入通道数和输出通道数都没有改变。

​ 这个时候还没有完,我们这个模型实现最终要到task.py文件去用,要进行导包设置,这都是作者给我们设计好的。

  1. 在conv.py上把DCNConv模块导出去,在这个文件的最上面

在这里插入图片描述

​ 同时 也可以看到作者已经把CBAM这个模块导出了 ,我们导出我们自己的DCNConv模块就行。由此可见,要是你想加的模块,作者已经在conv.py中实现了,那么你既不用自己实现也不用自己导出,就少很多事情。不过自己实现一下也不难就是了。

  1. 现在是把这个导出了,但距离我们去task还远,这个DCNConv在conv.py导出后会到__init__.py中,这个__init__.py 就是一个中转站,task.py要从它这里导包

在这里插入图片描述

init.py导入

在这里插入图片描述

init.py导出

在这里插入图片描述

2.2.2 解析模块的方法修改

​ 接下来就是实现我们的模块的方法的修改了,首先进入task.py,这个是模块实现相关的文件。

在这里插入图片描述

首先在这里把DCNConv模块或者CBAM模块导入进来

在这里插入图片描述

 找到   parse_model 这个函数  可以ctrl+f搜索

在这里插入图片描述

接下来就是对我们模型的实现的一些特殊处理,这里以CBAM模块为例子。这里面就要把我们前面讲的串联起来了。

​ 下面这段代码就是conv.py中每一个模块的具体实现,我们也把CBAM加入到里面。

在这里插入图片描述

​ 然后对下面的代码进行处理

在这里插入图片描述

​ 相比与原代码

args = [c1, c2, *args[1:]]

我们对 m是CBAM的时候进行了特殊的处理

​ 这里的c1 就是 上一层的输出通道数 表示这一层的输出通道

​ *args[1:] 就是第二个数7

在这里插入图片描述

​ 这里也对应了我们的CBAM模块接受两个参数 c1和 kernel_size 这里c1 既是CBAM的输入通道数 又是输出通道数

在这里插入图片描述

​ 我们在模型配置文件中加CBAM层时加个1024的作用

​ 在task.py中 parse_model 函数 中

在这里插入图片描述

​ 在task.py中 parse_model 方法 中的最后

在这里插入图片描述

​ 这里的c2 就是这个1024 1024表示CBAM这一层输出通道为1024,它要传给下一层,下一层可能会把上层的输出通道数当自己的输入通道数

3 模型训练

​ yolo11的模型训练方法,站内有很多方法,这个就不写了,比较简单。

​ 附一篇链接:➡️YOLOv11来了,使用YOLOv11训练自己的数据集和推理(附YOLOv11网络结构图)-CSDN博客

​ 训练的时候你可能会遇到数据集路径报错的情况,可能是这个原因。

​ 终端输入

yolo settings 

| 在这里插入图片描述

​ 就是你的数据集 datasets 要在 这个dataset_dir 路径下面

​ 你可以输入

yolo settings reset

​ 还原dataset_dir设置

​ 也可以

yolo settings datasets_dir="数据集路径"

​ 设置路径

4 总结

​ 修改模型要在模型配置文件 和 task.py conv.py 中修改
​ 在task.py的 parse_model 函数中 要对你的模块实现进行特殊处理

aset_dir 路径下面

​ 你可以输入

yolo settings reset

​ 还原dataset_dir设置

​ 也可以

yolo settings datasets_dir="数据集路径"

​ 设置路径

​ 修改模型要在模型配置文件 和 task.py conv.py 中修改
​ 在task.py的 parse_model 函数中 要对你的模块实现进行特殊处理

​ 要理解到模型配置文件 yolo11.yaml中的每个参数意义,在parse_model 函数中使用这些参数。

### 回答1: Apache Flume是基于数据流的分布式系统,专门用于从各种非结构化数据源收集,聚合移动大量数据,它支持多种数据源的连接数据交付到多种数据存储库。该软件是Apache软件基金会下的一个顶级项目,它是一个稳定、高效可靠的工具,可以帮助企业实现数据的有效管理分析。 apache-flume-1.9.0-bin.tar.gz下载是通过Apache官网提供的链接来进行下载的。下载完成后需要进行安装相关配置,以便能够与其他数据源进行连接数据交付。该软件的安装配置较为复杂,需要具备一定的计算机技能数据管理知识。 下载完成后,用户需要解压该文件,并在用户设置的文件夹中配置flume-env.shflume.conf文件。配置后,即可启动Flume服务,进行数据的收集聚合操作。在使用过程中,用户可以根据实际需要,选择不同的数据源文件存储方式,以满足企业数据管理分析的需求。 总之,Apache Flume是一个强大的数据管理分析工具,具有广泛的应用丰富的功能。但在使用前,用户需要详细了解该软件的安装配置过程,并具备一定的技能知识储备,以确保其能够正确地使用操作。 ### 回答2: Apache Flume是一个分布式、可靠、高效的数据采集、聚合传输系统,在数据处理中应用广泛。而apache-flume-1.9.0-bin.tar.gz则是Apache Flume的官方发布版本,其中bin表示此版本是可执行程序,tar.gz是一种压缩格式。 要下载apache-flume-1.9.0-bin.tar.gz,首先需要前往Apache Flume的官网,然后找到下载页面。在下载页面中可以选择下载镜像站点以及下载apache-flume-1.9.0-bin.tar.gz的链接。用户可以根据自己的网络情况、所在地区等因素选择镜像站点并点击相应的链接进行下载。 下载完成后,用户可以使用解压软件将apache-flume-1.9.0-bin.tar.gz解压到任何想要安装的目录中。解压完成后,在bin目录下可以找到flume-ng的可执行文件,即可尝试运行Flume。 值得注意的是,Apache Flume是一个开源项目,因此用户可以访问其源代码,也可以参与到项目的开发中来。该软件的最新版本、文档等信息也可在官网上获得。 ### 回答3: Apache Flume是一款优秀的分布式高可靠日志收集与聚合工具,可以将数据从各种不同的数据源采集并集中到集中式的Hadoop数据仓库中。而Apache Flume 1.9.0-bin.tar.gz是Apache Flume的最新版本程序包,包含了Flume各种组件的可执行文件、示配置文件、JAVA API等组件。 如果要下载Apache Flume 1.9.0-bin.tar.gz,可以先访问Apache Flume的官网,找到需要下载的地方,可以选择使用浏览器直接下载或使用命令行工具wget下载到本地,解压缩后将Flume各个组件配置好后就可以使用了。 需要注意的是,安装Apache Flume还需要为其配置相应的环境(如配置JDK环境变量等),并进行一些必要的安全设置。而且对于不同的数据源与Hadoop生态系统版本,Apache Flume部署配置也会略有不同。因此,在使用过程中,应该先学习Apache Flume的相关知识,并根据情况灵活应用。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值