本記事では、機械学習手法Stable Diffusionを用いて画像の特定の範囲をテキストに応じた画像に変更する画像修復を実行する方法をご紹介します。
Stable Diffusion
概要
Stable Diffusionは、拡散モデルによる画像合成モデルです。
自然言語で入力されたテキスト(prompt)から画像を生成するText to
Imageタスクを実現します。
Latent Diffusionをベースとした本モデルは、非常に大規模なデータセットであるLAION-5Bを用いてトレーニングされています。
GoogleのImagenやOpenAIのGLIDE,
DALLE-2など最新の画像生成モデルは社会に与える影響が大きいことなどを理由に学習済みモデルの公開を控えるケースが目立っていましたが、
Stable
Diffusionでは、AIの平等な使用機会を与えることを目的に学習済みモデルの公開に踏み切っています。
なお、以下の記事では有償にはなりますが、Lattent
DiffusionやGLIDEの技術解説やデモを紹介しています。よろしければご参照ください。
技術解説までは、無料で参照可能です。
Latent Diffusion Modelsを用いてテキストから画像を生成するレシピ
GLIDEで様々な条件を指定したテキストから画像を生成するレシピ
本記事では上記手法を用いて、inpaitingタスクをGoogle Colaboratoryで実行していきます。
なお、テキストから画像を生成するtext2imgタスク、画像とテキストを入力し新たに画像を生成するimg2textは以下でご紹介しています。
[Stable Diffusion] AIでテキストから画像を生成する[text2img]
本記事では、機械学習手法Stable Diffusionを用いてテキストから画像を生成する方法をご紹介しています。
[Stable Diffusion] AIでテキストと画像から新たな画像を生成する [img2img]
本記事では、機械学習手法Stable Diffusionを用いてテキストと画像から新たな画像を生成するimg2imgを実行する方法をご紹介しています。
デモ(Colaboratory)
それでは、実際に動かしながらinpaintingタスクを実行していきます。
ソースコードは本記事にも記載していますが、下記のGitHubでも取得可能です。
GitHub - Colaboratory demo
また、下記から直接Google Colaboratoryで開くこともできます。
なお、このデモはPythonで実装しています。
Pythonの実装に不安がある方、Pythonを使った機械学習について詳しく勉強したい方は、以下の書籍やオンライン講座などがおすすめです。
おすすめの書籍
[初心者向け] Pythonで機械学習を始めるまでに読んだおすすめ書籍一覧
本記事では、現役機械学習エンジニアとして働く筆者が実際に読んだ書籍の中でおすすめの書籍をレベル別に紹介しています。
おすすめのオンライン講座
[初心者向け] 機械学習がゼロから分かるおすすめオンライン講座
本記事では、機械学習エンジニアとして働く筆者が、AI・機械学習をまったく知らない方でも取り組みやすいおすすめのオンライン講座をご紹介しています。
環境セットアップ
初めにHuggingFaceのアカウントを作成します。
HuggingFaceにアクセスし画面右上のSignUpよりアカウントを作成します。
登録したメールアドレスに認証メールが届くのでメールに記載されたリンクにアクセスしてアカウント登録は完了です。
続いて、こちらのCompVis/stable-diffusion-v1-4にアクセスし記載の内容を確認の上承認します。
承認後、画面右上のアカウントのアイコンから[Settings]->[Access Tokens]に移動しNewTokenを発行し、メモしておきます。
以降の作業はGoogle Colaboratoryで行います。
それではGoogle Colaboratoryでセットアップしていきます。 Colaboratoryを開いたら下記を設定しGPUを使用するようにしてください。
まずGithubからコードをcloneします。
次に、ライブラリをインストールします。
最後にライブラリをインポートします。
以上で環境セットアップは完了です。
学習済みモデルのセットアップ
続いて、先ほど発行したアクセストークンを使用して、モデルをダウンロードします。
マスク画像生成
それでは、promptと画像を設定し指定範囲を画像修復していきます。
画像修復は、マスク画像で指定された白色領域のみに対して画像生成することで実現します。
まず、入力画像の取得と、マスク画像の生成を行います。
以下の画像を使用します。
続いて、画像修復範囲を矩形で指定します。
出力結果は以下の通りです。
指定された矩形に従ってマスク画像を生成します。
以下のマスク画像が生成されます。
白色の領域が修復範囲です。
Inpainting
入力画像、マスク画像がそろったのであとはモデルに入力するのみです。
prompt
にganesha face
を設定して実行してみます。
出力結果は以下の通りです。
矩形範囲のみガネーシャの顔に修復することができました。
まとめ
本記事では、Stable Diffusionを用いてinpaintingを行う方法をご紹介しました。
かなり高精度なモデルのため悪用厳禁であることは言うまでもありません。
また本記事では、機械学習を動かすことにフォーカスしてご紹介しました。
もう少し学術的に体系立てて学びたいという方には以下の書籍などがお勧めです。ぜひご一読下さい。
また動かせるだけから理解して応用できるエンジニアの足掛かりに下記のUdemyなどもお勧めです。
参考文献
1. 論文 - High-Resolution Image Synthesis with Latent Diffusion Models
0 件のコメント :
コメントを投稿