PyTorch框架——基于深度学习PmrNet神经网络AI去噪图像增强系统(含训练代码、数据集和GUI交互界面)

第一步: PmrNet介绍

PmrNet是一种基于U-Net架构改进的深度学习网络,来自于论文《Practical Deep Raw Image Denoising on Mobile Devices》,这个网络聚焦于在移动设备上实现高效的原始图像(RAW)去噪(本文用来做去噪),解决了传统方法在计算资源受限的移动端难以部署的问题。


​​核心特点​​

高效网络设计​​
  • ​轻量级架构​:采用计算高效的U-Net变体,减少参数量和计算量。
  • ​注意力机制优化​:引入通道注意力等轻量化注意力模块,提升去噪效果而不显著增加计算负担。
  • ​量化与加速​:应用模型量化(如8位整数量化)和硬件感知的加速技术(如ARM NEON指令集),适配移动CPU/DSP。

第二步:PmrNet网络结构

作者所设计的降噪模型就是一种简单但带残差连接的UNet架构,其中UNet部分包含4个encode以及4个decoder。 为确保降噪模型可以更好的运行在手机端,作者采用分离卷积以降低计算量,常规卷积仅在网络的头和尾部应用。在encoder部分,作者采用5×5卷积提升感受野并降低网络深度,下采样模块则采用stride=2的卷积;在decoder部分,作则会采用3×3分离卷积,上采样模块则采用2×2反卷积。对应的encoder与decoder通过残差连接方式进行特征融合,在融合之前先对encoder特征采用3×3分离卷积进行通道维度对齐。最后,将所学习到的残差与输入图像相加即可得到降噪结果。

第三步:模型代码展示

python 复制代码
class PmrNet(nn.Module):
    def __init__(self, in_channels=1):
        super(PmrNet, self).__init__()

        self.conv0 = Conv2D(in_channels=in_channels, out_channels=16, kernel_size=3, padding=1, stride=1,
                            is_seperable=False,
                            has_relu=True)
        self.enc1 = EncoderStage(in_channels=16, out_channels=64, num_blocks=2)
        self.enc2 = EncoderStage(in_channels=64, out_channels=128, num_blocks=2)
        self.enc3 = EncoderStage(in_channels=128, out_channels=256, num_blocks=4)
        self.enc4 = EncoderStage(in_channels=256, out_channels=512, num_blocks=4)

        self.encdec = Conv2D(in_channels=512, out_channels=64, kernel_size=3, padding=1, stride=1, is_seperable=True,
                             has_relu=True)
        self.dec1 = DecoderStage(in_channels=64, skip_in_channels=256, out_channels=64)
        self.dec2 = DecoderStage(in_channels=64, skip_in_channels=128, out_channels=32)
        self.dec3 = DecoderStage(in_channels=32, skip_in_channels=64, out_channels=32)
        self.dec4 = DecoderStage(in_channels=32, skip_in_channels=16, out_channels=16)

        self.out0 = DecoderBlock(in_channels=16, out_channels=16, kernel_size=3)
        self.out1 = Conv2D(in_channels=16, out_channels=in_channels, kernel_size=3, stride=1, padding=1,
                           is_seperable=False,
                           has_relu=False)

    def forward(self, inp):
        conv0 = self.conv0(inp)
        conv1 = self.enc1(conv0)
        conv2 = self.enc2(conv1)
        conv3 = self.enc3(conv2)
        conv4 = self.enc4(conv3)

        conv5 = self.encdec(conv4)

        up3 = self.dec1((conv5, conv3))
        up2 = self.dec2((up3, conv2))
        up1 = self.dec3((up2, conv1))
        x = self.dec4((up1, conv0))

        x = self.out0(x)
        x = self.out1(x)

        pred = inp + x
        return pred

第四步:训练过程(设置了三种降噪,分别为强度5,15,25)

第五步:运行

第六步:整个工程的内容

项目完整文件下载请见演示与介绍视频的简介处给出:➷➷➷

https://www.bilibili.com/video/BV1uiGv6UEJH/

相关推荐
wdf80883 分钟前
重型车辆、矿山装备、汽车研发、CAE、自动驾驶和沃尔沃重型车辆研发工作站配置与本地AI部署指南
人工智能·自动驾驶·cfd·creo机械设计
Jsundoku3 分钟前
第四章 机器学习 -- 马尔可夫决策过程
人工智能·机器学习·马尔可夫决策过程
江苏久众新视6 分钟前
SOP流程AI视觉检测实战案例:基于安防相机与本地AI的产线防错防漏方案落地分享
人工智能·数码相机·视觉检测
东离与糖宝7 分钟前
LLM基础学习笔记:看懂BLEU、ROUGE、PPL与三大模型架构
人工智能
IT研究室12 分钟前
最新大数据毕业设计选题推荐-基于大数据的AI助手系统性软件缺陷评论挖掘与可视化-大数据-Spark-Hadoop-Bigdata
大数据·人工智能·课程设计
u13013015 分钟前
GitHub 热榜项目:日榜(2026-10-30)
人工智能·github
超级架构师20 分钟前
让 Fortran 模型自己调用 Agent:原生 Fortran 2008 实现深度剖析
人工智能·python·架构·机器人·开源·fortran
fly-iot33 分钟前
【FDE知识库】(1):AI 编程时代开发语言选型分析,云使用go,企业用java,算法python,底层c
开发语言·人工智能·golang
郝学胜-神的一滴37 分钟前
游戏设计:原型与开发 17:数字化系统里的思维体操
人工智能·游戏·游戏程序·游戏策划·游戏设计
腾讯云大数据1 小时前
腾讯云发布一站式多模态数据处理与模型训推方案,助力Physical AI释放生产力
大数据·人工智能·云计算·腾讯云