exponenta event banner

Устранение блочности изображения JPEG с помощью глубокого обучения

В этом примере показано, как обучить денонсирующую сверточную нейронную сеть (DnCNN), а затем использовать сеть для уменьшения артефактов сжатия JPEG в изображении.

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

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

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

Сеть DnCNN

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

В справочном документе [1] используется стратегия остаточного обучения, означающая, что сеть DnCNN учится оценивать остаточное изображение. Остаточное изображение - это разница между первозданным изображением и искаженной копией изображения. Остаточное изображение содержит информацию о искажении изображения. В этом примере искажение отображается как артефакты блокировки JPEG.

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

Если YOriginal - яркость первозданного изображения, а YCompressed - яркость изображения, содержащего артефакты сжатия JPEG, то вход в сеть DnCNN - YCompressed, и сеть учится предсказывать YResidual = YCompressed-YOriginal из обучающих данных.

Как только сеть DnCNN узнает, как оценить остаточное изображение, она может восстановить неискаженную версию сжатого изображения JPEG путем добавления остаточного изображения в сжатый канал яркости, затем преобразовать изображение обратно в цветовое пространство RGB.

Загрузить данные обучения

Загрузите IAPR TC-12 Benchmark, который состоит из 20 000 натурных изображений [2]. Набор данных включает фотографии людей, животных, городов и многое другое. Размер файла данных составляет ~ 1,8 ГБ. Если вы не хотите загружать набор обучающих данных, необходимых для обучения сети, вы можете загрузить предварительно обученную сеть DnCNN, набравload('pretrainedJPEGDnCNN.mat') в командной строке. Затем в этом примере перейдите непосредственно к разделу Выполнение дедупликации JPEG с использованием сети DnCNN.

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

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

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

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

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

numel(imdsPristine.Files)
ans = 251

Подготовка данных обучения

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

Укажите значения качества изображения JPEG, используемые для визуализации артефактов сжатия изображения. Значения качества должны находиться в диапазоне [0, 100]. Небольшие значения качества приводят к большему сжатию и более сильным артефактам сжатия. Используйте более плотную выборку малых значений качества, чтобы учебные данные имели широкий диапазон артефактов сжатия.

JPEGQuality = [5:5:40 50 60 70 80];

Сжатые изображения хранятся на диске как файлы MAT в каталоге compressedImagesDir. Вычисленные остаточные изображения хранятся на диске как файлы MAT в каталоге residualImagesDir. Файлы MAT хранятся в виде данных double для большей точности при обучении сети.

compressedImagesDir = fullfile(imagesDir,'iaprtc12','JPEGDeblockingData','compressedImages');
residualImagesDir = fullfile(imagesDir,'iaprtc12','JPEGDeblockingData','residualImages');

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

Для каждого нетронутого обучающего изображения вспомогательная функция записывает копию изображения с коэффициентом 100 качества для использования в качестве опорного изображения и копии изображения с каждым коэффициентом качества для использования в качестве сетевых входов. Функция вычисляет канал яркости (Y) опорного и сжатого изображений в типе данных. double для большей точности при расчете остаточных изображений. Сжатые образы хранятся на диске как файлы .MAT в каталоге compressedDirName. Вычисленные остаточные изображения хранятся на диске как файлы .MAT в каталоге residualDirName.

[compressedDirName,residualDirName] = createJPEGDeblockingTrainingSet(imdsPristine,JPEGQuality);

Создание хранилища данных для извлечения случайных исправлений для обучения

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

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

imdsCompressed = imageDatastore(compressedDirName,'FileExtensions','.mat','ReadFcn',@matRead);
imdsResidual = imageDatastore(residualDirName,'FileExtensions','.mat','ReadFcn',@matRead);

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

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

Создать randomPatchExtractionDatastore(Панель инструментов обработки изображений) из двух хранилищ данных изображений. Укажите размер фрагмента 50 на 50 пикселей. Каждое изображение генерирует 128 случайных фрагментов размером 50 на 50 пикселей. Укажите размер мини-пакета 128.

patchSize = 50;
patchesPerImage = 128;
dsTrain = randomPatchExtractionDatastore(imdsCompressed,imdsResidual,patchSize, ...
    'PatchesPerImage',patchesPerImage, ...
    'DataAugmentation',augmenter);
dsTrain.MiniBatchSize = patchesPerImage;

Хранилище данных для случайного извлечения исправлений dsTrain предоставляет мини-пакеты данных в сеть при итерации эпохи. Предварительный просмотр результата чтения из хранилища данных.

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

    {50×50 double}    {50×50 double}
    {50×50 double}    {50×50 double}
    {50×50 double}    {50×50 double}
    {50×50 double}    {50×50 double}
    {50×50 double}    {50×50 double}
    {50×50 double}    {50×50 double}
    {50×50 double}    {50×50 double}
    {50×50 double}    {50×50 double}

Настройка слоев DnCNN

Создайте уровни встроенной сети DnCNN с помощью dnCNNLayers(Панель инструментов обработки изображений). По умолчанию глубина сети (количество слоев свертки) равна 20.

layers = dnCNNLayers
layers = 
  1x59 Layer array with layers:

     1   'InputLayer'             Image Input           50x50x1 images
     2   'Conv1'                  Convolution           64 3x3x1 convolutions with stride [1  1] and padding [1  1  1  1]
     3   'ReLU1'                  ReLU                  ReLU
     4   'Conv2'                  Convolution           64 3x3x64 convolutions with stride [1  1] and padding [1  1  1  1]
     5   'BNorm2'                 Batch Normalization   Batch normalization with 64 channels
     6   'ReLU2'                  ReLU                  ReLU
     7   'Conv3'                  Convolution           64 3x3x64 convolutions with stride [1  1] and padding [1  1  1  1]
     8   'BNorm3'                 Batch Normalization   Batch normalization with 64 channels
     9   'ReLU3'                  ReLU                  ReLU
    10   'Conv4'                  Convolution           64 3x3x64 convolutions with stride [1  1] and padding [1  1  1  1]
    11   'BNorm4'                 Batch Normalization   Batch normalization with 64 channels
    12   'ReLU4'                  ReLU                  ReLU
    13   'Conv5'                  Convolution           64 3x3x64 convolutions with stride [1  1] and padding [1  1  1  1]
    14   'BNorm5'                 Batch Normalization   Batch normalization with 64 channels
    15   'ReLU5'                  ReLU                  ReLU
    16   'Conv6'                  Convolution           64 3x3x64 convolutions with stride [1  1] and padding [1  1  1  1]
    17   'BNorm6'                 Batch Normalization   Batch normalization with 64 channels
    18   'ReLU6'                  ReLU                  ReLU
    19   'Conv7'                  Convolution           64 3x3x64 convolutions with stride [1  1] and padding [1  1  1  1]
    20   'BNorm7'                 Batch Normalization   Batch normalization with 64 channels
    21   'ReLU7'                  ReLU                  ReLU
    22   'Conv8'                  Convolution           64 3x3x64 convolutions with stride [1  1] and padding [1  1  1  1]
    23   'BNorm8'                 Batch Normalization   Batch normalization with 64 channels
    24   'ReLU8'                  ReLU                  ReLU
    25   'Conv9'                  Convolution           64 3x3x64 convolutions with stride [1  1] and padding [1  1  1  1]
    26   'BNorm9'                 Batch Normalization   Batch normalization with 64 channels
    27   'ReLU9'                  ReLU                  ReLU
    28   'Conv10'                 Convolution           64 3x3x64 convolutions with stride [1  1] and padding [1  1  1  1]
    29   'BNorm10'                Batch Normalization   Batch normalization with 64 channels
    30   'ReLU10'                 ReLU                  ReLU
    31   'Conv11'                 Convolution           64 3x3x64 convolutions with stride [1  1] and padding [1  1  1  1]
    32   'BNorm11'                Batch Normalization   Batch normalization with 64 channels
    33   'ReLU11'                 ReLU                  ReLU
    34   'Conv12'                 Convolution           64 3x3x64 convolutions with stride [1  1] and padding [1  1  1  1]
    35   'BNorm12'                Batch Normalization   Batch normalization with 64 channels
    36   'ReLU12'                 ReLU                  ReLU
    37   'Conv13'                 Convolution           64 3x3x64 convolutions with stride [1  1] and padding [1  1  1  1]
    38   'BNorm13'                Batch Normalization   Batch normalization with 64 channels
    39   'ReLU13'                 ReLU                  ReLU
    40   'Conv14'                 Convolution           64 3x3x64 convolutions with stride [1  1] and padding [1  1  1  1]
    41   'BNorm14'                Batch Normalization   Batch normalization with 64 channels
    42   'ReLU14'                 ReLU                  ReLU
    43   'Conv15'                 Convolution           64 3x3x64 convolutions with stride [1  1] and padding [1  1  1  1]
    44   'BNorm15'                Batch Normalization   Batch normalization with 64 channels
    45   'ReLU15'                 ReLU                  ReLU
    46   'Conv16'                 Convolution           64 3x3x64 convolutions with stride [1  1] and padding [1  1  1  1]
    47   'BNorm16'                Batch Normalization   Batch normalization with 64 channels
    48   'ReLU16'                 ReLU                  ReLU
    49   'Conv17'                 Convolution           64 3x3x64 convolutions with stride [1  1] and padding [1  1  1  1]
    50   'BNorm17'                Batch Normalization   Batch normalization with 64 channels
    51   'ReLU17'                 ReLU                  ReLU
    52   'Conv18'                 Convolution           64 3x3x64 convolutions with stride [1  1] and padding [1  1  1  1]
    53   'BNorm18'                Batch Normalization   Batch normalization with 64 channels
    54   'ReLU18'                 ReLU                  ReLU
    55   'Conv19'                 Convolution           64 3x3x64 convolutions with stride [1  1] and padding [1  1  1  1]
    56   'BNorm19'                Batch Normalization   Batch normalization with 64 channels
    57   'ReLU19'                 ReLU                  ReLU
    58   'Conv20'                 Convolution           1 3x3x64 convolutions with stride [1  1] and padding [1  1  1  1]
    59   'FinalRegressionLayer'   Regression Output     mean-squared-error

Выбор параметров обучения

Обучение сети с помощью стохастического градиентного спуска с оптимизацией импульса (SGDM). Укажите параметры гиперпараметра для SGDM с помощью trainingOptions функция.

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

maxEpochs = 30;
initLearningRate = 0.1;
l2reg = 0.0001;
batchSize = 64;

options = trainingOptions('sgdm', ...
    'Momentum',0.9, ...
    'InitialLearnRate',initLearningRate, ...
    'LearnRateSchedule','piecewise', ...
    'GradientThresholdMethod','absolute-value', ...
    'GradientThreshold',0.005, ...
    'L2Regularization',l2reg, ...
    'MiniBatchSize',batchSize, ...
    'MaxEpochs',maxEpochs, ...
    'Plots','training-progress', ...
    'Verbose',false);

Обучение сети

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

Для обучения сети установите doTraining переменная в следующем коде true. Обучение сети DnCNN с помощью trainNetwork функция.

Обучение на GPU, если он доступен. Для использования графического процессора требуются параллельные вычислительные Toolbox™ и графический процессор NVIDIA ® с поддержкой CUDA ®. Дополнительные сведения см. в разделе Поддержка графического процессора по выпуску (Панель инструментов параллельных вычислений). Обучение занимает около 40 часов на NVIDIA™ Titan X.

doTraining = false; 
if doTraining  
    modelDateTime = string(datetime('now','Format',"yyyy-MM-dd-HH-mm-ss"));
    [net,info] = trainNetwork(dsTrain,layers,options);
    save(strcat("trainedJPEGDnCNN-",modelDateTime,"-Epoch-",num2str(maxEpochs),".mat"),'net');
else 
    load('pretrainedJPEGDnCNN.mat'); 
end

Теперь можно использовать сеть DnCNN для удаления артефактов сжатия JPEG из изображений.

Отмена блокировки JPEG с использованием сети DnCNN

Чтобы отменить блокировку JPEG с помощью DnCNN, выполните остальные шаги этого примера. В остальном примере показано, как:

  • Создание образцов тестовых изображений с артефактами сжатия JPEG на трех различных уровнях качества.

  • Удалите артефакты сжатия с помощью сети DnCNN.

  • Визуальное сравнение изображений до и после снятия блокировки.

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

Создание образцов изображений с блокирующими артефактами

Создание образцов изображений для оценки результата отмены блокировки изображений JPEG с помощью сети DnCNN. Набор тестовых данных, testImagesсодержит 21 неискаженное изображение, переданное в 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)

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

indx = 7; % Index of image to read from the test image datastore
Ireference = readimage(testImages,indx);
imshow(Ireference)
title('Uncompressed Reference Image')

Создание трех сжатых тестовых изображений с помощью JPEG Quality значения 10, 20 и 50.

imwrite(Ireference,fullfile(tempdir,'testQuality10.jpg'),'Quality',10);
imwrite(Ireference,fullfile(tempdir,'testQuality20.jpg'),'Quality',20);
imwrite(Ireference,fullfile(tempdir,'testQuality50.jpg'),'Quality',50);

Предварительная обработка сжатых изображений

Считывание сжатых версий изображения в рабочую область.

I10 = imread(fullfile(tempdir,'testQuality10.jpg'));
I20 = imread(fullfile(tempdir,'testQuality20.jpg'));
I50 = imread(fullfile(tempdir,'testQuality50.jpg'));

Отображение сжатых изображений в виде монтажа.

montage({I50,I20,I10},'Size',[1 3])
title('JPEG-Compressed Images with Quality Factor: 50, 20 and 10 (left to right)')

Напомним, что DnCNN обучается, используя только канал яркости изображения, потому что человеческое восприятие более чувствительно к изменениям яркости, чем к изменениям цвета. Преобразуйте изображения, сжатые в формате JPEG, из цветового пространства RGB в цветовое пространство YCbCr с помощью команды rgb2ycbcr(Панель инструментов обработки изображений).

I10ycbcr = rgb2ycbcr(I10);
I20ycbcr = rgb2ycbcr(I20);
I50ycbcr = rgb2ycbcr(I50);

Применение сети DnCNN

Для выполнения прямого прохода сети используйте denoiseImage(Панель инструментов обработки изображений). Эта функция использует точно такие же процедуры обучения и тестирования, чтобы засорить изображение. Артефакты сжатия JPEG можно рассматривать как тип шума изображения.

I10y_predicted = denoiseImage(I10ycbcr(:,:,1),net);
I20y_predicted = denoiseImage(I20ycbcr(:,:,1),net);
I50y_predicted = denoiseImage(I50ycbcr(:,:,1),net);

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

I10ycbcr_predicted = cat(3,I10y_predicted,I10ycbcr(:,:,2:3));
I20ycbcr_predicted = cat(3,I20y_predicted,I20ycbcr(:,:,2:3));
I50ycbcr_predicted = cat(3,I50y_predicted,I50ycbcr(:,:,2:3));

Преобразование разблокированного изображения YCbCr в цветовое пространство RGB с помощью ycbcr2rgb(Панель инструментов обработки изображений).

I10_predicted = ycbcr2rgb(I10ycbcr_predicted);
I20_predicted = ycbcr2rgb(I20ycbcr_predicted);
I50_predicted = ycbcr2rgb(I50ycbcr_predicted);

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

montage({I50_predicted,I20_predicted,I10_predicted},'Size',[1 3])
title('Deblocked Images with Quality Factor 50, 20 and 10 (Left to Right)')

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

roi = [30 440 100 80];

Обрезайте сжатые изображения до этой окупаемости инвестиций и отобразите результат как монтаж.

i10 = imcrop(I10,roi);
i20 = imcrop(I20,roi);
i50 = imcrop(I50,roi);
montage({i50 i20 i10},'Size',[1 3])
title('Patches from JPEG-Compressed Images with Quality Factor 50, 20 and 10 (Left to Right)')

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

i10predicted = imcrop(I10_predicted,roi);
i20predicted = imcrop(I20_predicted,roi);
i50predicted = imcrop(I50_predicted,roi);
montage({i50predicted,i20predicted,i10predicted},'Size',[1 3])
title('Patches from Deblocked Images with Quality Factor 50, 20 and 10 (Left to Right)')

Количественное сравнение

Количественная оценка качества разблокированных изображений с помощью четырех метрик. Вы можете использовать displayJPEGResults вспомогательная функция для вычисления этих метрик для сжатых и разблокированных изображений при коэффициентах качества 10, 20 и 50. Эта функция присоединена к примеру как вспомогательный файл.

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

  • Пиковое отношение сигнал/шум (PSNR). Чем больше значение PSNR, тем сильнее сигнал по сравнению с искажением. Посмотрите psnr(Панель инструментов обработки изображений) для получения дополнительной информации об этой метрике.

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

  • Анализатор пространственного качества слепого/безрецензионного изображения (BRISQUE). BRISQUE измеряет качество воспринимаемого изображения, используя модель, обученную из естественных сцен с искажением изображения. Меньшие оценки BRISQUE указывают на лучшее качество восприятия. Посмотрите brisque(Панель инструментов обработки изображений) для получения дополнительной информации об этой метрике.

displayJPEGResults(Ireference,I10,I20,I50,I10_predicted,I20_predicted,I50_predicted)
------------------------------------------
SSIM Comparison
===============
I10: 0.90624    I10_predicted: 0.91286
I20: 0.94904    I20_predicted: 0.95444
I50: 0.97238    I50_predicted: 0.97482
------------------------------------------
PSNR Comparison
===============
I10: 26.6046    I10_predicted: 27.0793
I20: 28.8015    I20_predicted: 29.3378
I50: 31.4512    I50_predicted: 31.8584
------------------------------------------
NIQE Comparison
===============
I10: 7.2194    I10_predicted: 3.9478
I20: 4.5158    I20_predicted: 3.0685
I50: 2.8874    I50_predicted: 2.4106
NOTE: Smaller NIQE score signifies better perceptual quality
------------------------------------------
BRISQUE Comparison
==================
I10: 52.372    I10_predicted: 38.9271
I20: 45.3772    I20_predicted: 30.8991
I50: 27.7093    I50_predicted: 24.3845
NOTE: Smaller BRISQUE score signifies better perceptual quality

Ссылки

[1] Чжан, К., У. Цзо, Я. Чен, Д. Мэн и Л. Чжан, «За гауссовым денуазером: остаточное обучение глубокому CNN для обличения». Транзакции IEEE ® при обработке изображений. Февраль 2017 года.

[2] Грубингер, М., П. Клаф, Х. Мюллер и Т. Деселер. «Эталонный тест IAPR TC-12: новый ресурс оценки для визуальных информационных систем». Труды языковых ресурсов TrainingImage 2006 для извлечения изображений на основе контента. Генуя, Италия. Том 5, май 2006, стр. 10.

См. также

| | (Панель инструментов обработки изображений) | (Панель инструментов обработки изображений) | (Панель инструментов обработки изображений) | (Панель инструментов обработки изображений) | (Панель инструментов обработки изображений)

Связанные темы