主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

GoogLeNetを使用した深梦イメージ

この例では,事前学習済みの畳み込みニューラルネットワークGoogLeNetでdeepDreamImageを使用してイメージを生成する方法を説明します。

深梦はネットワーク層を強く活性化するイメージを合成する,深層学習での特徴可視化の手法です。これらのイメージを可視化することによって,ネットワークによって学習されたイメージの特徴を強調表示できます。これらのイメージは,ネットワーク動作の理解および診断に役立ちます。

ネットワークの最後の方の層の特徴を可視化することによって,興味深いイメージを生成できます。

この例では,深度学习工具箱™および深度学习工具箱模型GoogLeNet网络を使用してイメージを生成します。

事前学習済みのネットワークの読み込み

事前学習済みのGoogLeNetネットワークを読み込みます。深度学习工具箱模型GoogLeNet网络サポートパッケージがインストールされていない場合,ダウンロード用リンクが表示されます。

网= 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が利用できる場合は,そのGPUが使用されます。そうでない場合はCPUが使用されます。GPUで実行するには,以3.0计算能力上のCUDA®対応NVIDIA GPU®が必要です。

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(我)

詳細なイメージの生成

ピラミッドレベルの数およびピラミッドレベル1つあたりの反復回数を増やすと,計算量が増加しますが,より詳細なイメージを生成できます。

反復回数は,“NumIterations”オプションを使用して増やすことができます。100年反復回数をに設定します。

迭代= 100;

“老虎”クラス(チャネル293)を強く活性化する詳細なイメージを生成します。最適化プロセスの詳細を表示しないようにするには,“详细”を假に設定します。

渠道= 293;我= deepDreamImage(净,layerName、通道...“详细”假的,...“NumIterations”、迭代);图imshow(我)

より大きく詳細な出力イメージを生成するには,ピラミッドレベルの数とピラミッドレベル1つあたりの反復回数の両方を増やします。

ピラミッドレベルの数を4に設定します。

水平= 4;

‘城堡’クラス(チャネル484)を強く活性化する詳細なイメージを生成します。

渠道= 484;我= deepDreamImage(净,layerName、通道...“详细”假的,...“NumIterations”、迭代...“PyramidLevels”、水平);图imshow(我)

参考

|

関連するトピック