このリポジトリには、Deep Dream アルゴリズムの PyTorch 実装が含まれています (:link: Mordvintstev らのブログ)。
コマンドラインの使用法とJupyter Notebook が完全にサポートされています。
そして、これらの奇妙でサイケデリックな外観の画像を作成する力も与えられます。
悪くないですよね?
私が作成した Jupyter ノートブックから始めることを強くお勧めします。
注: これはかなり大きく、約 10 MB なので、GitHub 上のブラウザに読み込むには数回の試行が必要になる場合があります。
一言で言えば、アルゴリズムは勾配上昇を実行することによって、選択されたネットワーク層の活性化を最大化します。
したがって、「夢」を見た後の左側のような入力画像から、右側の画像が得られます。
ニューラル ネットワークの中にこの創造性が隠されていると誰が言ったでしょうか? ?
オリジナルの Deep Dream リポジトリのほとんどはCaffeで書かれており、PyTorch で書かれたリポジトリは通常、非常に読みにくく、理解するのが非常に困難です。このリポジトリは、私が知る限り最もクリーンなDeepDream リポジトリを作成する試みであり、 PyTorch で書かれています。 ❤️
このコードを使用して作成できる例をいくつか示します。
ニューラル ネットワークの浅い層を使用すると、出力として低レベルのパターン (エッジ、円、色など) が得られます。
ここで、最初の 2 つの画像は ResNet50 から取得され、最後の画像は GoogLeNet から取得されました (どちらも ImageNet で事前トレーニング済み)。
より深いネットワーク層を使用すると、より高いレベルのパターン (目、鼻、動物の頭) が得られます。
1 番目と 3 番目は VGG 16 (ImageNet) を使用して作成され、中央のものは Places 365 で事前トレーニングされた ResNet50 を使用して作成されました。
他のすべてのパラメーターを同じに保ち、事前トレーニングされた重みを交換すると、次のようになります。
左: ResNet50-ImageNet (より多くの動物の特徴が確認できます) 右: ResNet50-Places365 (人間が構築したものなど)。
夢を見ることは、「垂直」に積み重ねられた複数の画像解像度で実行されます (これを画像ピラミッドと呼びます)。
左から右に進むと、変更された唯一のパラメータはピラミッド サイズです (左から右へ: 3、7、9 レベル)。
ピラミッド比をいじることにも同様の/関連する効果があります。基本的な考え方は、より深いニューロンが変更して「見る」ことができる画像の相対的な領域 (いわゆるネットの受容野) が増加し、私たちがますます大きくなるということです。目が飛び出しているような特徴 (左から右へ: 1.1、1.5、1.8):
注: これらの画像の作成に使用された正確なパラメータがファイル名にエンコードされていることがわかります。
Jupyter Notebook をぜひチェックしてみてください!, これについては徹底的に説明しました。
このコードを使用して作成できる例をさらにいくつか示します。
ここでの考え方は、ネットワークが夢見るものは何でも、それを入力にフィードバックし、幾何学的変換を適用するだけであるということです。
中央ズームのみを適用すると、次のようになります。
中央ズームを適用し、同時にフレームごとに 3 度の回転を適用すると、次のようになります。
最後に、単純な変換 (フレームあたり左上から右下の方向に 5 ピクセル) を実行すると、次のようになります。
これらがあなたの脳を壊さないことを願っています - 2000 年代初頭の Web 1.0 のような感じです。我慢してください。
出力を入力にフィードバックする代わりに、フレームごとにアルゴリズムを適用し、線形ブレンディングを適用するだけです。
線形ブレンディングは、ちらつきを減らすために現在のフレームと最後のフレームを組み合わせるだけです (ここでは 0.85 を使用しました)
注: すべてのディープドリーム画像/GIF は私が作成したもので、オリジナルの画像アーティストのクレジットは以下に記載されています。
git clone https://github.com/gordicaleksa/pytorch-deepdream
cd path_to_repo
に移動します。conda env create
実行します (これにより、新しい conda 環境が作成されます)。activate pytorch-deepdream
を実行します (コンソールからスクリプトを実行するか、IDE でインタープリタをセットアップする場合)それでおしまい!依存関係を処理するenvironment.ymlファイルを実行すると、すぐに機能するはずです。
注:私が提供するビデオ機能を使用したい場合は、システム パスにffmpeg が必要です。
PyTorch pip パッケージには、一部のバージョンの CUDA/cuDNN がバンドルされていますが、主に GPU ドライバーが原因で、事前にシステム全体の CUDA をインストールすることを強くお勧めします。システムに conda をインストールする方法として Miniconda インストーラーを使用することもお勧めします。このセットアップのポイント 1 と 2 に従って、システムに最新バージョンの Miniconda および CUDA/cuDNN を使用してください。
Anaconda コンソールからjupyter notebook
実行するだけで、デフォルトのブラウザでセッションが開きます。
The Annotated DeepDream.ipynb
を開けば、すぐにプレイできます。
注: DLL load failed while importing win32api: The specified module could not be found
pip uninstall pywin32
実行してから、 pip install pywin32
またはconda install pywin32
実行するだけで問題は解決します。
セットアップ セクションで作成した Python 環境をリンクするだけです。
Anaconda を使用している場合 (そうすることを願っています)、env に移動/アクティブ化すると、以下にリンクしたコマンドを使用できます。
ヒント: 画像/ビデオをdata/input/
ディレクトリ内に配置すると、絶対/相対パスを使用する代わりに、ファイル (画像/ビデオ) を名前で参照するだけで済みます。
静的な Deep Dream イメージを作成するには、次のコマンドを実行します。
python deepdream.py --input <img_name> --img_width 600
これではデフォルト設定が使用されますが、すぐに意味のある結果が次の場所に保存されます。
data/out-images/VGG16_EXPERIMENTAL_IMAGENET/
注: 出力ディレクトリは、使用するモデルと事前トレーニングされた重みに応じて変わります。
すぐに使えるウロボロスの30 フレーム ビデオを入手するには、次の手順を実行します。
python deepdream.py --input <img_name> --create_ouroboros --ouroboros_length 30
中間フレームをdata/out-videos/VGG16_EXPERIMENTAL_IMAGENET/
にダンプし、最終ビデオをdata/out-videos
に保存します。
Deep Dream ビデオを作成するには、次のコマンドを実行します。
python deepdream.py --input <mp4 video name>
中間フレームをdata/out-videos/tmp_out
にダンプし、最終ビデオをdata/out-videos
に保存します。
では、このプロジェクトを楽しんでください!追加の美しい結果をいくつか示します。
2 GB 以上の GPU があれば十分です。
DeepDream 画像、ウロボロス、DeepDream ビデオを作成できるようになります。
GPU がない場合、コードは CPU 上で自動的に実行されますが、多少遅くなります (特にビデオの場合)。
DeepDream を理解するのが難しい場合は、このビデオでアルゴリズムの概要を説明しました。
また、私が作成した Jupyter Notebook は出発点として最適です。
これらのリポジトリが (この開発中に) 役立つことがわかりました。
使用していた画像はここで見つけました。
他の画像は、NST と DeepDream の世界ではすでに古典となっています。
Places 365 の事前トレーニング済みモデルは、この素晴らしいリポジトリから取得されました。
このコードが研究に役立つと思われる場合は、次のコードを引用してください。
@misc{Gordić2020DeepDream,
author = {Gordić, Aleksa},
title = {pytorch-deepdream},
year = {2020},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {url{https://github.com/gordicaleksa/pytorch-deepdream}},
}
生活の中に AI 関連のコンテンツをもっと取り入れたい場合は、次のことを検討してください。