Одно суперразрешение изображений Используя глубокое обучение

В этом примере показано, как обучить нейронную сеть Очень глубокого суперразрешения (VDSR), затем используйте сеть VDSR, чтобы оценить изображение с высоким разрешением от одного изображения с низкой разрешающей способностью.

Пример показывает, как обучить сеть VDSR и также обеспечивает предварительно обученную сеть VDSR. Если вы принимаете решение обучить сеть VDSR, использование CUDA-способного графического процессора NVIDIA™ с вычисляют возможность 3.0, или выше настоятельно рекомендован. Использование графического процессора требует Parallel Computing Toolbox™.

Введение

Суперразрешение является процессом создания изображений с высоким разрешением от изображений с низкой разрешающей способностью. Этот пример рассматривает одно суперразрешение изображений (SISR), где цель состоит в том, чтобы восстановить одно изображение с высоким разрешением с одного изображения с низкой разрешающей способностью. SISR сложен, потому что высокочастотное содержимое изображения обычно не может восстанавливаться с изображения с низкой разрешающей способностью. Без высокочастотной информации ограничивается качество изображения с высоким разрешением. Далее, SISR является плохо изложенной проблемой, потому что одно изображение с низкой разрешающей способностью может дать к нескольким возможным изображениям с высоким разрешением.

Несколько методов, включая алгоритмы глубокого обучения, были предложены, чтобы выполнить SISR. Этот пример исследует один алгоритм глубокого обучения для SISR, названного очень глубоким суперразрешением (VDSR) [1].

Сеть VDSR

VDSR является архитектурой сверточной нейронной сети, спроектированной, чтобы выполнить одно суперразрешение [1] изображений. Сеть VDSR обучается отображению между низким - и изображениями с высоким разрешением. Это отображение возможно, потому что изображения с высоким разрешением и с низкой разрешающей способностью имеют подобное содержимое изображения и отличаются, в основном, по высокочастотным деталям.

VDSR использует остаточную стратегию обучения, означая, что сеть учится оценивать остаточное изображение. В контексте суперразрешения остаточное изображение является различием между ссылочным изображением с высоким разрешением и изображением с низкой разрешающей способностью, которое было увеличено масштаб с помощью бикубической интерполяции, чтобы совпадать с размером ссылочного изображения. Остаточное изображение содержит информацию о высокочастотных деталях изображения.

Сеть VDSR обнаруживает остаточное изображение от яркости цветного изображения. Канал яркости изображения, Y, представляет яркость каждого пикселя через линейную комбинацию красных, зеленых, и синих пиксельных значений. В отличие от этого два канала цветности изображения, Cb и Cr, являются различными линейными комбинациями красных, зеленых, и синих пиксельных значений, которые представляют информацию о цветовом различии. VDSR обучен с помощью только канал яркости, потому что человеческое восприятие более чувствительно к изменениям в яркости, чем к изменениям в цвете.

Если Yвысокоres яркость изображения с высоким разрешением и Yпонижается яркость изображение с низкой разрешающей способностью, которое было увеличено масштаб с помощью бикубической интерполяции, затем вход к сети VDSR Yпонижается и сеть учится предсказывать Yневязка=Yвысокого разрешения-Yпонижается от обучающих данных.

После того, как сеть VDSR учится оценивать остаточное изображение, можно восстановить изображения с высоким разрешением путем добавления предполагаемого остаточного изображения в сверхдискретизированное изображение с низкой разрешающей способностью, затем преобразования изображения назад в цветовое пространство RGB.

Масштабный коэффициент связывает размер ссылочного изображения к размеру изображения с низкой разрешающей способностью. Когда масштабный коэффициент увеличивается, SISR становится более плохо изложенным, потому что изображение с низкой разрешающей способностью теряет больше информации о высокочастотном содержимом изображения. VDSR решает эту задачу при помощи большого восприимчивого поля. Этот пример обучает сеть VDSR с несколькими масштабными коэффициентами с помощью увеличения шкалы. Масштабируйтесь увеличение улучшает результаты в факторах более широкого масштаба, потому что сеть может использовать в своих интересах контекст изображений от факторов меньшего масштаба. Кроме того, сеть VDSR может сделать вывод, чтобы принять изображения с масштабными коэффициентами нецелого числа.

Загрузите обучение и тестовые данные

Загрузите Сравнительный тест IAPR TC-12, который состоит из 20 000 все еще естественных изображений [2]. Набор данных включает фотографии людей, животных, города и т.д. Размер файла данных составляет ~1.8 Гбайт. Если вы не хотите загружать обучающий набор данных, то можно загрузить предварительно обученную сеть VDSR путем ввода load('trainedVDSR-Epoch-100-ScaleFactors-234.mat'); в командной строке. Затем перейдите непосредственно к разделу Perform Single Image Super-Resolution Using VDSR Network в этом примере.

Используйте функцию помощника, downloadIAPRTC12Data, загружать данные. Эта функция присоединена к примеру как к вспомогательному файлу.

imagesDir = tempdir;
url = 'http://www-i6.informatik.rwth-aachen.de/imageclef/resources/iaprtc12.tgz';
downloadIAPRTC12Data(url,imagesDir);

Этот пример обучит сеть с небольшим подмножеством TC IAPR 12 Исходных данных. Загрузите imageCLEF обучающие данные. Все изображения являются 32-битными цветными изображениями JPEG.

trainImagesDir = fullfile(imagesDir,'iaprtc12','images','02');
exts = {'.jpg','.bmp','.png'};
pristineImages = imageDatastore(trainImagesDir,'FileExtensions',exts);

Перечислите количество учебных изображений.

numel(pristineImages.Files)
ans = 616

Подготовьте обучающие данные

Чтобы создать обучающий набор данных, сгенерируйте пары изображений, состоящих из сверхдискретизированных изображений и соответствующих остаточных изображений.

Сверхдискретизированные изображения хранятся на диске как файлы MAT в директории upsampledDirName. Вычисленные остаточные изображения, представляющие сетевые ответы, хранятся на диске как файлы MAT в директории residualDirName. Файлы MAT хранятся как тип данных double для большей точности при обучении сети.

upsampledDirName = [trainImagesDir filesep 'upsampledImages'];
residualDirName = [trainImagesDir filesep 'residualImages'];

Используйте функцию помощника createVDSRTrainingSet предварительно обрабатывать обучающие данные. Эта функция присоединена к примеру как к вспомогательному файлу.

Функция помощника выполняет эти операции для каждого нетронутого изображения в trainImages:

  • Преобразуйте изображение в цветовое пространство YCbCr

  • Уменьшите яркость (Y) канал различными масштабными коэффициентами, чтобы создать демонстрационные изображения с низкой разрешающей способностью, затем измените размер изображений к первоначальному размеру с помощью бикубической интерполяции

  • Вычислите различие между нетронутыми и измененными изображениями.

  • Сохраните измененные и остаточные изображения на диск.

scaleFactors = [2 3 4];
createVDSRTrainingSet(pristineImages,scaleFactors,upsampledDirName,residualDirName);

Задайте конвейер предварительной обработки для набора обучающих данных

В этом примере сетевые входные параметры являются изображениями с низкой разрешающей способностью, которые были сверхдискретизированы с помощью бикубической интерполяции. Желаемые сетевые ответы являются остаточными изображениями. Создайте datastore изображений под названием upsampledImages из набора входных файлов изображений. Создайте datastore изображений под названием residualImages из набора вычисленных остаточных файлов изображений. Оба хранилища данных требуют функции помощника, matRead, считать данные изображения из файлов изображений. Эта функция присоединена к примеру как к вспомогательному файлу.

upsampledImages = imageDatastore(upsampledDirName,'FileExtensions','.mat','ReadFcn',@matRead);
residualImages = imageDatastore(residualDirName,'FileExtensions','.mat','ReadFcn',@matRead);

Создайте imageDataAugmenter это задает параметры увеличения данных. Используйте увеличение данных во время обучения варьироваться обучающие данные, который эффективно увеличивает сумму доступных обучающих данных. Здесь, увеличение задает случайное вращение 90 градусами и случайные отражения в направлении X.

augmenter = imageDataAugmenter( ...
    'RandRotation',@()randi([0,1],1)*90, ...
    'RandXReflection',true);

Создайте randomPatchExtractionDatastore это выполняет рандомизированную экстракцию закрашенной фигуры от сверхдискретизированных и остаточных хранилищ данных изображений. Экстракция закрашенной фигуры является процессом извлечения большого набора маленьких закрашенных фигур изображений или мозаик, из одного увеличенного изображения. Этот тип увеличения данных часто используется в проблемах регрессии от изображения к изображению, где много сетевой архитектуры могут быть обучены на очень небольших входных размерах изображения. Это означает, что большое количество закрашенных фигур может быть извлечено из каждого полноразмерного изображения в исходном наборе обучающих данных, который значительно увеличивает размер набора обучающих данных.

patchSize = [41 41];
patchesPerImage = 64;
dsTrain = randomPatchExtractionDatastore(upsampledImages,residualImages,patchSize, ...
    "DataAugmentation",augmenter,"PatchesPerImage",patchesPerImage);

Получившийся datastore, dsTrain, обеспечивает мини-пакеты данных к сети в каждой итерации эпохи. Предварительно просмотрите результат чтения от datastore.

inputBatch = preview(dsTrain);
disp(inputBatch)
      InputImage      ResponseImage 
    ______________    ______________

    {41×41 double}    {41×41 double}
    {41×41 double}    {41×41 double}
    {41×41 double}    {41×41 double}
    {41×41 double}    {41×41 double}
    {41×41 double}    {41×41 double}
    {41×41 double}    {41×41 double}
    {41×41 double}    {41×41 double}
    {41×41 double}    {41×41 double}

Настройте слои VDSR

Этот пример задает сеть VDSR с помощью 41 отдельного слоя от Deep Learning Toolbox™, включая:

  • imageInputLayer - Отобразите входной слой

  • convolution2dLayer - 2D слой свертки для сверточных нейронных сетей

  • reluLayer - Исправленный линейный модульный слой (ReLU)

  • regressionLayer - Regression слой выхода для нейронной сети

Первый слой, imageInputLayer, работает с закрашенными фигурами изображений. Размер закрашенной фигуры основан на сетевом восприимчивом поле, которое является пространственной областью изображений, которая влияет на ответ верхнего слоя в сети. Идеально, сетевое восприимчивое поле совпадает с размером изображения так, чтобы поле видело все высокоуровневые функции в изображении. В этом случае, для сети со сверточными слоями D, восприимчивое поле (2D+1) (2D+1).

VDSR имеет 20 сверточных слоев, таким образом, восприимчивое поле и размер закрашенной фигуры изображений 41 41. Входной слой изображений принимает изображения с одним каналом, потому что VDSR обучен с помощью только канал яркости.

networkDepth = 20;
firstLayer = imageInputLayer([41 41 1],'Name','InputLayer','Normalization','none');

Входной слой изображений сопровождается 2D сверточным слоем, который содержит 64 фильтра 3х3 размера. Мини-пакетный размер определяет количество фильтров. Нулевая клавиатура входные параметры к каждому сверточному слою так, чтобы карты функции остались тот же размер как вход после каждой свертки. Он - метод [3], инициализирует веса к случайным значениям так, чтобы была асимметрия в изучении нейрона. Каждый сверточный слой сопровождается слоем ReLU, который вводит нелинейность в сети.

convLayer = convolution2dLayer(3,64,'Padding',1, ...
    'WeightsInitializer','he','BiasInitializer','zeros','Name','Conv1');

Задайте слой ReLU.

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

Средние слои содержат 18 переменных сверточных и исправленных линейных модульных слоев. Каждый сверточный слой содержит 64 фильтра размера 3 3 64, где фильтр работает с 3х3 пространственной областью через 64 канала. Как прежде, слой ReLU следует за каждым сверточным слоем.

middleLayers = [convLayer relLayer];
for layerNumber = 2:networkDepth-1
    convLayer = convolution2dLayer(3,64,'Padding',[1 1], ...
        'WeightsInitializer','he','BiasInitializer','zeros', ...
        'Name',['Conv' num2str(layerNumber)]);
    
    relLayer = reluLayer('Name',['ReLU' num2str(layerNumber)]);
    middleLayers = [middleLayers convLayer relLayer];    
end

Предпоследний слой является сверточным слоем с одним фильтром размера 3 3 64, который восстанавливает изображение.

convLayer = convolution2dLayer(3,1,'Padding',[1 1], ...
    'WeightsInitializer','he','BiasInitializer','zeros', ...
    'NumChannels',64,'Name',['Conv' num2str(networkDepth)]);

Последний слой является слоем регрессии вместо слоя ReLU. Слой регрессии вычисляет среднеквадратическую ошибку между остаточным изображением и сетевым прогнозом.

finalLayers = [convLayer regressionLayer('Name','FinalRegressionLayer')];

Конкатенация всех слоев, чтобы сформировать сеть VDSR.

layers = [firstLayer middleLayers finalLayers];

В качестве альтернативы можно использовать vdsrLayers функция помощника, чтобы создать слои VDSR. Эта функция присоединена к примеру как к вспомогательному файлу.

layers = vdsrLayers;

Задайте опции обучения

Обучите сеть с помощью стохастического градиентного спуска с импульсом (SGDM) оптимизация. Задайте установки гиперпараметров для SDGM при помощи trainingOptions функция. Темпом обучения является первоначально 0.1 и уменьшенный фактором 10 каждых 10 эпох. Обучайтесь в течение 100 эпох.

Обучение глубокой сети длительно. Ускорьте обучение путем определения высокого темпа обучения. Однако это может заставить градиенты сети взрываться или расти неудержимо, предотвратив сеть от обучения успешно. Чтобы сохранить градиенты в значимой области значений, включите усечение градиента путем определения 'GradientThreshold' как 0.01, и задайте 'GradientThresholdMethod' использовать L2-норму градиентов.

maxEpochs = 100;
epochIntervals = 1;
initLearningRate = 0.1;
learningRateFactor = 0.1;
l2reg = 0.0001;
miniBatchSize = 64;
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);

Обучите сеть

После конфигурирования опций обучения и случайного datastore экстракции закрашенной фигуры, обучите сеть VDSR с помощью trainNetwork функция. Чтобы обучить сеть, установите doTraining параметр в следующем коде к true. CUDA-способный графический процессор NVIDIA™ с вычисляет возможность 3.0, или выше настоятельно рекомендован для обучения.

Если вы сохраняете doTraining параметр в следующем коде как false, затем пример возвращает предварительно обученную сеть VDSR, которая была обучена, чтобы суперразрешить изображения для масштабных коэффициентов 2, 3 и 4.

Примечание: Обучение занимает приблизительно 6 часов на Титане NVIDIA™ X и может взять еще дольше в зависимости от вашего оборудования графического процессора.

doTraining = false;
if doTraining
    modelDateTime = datestr(now,'dd-mmm-yyyy-HH-MM-SS');
    net = trainNetwork(dsTrain,layers,options);
    save(['trainedVDSR-' modelDateTime '-Epoch-' num2str(maxEpochs*epochIntervals) '-ScaleFactors-' num2str(234) '.mat'],'net','options');
else
    load('trainedVDSR-Epoch-100-ScaleFactors-234.mat');
end

Выполните одно суперразрешение изображений Используя сеть VDSR

Чтобы выполнить одно суперразрешение изображений (SISR) с помощью сети VDSR, выполните остающиеся шаги этого примера. Остаток от примера показывает как:

  • Создайте демонстрационное изображение с низкой разрешающей способностью из ссылочного изображения с высоким разрешением.

  • Выполните SISR на изображении с низкой разрешающей способностью с помощью бикубической интерполяции, традиционное решение для обработки изображений, которое не использует глубокое обучение.

  • Выполните SISR на изображении с низкой разрешающей способностью с помощью нейронной сети VDSR.

  • Визуально сравните восстановленные изображения с высоким разрешением с помощью бикубической интерполяции и VDSR.

  • Оцените качество суперразрешенных изображений путем определения количества подобия изображений к ссылочному изображению с высоким разрешением.

Создайте демонстрационное изображение с низкой разрешающей способностью

Создайте изображение с низкой разрешающей способностью, которое будет использоваться, чтобы сравнить результаты суперразрешения с помощью глубокого обучения для результата с помощью традиционных методов обработки изображений, таких как бикубическая интерполяция. Набор тестовых данных, testImages, содержит 21 неискаженное изображение, поставленное в Image Processing Toolbox™. Загрузите изображения в imageDatastore.

exts = {'.jpg','.png'};
fileNames = {'sherlock.jpg','car2.jpg','fabric.png','greens.jpg','hands1.jpg','kobi.png', ...
    'lighthouse.png','micromarket.jpg','office_4.jpg','onion.png','pears.png','yellowlily.jpg', ...
    'indiancorn.jpg','flamingos.jpg','sevilla.jpg','llama.jpg','parkavenue.jpg', ...
    'peacock.jpg','car1.jpg','strawberries.jpg','wagon.jpg'};
filePath = [fullfile(matlabroot,'toolbox','images','imdata') filesep];
filePathNames = strcat(filePath,fileNames);
testImages = imageDatastore(filePathNames,'FileExtensions',exts);

Отобразите изображения тестирования как монтаж.

montage(testImages)

Выберите одно из изображений, чтобы использовать в качестве ссылочного изображения для суперразрешения. Можно опционально использовать собственное изображение с высоким разрешением в качестве ссылочного изображения.

indx = 1; % Index of image to read from the test image datastore
Ireference = readimage(testImages,indx);
Ireference = im2double(Ireference);
imshow(Ireference)
title('High-Resolution Reference Image')

Создайте версию с низкой разрешающей способностью ссылочного изображения с высоким разрешением при помощи imresize с масштабным коэффициентом 0,25. Высокочастотные компоненты изображения потеряны во время уменьшения масштаба.

scaleFactor = 0.25;
Ilowres = imresize(Ireference,scaleFactor,'bicubic');
imshow(Ilowres)
title('Low-Resolution Image')

Улучшите разрешение изображения Используя бикубическую интерполяцию

Стандартный способ увеличить разрешение изображения без глубокого обучения состоит в том, чтобы использовать бикубическую интерполяцию. Увеличьте масштаб изображение с низкой разрешающей способностью с помощью бикубической интерполяции так, чтобы получившееся изображение с высоким разрешением было одного размера со ссылочным изображением.

[nrows,ncols,np] = size(Ireference);
Ibicubic = imresize(Ilowres,[nrows ncols],'bicubic');
imshow(Ibicubic)
title('High-Resolution Image Obtained Using Bicubic Interpolation')

Улучшите разрешение изображения Используя предварительно обученную сеть VDSR

Вспомните, что VDSR обучен с помощью только канал яркости изображения, потому что человеческое восприятие более чувствительно к изменениям в яркости, чем к изменениям в цвете.

Преобразуйте изображение с низкой разрешающей способностью от цветового пространства RGB до яркости (Iy) и цветность (Icb и Icr) каналы при помощи rgb2ycbcr функция.

Iycbcr = rgb2ycbcr(Ilowres);
Iy = Iycbcr(:,:,1);
Icb = Iycbcr(:,:,2);
Icr = Iycbcr(:,:,3);

Увеличьте масштаб яркость и два канала цветности с помощью бикубической интерполяции. Сверхдискретизированные каналы цветности, Icb_bicubic и Icr_bicubic, не потребуйте никакой последующей обработки.

Iy_bicubic = imresize(Iy,[nrows ncols],'bicubic');
Icb_bicubic = imresize(Icb,[nrows ncols],'bicubic');
Icr_bicubic = imresize(Icr,[nrows ncols],'bicubic');

Передайте увеличенный масштаб компонент яркости, Iy_bicubic, через обученную сеть VDSR. Наблюдайте activations от последнего слоя (слой регрессии). Выход сети является желаемым остаточным изображением.

Iresidual = activations(net,Iy_bicubic,41);
Iresidual = double(Iresidual);
imshow(Iresidual,[])
title('Residual Image from VDSR')

Добавьте остаточное изображение в увеличенный масштаб компонент яркости, чтобы получить компонент яркости VDSR с высоким разрешением.

Isr = Iy_bicubic + Iresidual;

Конкатенация компонента яркости VDSR с высоким разрешением с увеличенными масштаб компонентами цвета. Преобразуйте изображение в цветовое пространство RGB при помощи ycbcr2rgb функция. Результатом является итоговое цветное изображение с высоким разрешением с помощью VDSR.

Ivdsr = ycbcr2rgb(cat(3,Isr,Icb_bicubic,Icr_bicubic));
imshow(Ivdsr)
title('High-Resolution Image Obtained Using VDSR')

Визуальное и количественное сравнение

Чтобы получить лучшее визуальное понимание изображений с высоким разрешением, исследуйте небольшую область в каждом изображении. Задайте видимую область (ROI) с помощью векторного roi в формате [x y высота ширины]. Элементы задают x-и y-координату левого верхнего угла, и ширину и высоту ROI.

roi = [320 30 480 400];

Обрежьте изображения с высоким разрешением к этому ROI и отобразите результат как монтаж.

montage({imcrop(Ibicubic,roi),imcrop(Ivdsr,roi)})
title('High-Resolution Results Using Bicubic Interpolation (Left) vs. VDSR (Right)');

Изображение VDSR имеет более ясные детали и более резкие ребра.

Используйте метрики качества изображения, чтобы количественно сравнить изображение с высоким разрешением с помощью бикубической интерполяции для изображения VDSR. Ссылочное изображение является исходным изображением с высоким разрешением, Ireference, прежде, чем подготовить демонстрационное изображение с низкой разрешающей способностью.

Измерьте пиковое отношение сигнал-шум (PSNR) каждого изображения против ссылочного изображения. Большие значения PSNR обычно указывают на лучшее качество изображения. Смотрите psnr для получения дополнительной информации об этой метрике.

bicubicPSNR = psnr(Ibicubic,Ireference)
bicubicPSNR = 38.4747
vdsrPSNR = psnr(Ivdsr,Ireference)
vdsrPSNR = 39.2346

Измерьте структурный индекс подобия (SSIM) каждого изображения. SSIM оценивает визуальный удар трех характеристик изображения: яркость, контраст и структура, против ссылочного изображения. Чем ближе значение SSIM к 1, тем лучше тестовое изображение соглашается со ссылочным изображением. Смотрите ssim для получения дополнительной информации об этой метрике.

bicubicSSIM = ssim(Ibicubic,Ireference)
bicubicSSIM = 0.9861
vdsrSSIM = ssim(Ivdsr,Ireference)
vdsrSSIM = 0.9874

Измерьте перцепционное качество изображения с помощью Средства анализа качества изображения естественности (NIQE). Меньшие баллы NIQE указывают на лучшее перцепционное качество. Смотрите niqe для получения дополнительной информации об этой метрике.

bicubicNIQE = niqe(Ibicubic)
bicubicNIQE = 5.1721
vdsrNIQE = niqe(Ivdsr)
vdsrNIQE = 4.7611

Вычислите средний PSNR и SSIM целого набора тестовых изображений для масштабных коэффициентов 2, 3, и 4. Для простоты можно использовать функцию помощника, superResolutionMetrics, вычислить средние метрики.

scaleFactors = [2 3 4];
superResolutionMetrics(net,testImages,scaleFactors);
Results for Scale factor 2

Average PSNR for Bicubic = 31.809683
Average PSNR for VDSR = 31.921784
Average SSIM for Bicubic = 0.938194
Average SSIM for VDSR = 0.949404

Results for Scale factor 3

Average PSNR for Bicubic = 28.170441
Average PSNR for VDSR = 28.563952
Average SSIM for Bicubic = 0.884381
Average SSIM for VDSR = 0.895830

Results for Scale factor 4

Average PSNR for Bicubic = 27.010839
Average PSNR for VDSR = 27.837260
Average SSIM for Bicubic = 0.861604
Average SSIM for VDSR = 0.877132

Для каждого масштабного коэффициента, по сравнению с бикубической интерполяцией, VDSR имеет лучшие метрические баллы.

Сводные данные

В этом примере показано, как создать и обучить сеть VDSR для нескольких масштабных коэффициентов, затем используйте сеть, чтобы улучшить разрешение изображения через суперразрешение. Это шаги, чтобы обучить сеть:

  • Загрузите и предварительно обработайте обучающие данные.

  • Создайте randomPatchExtractionDatastore это кормит обучающими данными сеть.

  • Задайте слои сети VDSR.

  • Задайте опции обучения.

  • Обучите сеть с помощью trainNetwork функция.

После обучения сети VDSR или загрузки предварительно обученной сети VDSR, пример выполняет суперразрешение по изображению с низкой разрешающей способностью. Пример сравнивает результат VDSR с суперразрешением с помощью бикубической интерполяции, которая не использует глубокое обучение. VDSR превосходит бикубическую интерполяцию по характеристикам и относительно перцепционного качества изображения и относительно количественных качественных измерений.

Ссылки

[1] Ким, J., Дж. К. Ли и К. М. Ли. "Точное Суперразрешение Изображений Используя Очень Глубокие Сверточные Сети". Продолжения Конференции IEEE® по Компьютерному зрению и Распознаванию образов. 2016, стр 1646-1654.

[2] Grubinger, M. P. Ущелье, Х. Мюллер и Т. Дезелэерс. "Сравнительный тест IAPR TC-12: Новый Ресурс Оценки для Визуальных Информационных систем". Продолжения ресурсов OntoImage 2006 Языка Для Извлечения Изображений На основе содержимого. Генуя, Италия. Издание 5, май 2006, p. 10.

[3] Он, K., С. Чжан, С. Жэнь и Дж. Сун. "Копаясь Глубоко в Выпрямителях: Превышение Производительности Человеческого Уровня на Классификации ImageNet". Продолжения Международной конференции IEEE по вопросам Компьютерного зрения, 2015, стр 1026-1034.

Смотрите также

| | | | | |

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте