【YOLOv9改进[Conv]】使用基于Haar的小波变换Down_wt处理替换模型结构中的Conv和ADown 实践

目录

一 基于Haar的小波变换

二 使用基于Haar的小波变换Down_wt处理替换模型结构中的Conv和ADown 实践

1 整体修改

2 配置文件

3 训练

三 报错处理


一 基于Haar的小波变换

Haar小波是最简单的小波形式之一,具有易于计算和实现的优点。使用二维离散小波变换(2D DWT),将图像信息矩阵分解为细节矩阵(水平分量、垂直分量和对角线分量)和信息矩阵。最后,使用这些矩阵信息重构图像。通过使用Haar小波作为基函数,对原始图像进行压缩处理,减少图像大小,同时还会尽可能保持图像质量(图像边缘和细节方面会保留,不会损失很大)。

官方代码地址:GitCode - 开发者的代码家园

二 使用基于Haar的小波变换Down_wt处理替换模型结构中的Conv和ADown 实践

1 整体修改

① 新建 haar_HWD.py文件

在yolov9/models目录下新建haar_HWD.py文件,文件内容如下:

import torch
# 导入PyTorch中的神经网络模块
import torch.nn as nn
# 导入DWTForward
from pytorch_wavelets import DWTForward

__all__ = ['Down_wt']

class Down_wt(nn.Module):
    def __init__(self, in_ch, out_ch):
        super(Down_wt, self).__init__()
        # 进行小波变换
        self.wt = DWTForward(J=1, mode='zero', wave='haar')
        # 定义一个包含卷积层、批归一化层和ReLU激活函数的序列模块conv_bn_relu
        self.conv_bn_relu = nn.Sequential(
                                    nn.Conv2d(in_ch*4, out_ch, kernel_size=1, stride=1),
                                    nn.BatchNorm2d(out_ch),
                                    nn.ReLU(inplace=True),
                                    )
    def forward(self, x):
        # 对输入x进行小波变换,得到低频分量yL和高频分量yH
        yL, yH = self.wt(x)
        # 从高频分量中提取出水平低频分量y_HL、垂直低频分量y_LH和对角线低频分量y_HH
        y_HL = yH[0][:,:,0,::]
        y_LH = yH[0][:,:,1,::]
        y_HH = yH[0][:,:,2,::]
        # 将yL、y_HL、y_LH和y_HH按通道拼接起来
        x = torch.cat([yL, y_HL, y_LH, y_HH], dim=1)
        # 上述输出X输入到conv_bn_relu模块中进行卷积操作和激活函数处理
        x = self.conv_bn_relu(x)
        # 返回最终的X
        return x

② 修改yolov9/models/yolo.py文件

搜索“parse_model”的部分,进行如下修改:

2 配置文件

yolov9-c_haar_HWD.yaml的内容与原始文件的内容对比如下:

backbone

head

3 训练

上述修改完毕后,我们开始训练吧!🌺🌺🌺

训练示例

cd yolov9项目路径

# 激活yolov9环境

conda activate yolov9

# 开始训练

python3 train_dual.py --cfg=models/detect/yolov9-c_haar_HWD.yaml --data=data/fire.yaml --epoch=100 --batch-size=4 --imgsz=640 --hyp=data/hyps/hyp.scratch-high.yaml

三 报错处理

【报错】ModuleNotFoundError: No module named 'pytorch_wavelets'

【解决方法】安装 pytorch_wavelets

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

到此,本文分享的内容就结束啦!遇见便是缘,感恩遇见!!!💛 💙 💜 ❤️ 💚 

相关推荐

  1. CCSDS标准使用9/整数变换(Matlab实现

    2024-05-01 00:08:02       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-01 00:08:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-01 00:08:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-01 00:08:02       82 阅读
  4. Python语言-面向对象

    2024-05-01 00:08:02       91 阅读

热门阅读

  1. Github 2024-04-24 C开源项目日报 Top9

    2024-05-01 00:08:02       28 阅读
  2. LeeCode 1728 任意图上博弈

    2024-05-01 00:08:02       33 阅读
  3. 爬虫 - 基于requests进行二次开发

    2024-05-01 00:08:02       29 阅读
  4. 算法训练营day28

    2024-05-01 00:08:02       31 阅读
  5. php变量创建和定义规则和常见常量

    2024-05-01 00:08:02       33 阅读
  6. 【设计模式】13、template 模板模式

    2024-05-01 00:08:02       30 阅读
  7. 使用ssh一台机器跳转到另一台机器

    2024-05-01 00:08:02       32 阅读
  8. 洛谷 P1055 [NOIP2008 普及组] ISBN 号码

    2024-05-01 00:08:02       37 阅读
  9. Git分支策略与工作流

    2024-05-01 00:08:02       40 阅读
  10. MySQL面试题:经典面试题之“B+树”

    2024-05-01 00:08:02       28 阅读