LoginSignup
34
21

More than 3 years have passed since last update.

NVIDIAの訓練済みモデルで遊ぶ

Last updated at Posted at 2020-12-17

NVIDIA は訓練済みモデルを公開している

NVIDIA は最新のモデルの実装や、訓練済みモデルを公開しています。
カタログページ では、DeepLearning に限らず docker のコンテナなど分野問わず研究成果を公開していて見ていて楽しいです。
また、github の NVlabs では、実装が置いてあったりします。
今回は、この中から面白そうなもので、訓練済みモデルをダウンロードできるものを使って遊んでみたいと思います。

使うモデル

NVlabs の中の FUNIT というものを使って遊びたいと思います。
pix2pix のような Image-to-Image Translation のモデルのようです。
犬を別の動物に変えるような画像を生成したりしています。
訓練では動物の顔を別の動物の顔に変換するような訓練をしていますが、自分の顔の画像を入力して自分の顔を別の動物に変えてみようと思います。

準備

まずはレポジトリをクローンします。

> git clone https://github.com/NVlabs/FUNIT.git
Cloning into 'FUNIT'...
remote: Enumerating objects: 29, done.
remote: Counting objects: 100% (29/29), done.
remote: Compressing objects: 100% (27/27), done.
Remote: Total 208 (delta 0), reused 10 (delta 0), pack-reused 179R
Receiving objects: 100% (208/208), 97.38 MiB | 9.12 MiB/s, done.
Resolving deltas: 100% (85/85), done.

各種ライブラリのインストール

README.md に必要なライブラリが書いてあるのでインストールしていきます。

3abbea8b-b877-40a5-8965-25bc1429c5a3.png

b60cfd50-31ca-42f9-a142-a2b224f1cf52.png

  • アンケートを回答するとバージョン選択画面が出るので windows のものをダウンロードします。

3c320c02-3510-4473-a9fb-e58ef5c98cac.png

  • 解答すると以下のフォルダが作成される

b84460393416e6a554591044d101da35.png

  • CUDA ダウンロード時に以下のフォルダが作成されているので、解答したフォルダの bin, include, lib をすべてコピーします。

dd0ca1e33a506f49855583543d6275ed.png

  • CUDA_PATH が環境変数に登録されているのを確認します。
PS C:\Users\81801> $env:CUDA_PATH
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2
  • anaconda3 のインストール

    • scoop の extras を使用してのダウンロードができますが、レポジトリ情報がメンテされていないのでインストーラーでのダウンロードを行います
    • https://www.anaconda.com/products/individual
    • ライブラリのダウンロード
    • cudatoolkit に指定するバージョンを事前に確認しておきます
> nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2020 NVIDIA Corporation
Built on Mon_Nov_30_19:15:10_Pacific_Standard_Time_2020
Cuda compilation tools, release 11.2, V11.2.67
Build cuda_11.2.r11.2/compiler.29373293_0
  • cuda toolkit のバージョンが 11.2 であったのでライブラリダウンロード時に cudatoolkit=11.2 の指定をするべきだと思うのですが、11.2 がなかったので 11.0 をダウンロードします。
conda install -y pytorch torchvision cudatoolkit=11.1 -c pytorch
conda install -y -c anaconda pip
pip install pyyaml tensorboardX
conda install -y -c menpo opencv3

以上でインストールが終了しました。

試してみる

pretrained モデルの項目の link からチェックポイントをダウンロードし、動かしてみます。

> python test_k_shot.py --config configs/funit_animals.yaml --ckpt pretrained/animal149_gen.pt --input images/input_content.jpg --class_image_folder images/n02138411 --output images/output.jpg

README 通りの画像ができました。

4c505d1eade124624fba5418b8099097.png

自分の顔を変えてみる

次は input の画像を自分の顔にしていろんな動物を試そうと思います。
訓練元データは、似たようなモデルをまとめた 別のレポジトリ のスクリプトでダウンロードできるようなので、そちらで取得します。

ダウンロードしてきたデータは、各動物の画像が4GBほどありました。

4408d2fcbb97797884b3096bf2767689.png
4408d2fcbb97797884b3096bf27676895.png

各動物の画像を5枚選んで先程のコマンドに渡します。
input 画像の方は自分の顔を指定します。
input 画像は 128x128の画像だったので切り抜きました。

e772a03a46889a2482c6247a397295f4.png

自分の顔を変換した画像の横に変換対象の動物を並べています。

わりとよさげ

4faca5538e432e330e857a9f53f2a64e.png
a3ebe5a97073c8b6e8b5fc5ca83b1ca8.png
4309d332f1acf0b6d4cc774db5a3cb65.png
4131db7bd6158eb32219dce00f186721.png
405ec89dbaa61e7a07efcc48ecaf87ad.png
cba420f288dfe6da7a2b62d36f7f72b8.png

メガネかけてる

6a5a8c5594f197506cf625d5eeb09fff.png

毛もきれいに消えた

d05cd2d5163b659cc13c798500e0d814.png

所感

お面を被ったような画像が結構出来上がりましたが、人間の顔なのに結構うまく変換できました。
髪の毛が結構残ったので次回はハゲにして臨もうと思います。
NVIDIAカタログには最新のGPUが大量に必要なモデルの訓練済みモデルも公開していたりするので、遊んでみると楽しいです。

34
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
34
21