本サイトは広告・プロモーションが含まれています
Python

【HuggingFace】ローカルPCでお絵描きAIを実装【GPU無し】

今回は昨今話題になっているお絵描きAIについて
ローカルPCに実装について説明していきます。

今回はStable Diffusionと呼ばれるテキストから画像を生成するアルゴリズムについて書いていきます。
英Stability AIが、HuggingFaceで無償公開してかなり盛り上がってるようです。

このHuggingFaceってなんだ??と思ったのですが、主に自然言語処理に関連したライブラリ・アルゴリズムの開発・シェアを行なっているコミュニティらしい。

本来ならGPUを搭載したwindowsPCなどで使うのですが
そんなPCは持っていない&乗るしかないこのビッグウェーブにということで
MacBook Air(M1, 2020) メモリ8GBで実装していきます。
多分windowsでも使えると思うので、是非ご覧ください。

HuggingFaceのアクセストークンの取得

HuggingFaceで実装されているStable Diffusionを使うには以下の手順が必要です。

  1. HuggingFaceへ登録
  2. アクセストークンを取得する

とたった数手順で5分もあれば終わる内容です。

HuggingFaceへ登録

最初はまずアカウントの作成から始めます!!
このHuggingFaceのページからアクセスし、右上のSign Upから登録画面へ移動します。

移動したらメールアドレスとパスワードを設定します。
僕はこの手のメールアドレスは、あまり使わないものを使用してます。

次にプロフィールの記入。これもニックネームを記入していきます。

StableDiffusionモデルの利用規約に合意する

こちらにアクセスしてから記載内容を確認します。確認の上合意したら、チェックボックスにチェックを入れてからAcces repositoryを押します。

アクセストークンの取得

アカウントを作成したら、トークンを作成します。
まず画の右上にあるプロフィールからSettingsをクリックします。

するとプロフィールの設定の画面に移動するので
Access Tokens → New token を選択していきます。

実際の画面(私のユーザーネームまで乗っちゃってます)

そしたらNameの決定とRoleの選択をして、と書かれるので
とりあえず、Nameをtest,RoleをreadとしてGenerate a tokenをクリックするとトークンが発行されます。
(上の画像の●●●になっているのがトークンです)

Pythonによる実装

さっそく実装をします。
ここで解説するコードは基本的に公式ホームページ
まずライブラリをインストールします。

pip install diffusers==0.2.4 transformers scipy ftfy


そしたらあとは以下のコードを実行します。
コードはGitHubを参考にさせてもらいました。

# ライブラリーのインポート
from diffusers import StableDiffusionPipeline
import matplotlib.pyplot as plt
import torch
from torch import autocast

model_id = "CompVis/stable-diffusion-v1-4"


# アクセストークンの設定
access_tokens="XXXXXXXXXXXXXXXXXXXX" # @param {type:"string"}

#予測モデルの
pipe = StableDiffusionPipeline.from_pretrained(model_id, revision="fp16", use_auth_token=access_tokens)

prompt = "a cute comic girl"
image = pipe(prompt)["sample"][0]
image.save("test_cute_girl.png")

私のMacだとM1チップ搭載なので

pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4")
pipe = pipe.to("mps")

と書けば実行速度が速くなるそう。
そのあたりもこちらのページにもしっかり、書いてありました。

実行結果

上のコードを実行すると、だいたい30秒ほどで実行画像を出力します。

こんな感じの結果が出力されました。

本当にa cute comic girlなのかはわからないのですが、
とりあえずそれっぽい感じに出力してくれました。

おわりに

ここまで読んでいただき、ありがとうございました。

私が学生時代のころはGANやDCGANみたいなもので、数字が書かれた画像を作成していたのですが
時代は進化しましたね。。。

どんどん勉強してこのあたりも勉強していきたいと思います。

それでは。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA