新闻中心
基于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 】
相关推荐:
学typescript要求什么
怎么在爱奇艺中投屏到电视最新方法
如何进入安卓命令行
锤子手机怎么不出5g
如何加装固态硬盘
尼桑越野车中控前power是什么意思
如何注释typescript
如何自己加装固态硬盘
春运什么时候开始抢票
如何在固态硬盘上安装win7系统
光刻机是干什么用的
记录仪power灯亮是什么意思
内在市盈率是什么意思
满射和单射定义
如何查看bash内置的命令
春运抢票最新技巧与方法
华为如何面对苹果16
1kb等于多少字节
怎么在typescript定义集合
电脑命令如何删除账号
如何选择启用固态硬盘
单片机怎么储存和显示
老电脑如何装固态硬盘
市盈率高是什么意思
为什么都做折叠屏手机呢
夸克还原排版是什么意思
固态硬盘如何消除缓存
intel固态硬盘如何安装
命令行如何启动应用程序
固态硬盘如何判断大小
element ui是什么
typescript多久能学完
命令行下如何导出数据库
手机全功能type-c接口是什么意思
春运抢票还用取票吗
power在坐标轴中是什么意思
typescript的语法格式是什么
云淡风轻什么意思
typescript用在哪里
联想手机如何输入命令行
硬件如何执行命令
ts什么意思
苹果16有哪些改装模式
焊机上power指示灯亮是什么意思
安全的ao3镜像网站链接入口
如何增加固态硬盘
固态硬盘如何接主机
夸克前缀后缀什么意思啊
苹果16将会带来哪些升级
固态硬盘2m如何修复


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