这个例子展示了如何使用deepDreamImage
使用预先训练的卷积神经网络GoogLeNet。
Deep Dream是一种深度学习中的特征可视化技术,它综合了强烈激活网络层的图像。通过可视化这些图像,您可以突出显示网络学习到的图像特征。这些图像对于理解和诊断网络行为非常有用。
通过可视化网络末端各层的特性,可以生成有趣的图像。
该示例使用了深度学习工具箱™和深度学习工具箱模型GoogLeNet网络生成图像。
加载一个预先训练好的GoogLeNet网络。如果是深度学习工具箱模型GoogLeNet网络金宝app支持包未安装,则软件提供下载链接。
网= googlenet;
要生成与给定类最相似的图像,选择完全连接层。首先,通过使用方法查看网络结构,找到该层的层索引analyzeNetwork
.
analyzeNetwork(净)
然后选择完全连接的层,在这个例子中,142。
层= 142;layerName = net.Layers(层). name
layerName = ' loss3-classifier '
通过选择多个类,可以一次生成多个图像。通过设置选择要可视化的类渠道
作为这些类名的索引。
通道= [114 293 341 484 563 950];
类存储在类
属性的输出层(最后一层)。中的条目可以查看所选类的名称渠道
.
net.Layers(结束). class(渠道)
ans =6×1分类蜗牛老虎斑马城堡喷泉草莓
使用以下命令生成图像deepDreamImage
.此命令使用兼容的GPU(如果可用)。否则使用CPU。使用GPU需要并行计算工具箱™和支持的GPU设备。金宝app有关支持的设备的信息,请参见金宝appGPU支金宝app持情况(并行计算工具箱).
I = deepDreamImage(净,layerName,渠道);
|==============================================| | 迭代| |金字塔激活水平| | |力量 | | |==============================================| | 1 | 0.09 | 1 | | 2 | 0.67 | 1 | | 3 | 4.86 | 1 | | 4 | 8.41 | 1 | | 5 | 11.27 | 1 | | 6 | 14.86 | 1 | | 7 | 17.39 | 1 | | 8 | 22.84 | 1 | | 9 | 27.78 | 1 | | 10 | 34.39 | 1 | | 1 | 3.99 | 2| | 2 | 11.51 | 2 | | 3 | 13.82 | 2 | | 4 | 19.87 | 2 | | 5 | 20.67 | 2 | | 6 | 20.82 | 2 | | 7 | 24.01 | 2 | | 8 | 27.20 | 2 | | 9 | 28.24 | 2 | | 10 | 35.93 | 2 | | 1 | 34.91 | 3 | | 2 | 46.18 | 3 | | 3 | 41.03 | 3 | | 4 | 48.84 | 3 | | 5 | 51.13 | 3 | | 6 | 58.65 | 3 | | 7 | 58.12 | 3 | | 8 | 61.68 | 3 | | 9 | 71.53 | 3 | | 10 | 76.01 | 3 ||==============================================|
显示所有的图像一起使用imtile
.
figure I = imtile(I);imshow(我)
增加金字塔层的数量和每个金字塔层的迭代可以产生更详细的图像,但需要额外的计算。
属性可以增加迭代次数“NumIterations”
选择。将迭代次数设置为100。
迭代= 100;
生成强烈激活“老虎”类的详细图像(频道293)。集“详细”
以false掩盖优化过程的详细信息。
渠道= 293;我= deepDreamImage(净,layerName、通道...“详细”假的,...“NumIterations”、迭代);图imshow(我)
要生成更大、更详细的输出图像,可以增加金字塔级别的数量和每个金字塔级别的迭代次数。
设置金字塔层数为4。
水平= 4;
生成一个详细的图像,强烈激活“城堡”类(频道484)。
渠道= 484;我= deepDreamImage(净,layerName、通道...“详细”假的,...“NumIterations”、迭代...“PyramidLevels”、水平);图imshow(我)
googlenet
|deepDreamImage
|occlusionSensitivity
|imageLIME
|gradCAM