在深度学习中,特征提取是关键环节。传统的卷积神经网络(CNN)通过卷积层提取图像特征,但在处理复杂图像时,单一的频域信息可能不足以捕获所有重要细节。为了解决这个问题,我们可以结合小波变换(DWT)和卷积操作,使用Down_wt
卷积提高YOLOv8模型的精度。
1. Down_wt卷积概述
下图展示了Down_wt卷积的结构。通过Haar小波变换,该卷积模块实现了高效的特征提取和降采样。
Down_wt 模块的设计
Down_wt
模块的核心功能是执行小波变换,并将变换后的结果与卷积层结合。下面是模块的关键组成部分:
小波变换:使用 DWTForward
类进行小波变换,提取低频和高频成分。
特征拼接:将低频成分和三个高频成分(水平、垂直和对角)拼接在一起,形成新的输入。
卷积层:通过1x1卷积、批量归一化和ReLU激活函数处理拼接后的特征。
2. 安装Down_wt环境
第二: 找到其路径pytorch_wavelets路径下使用 pip install . 安装包
第三:安装 PyWavelets pip install PyWavelets -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
3. 接下来,我们将详细介绍如何将Down_wt集成到 YOLOv8 模型中。
这是我的GitHub代码:tgf123/YOLOv8_improve (github.com)
这是改进讲解:YOLOv8模型改进 第十二讲 添加Haar小波下采样Down_wt卷积_哔哩哔哩_bilibili
3.1 如何添加
1. 首先,在我上传的代码中yolov8_improve中找到Down_wt.py代码部分,它包含两个部分一个是Down_wt.py的核心代码,一个是yolov8模型的配置文件。
2. 然后我们在modules文件夹下面创建Down_WT.py文件,然后将Down_wt的核心代码放入其中
3. 在 task.py文件中导入Down_wt
from ultralytics.nn.modules.HWD import Down_wt
4. 然后修改代码
5. 最后将配置文件复制到下面文件夹下
同时修改ultralytics-main\ultralytics\engine\validator.py 第115行添加下面代码,关闭验证时的半精度。
6. 运行代码跑通
from ultralytics.models import NAS, RTDETR, SAM, YOLO, FastSAM, YOLOWorld
if __name__=="__main__":
# 使用自己的YOLOv8.yamy文件搭建模型并加载预训练权重训练模型
model = YOLO(r"D:\bilibili\model\ultralytics-main\ultralytics\cfg\models\v8\yolov8_downwt.yaml")\
.load(r'D:\bilibili\model\ultralytics-main\tests\yolov8n.pt') # build from YAML and transfer weights
results = model.train(data=r'D:\bilibili\model\ultralytics-main\ultralytics\cfg\datasets\VOC_my.yaml',
epochs=100, imgsz=640, batch=8,amp = False)