CTNet是一种交叉Transformer的图像去噪方法。
串并行方式获取结构信息:CTNet采用深度和广度搜索以串并行方式来获得更多的结构信息,提高图像去噪性能。
多层特征交互:利用三个并行异构网络实现多层特征交互,增强不同网络间的关系,以提高针去噪网络对复杂场景的适应性。
交叉Transformer技术:交叉Transformer技术可以根据像素关系提取显著性特征,从而优化去噪效果。
官网提供的源码包用起来有些别扭,文件路径或者模型权重路径都得用绝对路径,配置文件中参数贼多。另外在推理测试部分网络是导入干净图像,然后在干净图像基础上加随机噪声生成噪声图像,没有直接推理测试真实噪声图像的脚本,参考官网源码我自己重写了一个脚本,用于直接推理测试自己真实噪声图,并直接输出测试结果到指定路径。还有其它的地方我也修改了部分代码。
本教程也是基于我提供源码进行讲解,测试集,模型权重都打包在源码包中。获取我提供源码包的方法为文章末扫码到公众号中回复关键字:图像去噪CTNet。获取下载链接。
官网源码包下载链接:CTNet官网
论文下载链接:论文
下载解压后的样子如下:
测试集位于根目录下的Test_Image文件夹中,如下:
模型权重位于根目录下的Save_model文件夹中,包含了多个权重文件,分别是单通道图像和三通道图像,在不同噪声水平下的模型权重。
我自己测试的环境如下,供参考,其它的版本也行。
配置参数的脚本中有很多参数,学者根据自己需求对应修改,如下:
在官网源码基础上我改了一部分代码,测试的脚本名为train_noise.py,官网原始的脚本为train.py,如下:
运行该脚本,读入干净图像后,加噪,生成噪声图像,最后会输出原始干净图像,噪声图和去噪图,打印出评价指标:PSNR,SSIM,FSIM。如下:
在对应终端环境中输入下面命令进行测试:
python trian_noise.py --mode test --model_name gtd --rgb_range 1 --n_colors 1 --sigma 25 --num_layers 1 --n_GPU 1 --GPU_id 0 --test_dataset F:\Code\Python\CTNet\CTNet-main\Test_Image\Set12 --model_file_name F:\Code\Python\CTNet\CTNet-main\Save_model\ctnet\g25\model_sigma25.pth --dir_test_img F:\Code\Python\CTNet\CTNet-main\Result_Images
上面命令中,根据自己情况修改路径,各参数解析如下:
–mode表示要训练还是测试,如果要训练就改为train,测试就改为test;
–n_colors表示通道数量,测试单通道图像设为1,测试三通道图像设为3;
–n_GPU表示电脑显卡数量;
–GPU_id表示选用哪块显卡运行代码;
–test_dataset表示测试集路径,一定要用绝对路径;
–model_file_name表示模型权重路径,同样绝对路径;
–dir_test_img表示测试后去噪结果的保存路径。
右击鼠标,进入Configuration配置窗口,如下:
在指定的保存路径中会保存原始图像,加噪后的图像,去噪后的图像,如下所示:
测试方法和测试单通道图像一样,只需要修改–n_colors为3,导入彩色图像路径,导入彩色图像的模型权重路径即可。
python trian_noise.py --mode test --model_name gtd --rgb_range 1 --n_colors 3 --sigma 25 --num_layers 1 --n_GPU 1 --GPU_id 0 --test_dataset F:\Code\Python\CTNet\CTNet-main\Test_Image\CBSD68 --model_file_name F:\Code\Python\CTNet\CTNet-main\Save_model\ctnet\c75\model_sigma75.pth --dir_test_img F:\Code\Python\CTNet\CTNet-main\Result_Images
参数解析见:4.2.1.1
测试结果如下,包含了原始图,加噪图,去噪图。
该脚本是我重新写的,命名为Predict.py,直接读入噪声图,推理结果输出到指定的路径下,不会输出评价指标。如下:
测试单通道图像和彩色三通道的函数我都写在了一个脚本里面,如下:
代码需要修改的地方如下:
在终端中输入下面命令测试:
pyhton Predict.py --mode test --model_name gtd --rgb_range 1 --n_colors 1 --sigma 25 --num_layers 1 --n_GPU 1 --GPU_id 0 --model_file_name F:\Code\Python\CTNet\CTNet-main\Save_model\ctnet\g50\model_sigma50.pth
GPU测试环境:Nvidia GeForce RTX 3050,256256分辨率,5s/fps;512512分别率,20s/fps;481*321,12s/fps。
代码需要修改的地方如下:
在终端中输入下面命令测试:
pyhton Predict.py --mode test --model_name gtd --rgb_range 1 --n_colors 3 --sigma 25 --num_layers 1 --n_GPU 1 --GPU_id 0 --model_file_name F:\Code\Python\CTNet\CTNet-main\Save_model\ctnet\c75\model_sigma75.pth
GPU测试环境:Nvidia GeForce RTX 3050,测试图片481*321左右,推理时间:12s/fps。
下面左侧是原始干净图,中间是去噪后的图,右侧是合成的噪声图。
下面图最最左侧都为真实模糊噪声图,第2列为噪声水平15模型测试结果,第3列为噪声水平25模型测试结果,最右侧为噪声水平50测试结果。
以上就是图像去噪CTNet网络推理测试的详细过程,由于推理较耗时,我没有训练,测试了官网提供的模型,学者要训练的参考官网。有什么疑问的,欢迎留言讨论。
总结不易,多多支持,谢谢!