[Restauración de imágenes] Simulación MATLAB de algoritmo de restauración de imágenes basado en aprendizaje profundo

1. Versión de software

matlab2021a

2. Conocimiento teórico de este algoritmo

       En muchos campos, las personas tienen altos requisitos de calidad de imagen, como el campo de imágenes médicas, el campo de detección remota por satélite, etc. Con el rápido desarrollo de la era de la información, las imágenes de baja resolución han resultado difíciles de satisfacer las necesidades de escenarios específicos. Por lo tanto, la investigación de la restauración y reconstrucción de imágenes de baja resolución se ha convertido gradualmente en un punto crítico de investigación en esta etapa y tiene amplias perspectivas de aplicación y valor de aplicación. En la actualidad, los algoritmos de restauración y reconstrucción de imágenes existentes pueden resolver el problema de la baja resolución de la imagen hasta cierto punto, pero para las imágenes con muchos detalles, la capacidad de reconstrucción es deficiente y el efecto visual es deficiente. En respuesta a este problema, este artículo propone un algoritmo de restauración y reconstrucción de imágenes basado en una red neuronal convolucional basada en los principios básicos de la red neuronal de aprendizaje profundo. Los principales contenidos de este artículo son los siguientes:

       En primer lugar, basado en la lectura de una gran cantidad de literatura nacional y extranjera, se resume el estado de investigación de los algoritmos de restauración y reconstrucción de imágenes. Se resumen los principios básicos, las ventajas y desventajas de las redes neuronales convolucionales en el aprendizaje profundo.

       En segundo lugar, se introducen en detalle el principio básico y la estructura de la red neuronal convolucional. Se obtienen las fórmulas de propagación hacia adelante y hacia atrás. Se demuestra teóricamente la superioridad de la red neuronal convolucional en la reconstrucción de superresolución de imágenes.

       En tercer lugar, el modelo de red neuronal convolucional se diseña utilizando la caja de herramientas de aprendizaje profundo de MATLAB. Durante el proceso de diseño, se utilizó MATLAB para optimizar los parámetros de la red neuronal convolucional, incluido el número de capas convolucionales, la tasa de aprendizaje, el tamaño del kernel de convolución y el tamaño del lote. A través de los resultados de la simulación de MATLAB, los parámetros óptimos de CNN son: la tasa de aprendizaje es 0,05, el número de capas convolucionales es 18, el tamaño del kernel de convolución es 3*3 y el tamaño del lote es 32. Finalmente, el rendimiento de la red neuronal convolucional se simula utilizando la base de datos de imágenes de referencia IAPR-TC12. Se comparan el método bicúbico y el método SRCNN. Los resultados de la simulación muestran que el método propuesto tiene un mejor rendimiento y mayores ventajas de delicadeza en comparación con los métodos tradicionales bicúbico y SRCNN.

        A través de la introducción teórica de la red neuronal de convolución, estableceremos el siguiente modelo de red de aprendizaje profundo de reconstrucción de imágenes.

Fig. 1. La estructura del modelo CNN de reconstrucción de imágenes.

La figura 6 muestra que la CNN contiene el modelo de capa de entrada de imagen, capa 2d de convolución, capa relu y capa de regresión.

De acuerdo con la estructura de este modelo de CNN, utilizaremos la caja de herramientas de aprendizaje profundo para establecer el modelo de reconstrucción de imágenes de CNN. Las principales funciones utilizadas incluyen "imageInputLayer", "convolution2dLayer", "reluLayer", "trainNetwork" y "regression Layer".

         La función de "imageInputLayer" se usa principalmente para ingresar imágenes. Una capa de entrada de imagen ingresa imágenes 2-D a una red y aplica la normalización de datos. En esta función, podemos establecer el tamaño y el tipo de la imagen de entrada. En nuestro modelo, configuramos la función de la siguiente manera:

Capas = imageInputLayer([64 64 1],

'Nombre', 'Capa de entrada',

'Normalización', 'ninguna'

);

         La función de "convolution2dLayer" se utiliza principalmente para realizar la convolución de la imagen y obtener la característica de la imagen. Una capa convolucional 2-D aplica filtros convolucionales deslizantes a la entrada. La capa convoluciona la entrada moviendo los filtros a lo largo de la entrada vertical y horizontalmente y calculando el producto escalar de los pesos y la entrada, y luego agregando un término de sesgo. En nuestro modelo, configuramos la función de la siguiente manera:

convLayer = convolución2dLayer(3,64,

'Relleno',1,

'WeightsInitializer','él',

'BiasInitializer','ceros',

'Nombre','Conv1'

);

         La función de "reluLayer" se utiliza principalmente para realizar la capa de activación de las redes neuronales de convolución. Una capa ReLU realiza una operación de umbral para cada elemento de la entrada, donde cualquier valor menor que cero se establece en cero.

relLayer = reluLayer('Nombre', 'ReLU1');

La función de "regressionLayer" se usa principalmente para calcular la pérdida de error cuadrático medio para problemas de regresión. En nuestro modelo, configuramos la función de la siguiente manera:

regressionLayer('Nombre','FinalRegressionLayer')

La función de "trainNetwork" es entrenar una red neuronal convolucional para datos de imagen. Podemos entrenar en CPU o GPU. En nuestro modelo, configuramos la función de la siguiente manera:

opciones = opcionesentrenamiento('sgdm', ...

    'Impulso', 0.9, ...

    'Tasa de aprendizaje inicial', tasa de aprendizaje inicial, ...

    'LearnRateSchedule', 'por partes', ...

    'LearnRateDropPeriod', 10, ...

    'LearnRateDropFactor', learningRateFactor, ...

    'L2Regularización', l2reg, ...

    'MaxEpochs', maxEpochs, ...

    'MiniBatchSize', miniBatchSize, ...

    'GradientThresholdMethod', 'l2norm', ...

    'Umbral de gradiente', 0.01, ...

    'Parcelas', 'formación-avance',...

    'Detallado', falso);

net = trainNetwork(dsTrain, capas, opciones);

3. Código central

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);

figure
plot(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 

4. Pasos de operación y conclusión de la simulación.

 

 

 

 

 

 

unidad

parámetro

1

Capa de entrada

El tamaño de la imagen de entrada es 64x64x1

2

Conv1

El tamaño del kernel de convolución es 3x3, el número del kernel de convolución es 64, el paso es [1 1 1]

3

ReLU1

La función de activación es ReLU

4

Conv2

El tamaño del kernel de convolución es 3x3, el número del kernel de convolución es 64, el paso es [1 1 1]

5

ReLU2

La función de activación es ReLU

6

Conv3

El tamaño del kernel de convolución es 3x3, el número del kernel de convolución es 64, el paso es [1 1 1]

7

ReLU4

La función de activación es ReLU

……….

8

Conv16

El tamaño del kernel de convolución es 3x3, el número del kernel de convolución es 64, el paso es [1 1 1]

9

ReLU16

La función de activación es ReLU

10

Conv17

El tamaño del kernel de convolución es 3x3, el número del kernel de convolución es 64, el paso es [1 1 1]

11

ReLU17

La función de activación es ReLU

12

Conv18

El tamaño del kernel de convolución es 3x3x64, el número del kernel de convolución es 64, el paso es [1 1 1]

13

CapaRegresiónFinal

El resultado de la regresión es el error cuadrático medio

5. Referencias

[1]

B. WU, Y. WU y H. ZHANG, Tecnología de restauración de imágenes basada en ecuaciones diferenciales parciales variacionales, Beijing: Peking University Press, 2008.

[2]

J. YANG and C. HUANG, Digital image processing and MATLAB implementation (second edition), Beijing: Electronic Industry Press, 2013.

[3]

D. Wang, Z. Li, S. Guo and L. Xie, "Nonlocally centralized sparse represention for image restoration," IEEE Trans. Image Process, vol. 22, pp. 1620-1630, 2013.

A05-110

6.完整源码获得方式

方式1:微信或者QQ联系博主

方式2:订阅MATLAB/FPGA教程,免费获得教程案例以及任意2份完整源码

Supongo que te gusta

Origin blog.csdn.net/ccsss22/article/details/124003641
Recomendado
Clasificación