基于Paddle复现Neighbor2Neighbor降噪网络
本文介绍基于Paddle复现Neighbor2Neighbor自监督图像去噪方法。该方法通过随机邻域子采样生成训练对,结合正则化损失训练模型,复现模型在BSD300测试集PSNR 30.91、SSIM 0.877,还包含数据集处理、环境依赖及训练验证流程等内容。

基于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。
每一个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 --save_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 --save_model_path=./results \--log_name=unet_gauss25_b4e100r02 --increase_ratio=2登录后复制
参数介绍:
data_dir:数据集路径
val_dirs:测试集路径
noisetype:噪声类型,根据验收指标,目前只支持gauss25。
save_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.1W0409 16:44:58.224027 32686 device_context.cc:465] device: 0, cuDNN Version: 7.6.Loading pretrained model from best_model.pdparamsThere 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.webp --model_path best_model.pdparams --save_dir ./demo/登录后复制
参数说明:
image_path:需要预测的图片
model_path: 模型路径
save_dir: 输出图片保存路径
预测样例:

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

从左到右分别是clear、nosie、denoise
模型导出
模型导出可执行以下命令:
In [ ]!python export_model.py --model_path best_model.pdparams --save_dir ./output/登录后复制
参数说明:
model_path: 模型路径
save_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.whl登录后复制In [ ]
!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 \--save_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脚本导出。
save_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.模型信息
相关攻略
Trae在Python数据分析与机器学习项目中主要通过四种方式提供支持:利用Auto模式自动生成并执行端到端分析脚本;通过AgentCLI命令行自动化机器学习建模流程;对现有代码进行智能调试与优化;借助语音交互快速构建数据处理函数。这些功能覆盖了从需求描述到代码生成、模型构建及代码优化的全流程。
在Python编程中,你是否也曾编写过类似的统计代码? 统计词频 count = {} for word in words: if word in count: count[word] += 1 else: count[word] = 1 实际上,这种高频的计数需求,完全可以通过Python内置
Trae稳定支持Python3 10至3 13版本,3 9及以下版本无法运行。Python3 14处于实验性支持阶段,核心功能可能受限。当存在多个3 10以上版本时,Trae优先选择虚拟环境中的解释器,其次为最高系统版本。此外,Trae仅兼容64位Python解释器,不支持32位架构。
在企业级数据采集与自动化运维实践中,IT团队普遍面临一个核心挑战:Python爬虫为何频繁报错,修补维护何时才能终结?随着前端技术演进与动态反爬机制的日益复杂,依赖DOM解析的传统爬虫脚本往往陷入“部署即过时,运行即异常”的困境。本文将深入解析传统爬虫代码脆弱性的根本原因,并系统介绍一种能够重塑数据
很多刚接触Docker的开发者常有一个误解:制作镜像不就是把源代码打包进去就行了吗?实际上,在企业级的标准化开发流程中,直接将源码打包进Docker镜像是非常不专业的做法。这会导致镜像体积臃肿、引入潜在安全风险,并且模糊了“构建环境”与“运行环境”的边界。本文将深入解析Java、Vue、Go、Pyt
热门专题
热门推荐
现货持有者坚守仓位,比特币接近115,000水平 近期比特币(BTC)价格接近$115,000水平,市场整体情绪谨慎,但现货持有者依旧坚守仓位,显示出一定的多头信心。 市场现状与资金流动 那么,当前市场的资金究竟在如何流动?分析显示,一个有趣的现象正在上演:短线资金的流入其实相当有限,市场热度并未急
目录 要点介绍:分析师称XRP呈现“最强看涨结构”高位清算集中于2 90美元以上区域 周四,XRP价格稳稳站在了2 80美元上方。这个位置守住了,意味着什么?意味着市场向那个经典的“杯柄形态”目标价——6美元以上——又迈进了一步。 要点介绍: 先看几个核心数据:周四XRP报收2 82美元。技术分析显
近期,以太坊(ETH)衍生品市场经历了短暂的闪崩,但随后价格快速企稳,交易者开始关注关键突破点——$4,500水平。 ETH衍生品市场现状 市场情绪往往在剧烈波动后显露真容。从最新的链上数据和期权、永续合约的交易情况来看,那场短暂的闪崩更像是一次压力测试——结果是,市场波动率显著下降,多空力量似乎进
DOGE单日暴涨11%,交易量激增四倍,市场风向变了? 最近,加密货币市场又热闹起来了。DOGE(狗狗币)上演了一出“旱地拔葱”,价格单日暴涨11%,更关键的是,成交量直接翻了四倍。这种“价量齐升”的场面,无疑给整个迷因币板块打了一针强心剂,市场情绪肉眼可见地回暖了。 DOGE价格拉升原因分析 那么
如何安全获取欧易(OKX)官方APP?一份详尽的下载与使用指南 Binance币安 欧易OKX ️ Huobi火币️ 当人们谈论“欧易易欧”时,指的往往是那个全球顶尖的数字资产交易平台——欧易(OKX)。作为业务版图庞大的行业巨头,其官方APP无疑是用户进行交易、查看行情和管理资产的核心工具。不过,





