話題のお願いしたら描いてくれる、お絵かきAIオープンソース「
Stable Diffusion」が
M1 Macで動くとのことで試してみました。
![](https://img.sabae.cc/data/20220904/6326c708-d2fc-441f-8376-fc5bc649fbee.jpg)
人物を違和感なく描くのはまだ難しいようですが、なかなかステキな絵を生成してくれました!
ストレートに描いてほしいものを書くだけでなく、雰囲気を表すいろんなキーワードを合わせて指定するのがコツな様子。
描いてくれた絵のなかなかから気に入ったものを紹介します!
![](https://img.sabae.cc/data/20220904/f194714d-87c3-48dc-a3c2-ebcc8a9e655a.jpg)
バスに載ったイチゴ
![](https://img.sabae.cc/data/20220904/730420a2-9ea5-4553-a89c-398185addef0.jpg)
イチゴ、絵画スタイル
![](https://img.sabae.cc/data/20220904/a5eb2e17-6857-4261-b8d0-306020a25cb4.jpg)
イチゴジャム
![](https://img.sabae.cc/data/20220904/75a82d28-ca62-489a-8736-de552e1ed38b.jpg)
イチゴジャム(謎キャラクター登場)
![](https://img.sabae.cc/data/20220904/64572698-930c-4d78-832b-afab8777d14c.jpg)
雨の中の白い首長竜(謎キャラクター登場)
![](https://img.sabae.cc/data/20220904/f7deab83-b6e3-4de5-bfeb-fa0bb1b39700.jpg)
雨の中の白い首長竜(トトロっぽい?)
![](https://img.sabae.cc/data/20220904/930999b9-055d-4c54-a2c1-4e502f69f5cd.jpg)
雨の中の白い首長竜(かわいいの出た!)
![](https://img.sabae.cc/data/20220904/933e93f1-eb80-4781-bc0d-602b381f2b7b.jpg)
雨の中の白い首長竜(抽象画風)
![](https://img.sabae.cc/data/20220904/a5a7084b-028a-49d3-8684-7cffe48c489e.jpg)
雨の中の白い首長竜(なにかかっこいい)
![](https://img.sabae.cc/data/20220904/88e66a8e-2475-45f3-b129-f2254f80b780.jpg)
雨の中の白い首長竜(ムンク風)
![](https://img.sabae.cc/data/20220904/81e4c5b9-84c0-4319-b9d3-c2c204a455f6.jpg)
雨の中の白い首長竜(なにかかっこいい2)
![](https://img.sabae.cc/data/20220904/0625ad68-5c31-4ee4-a6ee-657d2b10322e.jpg)
イチゴ帽子をかぶる少年と少女が原っぱでプログラミングする様子
![](https://img.sabae.cc/data/20220904/fe2174a5-f838-4458-bbfb-469ef159de74.jpg)
イチゴ帽子をかぶる少年と少女が原っぱでプログラミングする様子
描いてほしくなったら、登録なしにすぐに使えるけど生成に数分かかる「Stable Diffusion Demo
」か、登録すると一定量無料で使えて5秒で生成高速版「DreamStudio AI」、もしくは、オープンソースを使って手元のパソコンで生成環境を作るか、使い方選べる3種類。
キーワードをいろいろと試してみるにはローカル版がいいですね。
「画像生成AI「Stable Diffusion」をM1搭載Macのローカル上で実行する方法 - GIGAZINE」
この手順通りで txt2img.py の実行できました!
2021年製 MacBook Pro 32GB では、512x512の1画像生成に1分半。
白い首長竜のキャラクターがかわいい、Denoで呼び出して、依頼した文字列一緒にCSVデータにするプログラムを作ったので、一晩放っておくことができます。
ローカルで動いているのでかかるのは電気代のみ。
const getLatestFile = async (dir) => {
const list = [];
for await (const dirEntry of Deno.readDir(dir)) {
if (!dirEntry.isFile) {
continue;
}
const name = dirEntry.name;
if (name.startsWith(".")) {
continue;
}
const f = await Deno.stat(dir + "/" + name);
list.push({ name, mtime: f.mtime.getTime() });
}
list.sort((a, b) => b.mtime - a.mtime);
//console.log(list);
return dir + "/" + list[0].name;
};
export const makeImage = async (prompt) => {
console.log(prompt);
const p = Deno.run({
cmd: [
"python",
"scripts/txt2img.py",
"--prompt",
prompt,
"--n_samples",
"1",
"--n_iter",
"1",
"--plms",
"--W",
"768",
//"1024", // memory over
],
stdout: "piped",
});
await p.status();
const fn = await getLatestFile("outputs/txt2img-samples");
await Deno.writeTextFile("outputs.csv", `${fn},"${prompt}"\n`,{ append: true });
return fn;
};
const keywords = ["oil", "ukiyoe", "Gogh"];
const s = "strawberry";
for (cost key of keywors) {
await makeImage(s + "," + key);
}
keywordsでお気に入りの単語群を作っておくといいでしょう。一つの単語ごとに何枚か作ったり、組み合わせたりもいいですね。
![](https://img.sabae.cc/data/20220904/8553192e-fcf3-400b-a1cb-70889f97323a.jpg)
DX推進サポーターのさくらいとがメンター、社会人向けDX講座、AI入門、お絵かきAI含む活用例と共に紹介。
![](https://img.sabae.cc/data/20220904/c258fb36-7255-44f8-920e-a4e58b89d9f6.jpg)
ハッカソンスタイルで進める、グループワーク!
![](https://img.sabae.cc/data/20220904/243113d1-ef09-45db-a498-75ae9eb9bb43.jpg)
ES-Jamを使ってwebアプリとしてその場で作って発表、次回、いよいよ実践編です。