「PSGAN」をGoogle Colaboratoryの無料GPUでトライした話。
PSGANとは、第三者の化粧を自分に転写できるバーチャルメイクのこと。
PSGANの説明
「PSGAN」は、北京航空航天大学、中国科学院、シンガポール国立大学、シンガポールYITU Technologyによる研究チームが開発したものです。ディープラーニングを用いて画像に写る人の顔の化粧を別の画像内の顔へ転写する。すごい、GAN(敵対的生成ネットワーク)、AI技術です。
PSGANがすごいのは、なんと!! 表情やポーズがそれぞれ違っても化粧だけを転写できのです。さらに、すごいのが、静止画像だけでなく、動画にも適応した実験も行い、良好な結果を達成したらしい(動画での転写例)。
ではここから、Google Colaboratoryの無料GPUで、このPSGANを試す方法を紹介します。Google Colaboratoryを利用するには、前提として、Googleアカウントが必要ですので、お持ちでない方は、事前に作成してください。
トライのアジェンダ
1. GitHubからPSGANのソースコードをダウンロードする。
2. Google Colaboratoryにアクセスし、GPUモードにする。
3. ダウンロードしたPSGANのソースコード(.zipファイル)をアップロード。
4. 必要なライブラリーをインストールする。
5.転写したい顔の写真をアップロードする。
6. 転写トライ用のPythonコードを実行する。
7. 転写した写真をローカルPCにダウンロード、以上完了。
1. GitHubからPSGANのソースコードをダウンロード
まず、こちらのページにアクセスする。
赤丸のDownload ZIPをクリックしてダウンロードしてください。あとで、Google Colaboratoryにアップロードします。
2. Google Colaboratoryにアクセス、GPUモードにする。
2. Googleで、 Colaboratoryと検索します。 そして、Colaboratoryにアクセスします。そうすると、Colaboratoryへようこそというページがでます。そこで、左上のファイルをクリックして、赤丸のノートブックを新規作成をクリックします。
次に、GPUモードに変更します。この作業を忘れると、転写のdemoコードが動かずに、全て最初からやり直しに、なるので、必ずGPUモードに変更してください。GPUモードに変更方法は、まず、編集のタブをおして、次にノートブックの設定をクリックしてください。
次に、下記画像のようにNoneからGPUをクリックして、保存をおします。
次に、以下の画面になりますが、そのまま、保存ボタンをおしてください。
このノートブックを保存する際にコードセルの出力を除外する。が気になる方は、こちらをご覧ください。Google Colaboratoryは一回12時間使用可能ですが、操作しないと90分で落ちてしまいますが、それを防ぐ方法に関係しています。今回のトライでは、必要ないので、読み飛ばしてください。
念のために、GPUモードになったかを確認しましょう。以下のコードを入力して、ShiftとEnterを同時に押してください。GoogleColaboratoryでは、コードの冒頭に!が必要ですので、お忘れずに。以下の画像のようにGPUと記載があれば成功です。
!nvidia-smi
GoogleColaboratoryのGPUはランダムで、Tesla K80か、T4が割り当てられるようです。詳しくはこちらをご覧ください。
3. ダウンロードしたPSGANのソースコード(.zipファイル)をアップロード。
以下の画面の赤色の四角をクリックしてください。
ここから続きは、有料となります。トライしたい方は、ぜひ応援をお願いいたします。
価格は、私とカフェでコーヒーを飲みながら、トライ方法をレクチャーしたという設定でコーヒー一杯100円にしました。ご検討をよろしくお願いします。
以下の画面の赤色の四角をクリックしてください。そして、ローカルにダウンロードした PSGAN-master.zip をクリックしてアップロードしてください。アップロードに約15分くらい、かかります。
GoogleColaboratoryは、PCがスリープモード等になると、最初からやり直しになるので、パソコンは自動スリープしない設定にすることをオススメします。私も何度か、やってしまったことがあり、あーっというため息が・・。
なかなかアップロードされないなと思ったら、以下画像の赤文字のようにオレンジ色のゲージが一周するまでお待ちください。
以下画像のように、無事に、アップロードされると、PSGAN-master.zipというファイルが表示されます。いよいよ、次に、これを解凍して、必要なAIのライブラリーをインストールします。
4. 必要なライブラリーをインストールする。
以下のコードを入れて、lsで現在地を確認した後に、PSGAN-master.zipを解凍します。
!ls
!unzip PSGAN-master.zip
解凍したPSGAN-masterファイルにcdで移動します。なぜかは知りませんが、移動する時は、!をつけると移動できませんので、ご注意してください。
cd PSGAN-master
次に、demo.pyを実行します。そうすると、ModuleNotFoundError: No module named 'torchgpipe'とエラーが出ます。これは、torchgpipeというライブラリーが足りませんというメッセージエラーです。なので、'torchgpipe'等をインストールする必要があります。
!python demo.py
!pip install torchgpipe
また、demo.pyを実行します。そうすると、今度は、ModuleNotFoundError: No module named 'fvcore'とエラーが出ます。なので、先ほど同じように、fvcoreをインストールします。
!python demo.py
!pip install fvcore
また、demo.pyを実行します。そうすると、今度は、ModuleNotFoundError: No module named 'fire'とエラーが出ます。なので、先ほど同じように、fireをインストールします。
!python demo.py
!pip install fire
また、demo.pyを実行します。そうすると、エラーが出なくなりました。これで必要なライブラリーのインストールは終了です。いよいよ、次は、変換したい元写真をアップロードしましょう。
5.転写したい顔の写真をアップロードする。
左のフォルダの、PSGAN-masterフォルダをクリックして、次に、assets、image、non-makeupと順番にフォルダをクリックします。そして、xfsy_0106.pngをクリックします。そうすると、以下画面のように、右側にメイクアップ前の画像が出てきます。この画像を、任意の好きな画像に変更できます。まずは、この画像を削除しましょう。
以下画像の縦・・・をクリックして、ファイルを削除をクリックしてください、そうするとファイルが削除されます。
また、メイクアップを転写する元の参照画像は、makeupのフォルダに入っています。今回は、やりませんが、参照画像を変更したい時は、ここの画像を削除して、画像ファイルを変更してください。
続いて、転写される好きな画像をアップロードします。non-makeupのフォルダの縦・・・をクリックして、アップロードをクリックしてください、そして、任意の画像をxfsy_0106.pngに名称を変更してから、ここでアップロードしてください。拡張子も必ずpngにしてください。jpgだとエラーになります。
今回は、ドラマ半沢直樹2で大活躍中の香川さんを元画像にしました。
6. 転写トライ用のPythonコードを実行する。
いよいよ佳境へ突入です、準備が整いしたので、もう一度、!python demo.pyを実行します。
!python demo.py
demo.pyで転写した画像は、transferred_image.pngという名称でPSGAN-masterフォルダ以下に保存されますので、クリックしてみましょう。そうすると、メイクアップを転写されたドラマ半沢直樹2で大活躍中の香川照之さんが完成しました。
7. 転写した写真をローカルPCにダウンロード
最後に、PSGANで転写した画像をローカルPCにダウンロードしましょう。
transferred_image.pngの右側の縦・・・をクリックして、ダウンロードを押してください。無事にこれで完了です。
noteをお買い上げいただきまして、誠にありがとうございました。