在图像去模糊领域,多尺度架构虽被广泛应用,但存在固有缺陷。在渐进恢复过程中,由于底层空间分辨率小,向上传递的特征语义精确但空间模糊,导致多尺度网络在空间细节恢复能力上受限。为提升高频细节部分的恢复质量,引入频率域变换成为一种思路。离散小波变换(DWT)因在处理突变信号图像及利用现实模糊轨迹连续性方面具有优势,被考虑应用于算法中。为使 2D - DWT 更贴合数据分布和特征层空间,作者设计了 LWN,通过可学习的方式增强算法对细节信息的恢复能力。
1. 可学习小波变换节点LWN介绍
小波变换可将信号分解为高频和低频分量,分解出代表细节的高频部分和反映大致轮廓的低频部分,让我们能从不同频率角度分析信号。
LWN 围绕小波卷积构建。先通过小波卷积层将输入特征图投影到小波域,接着分离小波域分量,用深度卷积提取变换特征,再经 1×1 卷积扩展缩放通道,最后经小波逆变换将特征图还原到空间域输出。
2. 接下来,我们将详细介绍如何将LWN合集成到 YOLOv8 模型中
这是我的GitHub代码:tgf123/YOLOv8_improve (github.com)
这是改进讲解:YOLOv8模型改进 第二十九讲 添加可学习小波变换节点 Learnable Wavelet Transform Node 提高小目标检测能力,增强细节特征_哔哩哔哩_bilibili
2.1 如何添加
1. 首先,在我上传的代码中yolov8_improve中找到LWN.py代码部分,它包含两个部分一个是LWN.py的核心代码,一个是yolov8模型的配置文件。
2. 然后我们在ultralytics文件夹下面创建一个新的文件夹,名字叫做change_models, 然后再这个文件夹下面创建LWN.py文件,然后将LWN的核心代码放入其中
3. 在 task.py文件中导入C2f_LWN
4. 然后将C2f_LWN添加到下面当中
5. 最后将配置文件复制到下面文件夹下
6. 运行代码跑通
from ultralytics.models import NAS, RTDETR, SAM, YOLO, FastSAM, YOLOWorld
if __name__=="__main__":
# 使用自己的YOLOv8.yamy文件搭建模型并加载预训练权重训练模型
model = YOLO(r"D:\model\yolov8\ultralytics\cfg\models\v8\yolov8_LWN.yaml")\
.load(r'D:\model\yolov8\yolov8n.pt') # build from YAML and transfer weights
results = model.train(data=r'D:\model\yolov8\ultralytics\cfg\datasets\VOC_my.yaml',
epochs=300,
imgsz=640,
batch=32,
# cache = False,
# single_cls = False, # 是否是单类别检测
# workers = 0,
# resume=r'D:/model/yolov8/runs/detect/train/weights/last.pt',
amp = False
)