Tourismプロジェクトのブログ

活動の様子やメンバーの興味があることを書いていきます!

DeepLearningの力でアニメの世界に行きたい!

皆さん、こんにちは!
すずきです🐢

今日はDeepLearning🧠を使って
アニメの世界⭐️に行ってみようと思います👊

AnimeGANv2とは?

まずは、今回使う技術🤖のお話です!

皆さんは、DeepLearning🧠をご存知ですか?
そうです!AI(広義)技術です!

その中でも、今回はAnimeGANv2を使って
自分の写真🤳風景の写真🌸をまるでアニメの世界⭐️で撮った写真のかのように加工できます!

ちなみに以下の画像はGithub🐱🐙にあった出力の例です!

AnimeGANv2の出力
AnimeGANv2 Results

github.com

このような研究分野を深層生成モデルといい画像加工分野📸をはじめとした様々の分野で使われています!

Colabで試そう!

ここからColaboratoryという無料でPython🐍簡単に実行できる環境に行ってみましょう!(PC推奨)

colab.research.google.com

  1. ノートブックを新規作成
    左上の「ファイル」📁から「ノートブックを新規作成」📔選択します。

    ノートブックを新規作成する

  2. この画面が表示されれば環境構築終わりです。

    この画面が出ていれば環境構築終わりです。

いざコーディング💻

1. まずは変換したい画像をColaboratoryアップロード⬆️してみましょう。

左のフォルダのマーク📁を選択し、その中の左上にあるアップロードボタンから写真をアップロード⬆️しましょう。

f:id:kit_tourism:20211116172401p:plain
写真をアップロード
f:id:kit_tourism:20211116172951p:plain
アップロード済みの状態

2. まずは三角▷の横にあるテキストボックスに以下のコードを書きます。

from PIL import Image
import torch

実際書くとこんな感じになります。

f:id:kit_tourism:20211116175739p:plain
使うライブラリのインポート

ここでは、Pillow(PIL)という写真を扱うためのライブラリと
PyTorch(torch)というDeepLearning🧠ライブラリをインポートします。

3. 左の「+コード」からコードブロックを追加して以下を書きます。

def crop_center(pil_img, crop_width, crop_height):
    img_width, img_height = pil_img.size
    return pil_img.crop(((img_width - crop_width) // 2,
                         (img_height - crop_height) // 2,
                         (img_width + crop_width) // 2,
                         (img_height + crop_height) // 2))

ここでは、画像を切り抜く関数を定義しています。

4. 先ほどアップロードした画像を表示しましょう

img = Image.open('/content/画像の名前.jpeg').convert('RGB')
min_wh = min(img.size[0], img.size[1])
img = crop_center(img, min_wh, min_wh).resize((512, 512))
img

注意: img = crop_center(img, min_wh, min_wh).resize((512, 512))の部分で画像を正四角形にして512x512に変形しています。 注意: 「画像の名前」は自分のアップロードした画像の名前に変更してください

5. DeepLearningモデル🧠🔥をロードします。

model = torch.hub.load('bryandlee/animegan2-pytorch:main', 'generator', pretrained='face_paint_512_v1')
face2paint = torch.hub.load(
    'bryandlee/animegan2-pytorch:main', 'face2paint', 
    size=512, device="cpu"
)

!!!: face_paint_512_v1の部分はceleba_distill, face_paint_512_v2, paprikaに変更できます。お好みのモデルをお使いください

6. アニメ化⭐️します!

out = face2paint(model, img)
out

では、実際に変換してみます。

...ちょっと時間かかります。

f:id:kit_tourism:20211116220548p:plain
こんな感じになりました

アニメ化完成です!

最後に

ここまでご覧いただきありがとうございます🙇‍♂️
ぜひAnimeGANv2遊んでみてください!!

ソースコードこちら