新闻中心
基于Paddle复现Neighbor2Neighbor降噪网络
本文介绍基于Paddle复现Neighbor2Neighbor自监督图像去噪方法。该方法通过随机邻域子采样生成训练对,结合正则化损失训练模型,复现模型在BSD300测试集PSNR 30.91、SSIM 0.877,还包含数据集处理、环境依赖及训练验证流程等内容。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

基于Paddle复现《Neighbor2Neighbor: Self-Supervised Denoising from Single Noisy Images》
1.简介
近年来,由于神经网络的快速发展,图像降噪也从中获得了巨大的好处。然而,由于需要大量的噪声-干净的图像对来进行模型的监督训练,限制了这些模型的推广。虽然已经有一些尝试训练一个只有单个噪声图像的图像去噪模型,但现有的自监督去噪方法存在网络训练效率低、有用信息丢失或依赖于噪声建模等问题。在这篇论文中,作者提出了一种非常简单但有效的方法,可以训练仅含噪声图像的图像去噪模型,名为Neighbor2Neighbor。 首先,提出一种随机邻域子采样器来生成训练图像对。具体的说,用于训练的输入和输出是从同一噪声图像中的子采样图像,满足了成对图像的对应像素是相邻的,同时彼此是相似的。其次,在第一阶段生成的子图片对去训练网络,并使用正则化器作为额外的损失以获得更好的性能。

上图是Neighbor2Neighbor架构概述。(a)训练的完整视图。通过噪声图片使用相邻子采样器生成一对图片。降噪网络分别使用g1(y)和g2(y)作为输入和目标。损失包含两个部分,左边部分,计算网络输出和噪声目标之间的Lrec。右边部分,考虑到子采样噪声图像和真实值之间的差异,进一步添加了损失Lreg。应该提到的是,出现两次的邻域子采样器(绿色)代表的是同一个邻域子采样器。(b)使用训练后的网络进行推理。
2.复现精度
在BSD300测试集的测试效果如下表,达到验收指标,PSNR: 30.79, SSIM:0.873。
| Network | opt | epoch | batch_size | dataset | PSNR | SSIM |
|---|---|---|---|---|---|---|
| N2N | Adam | 100 | 4 | BSD300 | 30.91 | 0.877 |
每一个epoch的精度可以在train.log或A_log_BSD300.csv中查看。
3.数据集
下载地址:
https://aistudio.baidu.com/aistudio/datasetdetail/137360
数据集下载解压后需要进行预处理。执行以下命令。
In [ ]%cd /home/aistudio/data/ !tar xvf /home/aistudio/data/data137360/ILSVRC2012_img_val.tar %cd /home/aistudio/Neighbor2Neighbor_Paddle/ !python dataset_tool.py --input_dir /home/aistudio/data/ILSVRC2012_img_val --s*e_dir /home/aistudio/data/Imagenet_val
4.环境依赖
PaddlePaddle == 2.2.0
5.快速开始
模型训练
运行一下命令进行模型训练,在训练过程中会对模型进行评估,同时训练日志保存在train.log中。训练过程中的每一次评估指标都保存在result/unet_gauss25_b4e100r02/目录中。
In [ ]!python -u train.py --data_dir=/home/aistudio/data/Imagenet_val/ \ --val_dirs=./validation --noisetype=gauss25 --s*e_model_path=./results \ --log_name=unet_gauss25_b4e100r02 --increase_ratio=2
参数介绍:
data_dir:数据集路径
val_dirs:测试集路径
noisetype:噪声类型,根据验收指标,目前只支持gauss25。
s*e_model_path:模型保存路径
log_name:验证结果保存路径
increase_ratio:损失函数中Lambda的系数
模型验证
除了可以再训练过程中验证模型精度,还可以是val.py脚本加载模型验证精度,执行以下命令。
In [6]!python val.py --model_path best_model.pdparams
W0409 16:44:58.220067 32686 device_context.cc:447] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 10.1, Runtime API Version: 10.1 W0409 16:44:58.224027 32686 device_context.cc:465] device: 0, cuDNN Version: 7.6. Loading pretrained model from best_model.pdparams There are 50/50 variables loaded into UNet. [EVAL] BSD300: psnr:30.910791861936413 ssim:0.8766264295802032
单张图片预测
本项目提供了单张图片的预测脚本,可生成降噪图片。使用方法如下:
In [ ]%cd /home/aistudio/Neighbor2Neighbor_Paddle/ !python predict.py --image_path demo/42012_noise.png --model_path best_model.pdparams --s*e_dir ./demo/
参数说明:
image_path:需要预测的图片
model_path: 模型路径
s*e_dir: 输出图片保存路径
美图云修
商业级AI影像处理工具
50
查看详情
预测样例:

从左到右分别是clear、nosie、denoise

从左到右分别是clear、nosie、denoise
模型导出
模型导出可执行以下命令:
In [ ]!python export_model.py --model_path best_model.pdparams --s*e_dir ./output/
参数说明:
model_path: 模型路径
s*e_dir: 输出图片保存路径
Inference推理
可使用以下命令进行模型推理。该脚本依赖auto_log, 请参考下面TIPC部分先安装auto_log。infer命令运行如下:
In [ ]%cd /home/aistudio !git clone https://gitee.com/Double_V/AutoLog %cd /home/aistudio/AutoLog/ !pip3 install -r requirements.txt !python3 setup.py bdist_wheel !pip3 install ./dist/auto_log-1.2.0-py3-none-any.whlIn [ ]
!python infer.py --use_gpu=False --enable_mkldnn=False --cpu_threads=2 \ --model_file=output/model.pdmodel --batch_size=2 \ --input_file=validation/BSD300/test --enable_benchmark=True \ --precision=fp32 --params_file=output/model.pdiparams \ --s*e_dir output/inference_img
参数说明:
use_gpu:是否使用GPU
enable_mkldnn:是否使用mkldnn
cpu_threads: cpu线程数
model_file: 模型路径
batch_size: 批次大小
input_file: 输入文件路径
enable_benchmark: 是否开启benchmark
precision: 运算精度
params_file: 模型权重文件,由export_model.py脚本导出。
s*e_dir: 保存推理预测图片的路径
TIPC基础链条测试
该部分依赖auto_log,需要进行安装,安装方式如下:
auto_log的详细介绍参考https://github.com/LDOUBLEV/AutoLog。
In [ ]%cd /home/aistudio/Neighbor2Neighbor_Paddle/ !bash test_tipc/prepare.sh test_tipc/configs/N2N/train_infer_python.txt 'lite_train_lite_infer'!bash test_tipc/test_train_inference_python.sh test_tipc/configs/N2N/train_infer_python.txt 'lite_train_lite_infer'
测试结果如截图所示:

6.代码结构与详细说明
Neighbor2Neighbor_Paddle ├── A_log_BSD300.csv # 验证模型日志├── README.md # 说明文件├── arch_unet.py # 模型架构├── best_model.pdparams # 最优模型权重├── dataset.py # 数据集代码├── dataset_tool.py # 数据集转换文件├── export_model.py # 模型导出代码├── imgs # Readme中的图片资源文件├── infer.py # 推理代码├── param_init.py # 模型参数初始化方法├── test_tipc # TIPC 测试├── train.log # 训练日志├── train.py # 训练脚本├── utils.py # 工具├── val.py #验证脚本└── validation # 验证数据集
7.模型信息
| 信息 | 描述 |
|---|---|
| 模型名称 | N2N |
| 框架版本 | PaddlePaddle==2.2.0 |
| 应用场景 | 降噪 |
以上就是基于Paddle复现Neighbor2Neighbor降噪网络的详细内容,更多请关注其它相关文章!
# 采样器
# 皋兰抖音关键词排名合作
# seo优化小技巧引流
# 武清网站推广联系电话
# kol红人推广营销方案
# 白山网站综合优化
# seo原创文章案例分享网站
# 长春seo快速排名
# 信阳市建设用地网站
# 大足英文网站建设
# 黄陂网站建设公司
# 的说
# 还可以
# 官网
# 过程中
# python
# 的是
# 美图
# 一言
# 中文网
# 降噪
# type
# fig
# whee
# udio
# igs
# red
# ai
# 工具
# git
相关栏目:
【
行业资讯67740 】
【
技术百科0 】
【
网络运营39195 】
相关推荐:
如何寻找和修复无法在 AI 中找到文件的问题
旧固态硬盘如何卖出
如何用命令打开光驱
自己如何安装固态硬盘
苹果16自带配件有哪些
如何进入cmd命令行
51单片机怎么连接端口
华为的nfc功能是什么意思
固态硬盘装完如何使用
mysql的datediff函数怎么用
typescript如何标记私有方法
远程桌面如何发送命令
春运抢票哪个城市好抢
苹果手机16有哪些功能
怎么在typescript定义集合
vi命令如何退出
如何使用批处理命令编译vc程序
linux如何安装yum命令
excel中datediff函数怎么用
为什么要出折叠屏手机
单片机怎么进行排序操作
苹果16讲解有哪些功能
如何拍屏幕不出条纹详细方法
开机如何运行dos命令提示符
solidworks打开IGS文件作图教程
如何体验苹果16系统
.asm如何在命令行运行
typescript在浏览器里怎么用
ftp$如何执行宏命令
丰田type-c接口是什么
j*a数组对象怎么取
如何设置从固态硬盘启动
哪些编程软件需用typescript
db2命令中如何去到指定的副本
宝马x5仪表盘上边有power是什么意思
光刻机是干什么用的
树莓派命令行如何新建文件
如何安装大华固态硬盘
unix时间戳是什么意思
如何显示固态硬盘
j*a怎么求数组均值
三星相机里power是什么意思
如何在固态硬盘上安装win7系统
导航power在汽车上是什么意思
羽毛球拍power9是什么意思
vi命令如何退出编辑模式
sofa是什么意思
空调主板单片机怎么拆开
oracle中datediff函数怎么用 Oracle中DATEDIFF函数详解
手机全功能type-c接口是什么意思


2025-07-17
浏览次数:次
返回列表
istudio/data/data137360/ILSVRC2012_img_val.tar
%cd /home/aistudio/Neighbor2Neighbor_Paddle/
!python dataset_tool.py --input_dir /home/aistudio/data/ILSVRC2012_img_val --s*e_dir /home/aistudio/data/Imagenet_val