论文复现-Half Instance Normalization Network
HINet: Half Instance Normalization Network for Image Restoration
HINet
HINet: Half Instance Normalization Network for Image Restoration 论文复现
1. 简介
HINet创新性地将Instance Normalization的方法应用到图像复原这种low-level的任务上,提出了HIN Block并以此构建了多阶段网络,以提高图像复原的质量,并达到了SOTA。
2. 复现精度
原文结果:SIDD PSNR: 39.99 SSIM: 0.958
复现结果:SIDD PSNR: 39.91 SSIM: 0.958
3. 数据集
SIDD(Smartphone Image Denoising Dataset)数据集是CVPR2018的一篇论文提出的,用于手机相机降噪研究的数据集。SIDD用了5种不同的手机拍摄了10个场景下,总共30000张在不同光照条件下的带噪声的图像,同时也还有对应的“无噪声”的真实图像
4.文件结构
hinet_paddle
|-- dataloaders
|-- SIDD_Data
|-- train # SIDD-Medium 训练数据
|-- val # SIDD 测试数据
|-- SIDD_patches
|-- train_mini # 小训练数据,用于TIPC测试
|-- val_mini # 小测试数据,用于TIPC测试
|-- logs # 训练日志
|-- test_tipc # TIPC: Linux GPU/CPU 基础训练推理测试
|-- networks
|-- hinet_arch.py # HINet模型代码
|-- pretrained_models # 预训练模型
|-- utils # 一些工具代码
|-- config.py # 配置文件
|-- export_model.py # 预训练模型的导出代码
|-- infer.py # 模型推理代码
|-- LICENSE # LICENSE文件
|-- losses.py # 损失函数
|-- predict.py # 模型预测代码
|-- README.md # README.md文件
|-- sidd_data_preprocessing.py # SIDD数据预处理代码
|-- test_denoising_sidd.py # 测试SIDD数据上的指标
|-- train.py # TIPC训练测试代码
|-- train_denoising_1card.py # 单机单卡训练代码
|-- train_denoising_4cards.py # 单机多卡训练代码
|-- training_1card.yml # 单机单卡训练配置文件
|-- training_4cards.py # 单机多卡训练配置文件
5. 环境依赖
PaddlePaddle == 2.3.0
6. 快速开始
安装相关包
!pip install yacs
!pip install natsort
!pip install scikit-image==0.19.2
!pip install reprod_log
!pip install https://paddleocr.bj.bcebos.com/libs/auto_log-1.2.0-py3-none-any.whl
准备数据集
import os
os.chdir('hinet_paddle')
os.mkdir('SIDD_Data')
os.chdir('SIDD_Data')
!unzip ~/data/data149460/SIDD.zip
os.chdir('..')
os.chdir('SIDD_Data/train')
!mv gt_crops groundtruth
!mv input_crops input
os.chdir('../..')
os.chdir('SIDD_Data/val')
!mv gt_crops groundtruth
!mv input_crops input
os.chdir('../..')
拷入预训练模型
os.mkdir('pretrained_models')
!mv ~/data/data152642/model_best.pdparams pretrained_models/
训练注意事项
GPU数量改变时,须保证
total_batchsize*iter == 8gpus*8bs*400000iters
与官方保持一致
训练代码
!python train_denoising_1card.py
测试代码
!python test_denoising_sidd.py --weights ./pretrained_models/model_best.pdparams
推理代码
!python predict.py --model_ckpt ./pretrained_models/model_best.pdparams --data_path ./SIDD_patches/val_mini/ --save_path results/ --save_images
7. 心得
之前一直习惯用别的深度学习框架,利用这次难得的机会,正好学习一下paddle的框架,体验下来感觉基本上是无缝切换了,用起来也比较简单,上手很快。经历了整个复现的过程,感觉不仅仅是对复现的论文有了更深入的理解,而且也学会了paddle基础的使用,给自己的技能库又增加了一项,挺有收获的。
另外感谢HINet-official与MIRNet_paddle分享了他们的代码,在本次复现过程中提供了帮助,以及AI Studio提供的算力与答疑支持。
此文章为搬运
原项目链接
更多推荐
所有评论(0)