ディープラーニング 実践(初心者)

Colabとは

Google ColabとはGoogle Colaboratoryというサービスで、web上でPythonのプログラムを実行できるサービスです。
上級者向けの記事でも少し紹介しますが、Google ColabはLinuxと同じような 動きをするので、今回の解説に採用しました。

何を実行する?

今回はディープラーニングを用いた技術の中でもかなり簡単な「Stable Diffusion」というものを扱ってみたいと思います。
ディープラーニングの知識だけではなく、LinuxPythonの知識を駆使してやっていきます。
単にStable Diffusionを扱うだけであれば、デモサイトがあるのですが、ここでは皆さんにディープラーニングを実際に扱うために、学習データの扱いなど必要なほかの技術を体系的に感じてほしいので、Google Colabをベースとした手法を説明していこうと思います。

そもそもStable Diffusionとは?

Stable Diffusionを簡単に抽象的に表現すると、「テキストで指示をすると、画像を出力してくれる」ものになります。
つまり、私たち利用者が例えば「Mt.Fuji」と入力し、実行すると画像が出力されるというものです。
このようAIは「画像生成AI」や「描画AI」と呼ばれたりしています。
このStable Diffusionは2022年8月にパブリックリリースされ、ソースコードや学習済みモデルなどが無償で公開されています。

環境整備

実際にやっていくにあたって、必要な環境を整備しましょう。

必須動作環境(2023年8月現在)
・Windows10,11もしくはChromeOSもしくはmacOS 10.14 Mojave以降が搭載されたPCであること
・Google Chromeがインストール済みであること
・Googleアカウントを作成済みであること
Googleドライブに5GB以上の空き容量があること
・10GB程度のダウンロード・アップロードが可能な回線であること

基本的にはこの環境が必須になります。
後述しますが、学習済みモデルをインストールする関係でストレージの制約があります。
また、スマホでGoogle Colabを使用することも不可能ではないのですが、PCでやったほうが安定して動作はしますので、PCのみの環境としています。

学習済みモデルのダウンロード

前述の通り、Stable Diffusionは学習済みデータが公開されているのですが、それらの情報はHugging Face社のサイトに掲載されています。
学習済みモデルというのは、たくさんの学習データを用いて事前にトレーニングしたモデルのことを言います。このファイルを基に解析などを行い、それによって得られた結果を出力する仕組みです。
いくつかモデルに種類があるのですが、今回はsd-v1-4,ckptというモデルファイルを使用していきたいと思います。
ファイル容量は約4GBであり、高速な回線などを準備したほうがいいでしょう。私たち環境では3分ほどで終わりました。

学習済みモデルをGoogleドライブにアップロードする

学習済みのモデルは、Google ColabからGoogleドライブにアクセスして読み込みます。なので、学習済みモデルはGoogleドライブにアップロードする必要があります。
先ほどのckptファイルを任意のフォルダにアップロードします。ダウンロード同様、高速な回線を用意したほうがいいでしょう。私たちの環境では3分ほどで終わりました。

Google Colabで新規ノートブックを作成

ではGoogle Colabを使っていきましょう。
Google Colabにアクセスして、Googleアカウントにログインしましょう。


ログインできましたら、新規ノートブックを作成しましょう。



新しいノートブックが開くので、必用に応じてファイル名を変更しておきましょう。

Linuxを有効化

デフォルトではGPUが有効になっていないので、設定を変更します。[ランタイム]-[ランタイムのタイプを変更]を選択します。


以下のように表示されるので、ノートブックの設定のハードウェアアクセラレーターをGPUに変更し、保存します。



保存できたら、確認のために!nvidia-smiとコマンドを打ち込み、右側の再生ボタンを押して有効になっているか確認しましょう。
NVIDIA-SMI has failedと表示されていなければ問題なく有効になっています。

必要なライブラリのインストール

Google Colabでは最初からプリインストールされているライブラリがあるのですが、それ以外に必要なものがあるのでインストールしておきます。
以下のコマンドを実行しましょう。

!pip install albumentations==0.4.3
!pip install diffusers==0.12.1
!pip install opencv-python==4.5.4.58
!pip install pudb==2019.2
!pip install imageio==2.9.0
!pip install imageio-ffmpeg==0.4.2
!pip install pytorch-lightning==1.9.4
!pip install omegaconf==2.1.1
!pip install test-tube>=0.7.5
!pip install streamlit>=0.73.1
!pip install einops==0.3.0
!pip install torch-fidelity==0.3.0
!pip install transformers==4.19.2
!pip install kornia
!pip install -e git+https://github.com/CompVis/taming-transformers.git@master#egg=taming-transformers
!pip install -e git+https://github.com/openai/CLIP.git@main#egg=clip
!pip install invisible-watermark

実行するとインストールの経過が表示されるので、完了するまでしばらく待ちましょう。
インストールが終了したら、再起動しましょう。
[ランタイム]-[ランタイムを再起動]で再起動することができます。

Stable Diffusionのソースコードをダウンロードする

スクリプトやライブラリ一式をGitコマンドを使いダウンロードします。
これを実行し、Stable DiffusionをGoogle Colabにインストールします。

!git clone https://github.com/CompVis/stable-diffusion.git

Stable Diffusionのセットアップ

ダウンロードしたStable Diffusionのセットアップをします。
コマンドを実行し、Stable Diffusionが入っているフォルダにいきます。
問題なくインストールされていれば下記コマンドでフォルダの階層まで行けるはずですが
インストール場所を変更などしている場合はそのフォルダを指定してコマンドを実行しましょう

%cd stable-diffusion

次にこのコマンドを実行します。

!pip install -e .

Successfully installed~と表示されればOKです。

GoogleDriveを接続

GoogleDriveにアップロードした学習済みモデルを読み込めるようにGoogleDriveとGoogle Colabを接続します。
左端にあるフォルダのアイコンをクリックしする、プルダウンが現れるので、GoogleDriveのアイコン付いたファイルのアイコンをクリックします。
アクセスを許可してもいいかという旨の文章が出てて来るので許可をする。
少しするとディレクトリ一覧のところにdriveというフォルダが表示されます。これが表示されたら正常に作業が完了した証拠です。

学習済みモデルのファイルパスをコピーする

Stable Diffusionを実行する際にモデルを使用するのですが、その際にファイルがどこにあるかを表すファイルパスを調べておく必要があります。
なので、ディレクトリを展開していき、先ほどダウンロードしたモデルを表示させ、右クリックで「パスをコピー」を選択します。

Stable Diffusionの中身「txt2img.py」を実行する

これでStable Diffusionを実行するためのすべての動作が終了しました。今から動作させる方法を紹介します。
以下のコマンドを自分なりのものに変更して実行しましょう。

!python scripts/txt2img.py --prompt "(作成したい画像を想像させる文章)" --plms --ckpt (Google Driveに配置した学習済みモデルのファイルパス) --skip_grid --n_samples 1

実行するとたくさんテキストが流れてくると思います。最後に「Enjoy!」と表示されればOKです。

「Enjoy!」の一つ前にあったoutputs/...というテキストは、出力した画像があるファイルの場所になります。
このファイルの場所に行ってみると出力された画像が2枚あるはずです。あれば成功です。

これで実践は終了

これでStable Diffusionを使用したディープラーニング実践編は終了です。
今回は学習済みモデルを使用したのでかなり簡単ではありましたが、「実際にこんなことをやるんだー」や、「Pythonはこうやって使うんだ」など分ってもらっていれば120点満点です。

最後になりますが、このStable Diffusionを使用し出力した画像については、責任はすべて出力した利用者にゆだねられるとされています。
昨今の問題とされている権利問題など、気を付けて扱いましょう。

INDEX