例 #1 — 古いステーション: 24 ビット HD で比較を表示、元の写真 CC-BY-SA @siv-athens。
テレビで見た通り! CSI 研究所のテクノロジーを使用して写真の解像度を上げることができたらどうでしょうか?ディープ ラーニングと#NeuralEnhance
のおかげで、画像を 2 倍、さらには 4 倍にズームインするようにニューラル ネットワークをトレーニングできるようになりました。ニューロンの数を増やすか、低解像度画像に似たデータセットを使用してトレーニングすると、さらに良い結果が得られます。
獲物は?ニューラル ネットワークは、サンプル画像からのトレーニングに基づいて詳細を幻覚します。 HD の場合とまったく同じように写真を再構築するわけではありません。それはハリウッドでのみ可能です。しかし、ディープラーニングを「クリエイティブ AI」として使用することは機能し、同様にクールです。始める方法は次のとおりです...
メイン スクリプトは、 enhance.py
と呼ばれ、以下のようにセットアップすると、Python 3.4 以降で実行できます。 --device
引数を使用すると、使用する GPU または CPU を指定できます。上記のサンプルのパフォーマンス結果は次のとおりです。
デフォルトでは--device=cpu
使用します。すでに CUDA を使用して NVIDIA カードをセットアップしている場合は、 --device=gpu0
試してください。 CPU では、環境変数をOMP_NUM_THREADS=4
に設定することもできます。これは、スクリプトを複数回並行して実行する場合に最も便利です。
GitHub リリースで提供される事前トレーニングされたモデルで使用できるコマンド ラインの例のリスト:
# Run the super-resolution script to repair JPEG artefacts, zoom factor 1:1.
python3 enhance.py --type=photo --model=repair --zoom=1 broken.jpg
# Process multiple good quality images with a single run, zoom factor 2:1.
python3 enhance.py --type=photo --zoom=2 file1.jpg file2.jpg
# Display output images that were given `_ne?x.png` suffix.
open * _ne ? x.png
以下は、現在サポートされているモデル、画像タイプ、ズーム レベルのリストを 1 つの表にまとめたものです。
特徴 | --model=default | --model=repair | --model=denoise | --model=deblur |
---|---|---|---|---|
--type=photo | 2倍 | 1x | … | … |
事前トレーニングされたモデルは GitHub リリースで提供されます。独自のトレーニングは繊細なプロセスであり、画像データセットに基づいてパラメータを選択する必要がある場合があります。
# Remove the model file as don't want to reload the data to fine-tune it.
rm -f ne ? x * .pkl.bz2
# Pre-train the model using perceptual loss from paper [1] below.
python3.4 enhance.py --train " data/*.jpg " --model custom --scales=2 --epochs=50
--perceptual-layer=conv2_2 --smoothness-weight=1e7 --adversary-weight=0.0
--generator-blocks=4 --generator-filters=64
# Train the model using an adversarial setup based on [4] below.
python3.4 enhance.py --train " data/*.jpg " --model custom --scales=2 --epochs=250
--perceptual-layer=conv5_2 --smoothness-weight=2e4 --adversary-weight=1e3
--generator-start=5 --discriminator-start=0 --adversarial-start=5
--discriminator-size=64
# The newly trained model is output into this file...
ls ne ? x-custom- * .pkl.bz2
例 #2 — 銀行ロビー: 24 ビット HD で比較を表示、元の写真 CC-BY-SA @benarent。
稼働させる最も簡単な方法は、Docker をインストールすることです。その後、 docker
コマンド ライン ツールを使用して、事前に構築されたイメージをダウンロードして実行できるようになります。 alexjc/neural-enhance
イメージの詳細については、Docker Hub ページをご覧ください。
docker
使用してスクリプトを呼び出す最も簡単な方法は次のとおりです。 -v
引数を使用してフォルダーをマウントすることに慣れていると仮定すると、これを直接使用して拡張するファイルを指定できます。
# Download the Docker image and show the help text to make sure it works.
docker run --rm -v ` pwd ` :/ne/input -it alexjc/neural-enhance --help
単一イメージ— 実際には、指定したイメージを含むフォルダーを自動的に公開するために、 enhance
というエイリアスを設定して、スクリプトがイメージを読み取り、アクセスできる場所に結果を保存できるようにすることをお勧めします。 OSX または Linux のターミナル コンソールでこれを行う方法は次のとおりです。
# Setup the alias. Put this in your .bashrc or .zshrc file so it's available at startup.
alias enhance= ' function ne() { docker run --rm -v "$(pwd)/`dirname ${@:$#}`":/ne/input -it alexjc/neural-enhance ${@:1:$#-1} "input/`basename ${@:$#}`"; }; ne '
# Now run any of the examples above using this alias, without the `.py` extension.
enhance --zoom=1 --model=repair images/broken.jpg
複数のイメージ— フォルダーまたはワイルドカード指定から複数のイメージを連続して (高速に) 拡張するには、エイリアス コマンドの引数を必ず引用符で囲みます。
# Process multiple images, make sure to quote the argument!
enhance --zoom=2 " images/*.jpg "
NVIDIA GPU で実行したい場合は、代わりに、CUDA と CUDNN がプリインストールされているイメージalexjc/neural-enhance:gpu
使用するようにエイリアスを変更できます。次に、nvidia-docker 内で実行すると、物理ハードウェアが使用されるはずです。
このプロジェクトには Python 3.4 以降が必要で、 numpy
とscipy
(数値計算ライブラリ)、およびシステム全体にインストールされたpython3-dev
も必要です。さらに詳細な手順が必要な場合は、次の手順に従ってください。
リポジトリを取得した後、ターミナルから次のコマンドを実行してローカル環境をセットアップできます。
# Create a local environment for Python 3.x to install dependencies here.
python3 -m venv pyvenv --system-site-packages
# If you're using bash, make this the active version of Python.
source pyvenv/bin/activate
# Setup the required dependencies simply using the PIP module.
python3 -m pip install --ignore-installed -r requirements.txt
この後、仮想環境にpillow
、 theano
、 lasagne
インストールされているはずです。また、この事前トレーニング済みニューラル ネットワーク (VGG19、80Mb) をダウンロードし、実行するスクリプトと同じフォルダーに配置する必要があります。すべてをアンインストールするには、 #/pyvenv/
フォルダーを削除するだけです。
例 #3 — 有名人の顔のみの HD サンプルでトレーニングされた、顔に特化した超解像度。全体的に「写真」からドメインを絞り込むと格段にクオリティが高くなります。
このコードは、次の論文の手法を組み合わせて使用しており、また、まだ文書化されていないいくつかの小さな改良点も使用しています (更新については、このリポジトリを確認してください)。
さまざまな形でのご支援とご支援に心より感謝いたします。
Cython と呼ばれる Python 拡張コンパイラがありますが、それが見つからないか、不適切にインストールされています。 PIP ではなく、システム パッケージ マネージャーから直接取得してみてください。
修正: sudo apt-get install cython3
これは、GPU なしで実行していて、CPU ライブラリ ( libblas
など) が見つからなかった場合に発生します。ニューラル ネットワーク式は Theano で評価できず、例外が発生します。
修正: sudo apt-get install libblas-dev libopenblas-dev
Lasagne と Theano は、PIP バージョンからではなく、 requirements.txt
で指定されたバージョンから直接インストールする必要があります。これらの代替案は古いものであり、必要な機能がありません。
修正: python3 -m pip install -r requirements.txt
ターミナルの設定が間違っており、Python のロケールの扱い方と互換性がないようです。 .bashrc
またはその他の起動スクリプトでこれを変更する必要がある場合があります。あるいは、このコマンドにより、このシェル インスタンスに対して一度修正されます。
修正: export LC_ALL=en_US.UTF-8
例 #4 — ストリート ビュー: 24 ビット HD での表示比較、元の写真 CC-BY-SA @cyalex。