1.软件版本
matlab2021a
2.本算法理论知识
在许多领域,人们对图像质量的要求都很高,如医学图像领域、卫星遥感领域等。随着信息时代的快速发展,低分辨率图像已经难以满足特定场景的需要。因此,低分辨率图像恢复与重建的研究逐渐成为现阶段的研究热点,具有广阔的应用前景和应用价值。目前,现有的图像恢复和重建算法在一定程度上可以解决图像分辨率低的问题,但对于细节丰富的图像,重建能力差,视觉效果差。针对这一问题,本文结合深度学习神经网络的基本原理,提出了一种基于卷积神经网络的图像恢复与重建算法。本文的主要内容如下:
首先,在阅读大量国内外文献的基础上,总结了图像恢复与重建算法的研究现状。总结了卷积神经网络在深度学习中的基本原理、优缺点。
其次,详细介绍了卷积神经网络的基本原理和结构。推导了正向传播和反向传播公式。从理论上证明了卷积神经网络在图像超分辨率重建中的优越性。
再次,利用MATLAB深度学习工具箱设计了卷积神经网络模型。在设计过程中,利用MATLAB对卷积神经网络的参数进行优化,包括卷积层数、学习速率、卷积核大小和批量大小。通过MATLAB仿真结果,CNN的最佳参数为:学习率为0.05,卷积层数为18,卷积核大小为3*3,批量大小为32。最后,利用IAPR-TC12基准图像数据库对卷积神经网络的性能进行了仿真。并对双三次方法和SRCNN方法进行了比较。仿真结果表明,与传统的双三次和SRCNN方法相比,该方法具有更好的性能和更高的精细度优势。
3.核心代码
clc;close all;clear all;warning off;addpath 'func\'%%Testdir = 'images\';
[train_up2,train_res2,augmenter]=func_train_data(Testdir);%%SCS = 64;
[layers,lgraph,dsTrain] = func_myCNN(SCS,train_up2,train_res2,augmenter,18,3);
figureplot(lgraph)%%maxEpochs = 1;epochIntervals = 1;
initLearningRate = 0.05;learningRateFactor = 0.1;l2reg
= 0.0001;miniBatchSize = 32;options = trainingOptions('sgdm', ...
'Momentum',0.9, ... 'InitialLearnRate',initLearningRate, ...
'LearnRateSchedule','piecewise', ... 'LearnRateDropPeriod',10, ...
'LearnRateDropFactor',learningRateFactor, ... 'L2Regularization',l2reg, ...
'MaxEpochs',maxEpochs, ... 'MiniBatchSize',miniBatchSize, ...
'GradientThresholdMethod','l2norm', ... 'GradientThreshold',0.01, ...
'Plots','training-progress', ... 'Verbose',false);net = trainNetwork(dsTrain,layers,options);
save trained_cnn.mat 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.
30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.
4.操作步骤与仿真结论
unit | parameter | |
1 | InputLayer | input Image size is 64x64x1 |
2 | Conv1 | Convolution kernel size is 3x3,convolution kernel number is 64, stride is [1 1 1] |
3 | ReLU1 | The activation function is ReLU |
4 | Conv2 | Convolution kernel size is 3x3,convolution kernel number is 64, stride is [1 1 1] |
5 | ReLU2 | The activation function is ReLU |
6 | Conv3 | Convolution kernel size is 3x3,convolution kernel number is 64, stride is [1 1 1] |
7 | ReLU4 | The activation function is ReLU |
………. | ||
8 | Conv16 | Convolution kernel size is 3x3,convolution kernel number is 64, stride is [1 1 1] |
9 | ReLU16 | The activation function is ReLU |
10 | Conv17 | Convolution kernel size is 3x3,convolution kernel number is 64, stride is [1 1 1] |
11 | ReLU17 | The activation function is ReLU |
12 | Conv18 | Convolution kernel size is 3x3x64,convolution kernel number is 64, stride is [1 1 1] |
13 | FinalRegressionLayer | The Regression output is mean squared error |
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删