記事一覧

Stable Diffusionをいらすとやでファインチューニングする

巷で話題のStable Diffusion(以下SD)をファインチューニングする方法が公開されたので、早速やります。
手法はここで紹介されています。(手法を混同していたため修正しました)
キャプチャ

見たところによると、数枚のイメージだけで新しい概念を学習できるようです。
なるほど、これは呪文詠唱を省略できる画期的な手法に感じます。

個人的にいらすとやの画像素材がほしかったので、いらすとやを使ってみます。
使った画像は下のリンクにある16枚です。


それでは早速試してみましょう。
…とは言っても、手法は下のredditに従うだけです。

ここでいちいち全て書いたらキリがないので、いくつか詰まったポイントを紹介します。

1. VectorQuantizer2が無いぞと怒られる
これは、VectorQuantizerクラスをVectorQuantizer2にリネームすることで解決しました。

2. image_loggerが画像を生成した後out of memoryになる
ソースを読むのが面倒だったので、v1-finetune.yamlのbatch_frequencyを100000などの大きなサイズにすることで解決しました。
ただしこの方法では学習中に画像が確認できなくなるので、強い人は自分でなんとかしてください(他力本願)

3. PILがOSError cannot open resourceを吐く
colab中に存在するフォントを割り当ててあげてください。

4. Inferenceでout of memoryが出る
--n_samples 1にしてください。たくさん画像が欲しい場合は--n_iterの数を増やしてください。

で、学習結果がこんな感じです。

00037.jpg00073.jpg00104.jpg00102.jpg

かなりそれっぽい。
この手法は新しい単語「*」にinput imageとして与えた画像の表す概念を割り当てるので、プロンプト生成の手間がかからない点がよかったです。
例えばこの記事で使っている画像は、「bustshot portrait of a man in the style of *」で生成できました。

最後に学習環境について、今回はcolabを利用し、画像16枚、学習は3時間程度でした。
かなりお手軽に他人の絵柄をパクれるので驚き。

また、Embeddingsさえあればckptはそのまま流用できるので、ファインチューンしたモデルはかなり気軽に配布できそうです。恐ろしや。

ではまた。

<追記:20220828>
学習に使うデータを32枚に増やして、もう少し学習量を増やしてみました。

00139.jpg00228.jpg00267.jpg
00474.jpg

少ない画像枚数で学習できることがアピールされていますが、(それは間違っていないのですが)多いに越したことは無さそうです。

コメント

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

Re: No title

分かりました

actual_resumeについて教えてください

学習時のコマンドの--actual_resume部の指定がうまくいかず詰まっているのですが、どう指定されましたか教えていただけませんでしょうか。
textual_inversionディレクトリ内にmodel.ckptは見当たりませんでした。

Re: actual_resumeについて教えてください

huggingfaceで公開されているチェックポイントを用いてください。
https://huggingface.co/CompVis/stable-diffusion-v-1-4-original

redditで紹介されているものはTextual Inversionという以前の手法をStableDiffusionに適用したものだと思っていましたが、DreamBoothの論文の内容(class-specific prior preservation lossを用いた学習や、rare tokenの使用など)が実装されているのでしたっけ?
勝手に別の物だと思っていましたが、もし私の勘違いでしたらすみません

Re: actual_resumeについて教えてください

ありがとうございます。sd-v1-4.ckptで次に進めるようになりました。

Out of memoryの件

https://towardsdatascience.com/how-to-fine-tune-stable-diffusion-using-textual-inversion-b995d7ecc095
によると、
(Google翻訳)「デフォルト設定では、トレーニング用に少なくとも 20GB の VRAM が必要です。バッチサイズとワーカー数を減らすことで、メモリ要件を減らすことができます。」
とあります。
このあたりの部分が影響しないでしょうか?

Re: タイトルなし

知らせていただきありがとうございます、自分が混同していたので修正しておきます。
申し訳ないです。

Re: タイトルなし

修正ありがとうございます
いえ、私も、このあたりの話題は情報の流れが速く、なかなか海外記事で正確に情報を読み取るのが難しいと感じておりました
日本語で貴重な試行例について記事をお書きくださり感謝しています

コメントの投稿

非公開コメント

検索フォーム

プロフィール

birdMan

Author:birdMan
作ったもの(特に有志作成のmodや翻訳ファイル)を検索に引っかかるように置いてます.あとノウハウの共有備忘が目的です.

注意:
本ブログではアフィリエイトは一切使用していません.
何か連絡があったら下にSteamのプロフィールへのリンクを載せているのでそこへお願いします.