Home Artists Posts Import Register

Content

1.はじめに

この記事では、画像素材を量産するための方法を考えていきます。


前回の記事で紹介した制作ワークフローは、大まかに説明すると次のようなものです。

①txt2imgで画像を複数枚生成し、画像素材とする。

②画像素材を合成・加工し、ベース画像とする。

③ベース画像をimg2img及びupscale(高解像度化)し、生成画像とする。

【解説】男の娘セックス画像生成ワークフロー

1. はじめに この記事では、男の娘セックス画像を生成するための制作ワークフローを紹介していきます。 なお、このワークフローは私が独自で使用しているものであり、より効率的なアプローチがある可能性が十分にあります。 あくまでも、参考情報としておいてください。 2. 前提条件 ■models\Stable-diffusion ■models\L...


この制作ワークフローの効率性で重要なポイントはいくつかありますが、そのポイントの一つに①での画像生成速度があります。

より多くの画像をより速く生成できれば、候補が多い分だけ意図する画像素材の入手確率が高まります。


また、ControlNet入力用の画像素材が欲しい場合(例:depth用深度情報画像)もあると思います。

その場合でも、量産できるに越したことはありません。

【小ネタ】ペニス形状コントロール(プロンプト例あり)

1.はじめに この記事では、画像生成AI(StableDiffusion1.5系)において、ペニスのサイズだけではなく、勃起具合や向き先も含めた形状のコントロール方法を考えていきます。 NSFW男の娘画像を生成できる環境下では、勃起状態のモノの生成は比較的簡単だと思います。 また、非勃起状態のモノの生成も、LoRAモデルで可能と...


画像素材を量産するためのアプローチを考えていきます。


2.考察

現在(2024/01/27)の状況ですと、次の2つを考えています。


①AnyLoRA_LCM


②StreamDiffusion



①AnyLoRA_LCM

AnyLoRA_LCMは、LCM LoRAと呼ばれる特別なLoRAモデルをマージしたAnyLoRAです。

・AnyLoRAは、StableDiffusionチェックポイントの一つで、幅広いアニメ系LoRAモデルに適合すると評判のモデルです。

・LCM LoRAは、StableDiffusionチェックポイントに適用することで、ステップ数をかなり少なくしても良いようになると言われています。SD1.5とSDXLで別のLoRAモデルが使われます。

https://huggingface.co/latent-consistency/lcm-lora-sdv1-5

https://huggingface.co/latent-consistency/lcm-lora-sdxl


例えば、ステップ数は20以上を使用することが多いですが、4程度でも形にできたりします。

生成例)

--model_id_or_path "C:/~/anyloraCheckpoint_lcm.safetensors" ^

--prompt "2boys, anal sex, yaoi, homoerotic, view from below, nude, smooth ass, high detail, realistic, 8k, high quality, masterpiece, depth of field, bokeh, highly detailed, sharp focus, intricate, elegant, fantasy, cinematic lighting" ^

--negative_prompt "worst quality, low quality, normal quality, lowres, monochrome, grayscale, signature, watermark, text, bad_hands, bad_anatomy" ^

--seed -1 ^

--frame_buffer_size 100 ^

--lora_dict "{'C:/~/Gay_anal_view_from_below.safetensors':0.8}"

※深度情報画像は、ControlNetのWebUI拡張機能で元画像をもとに取得できます。



AnyLoRA_LCMの使い方はシンプルで、Stable Diffusion web UI(AUTOMATIC1111版)を使われている方は、他のチェックポイントと同じようにロードして使えばよいです。

ただ、次の3点に注意する必要があります。


注意点1:Sampling stepsは低い値(例:4)を設定する。

注意点2:Sampling methodは特定のものを設定する。(サンプラーとの相性問題があります)

・Eular a

・DPM++ 2S a Karras

・LCM Sampler ※WebUIとは別にインストールする必要あり

注意点3:CFG Scaleは低い値(例:1.0~2.0)を設定する。


AnyLoRA_LCMにLoRAモデルを適用して画像生成を繰り返すことで、意図する画像素材を量産できそうです。


②StreamDiffusion

 ※筆者は現時点(2024/01/27)で、使用を断念しました。原因は「VRAM:12GB」のWindows環境にて、メモリ不足のエラーとなったためです。

StreamDiffusionは、WebUIのようにStableDiffusionチェックポイントを使用できるツールで、条件次第でリアルタイム画像生成(38枚/秒)ができるとされています。

 ※公式ページでの検証は「GPU: RTX 4090」で行われている点は注意してください。

具体的なインストール・使い方は、公式から解説動画が出ているので、そちらを見るのが良いと思います。

※公式の日本語解説記事


参考までに、txt2img目的で使用したコマンド例(Windows11のコマンドプロンプトから使用)は、次のものです。

 ※下記コマンドを使用する場合は、自己責任でお願いします。


【インストール時】

cd /d "任意のインストール先フォルダ(例:C:\Users\You\App\)"

git clone https://github.com/cumulo-autumn/StreamDiffusion.git

cd StreamDiffusion

python -m venv .venv

.\.venv\Scripts\activate

python -m pip install --upgrade pip

pip install torch==2.1.0 torchvision==0.16.0 xformers --index-url https://download.pytorch.org/whl/cu121

pip install git+https://github.com/cumulo-autumn/StreamDiffusion.git@main#egg=streamdiffusion[tensorrt]

python -m streamdiffusion.tools.install-tensorrt

pip install --force-reinstall pywin32


【使用時】

cd /d "StreamDiffusionのフォルダ(例:C:\Users\You\App\StreamDiffusion)"

.\.venv\Scripts\activate

python examples\txt2img\multi.py ^

--model_id_or_path "StableDiffusionチェックポイントのパス(例:C:/~/airoticartsPenis_10.ckpt)" ^

--prompt "プロンプト。ただし、75トークン以内。(例:a closeup photo of nude naked boy's flaccid penis, penflac, very detailed, 4k, Canon 5D, ZEISS lens, high quality)" ^

--negative_prompt "worst quality, low quality, normal quality, lowres, monochrome, grayscale, signature, watermark, text, bad_hands, bad_anatomy" ^

--seed -1 ^

--frame_buffer_size 枚数(例:30)


※examples\txt2img\multi.pyで、negative_prompt のオプションがなかったため、次のように追記して使っています。

""" examples\txt2img\multi.py """

import os

import sys

from typing import Literal, Dict, Optional


import fire


sys.path.append(os.path.join(os.path.dirname(__file__), "..", ".."))


from utils.wrapper import StreamDiffusionWrapper


CURRENT_DIR = os.path.dirname(os.path.abspath(__file__))



def main(

output: str = os.path.join(CURRENT_DIR, "..", "..", "images", "outputs",),

model_id_or_path: str = "KBlueLeaf/kohaku-v2.1",

use_lcm_lora: bool = True,

lora_dict: Optional[Dict[str, float]] = None,

prompt: str = "1girl with brown dog hair, thick glasses, smiling",

negative_prompt: str = "low quality, bad quality, blurry, low resolution",

width: int = 512,

height: int = 512,

frame_buffer_size: int = 3,

acceleration: Literal["none", "xformers", "tensorrt"] = "xformers",

seed: int = -1,

):

"""

Process for generating images based on a prompt using a specified model.


Parameters

----------

output : str, optional

The output image file to save images to.

model_id_or_path : str

The name of the model to use for image generation.

use_lcm_lora : bool, optional

Whether to use LCM-LoRA or not, by default True.

lora_dict : Optional[Dict[str, float]], optional

The lora_dict to load, by default None.

Keys are the LoRA names and values are the LoRA scales.

Example: {'LoRA_1' : 0.5 , 'LoRA_2' : 0.7 ,...}

prompt : str

The prompt to generate images from.

negative_prompt : str, optional

The negative prompt to use.

width : int, optional

The width of the image, by default 512.

height : int, optional

The height of the image, by default 512.

acceleration : Literal["none", "xformers", "tensorrt"]

The type of acceleration to use for image generation.

use_denoising_batch : bool, optional

Whether to use denoising batch or not, by default False.

seed : int, optional

The seed, by default 2. if -1, use random seed.

"""


os.makedirs(output, exist_ok=True)


t_index_list = [0, 16, 32, 45]

warmup = len(t_index_list) * frame_buffer_size + 1

stream = StreamDiffusionWrapper(

model_id_or_path=model_id_or_path,

lora_dict=lora_dict,

t_index_list=t_index_list,

frame_buffer_size=frame_buffer_size,

width=width,

height=height,

warmup=warmup,

acceleration=acceleration,

mode="txt2img",

use_denoising_batch=False,

cfg_type="none",

use_lcm_lora=use_lcm_lora,

seed=seed,

)


stream.prepare(

prompt=prompt,

negative_prompt=negative_prompt,

num_inference_steps=50,

)


output_images = stream()

for i, output_image in enumerate(output_images):

output_image.save(os.path.join(output, f"{i:03}.png"))


if __name__ == "__main__":

fire.Fire(main)

""" ファイル終わり """


筆者の場合は、上のコマンドでtxt2imgをすることはできたのですが、速度はあまり出ませんでした。

おそらくは、

--acceleration "tensorrt"

を指定に含めると(初回以外は)速くなると思うのですが、後は冒頭に書いた通りです。



3.おわりに

WebUIに並ぶツールである「ComfyUI」や、背景除去・マスク画像作成に使える「Transparent-Background」、不要描画物を指定除去できる「Lama Cleaner」など、便利なツールは数あります。

その中に「LCM LoRA」や「StreamDiffusion」があり、かつ、紹介した制作ワークフローにも組み込めそうだったので、考察してみました。


更に成長を遂げたあなたの作品を、お待ちしております。


(おわり)

Files

Comments

No comments found for this post.