はじめに
初めましての人もそうでない人もこんにちは!
最近ぼちぼち開発をしていて思うことがあります!
それは自分が絵を描けないということです!!
私の中学、高校時代の美術の成績は壊滅的でした。。
努力してこなかったツケがここにきて響くとは全く予想していなかった・・・
皆さんは多少絵が描ける様になったほうが個人開発の幅が多少広がると思います!
注意
今回作る生成AI絵ですがGoogleColaboratoryを使います!
しかしGPUの都合上無料枠だと相当厳しい(というか無理)だと思います。。。
無料枠だとRuntimeErrorがでます。
その場合は大変申し訳ありませんが上位プランを購入後試してみてください。
作成してみよう!
Hugging Faceのトークンを取得
今回はhuggingfaceというサイトを利用して作成してます!
huggingfaceというのはAIの開発に役立つものを提供するプラットフォームです!
少し話題になっているMeta社の大規模言語モデルであるLlama3もここに提供されているので時間がるときでも覗いてみてはいかがでしょうか!
それでは、huggingfaceにアクセスしてアカウントを作成してください!
1.右上にある自身のアカウントのアイコンをクリック
2.settingsをクリック
3.左側にあるAccess Tokensをクリック
4.New Tokenを押してNameを決め、TypeはWriteを選択(Readはダメ!)
5.Generate a tokenで完成!
トークンは誰にも見せないで安全に管理してください!
トークンを取得したら"huggingfaceのアクセストークン"の部分に入れてください!
コーディング
Googleアカウントを作成してColaboratoryにアクセスしてください!
アクセスしたら以下のコードをセルの中にコピペしてください!
from huggingface_hub import login
#huggingfaceのトークンを設定
HF_TOKEN = "huggingfaceのアクセストークン"
login(token=HF_TOKEN)
出力したら最後に「Login successful」が表示されたら成功です!
このコードはhuggingfaceを使うためのコードだと思ってください!
それでは次にいきましょう!
新しくセルを作ってコードをコピペです!
!pip install --upgrade diffusers accelerate
このコードでは"diffusers"と"accelerate"というパッケージを最新版にアップグレードするコードです!
新しくセルを作ってこのコードをコピペです!
# 必要なモジュールをインポート
import torch
from diffusers import StableDiffusion3Pipeline
# Stable Diffusion 3のパイプラインを読み込み
pipe = StableDiffusion3Pipeline.from_pretrained("stabilityai/stable-diffusion-3-medium-diffusers", torch_dtype=torch.float16)
# パイプラインをGPUに移動
pipe = pipe.to("cuda")
def generate_image(prompt, negative_prompt="", num_inference_steps=28, guidance_scale=7.0):
# 画像を生成
image = pipe(
prompt, # プロンプト
negative_prompt=negative_prompt, # ネガティブプロンプト
num_inference_steps=num_inference_steps, # ステップ数
guidance_scale=guidance_scale,
).images[0]
return image
このコードでは必要なモジュールをインポートします!
その次に今回絵を生成するのに必要なstable-diffusion-3というモデルを読み込みます!
そして処理を高速化させるためにGPUを使える様にします!
最後に画像生成の定義を行って画像を出力させています!
そして上の方でも話しましたが無料枠だとここでRuntimeErorrが表示されてしまいます!
画像を生成してみよう!
はてさてようやく完成したので絵を生成してみましょう!
この記事を書く前に見た鬼滅の刃がとても印象深かったのでそれを意識してプロンプトを書いてみましょう!
prompt = "月夜に鬼を倒す鬼殺隊の画像、アニメ調"
negative_prompt = ""
image = generate_image(prompt, negative_prompt)
image
生成された画像がこちら!!
・・・うーん、よくみると顔の部分や指先など不自然に見えるところなどちらほらありますねー
日本語ではなく英語で次はやってみます!
prompt = "Image of the Demon Slayer Corps slaying demons on a moonlit night, anime style"
negative_prompt = ""
image = generate_image(prompt, negative_prompt)
image
・・・みんな似たような見た目だし左上に限っては面白いことになってますねw
おわりに
今回の記事はいかがだったでしょうか?
皆さんもぜひ使ってみてください!(お金はかかりますが)
それではまた別の記事でお会いしましょう!