文档

深度梦图像使用AlexNet

这个例子展示了如何使用生成图像deepDreamImage使用预先训练好的卷积神经网络AlexNet。

Deep Dream是深度学习中的一种特征可视化技术,它可以合成强烈激活网络层的图像。通过可视化这些图像,可以突出显示网络学习到的图像特征。这些图像对于理解和诊断网络行为是有用的。

您可以通过可视化网络末端的层的特征来生成有趣的图像。

该示例使用神经网络工具箱™,神经网络工具箱模型用于AlexNet网络生成图像。可选地,您可以使用图像处理工具箱™一起显示多个图像。

负荷预训练网络

加载预训练的AlexNet网络(AlexNet模型的神经网络工具箱)。神经网络工具箱模型用于AlexNet网络未安装时,则该软件提供下载链接。

Net = alexnet;

生成图像

为了生成与给定类最相似的图像,选择最后的全连接层。中查看网络结构,找到该层的层索引网络属性

网层
ans = 25x1带有图层的图层数组:1' data'图像输入227x227x3图像,采用'zerocenter'归一化2' conv1' Convolution 96 11x11x3卷积,stride[4 4]和填充[0 0]3 'relu1' ReLU ReLU 4 'norm1'跨通道归一化跨通道归一化,每个元素5个通道5 'pool1'最大池化3x3最大池化,stride[2 2]和填充[0 0]6 'conv2' Convolution 256 5x5x48卷积,stride[1 1]和填充[2 2]7 'relu2' ReLU ReLU 8 'norm2'跨通道归一化跨通道标准化与5频道/元素9“pool2”马克斯池3 x3马克斯池步(2 - 2)和填充[0 0]10 conv3卷积384 3 x3x256旋转步[1]和填充[1]11的relu3 ReLU ReLU 12 conv4卷积384 3 x3x192旋转步[1]和填充[1]13的relu4 ReLU ReLU 14 conv5卷积256 3 x3x192旋转步[1]和填充[1]15 ' relu5 ReLU ReLU 16“pool5”马克斯池3 x3马克斯池步(2 - 2)和填充[0 0] 17 'fc6'全连接4096全连接层18 'relu6' ReLU ReLU 19 'drop6' drop6' Dropout 50% Dropout 20 'fc7'全连接4096全连接层21 'relu7' ReLU ReLU 22 'drop7' Dropout 50% Dropout 23 'fc8'全连接1000全连接层24 'prob' Softmax Softmax 25 'output' Classification output crossentropyex with 'tench', '金鱼',和998其他类

然后,选择最后的全连接层。最后一个完全连接的层是第23层。

层数= 23;

您可以通过选择多个类一次生成多个映像。通过设置选择要可视化的类渠道为这些类名的索引。

渠道= [9 188 231 563 855 975];

类名存储在一会输出层(最后一层)的属性。中的项,可以查看所选类的名称渠道

net.Layers(结束).ClassNames(渠道)
ans = 1×6单元格数组第1至4列“母鸡”“约克夏梗”“设得兰牧羊犬”“喷泉”第5至6列“剧院窗帘”“间歇泉”

使用以下命令生成图像deepDreamImage。该命令使用兼容的GPU(如果可用)。否则它会占用CPU。在GPU上进行训练需要一个支持CUDA®的NVIDIA®GPU,具有3.0或更高的计算能力。

I = deepDreamImage(网络,层,通道);
|============================================| | 金字塔迭代激活| | | |水平| |力量  | |============================================| | 1 | 1 | 1.45 | | 1 | 2 | 3.36 | | 1 | 3 | 7.13 | | 1 | 4 | 13.12 | | 1 | 5 | 18.62 | | 1 | 6 | 26.64 | | 1 | 7 | 32.08 | | 1 | 8 | 38.13 | | 1 | 9 | 46.56 | | 1 | 10 | 53.34 | | 2 | 1 | 10.83 | | 2 | 2 | 11.94 | | 2 | 3 | 17.18 | | 2 | 4 | 18.23 | | 2 | 5 | 27.07 | | 2 | 6 | 23.30 | | 2 | 7 | 28.15 | | 2 | 8 | 26.15 | | 2 | 9 | 34.43 | | 2 |10 | 35.15 | | 3 | 1 | 36.07 | | 3 | 2 | 49.56 | | 3 | 3 | 52.69 | | 3 | 4 | 65.31 | | 3 | 5 | 61.22 | | 3 | 6 | 68.71 | | 3 | 7 | 74.45 | | 3 | 8 | 75.56 | | 3 | 9 | 82.75 | | 3 | 10 | 78.51  | |============================================|

如果您安装了图像处理工具箱,则可以使用蒙太奇。否则,您可以使用imshow

图蒙太奇(我)

生成更详细的图像

增加金字塔层的数量和每个金字塔层的迭代次数可以以额外的计算为代价生成更详细的图像。

方法可以增加迭代次数“NumIterations”选择。将迭代次数设置为100。

迭代= 100;

生成一个详细的图像,强烈激活'hen'类(通道9)“详细”false表示隐藏优化过程的详细信息。

通道= 9;I = deepDreamImage(网络,层,通道,“详细”假的,“NumIterations”、迭代);图imshow(我)

要生成更大、更详细的输出图像,可以增加金字塔层的数量和每个金字塔层的迭代次数。

设置金字塔级别的数量为4。

级别= 4;

生成强烈激活“pot”类(通道739)的详细图像。

通道= 739;I = deepDreamImage(网络,层,通道,“详细”假的,“NumIterations”、迭代“PyramidLevels”、水平);图imshow(我)

另请参阅

|

相关的话题

这个话题有用吗?