# [Faceswap](https://github.com/deepfakes/faceswap)構成調査 ## 1. faceswap/faceswap.py faceswap実行時にまず呼ばれるスクリプト。configファイルがない場合作成し、引数によって呼ぶクラスを振り分ける。 - extractを含む場合、ExtractArgsを呼び出し - trainを含む場合、TrainArgsを呼び出し - convertCを含む場合、onvertArgsを呼び出し - guiを含む場合、GuiArgsを呼び出し - 無効なパラメーターが指定された場合、終了。 対応するクラスを呼び出し引数の解析を行った後、`ScriptExecutor.execute_script` を実行。 https://github.com/deepfakes/faceswap/blob/c049fed42effac53dde6699866fa074399900f09/lib/cli/args.py#L103 ↓ https://github.com/deepfakes/faceswap/blob/c049fed42effac53dde6699866fa074399900f09/lib/cli/launcher.py#L161 ## 2. faceswap/lib/cli/args.py 与えられた引数の解析に使用するクラスが格納されている。 ## 3. faceswap/lib/cli/launcher.py [ScriptExecutor](https://github.com/deepfakes/faceswap/blob/c049fed42effac53dde6699866fa074399900f09/lib/cli/launcher.py#L18)クラスが格納されている。 その名の通り、スクリプトの実行に使用している。 [ScriptExecutor._import_script](https://github.com/deepfakes/faceswap/blob/c049fed42effac53dde6699866fa074399900f09/lib/cli/launcher.py#L33) 引数で指定した内容に関連するスクリプトモジュール(`scripts`以下もしくは`tools.py`)をロードする ↓ ロードしたスクリプトを実行 https://github.com/deepfakes/faceswap/blob/c049fed42effac53dde6699866fa074399900f09/lib/cli/launcher.py#L182 ## 4. faceswap/scripts/以下 もしくは faceswap/tools.py ロード対象のスクリプトが格納されている。 https://github.com/deepfakes/faceswap/blob/c049fed42effac53dde6699866fa074399900f09/scripts/convert.py#L147 など ## 5. faceswap/lib/以下 ロードしたスクリプト内でlib内のモジュールを使用している。 ### faceswap/lib/gui/ GUI関連の機能に使用 ### faceswap/lib/model/ モデルの初期化・学習に使用 ### faceswap/lib/aligner.py 画像の配置調整に使用 ### faceswap/lib/alignments.py シリアル化されたアライメントファイル(.fsa)内のデータを読み書きするためのクラス。 このファイルでは、各フレームに表示される顔のリスト、ビデオメタ情報を保持する。 ### faceswap/lib/config.py 設定ファイル生成・読み込みのためのクラス・関数 ### faceswap/lib/gpu_stats.py 使用可能なGPU(NvidiaとAMDGPU)に関する情報を収集して返すためのクラス・関数 ### faceswap/lib/face_filter.py 顔要素を抽出するためのフィルタークラス ### faceswap/lib/image.py 画像や動画を操作するためのユーティリティクラス・関数 ### faceswap/lib/keypress.py 標準のキーイベント取得関数であるKBHITを実装するクラス ### faceswap/lib/logger.py ログ出力のためのクラス・関数群 ### faceswap/lib/multithreading.py 並列化処理のためのライブラリ ### faceswap/lib/plaidml_tools.py PlaidML関連のクラス・関数。AMDデバイスにおけるPlaidMLを用いた統計処理及びセットアップに使用。 ### faceswap/lib/plaidml_utils.py PlaidML関連のユーティリティ関数 ### faceswap/lib/queue_manager.py プロセス間で利用できるようにキューを管理するためのクラス ### faceswap/lib/serializer.py Pythonオブジェクトのシリアライズに使用するクラス・関数 ### faceswap/lib/training_data.py Faceswapモデルに使用する学習データのオーギュメンテーション(拡張)に使用するクラス ### faceswap/lib/umeyama.py [scikit-image / skimage / transform /_geometric.py](https://github.com/scikit-image/scikit-image/blob/5277aeeb8b4a0f683ad5b2e92a52caf3642f6fb2/skimage/transform/_geometric.py#L72)の`_umeyama`関数 ### faceswap/lib/utils.py すべてのスクリプトで利用しているユーティリティクラス・関数 ### faceswap/lib/vgg_face.py [OpenCV-DNN](https://docs.opencv.org/master/d2/d58/tutorial_table_of_content_dnn.html)を使用した[VGG_Face](https://github.com/eglxiang/vgg_face) クラス
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.