Flux.1-devで現場猫の画像を生成しよう

# はじめに
この記事は、2024/9時点の最新の画像生成AIで現場猫を学習させるとどれぐらいの性能が出るかの簡単なまとめと生成＆学習手順の記事です。

# 対象読者
- 現在の最新技術の動向チェックに余念がないAI絵師
- (メモリ24G以上のGPUボードを所有しているか、レンタルマシンを使用して)現場猫生成の再現実験をしてみたい人 
- その他の現場猫マニア

# 背景
## 2024/9時点の画像生成AIの状況の簡単おさらい
- Flux.1という新しい画像生成モデルが登場し、メモリ24G以上のGPUボードを搭載したローカルPCで画像学習が可能になった
- Flux.1の画像学習では従来より細かな制御が可能になるモデルの生成が可能になった（どれぐらいの制御が出来るようになったかをこの記事で解説）

### Flux.1とは
- Black Forest Labsによって開発された、テキストから画像を生成する最新のAIモデルです
- Flux.1-devは商用利用は出来ません
- Flux.1-schnellという軽量モデルは商用利用可能です

https://blackforestlabs.ai/

# Flux.1-devでの画像学習と生成

## 画像生成

先にどのような画像が生成できるかから見て行きましょう。

### 画像とプロンプトの例

- 単純生成

`<lora:gembacat_flux_lora_20240814_000000500:1>, gembacat, cat, helmet, no humans`
![1723646020612__000000550_0.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116075/ac22e8e7-6dd6-56af-62d7-1a4947a14641.jpeg)

`<lora:gembacat_flux_lora_20240814_000000500:1>, gembacat, japanese anime style, cat, gray cat wearing a yellow helmet pointing sideways with one foot , hardhat, helmet, no humans, yellow headwear, solo, animal focus, pointing, open mouth, animal, full body, :3, looking at viewer. The 'YOSHI!' text should be prominently displayed in bold, large letters in speech bubble, ensuring it is highly visible.`
![1723646099799__000000550_2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116075/ff27a005-58a0-208e-a817-914a2edd2eab.jpeg)

`<lora:gembacat_flux_lora_20240814_000000500:1>, gembacat, japanese anime style, cat, gray cat wearing a yellow helmet pointing sideways with one foot , hardhat, helmet, no humans, yellow headwear, solo, animal focus, pointing, open mouth, animal, full body, :3, looking at viewer. The iron huge flat bucket is falling to head of gembacat from ceiling. in construction site. effect line. The 'SAFETY!' text should be prominently displayed in bold, large letters in speech bubble, ensuring it is highly visible.`

![00016-979228793.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116075/21a6a01a-f1e6-230b-d5cf-47b41ab1c321.png)

`<lora:gembacat_flux_lora_20240814_000000500:1>, gembacat, japanese anime style, cat, gray cat wearing a yellow helmet pointing sideways with one foot , hardhat, helmet, no humans, yellow headwear, solo, animal focus, pointing, open mouth, animal, full body, :3, looking at viewer. A lot of iron buckets and knife are falling to head from sky. cat get stabbed in the head and it bleeds, very dangerous in construction site. effect line. The 'SAFETY!' text should be prominently displayed in bold, large letters in speech bubble, ensuring it is highly visible.`

![00010-925610612.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116075/85ffa2ee-923e-71f5-697f-34aa5f707333.png)

- 自衛隊

`<lora:gembacat_flux_lora_20240814_000000500:1>, gembacat, a cute cat with a military helmet, holding a smartphone, a Twitter logo in the background, anime style, illustration`

![14.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116075/aad8b293-6cc7-c714-18b2-11f5d0fba9f8.jpeg)

`<lora:gembacat_flux_lora_20240814_000000500:1>, gembacat, a cute cat with a military helmet, holding a megaphone, a crowd of people with different expressions, anime style, illustration`

![15.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116075/9d915c55-4f6a-b65c-63c9-36f3aec25daf.jpeg)

`<lora:gembacat_flux_lora_20240814_000000500:1>, gembacat, a cute cat with a military helmet, sitting on a pile of anime DVDs, a variety of anime characters in the background, anime style, illustration`

![16_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116075/fe603fa3-58f6-a22d-d82c-442f15fec048.jpeg)

- ずんだもんと現場猫の夢の共演

`1cat and 1girl hold hands each other, <lora:gembacat_flux_lora_20240814_000000500:1>, gembacat, japanese anime style, cat, gray cat wearing a yellow helmet pointing sideways with one foot, hardhat, helmet, no humans, yellow headwear, solo, animal focus, pointing, open mouth, animal, full body, :3, looking at viewer. <lora:zundamon_flux_lora_20240811:1>, zundamon, 1girl, white shirts, green suspenders shorts, green hair, open mouth, pointing sideways with one foot.`

![00026-4100292076.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116075/23439a91-1f26-e2b0-c9ea-dcfb2f3d97c2.png)


### モデル置き場
- flux1.dev

https://huggingface.co/lllyasviel/flux1_dev/blob/main/flux1-dev-fp8.safetensors

- 現場猫モデル

https://huggingface.co/takaaki-inada/flux1_lora/blob/main/gembacat_flux_lora_20240814_000000500.safetensors


### 生成手順

ここからはメモリ24G以上のGPUボードを所有しているか、レンタルマシンを調達できる人向けの手順になります。

- webui(tool)のdownload

https://github.com/lllyasviel/stable-diffusion-webui-forge

git cloneします。

- モデルを配置する
モデル置き場からモデルをdownloadし、git cloneしたディレクトリの配下に配置する
  - models/Stable-diffusion/flux1-dev-fp8.safetensors
  - models/Lora/gembacat_flux_lora_20240814_000000500.safetensors

以下linuxの場合
- webuiの起動 (installを兼ねる)
```
./webui.sh
```

画面に出てくるlinkをクリックしてwebui画面を表示して、fluxを選択し、promptを入力しgenerateボタンを押下すると現場猫の画像が生成されます。簡単ですね。

![gemba_webui.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116075/2c554ca8-a01e-d964-7918-7d8bb9976297.png)


## モデル学習
### 学習画像

`gembacat, cat, no humans, black background, animal focus, simple background, yellow eyes, solo, looking at viewer, animal, open mouth, yellow sclera, portrait`
![doushite.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116075/82a77bc0-358b-612e-67c7-2e6331e0edf8.png)

`gembacat, cat, white background, hardhat, helmet, no humans, yellow headwear, simple background, solo, animal focus, pointing, open mouth, animal, full body, :3, looking at viewer`
![download.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116075/7f5bc9f5-2a90-f91c-3c51-b4fed33994bc.jpeg)

`gembacat, cat, animal focus, no humans, simple background, animal, white background, solo, :3, open mouth, looking at viewer, full body`
![images1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116075/346559e3-39ef-b373-05b5-89e0fdec87a0.jpeg)

`gembacat, cat, white background, hardhat, helmet, no humans, yellow headwear, simple background, solo, animal focus, open mouth, animal, full body, :3, looking at viewer`
![screen4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116075/da5463d0-dcaf-0c5e-7a7a-e5eb0ccd5c2d.png)

この4枚で学習しました。

#### 学習画像置き場

https://huggingface.co/takaaki-inada/flux1_lora/tree/main/datasets/gembacat

### スクリプト

- 学習tool(ai-toolkit)のdownloadとinstalll

https://github.com/ostris/ai-toolkit

git cloneし、READMEのinstallation手順の通りinstallします。

- 設定ファイルの作成と学習実行
以下linuxでコマンドラインの場合

```
cp config/examples/train_lora_flux_24gb.yaml config/gembacat.yaml
```

config/gembacat.yaml の以下の部分を編集します。
```yaml
      datasets:
        # datasets are a folder of images. captions need to be txt files with the same name as the image
        # for instance image2.jpg and image2.txt. Only jpg, jpeg, and png are supported currently
        # images will automatically be resized and bucketed into the resolution specified
        - folder_path: "/path/to/images/folder"
```

上記の学習画像置き場に学習画像を配置しておきましたので、学習画像を適当なフォルダにダウンロードし、ダウンロードしたfloder_pathを上記の部分に設定します。

```yaml
        prompts:
          # you can add [trigger] to the prompts here and it will be replaced with the trigger word
         - "[trigger] holding a sign that says 'I LOVE PROMPTS!'"
```
`[trigger]`を`gembacat`に変えたら、以下の通り学習を実行します。

```
python run.py config/gembacat.yml
```

500step程(30分程)学習させてCTRL + Cを押下すればOKです。簡単ですね。

# 所感
- たった4枚の画像学習で特徴をとらえていて、思ったようなポーズやシチュエーションが生成できます。
- 2年前現場猫を学習させた時は、擬人化した女の子の現場猫が生成されるぐらいの性能しか出せなかったのですが、性能がとても良くなっています。

**2年前**

https://huggingface.co/sd-dreambooth-library/gemba-cat