主要内容

Image-to-Image回归深陷网络设计师

这个例子展示了如何使用深层网络设计师构建和训练一个image-to-image回归网络超分辨率。

空间分辨率像素的数量被用来构造一个数字图像。与高空间分辨率图像是由更多的像素,因此图像包含更详细。超分辨率的过程采取作为输入低分辨率图像并升级到更高分辨率的图像。处理图像数据时,您可能会降低空间分辨率降低的数据的大小,代价是失去信息。恢复丢失的信息,你可以训练深入学习网络预测图像的遗漏的细节。在本例中,您恢复28-by-28像素图像压缩7-by-7像素的图像。

加载数据

下面的例子使用了数字数据集合,它由10000合成灰度图像的手写数字。28-by-28-by-1每个图像像素。

加载数据并创建一个图像数据存储。

dataFolder = fullfile (toolboxdir (“nnet”),“nndemos”,“nndatasets”,“DigitDataset”);imd = imageDatastore (dataFolder,“IncludeSubfolders”,真的,“LabelSource”,“foldernames”);

使用洗牌函数来洗牌之前训练的数据。

imd = shuffle (imd);

使用splitEachLabel函数将图像数据存储为三个图像数据存储包含图像训练、验证和测试。

[imdsTrain, imdsVal imdsTest] = splitEachLabel (imd, 0.7, 0.15, 0.15,“随机”);

规范化的数据在每一个图像范围[0,1]。标准化有助于稳定和加快网络训练使用梯度下降法。如果您的数据是很差了,那么损失可以成为南和网络参数可以在训练发散。

imdsTrain =变换(imdsTrain @ (x)重新调节(x));imdsVal =变换(imdsVal @ (x)重新调节(x));imdsTest =变换(imdsTest @ (x)重新调节(x));

生成的训练数据

创建一个训练数据集通过生成双图像组成的upsampled低分辨率图像和相应的高分辨率图像。

训练一个网络执行image-to-image回归,需要对图像组成的一个输入和响应这两个图片是相同的大小。生成的训练数据将采样然后upsampling 28-by-28 7-by-7每个图像像素像素。使用成对的转换和原始图像,之间的网络可以学习如何映射两个不同的决议。万博 尤文图斯

使用helper函数生成输入数据upsampLowRes,它使用imresize产生低分辨率图像。

imdsInputTrain =变换(imdsTrain @upsampLowRes);imdsInputVal =变换(imdsVal @upsampLowRes);imdsInputTest =变换(imdsTest @upsampLowRes);

使用结合函数相结合的低和高分辨率图像到一个数据存储。的输出结合函数是一个CombinedDatastore对象。

dsTrain =结合(imdsInputTrain imdsTrain);dsVal =结合(imdsInputVal imdsVal);dst =结合(imdsInputTest imdsTest);

创建网络体系结构

创建网络体系结构使用unetLayers从计算机视觉的工具箱™函数。这个函数提供了一个网络适用于语义分割,可以很容易地适应image-to-image回归。

创建一个网络输入28-by-28-by-1像素大小。

层= unetLayers([1] 28日28日2“encoderDepth”2);

编辑网络image-to-image回归使用深层网络设计师。

deepNetworkDesigner(层);

设计师窗格中,取代将softmax和像素分类与回归层和层层的图书馆

选择最终的卷积层和设置NumFilters财产1

网络是现在准备培训。

导入数据

培训和验证数据导入深度网络设计师。

数据选项卡上,单击导入数据>导入数据存储并选择dsTrain作为训练数据,dsVal验证数据。导入数据存储通过点击进口

深层网络设计师显示双相结合的图像数据存储。高档低分辨率输入图像是在左边,和原始高分辨率的响应图像是在右边。网络学习如何输入和响应之间的映射图像。

列车网络的

选择培训方案和培训网络。

培训选项卡上,选择培训方案。从解算器列表中,选择亚当。集MaxEpochs10。通过点击确认培训选项关闭

火车上的网络数据存储通过点击相结合火车

随着网络学习如何将两者之间的映射图像验证根均方误差(RMSE)减少。

培训完成后,点击出口出口训练网络工作区。经过训练的网络存储在变量中trainedNetwork_1

测试网络

评估网络使用的性能测试数据。

使用预测,您可以测试网络是否能产生一个高分辨率图像的低分辨率输入图像不包含在训练集。

ypred =预测(trainedNetwork_1, dst);我(1:2,我)= = 1:8读(dst);我(3)= {ypred (::,:, I)};结束

比较输入、预测和响应图像。

次要情节(1、3、1)imshow (imtile(我(1:)“GridSize”,[1]))标题(“输入”次要情节(1、3、2)imshow (imtile(我(3:)“GridSize”,[1]))标题(“预测”次要情节(1,3,3)imshow (imtile(我(2:)“GridSize”,[1]))标题(“响应”)

网络成功地从低分辨率输入生成高分辨率的图像。

网络在这个例子非常简单,非常适合数字数据集。对于一个例子,演示如何创建一个更复杂的image-to-image回归日常网络图片,明白了使用深度学习提高图像分辨率

万博1manbetx支持功能

函数dataOut = upsampLowRes (dataIn) temp = dataIn;temp = imresize (temp, [7],“方法”,双线性的);dataOut = {imresize (temp, 28日,28日,“方法”,双线性的)};结束

另请参阅

|

相关的话题