图像增强——MIRNet网络测试(详细图文教程)

在这里插入图片描述

💪 专业从事且热爱图像处理,图像处理专栏更新如下👇:
📝《图像去噪》
📝《超分辨率重建》
📝《语义分割》
📝《风格迁移》
📝《目标检测》
📝《图像增强》
📝《模型优化》
📝《模型实战部署》
📝《图像配准融合》
📝《数据集》
📝《高效助手》
📝《C++》
📝《Qt》


在这里插入图片描述

一、MIRNet

论文《Learning Enriched Features for Real Image Restoration and Enhancement》提出了一种方法来提升真实世界图像的修复与增强效果。该研究的重点在于解决实际图像修复过程中遇到的挑战,例如图像模糊、噪声、压缩伪影等问题,尤其是在面对复杂退化模式时。

论文提出了一个Enriched Features Network (EFN),通过以下技术来提升图像修复与增强:

多尺度特征提取:模型在不同尺度上提取图像的特征,捕捉图像的全局和局部信息,从而更好地处理复杂的退化图像。

特征融合与增强:模型将低级特征(如边缘信息)与高级特征(如语义信息)进行融合,以便更有效地恢复图像细节。它引入了特征重用机制,使得网络能同时学习不同层次的特征。

多任务学习框架:EFN通过多任务学习方法,同时处理去噪、超分辨率、图像增强等任务。多任务学习的共享特征表示能帮助网络在多个相关任务上都表现良好。

二、源码包准备

作者开源了源码,作者提供的源码包github地址为:code

论文地址为:paper

在原作者源码基础上我小改了一点代码,并添加了几张真实拍摄的暗光场景。将图像增强相关的预训练模型和测试集都打包了,配套教程的源码包获取方式已在文章结尾提供,扫码到「视觉研坊」中回复关键字:图像增强MIRNet,会自动回复下载链接。

在这里插入图片描述

下面是预训练模型权重文件,比较大,一个模型有364M。

在这里插入图片描述

三、环境准备

下面是我在Ubuntu系统上测试的环境,仅供参考,其它版本也行。

在这里插入图片描述

四、测试

4.1 代码修改

作者源码中直接可读的图像为.png格式,自己测试时如果图片非.png格式,需要修改代码,否则会出现下面的情况,程序读不到图像:

在这里插入图片描述

从作者源码中可以看出,仅支持png格式,依据见下:

在这里插入图片描述
解决办法

我自己的测试集图片格式为.bmp,修改源码见下:

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

将脚本dataset_rgb.py中的is_png_file(x)都修改为is_bmp_file(x),见下:

在这里插入图片描述

上面修改好后就可以正常测试.bmp格式图像了,其它格式的图像修改类似。

4.2 启动测试

在终端中输入下面命令启动测试:

python test_enhancement.py --save_images --input_dir ./datasets/lol/ --result_dir ./results/enhancement/lol/ --weights ./pretrained_models/enhancement/model_lol.pth

参数解析

	--save_images 表示运行代码时需要保存推理结果
	--input_dir 表示待测试图像的路径
	--result_dir 表示测试结果输出保存路径
	--weights 表示测试的模型权重路径

启动测试命令后,在终端中正确的输出类似见下:

在这里插入图片描述

推理结果会报错到–result_dir指定的路径中,见下:

在这里插入图片描述

五、图像增强效果展示

5.1、通用测试集

下面测试图像中,左图为暗光图,中间图为原图,右侧图为MIRNet网络增强后的图:

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

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

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

5.2、真实测试集

下面是我自己用手机采集了几张真实暗光场景,用于测试。

左图为原图,中间为MIRNet网络增强效果,右侧为传统算法伽马校正增强效果,关于传统算法伽马校正的详细方法见我另外一篇博文:伽马校正实现暗光增强

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

六、总结

从第五章节的对比中可以看出,MIRNet方法在调参后的测试集暗光场景下增强效果挺好的,应用于真实的暗光图像,处理效果较差。

本教程主要讲解图像增强部分的测试方法,其它两种去噪和超分功能,参考官网实现。

感谢您阅读到最后!😊总结不易,多多支持呀🌹 点赞👍收藏⭐评论✍️,您的三连是我持续更新的动力💖

关注公众号「视觉研坊」,获取干货教程、实战案例、技术解答、行业资讯!

### MIRnet简介 MIRnet是一种专门设计用于图像修复(image restoration)任务的深度学习架构。它旨在解决多种类型的图像降质问题,例如去噪、去模糊以及超分辨率重建等。该网络的核心理念在于通过多尺度表示和信息重组来增强特征提取的能力。 #### 多尺度特征提取 MIRnet引入了一种称为递归残差组(Recurrent Residual Group, RRG)的设计[^1]。这种模块允许网络在多个尺度上捕获丰富的上下文信息,并且能够有效地传递跨层的信息。RRG内部包含若干个卷积层,它们以一种循环的方式连接在一起,从而形成深层结构的同时保持计算效率。 #### 通道注意力机制 除了基本的空间特征外,MIRnet还采用了通道注意力机制(Channel Attention Mechanism),这有助于突出重要特征并抑制无关紧要的部分。通过对各个通道的重要性进行加权调整,模型可以更加专注于那些对最终输出贡献较大的区域[^2]。 #### 实现细节 以下是MIRnet的一个简化版本实现代码: ```python import torch.nn as nn class ChannelAttention(nn.Module): def __init__(self, num_features, reduction_ratio=16): super(ChannelAttention, self).__init__() self.avg_pool = nn.AdaptiveAvgPool2d(1) self.fc = nn.Sequential( nn.Linear(num_features, num_features // reduction_ratio), nn.ReLU(inplace=True), nn.Linear(num_features // reduction_ratio, num_features) ) def forward(self, x): b, c, _, _ = x.size() y = self.avg_pool(x).view(b, c) y = self.fc(y).view(b, c, 1, 1) return x * y.expand_as(x) class RRGLayer(nn.Module): def __init__(self, num_channels, growth_rate, num_blocks): super(RRGLayer, self).__init__() layers = [] for i in range(num_blocks): layers.append(ConvLayer(num_channels + i*growth_rate, growth_rate)) self.dense_layers = nn.Sequential(*layers) self.conv_1x1 = nn.Conv2d(num_channels + num_blocks*growth_rate, num_channels, kernel_size=1) def forward(self, x): out = self.dense_layers(x) out = self.conv_1x1(out) return out + x class MIRNet(nn.Module): def __init__(self, num_rrg=3, num_channels=64, growth_rate=32, num_blocks=8): super(MIRNet, self).__init__() rrgs = [] for _ in range(num_rrg): rrgs.append(RRGLayer(num_channels=num_channels, growth_rate=growth_rate, num_blocks=num_blocks)) self.rrgs = nn.Sequential(*rrgs) self.first_conv = nn.Conv2d(3, num_channels, kernel_size=3, padding=1) self.final_conv = nn.Conv2d(num_channels, 3, kernel_size=3, padding=1) def forward(self, x): shallow_feats = self.first_conv(x) deep_feats = self.rrgs(shallow_feats) final_out = self.final_conv(deep_feats) return final_out + x ``` 上述代码定义了一个基础版的MIRnet框架,其中包括`ChannelAttention`模块和`RRGLayer`作为主要组成部分。 #### 应用场景 由于其强大的泛化能力和高效的性能表现,MIRnet广泛应用于以下几个领域: - **超分辨率重建**:提升低分辨率图片至高分辨率。 - **去除噪声**:清理受污染的照片使其更清晰。 - **色彩校正**:改善因拍摄条件不佳而导致的颜色失真现象[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

视觉研坊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值