Github: https://github.com/anishathalye/neural-style
神経スタイル
TensorFlowにおける神経スタイルの実装
この実装は、TensorFlowの本当に素晴らしいAPIと自動差別化のおかげで、他の多くのものよりずっと簡単です。
TensorFlowはL-BFGS (元の著者が使用したもの)をサポートしていないため、 Adamを使用します。 これにより、より良い結果を得るために、より多くのハイパーパラメータチューニングが必要になる場合があります。
関連プロジェクト
TensorFlowの高速(フィードフォワード)ニューラルスタイルの実装については、 こちらをご覧ください。
ソフトウェアをインストールせずに( TensorFireを使用して)Webブラウザでニューラルスタイルのクライアント側を試してみてください 。
ランニング
python neural_style.py --content <content file> --styles <style file> --output <output file>
python neural_style.py --help
を実行すると、すべてのオプションのリストが表示されます。
チェックポイントイメージを保存するには--checkpoint-output
と--checkpoint-iterations
を使用します。
反復回数を変更するには、–iterationsを使用します(デフォルトは1000)。 512×512ピクセルのコンテンツファイルの場合、GeForce GTX Titan X GPUでは1000回の反復処理が2.5分、Intel Core i7-5930K CPUでは90分の反復処理が必要です。
例1
500から2000回の反復で実行すると素晴らしい結果が得られるようです。 特定の画像や出力サイズでは、いくつかのハイパーパラメータチューニング(特に--content-weight
、 --style-weight
、および--learning-rate
)が必要な場合があります。
次の例は、1000の反復で実行され、結果を生成します(デフォルトのパラメータを使用)。
これらは使用された入力イメージ(私はハッカトンと星空の夜に眠っています):
例2
次の例では、スタイルブレンディングを示し、スタイルのブレンドウェイトパラメータ0.8と0.2を使用して1000回の繰り返しを実行して結果を生成しています。
コンテンツ入力イメージはMITのStata Centerの写真でした:
スタイル入力画像は、Picassoの「Dora Maar」およびStarry Nightであり、Picasso画像は0.8のスタイル混合重みを有し、Starry Nightは0.2のスタイル混合重量を有する。
調整
--style-layer-weight-exp
コマンドライン引数は、スタイル転送がどのように抽象的であるかを調整するために使用できます。 値が小さいほど、より細かいフィーチャのスタイル転送がより粗いフィーチャのスタイル転送よりも優先され、その逆も同様です。 デフォルト値は1.0です – すべてのレイヤーが等しく扱われます。 あなたが達成できるもののいくつかの極端な例:
( 左 :0.2 – より細かいフィーチャスタイルの転送、 右 :2.0 – より粗いフィーチャスタイルのtrasnfer)
--content-weight-blend
は、コンテンツ転送レイヤの係数を指定します。 デフォルト値 – 1.0では、スタイル転送は細かい穀粒の内容の詳細を保存しようとします。 値は範囲[0.0; 1.0]。
( 左 :1.0 – デフォルト値、 右 :0.1 – より抽象的な画像)
--pooling
では、使用するプールレイヤーを選択できます( max
またはavg
指定します)。 オリジナルのVGGトポロジでは最大プールが使用されますが、 スタイル転送ペーパーでは平均プールに置き換えられます。 出力は知覚的に異なっていますが、一般的にプールの細部は細かいディテールスタイルになりがちですが、低周波ディテールレベルでは問題が発生する可能性があります。
( 左 :最大プール、 右 :平均プール)
--preserve-colors
ブール型コマンドライン引数は、元のイメージのカラーとスタイル化されたイメージ(YCbCrカラースペース)のルマを組み合わせた後処理ステップを追加し、カラー保存スタイルtrasnferを生成します。
( 左 :オリジナルの定型画像、 右 :カラー保存スタイルの転送)
要件
データファイル
- 事前にトレーニングされたVGGネットワーク (MD5
8ee3263992981a1d26e73b3ca028a123
) – このリポジトリの最上位に配置するか、– networkオプションを使用してその場所を指定します。
依存関係
pip install -r requirements.txt
を使用してPythonの依存関係をインストールすることができます。 パッケージを手動でインストールする場合は、次のリストを参考にしてください。
引用
あなたの仕事でこの実装を使用する場合は、以下を挙げてください:
@misc{athalye2015neuralstyle,
author = {Anish Athalye},
title = {Neural Style},
year = {2015},
howpublished = {\url{https://github.com/anishathalye/neural-style}},
note = {commit xxxxxxx}
}
ライセンス
Copyright(c)2015-2018 Anish Athalye。 GPLv3でリリースされました。 詳細については、 LICENSE.txtを参照してください。