【検証】画像用自動モザイク処理ツール改修(Google Antigravity)
# 1.はじめに
この記事では、Google Antigravityを用いて、バイブコーディングを引き続き試していきます。その開発テーマとして、「画像用自動モザイク処理ツール」を選択しています。
※技術的な要素が強い記事となります。
Google Antigravityは、バイブコーディング用の新AIエージェントです。
■Google Antigravity
https://antigravity.google/
■Google Antigravity のスタートガイド
https://codelabs.developers.google.com/getting-started-google-antigravity?hl=ja#0
前回は、Google JulesやGemini CLIを使用しました。そして、それらのAIエージェントが「Gemini 2.5 Pro」へ接続することで、開発を行ってもらえました。
その結果として、画像ファイルの一括モザイク処理を、batファイルへのドラッグ&ドロップだけで行えるようになっています。
■【実験】画像用自動モザイク処理ツール開発(Google Jules他)
https://www.fanbox.cc/@rarabeat/posts/10749221
【実験】画像用自動モザイク処理ツール開発(Google Jules他)

# 1.はじめに この記事では、Google Jules(及びGemini CLI)を用いて、バイブコーディングを試します。その開発テーマとして、「画像用自動モザイク処理ツール」を選択しています。 ※技術的な要素が強い記事となります。 バイブコーディングとは、AIエージェントに自然言語での指示(正確にはプロンプトの発行)...
ただし、モザイク処理の精度の問題は残っており、それに対する最適な設定は画像ごとに異なります。
その為、実用していく中で、設定ファイル(config*.yaml)が増えてきています。また、各設定ファイルを直接テキストエディタで一つ一つ変更するのも手間です。
そこで、その設定の管理の為に、簡易的なアプリ画面をGoogle Antigravityに作ってもらうことにしました。
現在(2025/12/20)のGoogle Antigravityでは、より高性能な「Gemini 3 Pro」へ接続することで、作業を行ってもらえるようになっています。
それに関して無料枠もあり、それを利用していきます。
# 2.前提条件
## 【コーディングエージェント】
■Google Antigravity
https://antigravity.google/
## 【画像生成AI(サンプル画像生成用)】
■Plant Milk ? - Model Suite - Walnut [by Ocean3]
https://civitai.com/models/1162518/plant-milk-model-suite
## 【Stable Diffusion WebUI拡張機能(サンプル画像生成用)】
■adieyal/sd-dynamic-prompts
https://github.com/adieyal/sd-dynamic-prompts
←プロンプト内に指定キーワードを配置しておくと、そのキーワード部分を実行順又はランダムに自動変更されるように設定できる拡張機能です。(例:{red|blue|green} dress)
## 【画像生成AI用ワイルドカード(サンプル画像生成用)】
■Otokonoko/Femboy/Trap Sex Wildcard - v2.0 [by belovedArtist]
https://civitai.com/models/1068767/otokonokofemboytrap-sex-wildcard
←上記の拡張機能で利用する定義ファイルです。指定キーワードとその変更先プロンプト候補を定義しています。NSFW男の娘ジャンルに特化したものとなっており、これを使用することで、男の娘画像をランダム生成できます。
# 3.生成例
■本サンプルアプリのダウンロードリンク(Misskey.io)
https://media.misskeyusercontent.jp/io/44148afb-3e11-4742-8b09-ef0dd4319f8f
※2025/12/20現在配置中。
```md:README.md(一部抜粋。この箇所も生成)
## ? 使用方法
### 1. GUIアプリケーション (推奨)
直感的な操作で設定変更や実行が可能です。
1. **起動**: `run_ui.bat` に画像ファイルやフォルダをドラッグ&ドロップするか、`input` フォルダに画像を配置した後に `run_ui.bat` をダブルクリックして起動します。
2. **設定**: 左側のパネルで設定ファイルを選択・編集・保存できます。また、スライダーでUIのサイズ(文字やサムネイル)を調整できます。
3. **対象変更**: 対象を変更する場合は、対象の画像ファイルやフォルダを右側のエリアにドラッグ&ドロップします。
4. **実行**: 「実行 (Run)」ボタンを押すと処理が開始されます。
5. **結果**: 「結果 (Result)」ボタンを押すと結果フォルダが開きます。
6. **マスク**: 「マスク (Masks)」ボタンを押すと `masks` フォルダ(マスクファイルフォルダ) が開きます。
7. **終了**: 「終了 (Exit)」ボタンを押すと アプリが終了します。
```
## 1. **起動**: `run_ui.bat` に画像ファイルやフォルダをドラッグ&ドロップするか、`input` フォルダに画像を配置した後に `run_ui.bat` をダブルクリックして起動します。
↓
↓
## 2. **設定**: 左側のパネルで設定ファイルを選択・編集・保存できます。また、スライダーでUIのサイズ(文字やサムネイル)を調整できます。
UIサイズ設定:スライダーでUIのサイズ(文字やサムネイル)を調整できます。
設定ファイル:モザイク修正に使用する設定ファイルを選択・編集・保存できます。
※プリセットとして、次のものを用意しています。
※次のモデルをmodelsフォルダにダウンロードしておく必要があります。
[A] Anime NSFW Detection / ADetailer All-in-One - v5.0-variant1
https://civitai.com/models/1313556?modelVersionId=2350456
[B] Cock and Ball Detection 2D edition (ADetailer)
https://civitai.com/models/310687/cock-and-ball-detection-2d-edition-adetailer
## ①config_blackbar_first_A
・[blackbar] 黒ノリ(bar_size_ratioとbar_interval_ratioのオプションで幅調整)での修正。
・[first] 画像を90度ずつ回転していき、修正対象を検知したら修正。検知したらそれ以上の回転はしない。
・[A] 検知には「Anime NSFW Detection / ADetailer All-in-One - v5.0-variant1」モデルを使用。
```プロンプト(Dynamic Prompts使用)
masterpiece, best quality, anime, __beloved-otokonoko-sex/prompt-mix__
```
```ネガティブプロンプト
bad quality, worst quality, lowres, jpeg artifacts, bad anatomy, bad hands, multiple views, signature, watermark, censored, ugly, messy, greyscale, monochrome, hetero, pussy, vaginal, vagina, cameltoe, breasts, female, woman, girl, she, uterus, cervix, impregnation
```
## ②config_blackbar_mask
・[blackbar]
・[mask] マスク画像の白色部分を修正。
↑ masksフォルダ内に「対象ファイル名」又は「`MSK_` + 対象ファイル名」のマスクファイル(フォルダ階層も一致)を配置して実行。設定ファイル名に `info` が付いているものは実行後にマスクファイルも出力する設定なので、それを加工して使用することを想定。
## ③config_blackbar_union_A
・[blackbar]
・[union] 画像を常に0度・90度回転・180度回転・270度回転し、各角度の検知対象を全て修正。
・[A]
## ④config_blur_first_A
・[blur] ぼかし(blur_strengthオプションで強度調整)での修正。
・[first]
・[A]
## ⑤config_blur_mask
・[blur]
・[mask]
↑
## ⑥config_blur_union_A
・[blur]
・[union]
・[A]
## ⑦config_blur_union_AB
・[blur]
・[union]
・[AB] 「Cock and Ball Detection 2D edition (ADetailer)」モデルも使用。
## ⑧config_mosaic_first_A
・[mosaic] モザイクでの修正。
・[first]
・[A]
## ⑨config_mosaic_mask
・[mosaic] モザイクでの修正。
・[mask]
↑
## ⑩config_mosaic_union_A
・[mosaic] モザイクでの修正。
・[union]
・[A]
## ⑪config_mosaic_union_AB
・[mosaic] モザイクでの修正。
・[union]
・[AB]
## ⑫config_stamp_first_A
・[stamp] スタンプ画像(stamp_imageオプション指定のもの)での修正。
・[first]
・[A]
## ⑬config_stamp_mask
・[stamp]
・[mask]
↑
## ⑭config_stamp_union_A
・[stamp]
・[union]
・[A]
## ⑮config_stamp_union_AB
・[stamp]
・[union]
・[AB]
## ⑯config_whitebar_first_A
・[whitebar] 白ノリ(bar_size_ratioとbar_interval_ratioのオプションで幅調整可)での修正。
・[first]
・[A]
## ⑰config_whitebar_mask_1
・[whitebar]
・[mask]
↑
## ⑱config_whitebar_union_A
・[whitebar]
・[union]
・[A]
新規:現在表示されている設定で、新規設定ファイルを作成します。
保存:現在表示されている設定で、選択した設定ファイルを上書きします。
削除:選択した設定ファイルを削除します。
各種設定:各設定項目を表示・編集します。上記の「新規」と「保存」の前に利用します。また、設定ファイルの内容を一時的に変更して実行するような利用の仕方もできます。「実行 (Run)」ボタンを押した時には、画面表示されている設定で実行されます。その為、confidence(検出の信頼度しきい値。検知されない時に下げると検出されやすくなるが、誤検知率も上がる)等の項目値を編集はするが保存はしないようにすれば、その使い方ができます。 ※各設定項目の説明はREADME.mdに記載があります。
## 3. 対象変更
対象を変更する場合は、対象の画像ファイルやフォルダを右側のエリアにドラッグ&ドロップします。
## 4. **実行**: 「実行 (Run)」ボタンを押すと処理が開始されます。
## 5. **結果**: 「結果 (Result)」ボタンを押すと結果フォルダが開きます。
## 6. **マスク**: 「マスク (Masks)」ボタンを押すと `masks` フォルダ(マスクファイルフォルダ) が開きます。
## 7. **終了**: 「終了 (Exit)」ボタンを押すと アプリが終了します。
なお、精度の問題は引き続き発生するので、必要に応じて `mask`の設定ファイル を使った方が良さそうです。
例)config_mosaic_union_2(過剰対応)
# 4.解説
Google Antigravityにて、「Gemini 3 Pro (Low)」(highは優秀だがすぐに利用限度を迎えやすい印象)を使用して、アプリ画面の作成をしてもらいました。多少不具合は含まれていたもののほぼ意図通りのものができています。
プロンプトとしては、最初は次のようなものを使用しました。例によって、事前にGeminiと相談した結果のプロンプトです。
```
@README.md あなたはPythonのGUIアプリケーション開発のエキスパートです。
以下の要件に基づき、既存の画像処理CLIツールをラップするGUIアプリケーションのコード(`censorai_ui.py`)を作成してください。
## プロジェクトの背景
現在、Pythonで作られた画像検閲(モザイク処理)CLIツールがあります。
設定ファイル(yaml)とBATファイルが乱立しており管理が難しいため、これを統合するGUIを作成したいです。
## ディレクトリ構成
CensorAI/
│
├── censorai_ui.py # 【今回作成するファイル】GUIメイン
├── configs/ # 設定ファイル(.yaml)格納フォルダ
│ └── config.yaml # デフォルト設定
└── output/ # 出力先
## 技術スタック
- Python 3.x
- UIライブラリ: `tkinter` (標準)
- D&D拡張: `tkinterdnd2` (pip install tkinterdnd2)
- 設定形式: YAML
## 機能要件
### 1. 画面レイアウト
- **左側(設定エリア)**:
- 設定ファイル選択用コンボボックス(`configs/`内のYAMLファイルを自動リスト化)
- 操作ボタン:「新規作成」「保存」「削除」
- パラメータ編集フォーム:YAMLのキーと値をEntryウィジェットで表示・編集可能にする
- **右側(実行エリア)**:
- 大きなDrag & Dropエリア
- ログ表示エリア(スクロール可能なテキストボックス)
### 2. 挙動詳細
- **設定変更**: コンボボックスでファイルを選ぶと、フォームの内容が更新される。
- **実行 (D&D)**:
- 右側のエリアに画像ファイルまたはフォルダがドロップされたら検知する。
- ドロップされたパスと、現在画面に入力されている設定値(辞書型)を引数にして、処理関数を実行する。
- **処理関数**:
- 実際の画像処理は `censorai.py` で実行し、ログエリアに「処理中: {path}... 設定: {config}」と出力すること。
## 出力への要望
- コードは1つのファイル(`censorai_ui.py`)にまとめてください。
- コード内に日本語でコメントを記述してください。
- `tkinterdnd2` の初期化処理(`TkinterDnD.Tk()`)を正しく実装してください。
```
この後の操作結果で気になった点を、随時改修依頼しています。
そして、このアプリ自体は前回同様にOSS(オープンソースソフトウェア)としてあります。
もしもこの記事を読んでGoogle Antigravityを試されたいと思われましたら、このサンプルアプリの追加改修をGoogle Antigravityに依頼してみるのも面白いかもしれません。(例えば、Stable Diffusion WebUIのようなブラウザUIに変更する等です)
そのようなお試しサンプルとしての利用も想定してはいます。(ただし、その操作の結果は自己責任でお願いします)
なお、Google Antigravityのインストール手順は、最初に提示したリンクが公式のものなので、そちらを参照いただくのが良いと思います。
# 5.おわりに
以前の記事で、「AIと争う作業者」であり続けることの危うさと「AIを部下として扱える責任者」へ立場を変える必要性を説きました。
■【解説2】NSFW漫画イラスト生成(Illustrious-XL系)
https://rarabeat.fanbox.cc/posts/10973659
今回の記事は、その思想論に対する具体的な実例としての立ち位置でもあります。
今回行ったことは単純です。
「どんな機能を、なぜ追加するのか」を人間が定義し、実装(実際の開発作業)をAIに任せました。
ここで重要なのは、「アプリが完成したかどうか」ではありません。
本当に重要なのは、目的を定め、計画し、判断する側に回ったという点にあります。
これまでは、アプリの機能追加は「スキルのあるエンジニアだけができる仕事」でした。
しかし今は、
・何を作りたいのかを言語化できる人
・完成像をイメージできる人
・要不要を判断できる人
であれば、実装そのものはAIが補ってくれる時代に入っています。
今回の改修は、小さな一歩にすぎません。
しかし、この小さな実践の積み重ねこそが、AI時代を生き抜くための現実的なトレーニングになります。
もしあなたが、「自分はAIに仕事を奪われる側なのではないか」と少しでも感じているならば、今日から一つで構いません。
AIを、競争相手ではなく、頼れる相棒として扱ってみてください。全ての作業をAIにやらせる必要性はありません。一部だけでも十分価値があります。
それらの経験により、あなたはAIを「部下」にできる側の人間になっていきます。
この立場に立てるかどうかで、数年後のキャリアは、まったく別物になるはずです。
その一歩を、今日から踏み出してみてください。
■nashikone/iroiroLoRA
- 触手空間LoRA
https://huggingface.co/nashikone/iroiroLoRA/blob/main/Wan2.2_i2v_A14B/T/tentacle_pit_high_wan-2-2_i2v_A14B.safetensors
https://huggingface.co/nashikone/iroiroLoRA/blob/main/Wan2.2_i2v_A14B/T/tentacle_pit_high_wan-2-2_i2v_A14B.txt
https://huggingface.co/nashikone/iroiroLoRA/blob/main/Wan2.1_i2v_720p_14B_fp16/T/tentacle_pit_wanvideo_i2v_epoch5.safetensors
https://huggingface.co/nashikone/iroiroLoRA/blob/main/Wan2.1_i2v_720p_14B_fp16/T/tentacle_pit_wanvideo_i2v_epoch5.txt
- 断面図LoRAv2
https://huggingface.co/nashikone/iroiroLoRA/blob/main/Wan2.2_i2v_A14B/S/sex_cross-section_high_wan-2-2_i2v_A14B_v2.safetensors
https://huggingface.co/nashikone/iroiroLoRA/blob/main/Wan2.2_i2v_A14B/S/sex_cross-section_high_wan-2-2_i2v_A14B_v2.txt
https://huggingface.co/nashikone/iroiroLoRA/blob/main/Wan2.1_i2v_720p_14B_fp16/S/sex_cross-section_wanvideo_i2v_epoch5.safetensors
https://huggingface.co/nashikone/iroiroLoRA/blob/main/Wan2.1_i2v_720p_14B_fp16/S/sex_cross-section_wanvideo_i2v_epoch5.txt
- アナル中出しLoRA
https://huggingface.co/nashikone/iroiroLoRA/blob/main/Wan2.2_i2v_A14B/A/anal_cum_in_ass_high_wan-2-2_i2v_A14B_v2.safetensors
https://huggingface.co/nashikone/iroiroLoRA/blob/main/Wan2.2_i2v_A14B/A/anal_cum_in_ass_high_wan-2-2_i2v_A14B_v2.txt
https://huggingface.co/nashikone/iroiroLoRA/blob/main/Wan2.2_i2v_A14B/A/anal_cum_in_ass_low_wan-2-2_i2v_A14B.safetensors
https://huggingface.co/nashikone/iroiroLoRA/blob/main/Wan2.2_i2v_A14B/A/anal_cum_in_ass_low_wan-2-2_i2v_A14B.txt
```
(tentacle pit, cross-section,anal:1.5) In a dimly lit, eerie chamber filled with writhing tentacles, a femboy with delicate features and soft, light brown hair is bound at the wrists with a sturdy wooden bar. Their hands are raised, fingers forming a peace sign, while their face contorts in a mix of surprise and pleasure. A hand grips their hair tightly, pulling their head back. The scene is filled with motion as the tentacles writhe and coil around the femboy, and streams of liquid drip down their body, glistening under the low light. The camera slowly zooms in, capturing the intense expressions and dynamic movements. The aesthetic is dark and moody, with high contrast lighting, cool colors, and a photorealistic style. The composition is dynamic, with the femboy centrally positioned, surrounded by the chaotic tentacles. The shot is a medium close-up, using a medium lens to emphasize the details of the femboy's expressions and the surrounding tentacles. The camera movement is a slow zoom-in, adding a sense of tension and intimacy to the scene.
```
```
(tentacle pit, cum in ass:1.5) In a dimly lit, eerie chamber filled with writhing tentacles, a femboy with delicate features and soft, light brown hair is bound at the wrists with a sturdy wooden bar. Their hands are raised, fingers forming a peace sign, while their face contorts in a mix of surprise and pleasure. A hand grips their hair tightly, pulling their head back. The scene is filled with motion as the tentacles writhe and coil around the femboy, and streams of liquid drip down their body, glistening under the low light. The camera slowly zooms in, capturing the intense expressions and dynamic movements. The aesthetic is dark and moody, with high contrast lighting, cool colors, and a photorealistic style. The composition is dynamic, with the femboy centrally positioned, surrounded by the chaotic tentacles. The shot is a medium close-up, using a medium lens to emphasize the details of the femboy's expressions and the surrounding tentacles. The camera movement is a slow zoom-in, adding a sense of tension and intimacy to the scene.
```
(おわり)
