Python 人工知能 古い写真 修復 アルゴリズム 学習
前書き
古い写真や壊れた写真を修復する方法は?この記事は主に、非常に優れた写真修復オープンソースプロジェクトを使用した後のブロガーを共有しています。古い写真を生き返らせる。
プロジェクトのGithubアドレスです。 プロジェクトのアドレス
まず、公式レンダリングから見てみましょう。
今見ても、この画像はすごいと思います。以下、プロジェクトの環境をインストールし、デプロイし、最後に使用する様子を紹介します。
プロジェクト環境設定
プロジェクト環境の構築は少し複雑なので、少しお話します。
conda仮想環境作成
プロジェクトのREADME.mdファイルにpythonバージョン3.6以降が必要です。
anacondaで仮想環境boblを作成します。
conda create -n bobl python=3.6
環境の活性化
conda activate bobl
Pycharmプロジェクトのインタープリタを設定し、pythonのbobl環境下のcondaディレクトリenvsに設定します。
Pytorchのインストール
公式プロジェクトのrequirements.txtにはpytorchが含まれていますが、念のため、Pytorchの公式サイトへ行き、インストールしてください。 PyTorch
ローカルにグラフィックカードが挿さっていないため、cpu版がインストールされています。
対応するコマンドを選択して、Pytorch ライブラリをインストールします。
Synchronized-BatchNorm-PyTorchリポジトリのインストール
公式のインストール手順では、Synchronized-BatchNorm-PyTorch プロジェクトをデプロイする必要性を説いています。
ここで一つ注意点ですが、Synchronized-BatchNorm-PyTorchプロジェクトのsync_batchnormを親ディレクトリにコピーしておく必要があります。ディレクトリの完全なインターフェイスについては、次の画像を参照してください。
グローバルカタログ同期-バッチノルム-PyTorchプロジェクトデプロイメント
また、公式の説明書では、Synchronized-BatchNorm-PyTorch プロジェクトを Global 内にデプロイすることが要求されています。
sync_batchnormを親ディレクトリにコピーするのも同じです。構造は以下の通りです。
検出前処理モデルダウンロード
主に写真の顔部分を認識するために、検出用の前処理モデルが必要です。
解凍された場所に注目すると、次のような構造になっている。
顔面強調モデルファイルのダウンロード
公式の説明です。
2つのモデルのzipをダウンロードし、以下の構造で対応するディレクトリに解凍します。
依存関係のダウンロード
なお、ここでは既にインストールされていたpytorchの依存関係のインストールを削除しました。
dlib
scikit-image
easydict
PyYAML
dominate>=2.3.1
dill
tensorboardX
scipy
opencv-python
einops
PySimpleGUI
インストールコマンドです。
pip install -r requirements.txt -i https://pypi.douban.com/simple
フルデプロイ後のプロジェクト構成
全構造は以下の通りです。
このプロジェクトでは
公式で渡された図は使わない、意味がない。自分で1面用と複数面用の2種類の図を用意しました。
では、正式に与えられたコマンドを実行してみましょう。
傷の除去と高さの削減を含む、このコマンドを直接底面で使ってみましょう。実行の様子を見てみましょう。
(bobl) D:\spyder\Bringing-Old-Photos-Back-to-Life>python run.py --input_folder E:\csdn\old_photos --output_folder result1/ --GPU -1 --with_ scratch --HR
Running Stage 1: Overall restoration
initializing the dataloader
model weights loaded
directory of testing image: E:\csdn\旧照片
processing 1.jpg
processing 2.jpg
Mapping: You are using multi-scale patch attention, conv combine + mask input
Now you are processing 1.png
C:\ProgramData\Anaconda3\envs\bobl\lib\site-packages\torch\nn\functional.py:3635: UserWarning: Default upsampling behavior when mode= bilinear is changed to align_corners=False since 0.4.
.0. Please specify align_corners=True if the old behavior is desired. See the documentation of nn.Upsample for details.
"See the documentation of nn.Upsample for details.".format(mode)
Now you are processing 2.png
Finish Stage 1 ...
Running Stage 2: Face Detection
12
Finish Stage 1
Finish Stage 2 ...
Running Stage 3: Face Enhancement
dataset [FaceTestDataset] of size 13 was created
The size of the latent vector size is [16,16]
Network [SPADEGenerator] was created. total number of parameters: 92.1 million. to see the architecture, do print(network).
Hi :)
Finish Stage 3 ...
Running Stage 4: Blending
Finish Stage 4 ...
All the processing is done. please check the results.
(bobl) D:\spyder\Bringing-Old-Photos-Back-to-Life>
出力ファイルには、最終結果だけでなく、検出された各顔の処理前と処理後の結果も含まれています。結果は以下のような構成になっています。
を検証してください。
1. 最終的な多人数撮影の結果を検証します。下の上画像が出力結果画像、下画像が元画像です。傷が消えているものもあれば、まだ残っているものもありますが、全体的に立体的でシャープなタスクになっていることが分かります。
2、一人写真最終効果検証、下の上の写真は結果写真、下の写真は元の写真です。一人の人物は非常に明白で、傷がなくなるだけでなく、人物もより鮮明で立体的になり、効果は本当に良いものです。
3. また、モデルは複数人画像のすべての顔を認識し、その結果を実行するので、それらを比較して、細部がどの程度修正されているかを確認することができます。
概要
他にも公式のコマンドが出されているので、全て検証することはしません。全体的には非常に良い仕上がりです。ただ、マルチプレイヤーのグラフに少し欠点があります。欠点はありますが、圧倒的なものではありません。
これは、Pythonの人工知能古い写真の復元アルゴリズムの学習についてのこの記事の終わりです、より関連するPythonの人工知能の内容は、スクリプトの家の前の記事を検索してくださいまたは次の関連記事を閲覧し続けるあなたは、将来的に多くのスクリプトハウスをサポートして願っています!.
関連
-
[解決済み] [Solved] sklearn error ValueError: 入力に NaN、infinity または dtype('float64') に対して大きすぎる値が含まれている。
-
[解決済み】AttributeError: 'module'オブジェクトには属性がありません。
-
[解決済み】Python enumerate() tqdm ファイル読み込み時にプログレスバーが出る?
-
[解決済み] TypeError: 'str' と 'list' オブジェクトをメールに連結することはできません。
-
[解決済み] Pythonでログファイルを尾行するには?
-
[解決済み] tensorflowの読み込みエラー - "cudart64_80.dll "が見つかりませんでした。
-
python TypeError: 'NoneType' オブジェクトは添え字を付けられません。
-
ソリューションエラーです。PEP 517 を使用する暗号用ホイールがビルドできず、直接インストールすることができない
-
python merge matrix error 入力配列はすべて同じでなければならない......そしてvstack()は1つの位置の配列を受け取る......etc......。
-
ValueError: 解凍する値が多すぎる (期待値 2)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Pip - ランチャーで致命的なエラーが発生しました。Unable to create process using '"'.
-
[解決済み】「AttributeError」のトラブルシュート方法。Pythonのマルチプロセシングで「__exit__」?
-
Pythonのリスト操作がなぜ間違っているのかを分析する
-
[解決済み] TypeError: 最初の引数はpandasオブジェクトのイテラブルでなければなりません、あなたは "DataFrame" 型のオブジェクトを渡しました。
-
[解決済み] pip/easy_install の失敗: プロセスの作成に失敗しました。
-
[解決済み] 「カスタムスロットで「TypeError: ネイティブのQtシグナルは呼び出し可能ではありません。
-
[解決済み] OperationalError, no such column. ジャンゴ
-
PEP8: Python コード改行時のビジュアルインデントのため継続行がオーバーインデントされる
-
TypeError: 'dict_keys' オブジェクトは添え字を付けることができません。
-
Understanding TypeError: unsupported operand type(s) for ^: Python の 'float' と 'int' (単純)