使用深度学习的模型对摄影彩色图像进行去噪(下)

本文涉及的产品
模型训练 PAI-DLC,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,每月250计算时 3个月
简介: 使用深度学习的模型对摄影彩色图像进行去噪

在下面的图中可以看到使用上述模型的预测图像的去噪效果。

640.png

MWRCAnet

上述去噪架构由百度Research Vision和HITVPC&HUAWEI团队提出。

arxiv:2005.04117。作为NTIRE 2020年竞赛的一部分,本文介绍了10多个用于真实世界图像去噪的架构。我使用的是一个赢得了第二排名的架构,如上所示。该体系结构包括一个称为Residual Channel attention block的特殊块。

classdwt(Layer):
def__init__(self, **kwargs):
super().__init__(**kwargs)
defget_config(self):
config=super().get_config().copy()
returnconfigdefcall(self, x):
x1=x[:, 0::2, 0::2, :] #x(2i−1, 2j−1)
x2=x[:, 1::2, 0::2, :] #x(2i, 2j-1)
x3=x[:, 0::2, 1::2, :] #x(2i−1, 2j)
x4=x[:, 1::2, 1::2, :] #x(2i, 2j)
print(x1)  
x_LL=x1+x2+x3+x4x_LH=-x1-x3+x2+x4x_HL=-x1+x3-x2+x4x_HH=x1-x3-x2+x4returnConcatenate(axis=-1)([x_LL, x_LH, x_HL, x_HH])
classiwt(Layer):
def__init__(self, **kwargs):
super().__init__(**kwargs)
defget_config(self):
config=super().get_config().copy()
returnconfigdefcall(self, x):
x_LL=x[:, :, :, 0:x.shape[3]//4]x_LH=x[:, :, :, x.shape[3]//4:x.shape[3]//4*2]x_HL=x[:, :, :, x.shape[3]//4*2:x.shape[3]//4*3]x_HH=x[:, :, :, x.shape[3]//4*3:]x1= (x_LL-x_LH-x_HL+x_HH)/4x2= (x_LL-x_LH+x_HL-x_HH)/4x3= (x_LL+x_LH-x_HL-x_HH)/4x4= (x_LL+x_LH+x_HL+x_HH)/4y1=K.stack([x1,x3], axis=2)
y2=K.stack([x2,x4], axis=2)
shape=K.shape(x)
returnK.reshape(K.concatenate([y1,y2], axis=-1), K.stack([shape[0],\shape[1]*2, shape[2]*2, shape[3]//4]))defchannel_attention(input_feature,channel,ratio):
x=GlobalAveragePooling2D()(input_feature)
x=Reshape((1,1,channel))(x)
assertx.shape[1:] == (1,1,channel)
x=Conv2D(channel// ratio,1,activation='relu',kernel_initializer='he_normal',\use_bias=True,bias_initializer='zeros')(x)
assertx.shape[1:] == (1,1,channel//ratio)x=Conv2D(channel,1,activation='sigmoid',kernel_initializer='he_normal',\use_bias=True,bias_initializer='zeros')(x)
x=multiply([input_feature, x])
returnx#channel_attention(first_input,64,4)
defRCAB(prev_input,filters,kernal_size,blocks):
foriinrange(blocks):
if (i==0):
x=Conv2D(filters,kernal_size,padding='same')(prev_input)
else:
x=Conv2D(filters,kernal_size,padding='same')(lip)
x=PReLU(alpha_initializer='he_normal')(x)
x=Conv2D(filters,1,padding='same')(x)
x=channel_attention(x,filters,4)
if (i==0):
lip=Add()([prev_input,x])
else:
lip=Add()([lip,x])
x=Conv2D(filters,kernal_size,padding='same')(x)
x=Add()([prev_input,x])
returnx#returnModel(inputs=prev_input,outputs=x)
defModel_Creation():
first_input=Input(shape=(256,256,3))
#encoder3first=dwt()(first_input)
inp=Conv2D(64,3,padding='same')(first)
inp=PReLU(alpha_initializer='he_normal')(inp)
second=RCAB(inp,64,3,3)
#encoder2out_dwt_second=dwt()(second)
inp=Conv2D(256,3,padding='same')(out_dwt_second)
inp=PReLU(alpha_initializer='he_normal')(inp)
third=RCAB(inp,256,3,3)
#encoder1out_dwt_third=dwt()(third)
inp=Conv2D(512,3,padding='same')(out_dwt_third)
inp=PReLU(alpha_initializer='he_normal')(inp)
inp=RCAB(inp,512,3,3)
#decoder1inp=RCAB(inp,512,3,3)
inp=Conv2D(1024,3,padding='same')(inp)
inp=PReLU(alpha_initializer='he_normal')(inp)
inp=iwt()(inp)
inp=Add()([third,inp])
#decoder2inp=RCAB(inp,256,3,3)
inp=Conv2D(256,3,padding='same')(inp)
inp=PReLU(alpha_initializer='he_normal')(inp)
inp=iwt()(inp)
inp=Add()([second,inp])
#decoder3inp=RCAB(inp,64,3,3)
inp=Conv2D(12,3,padding='same')(inp)
inp=PReLU(alpha_initializer='he_normal')(inp)
inp=iwt()(inp)
out=Add()([first_input,inp])
returnModel(inputs=first_input,outputs=out)
model=Model_Creation()

在下图中,使用上述模型可以在预测图像中看到去噪效果。

640.png

EDSR模型(Enhanced Deep Residual Network):

arxiv:1707.02921概念:实际上,这个网络模型是为了提高调整后的图像的质量,当它们再次转换到一个更高的维度。我对上述架构进行了修改,用于对摄影图像进行图像去噪

##########################################EDSRMODEL#####################################defEDSR(scale, num_filters=256, res_blocks=8, res_block_scaling=None):
x_input=Input(shape=(256, 256, 3))
#assignvalueofxtox_resblockforfurtheroperationsx=x_res_block=Conv2D(num_filters, 3, padding='same')(x_input)
#Goesinnumberofresblockforiinrange(res_blocks):
x_res_block=ResBlock(x_res_block, num_filters, res_block_scaling)
#convolutionx_res_block=Conv2D(num_filters, 3, padding='same',kernel_initializer='he_normal')(x_res_block)
x_res_block=LeakyReLU(alpha=0.1)(x_res_block)
#addres_blockoutputandoriginalnormalizwdinputx=Add()([x, x_res_block])
#upsamplingx=Upsampling(x, scale, num_filters)
x=Conv2D(3, 3, padding='same')(x)
x=AveragePooling2D(pool_size=(2,2),strides=(2,2),padding='same')(x)
x=Conv2D(3, 3, padding='same')(x)
returnModel(x_input, x, name="EDSR")
##################################ResBlockArchitecture################################defResBlock(x_input, num_filters):
'''This function Implementes Proposed ResBlock Architecture as per EDSR paper'''#proposedResBlock==>Conv-->Relu-->Conv-->Scaling(mul) -->Addx=Conv2D(num_filters, 3, padding='same', kernel_initializer='he_normal')(x_input)
x=LeakyReLU(alpha=0.1)(x)
x=Conv2D(num_filters, 3, padding='same',kernel_initializer='he_normal')(x)
x=LeakyReLU(alpha=0.1)(x)
x=AveragePooling2D(pool_size=(2,2),strides=(1,1),padding='same')(x)
returnx#########################################Upsampling#######################################defUpsampling(x, scale, num_filters):
'''This function upsampling as mentioned in EDSR paper'''defupsample(x, factor, **kwargs):
x=Conv2D(num_filters* (factor**2), 3, padding='same', **kwargs)(x)
returnLambda(shuffle_pixels(scale=factor))(x)
ifscale==2:
x=upsample(x, 2, name='conv2d_1_scale_2')
elifscale==3:
x=upsample(x, 3, name='conv2d_1_scale_3')
elifscale==4:
x=upsample(x, 2, name='conv2d_1_scale_2')
x=upsample(x, 2, name='conv2d_2_scale_2')
returnxmodel=EDSR(2, num_filters=128, res_blocks=8, res_block_scaling=None)

在下面的图中可以看到使用上述模型的预测图像的去噪效果。

640.png

效果总结

PSNR

640.png

如上图所示,mwrcanet体系结构显示了PSNR值的最高。

SSIM

640.png

如上图所示,samsung_mrdnet显示了SSIM方面的最高改进。

我还做过的其他尝试:

我用adam optimizer尝试了各种初始学习率,0.0001效果最好

尝试了3种不同的架构,涉及不同的研究

最初,我使用了图像后,调整他们,但调整使信息损失。所以我把原始图像切成小块,用它来训练。这对提高结果有很好的效果。

例如,如果图像大小是30003000,我从一个完整的图像中获得了300300总共100张图像,以避免在调整大小后丢失信息

由于mrdn模型是过拟合的,采用了正则化和dropout

使用新的概念,如PRelu激活,iwt和dwt(小波变换)与mwrcanet模型

结论

三种模型均获得了较好的结果。在PSNR值方面,mwrcanet优于其他所有架构。在SSIM方面,三星- mrdn优于其他任何架构。但是mwrcanet架构产生的结果非常接近于人眼的干净图像。从EDSR架构修改中获得的结果也非常好,接近顶层架构,我认为这是一个基线模型

进一步的讨论

在此,将所有三个颜色通道同时输入到模型中,得到去噪图像。我们可以尝试将单独的通道分别输入,得到每个部分对应的去噪图像,然后将它们组合。所以对于每个通道,我们可以获得单独的权值或者给每个通道,使用单一的架构得到去噪后的通道图像,使用于训练的数据点数量增加3倍。我已经把原始图像切成碎片,但我没有重新组合它们。我们可以对图像的去噪部分进行估计,并将其组合生成一幅大图像。

最后本文的代码:https://github.com/Anand310892/Real-world-photographic-image-denoiser

目录
相关文章
|
8天前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品市场预测的深度学习模型
使用Python实现智能食品市场预测的深度学习模型
46 5
|
7天前
|
机器学习/深度学习 人工智能 自然语言处理
探索深度学习中的Transformer模型
探索深度学习中的Transformer模型
17 1
|
10天前
|
机器学习/深度学习 算法 开发者
探索深度学习中的优化器选择对模型性能的影响
在深度学习领域,优化器的选择对于模型训练的效果具有决定性作用。本文通过对比分析不同优化器的工作原理及其在实际应用中的表现,探讨了如何根据具体任务选择合适的优化器以提高模型性能。文章首先概述了几种常见的优化算法,包括梯度下降法、随机梯度下降法(SGD)、动量法、AdaGrad、RMSProp和Adam等;然后,通过实验验证了这些优化器在不同数据集上训练神经网络时的效率与准确性差异;最后,提出了一些基于经验的规则帮助开发者更好地做出选择。
|
9天前
|
机器学习/深度学习 算法 数据可视化
使用Python实现深度学习模型:智能食品配送优化
使用Python实现深度学习模型:智能食品配送优化
26 2
|
8天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
28 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
8天前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
45 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
|
11天前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品储存管理的深度学习模型
使用Python实现智能食品储存管理的深度学习模型
34 2
|
11天前
|
机器学习/深度学习 人工智能 测试技术
深度学习在图像识别中的应用与挑战
本文探讨了深度学习技术,尤其是卷积神经网络(CNN)在图像识别任务中的最新进展和面临的主要挑战。通过分析不同的网络架构、训练技巧以及优化策略,文章旨在提供一个全面的概览,帮助研究人员和实践者更好地理解和应用这些技术。
44 9
|
7天前
|
机器学习/深度学习 人工智能 算法
深度学习在图像识别中的应用与挑战
本文探讨了深度学习技术在图像识别领域的应用,重点分析了卷积神经网络(CNN)的工作原理及其在处理图像数据方面的优势。通过案例研究,展示了深度学习如何提高图像识别的准确性和效率。同时,文章也讨论了当前面临的主要挑战,包括数据不足、过拟合问题以及计算资源的需求,并提出了相应的解决策略。
|
6天前
|
机器学习/深度学习 算法 大数据
深度学习在医疗影像诊断中的应用
本文探讨了深度学习技术在医疗影像诊断领域的应用,分析了其如何通过提高图像识别精度来辅助医生做出更准确的诊断。文章首先介绍了深度学习的基本概念和关键技术,随后详细阐述了这些技术在处理复杂医疗影像数据时的优势,并通过案例分析展示了深度学习在实际应用中取得的成果。此外,还讨论了当前面临的挑战以及未来的发展趋势。

热门文章

最新文章

下一篇
无影云桌面