CivArchive
    Underview - Z-Image Penis Model - v2.0
    NSFW
    Preview 114863479
    Preview 114863464
    Preview 114870383
    Preview 114864801
    Preview 114863487
    Preview 114863857

    Underview v1 - A Penis Model for Z-Image

    This model is version 4 of attempting to train male anatomy with z-image turbo. I used the z-image de-turbo model provided by Ostris's Ai-Toolkit. After many attempts, I found that training at a high step count (this model is at 12k steps with 50 images at 512px with the de-turbo preset) and essentially over-baking allowed a low strength to be used so that quality of the image isn't badly degraded. This model is best used with a strength of 0.50-0.67, the quality should be similar to base (or better) and remains very flexible in outputs. It works best with a CFG more than 1 but less 3, I usually use 1.8 at 12-20 steps. You may need to do a low de-noise after to get some finer details. The model was trained with captions provided with the AutoDescribe-Images tool provided by hydropix on github. The trigger word is Underview, I specifically avoided training images of the top part of the glans as loras tend to get confused on which way is top or below, so keep vantage points at a lower angle and expect to get gens with the penis pointed up or to the side.

    Underview v2


    v2 is a modified version of v1 with an improved and much more consistent output. thanks to the amazing RealTimeLora v2 node shootthesound made!

    After trial and error, the layers 24, 27, 28, and 29 could be turned off and eliminate most of the unwanted noise/artifacts that are present when the lora gets to full strength.

    The lora also seems to understand higher angle views now, keeping it named "Underview" may be underselling it.

    The RealTimeLora node pack also comes with a lora scheduling node that greatly improves the output.

    The best schedule for the lora is (0:0, 0.2:0.65, 0.85:1, 1:0.65).

    The v2 workflow is here: Underview v2 Workflow

    The v1 version of the lora is still recommended to be used as a base pass (0.65 strength) before passing it to the v2 lora (with the above strength schedule).

    v1 is better at following the prompted body types if you are wanting a less defined physique.

    Description

    v2 is a modified version of v1 with an improved and much more consistent output, thanks to the amazing RealTimeLora v2 node shootthesound made!

    After trial and error, the layers 24, 27, 28, and 29 could be turned off and eliminate most of the unwanted noise/artifacts that are present when the lora gets to full strength.

    The lora also seems to understand higher angle views now, keeping it named "Underview" may be underselling it.

    The RealTimeLora node pack also comes with a lora scheduling node that greatly improves the output.

    The best schedule for the lora is (0:0, 0.2:0.65, 0.85:1, 1:0.65).

    The v2 workflow is here: Underview v2 Workflow

    The v1 version of the lora is still recommended to be used as a base pass (0.65 strength) before passing it to the v2 lora (with the above strength schedule).

    v1 is better at following the prompted body types if you are wanting a less defined physique.

    FAQ

    Comments (10)

    HairyAIDec 24, 2025· 4 reactions
    CivitAI

    Any tips creating the lora? I've been fighting with AI-Toolkit for days! What settings did you use? Thank you!

    hhhhotAIJan 31, 2026

    do you find any solution?

    HairyAIJan 31, 2026

    @hhhhotAI i gave up lol

    nte8
    Author
    Feb 3, 2026· 1 reaction

    The best advice I can give is to make sure your training images are as high quality as possible, as any noise/artifacts in the base image WILL be present in the lora. I mostly use RAW images that have a resolution over 4000x4000px that I then crop/resize to a lower resolution.

    These were my ai-toolkit settings for v1, I manually modified the layers afterwards to create v2
    ---------------------------------------------------------------------------------------------------------
    job: extension

    config:

    name: zimage_uncutgems_v1

    process:

    - type: diffusion_trainer

    training_folder: /app/ai-toolkit/output

    sqlite_db_path: /app/ai-toolkit/aitk_db.db

    device: cuda

    trigger_word: null

    performance_log_every: 10

    network:

    type: lora

    linear: 64

    linear_alpha: 64

    conv: 16

    conv_alpha: 16

    lokr_full_rank: true

    lokr_factor: -1

    network_kwargs:

    ignore_if_contains: []

    save:

    dtype: bf16

    save_every: 250

    max_step_saves_to_keep: 30

    save_format: diffusers

    push_to_hub: false

    datasets:

    - folder_path: /app/ai-toolkit/datasets/zimage_uncutgems

    mask_path: null

    mask_min_value: 0.1

    default_caption: ''

    caption_ext: txt

    caption_dropout_rate: 0.05

    cache_latents_to_disk: false

    is_reg: false

    network_weight: 1

    resolution:

    - 512

    controls: []

    shrink_video_to_frames: true

    num_frames: 1

    do_i2v: true

    flip_x: false

    flip_y: false

    train:

    batch_size: 1

    bypass_guidance_embedding: false

    steps: 6500

    gradient_accumulation: 1

    train_unet: true

    train_text_encoder: false

    gradient_checkpointing: true

    noise_scheduler: flowmatch

    optimizer: adamw8bit

    timestep_type: weighted

    content_or_style: balanced

    optimizer_params:

    weight_decay: 0.0001

    unload_text_encoder: false

    cache_text_embeddings: false

    lr: 0.0001

    ema_config:

    use_ema: false

    ema_decay: 0.99

    skip_first_sample: true

    force_first_sample: false

    disable_sampling: true

    dtype: bf16

    diff_output_preservation: false

    diff_output_preservation_multiplier: 1

    diff_output_preservation_class: person

    switch_boundary_every: 1

    loss_type: mse

    model:

    name_or_path: ostris/Z-Image-De-Turbo

    quantize: true

    qtype: qfloat8

    quantize_te: true

    qtype_te: qfloat8

    arch: zimage:deturbo

    low_vram: true

    model_kwargs: {}

    layer_offloading: false

    layer_offloading_text_encoder_percent: 1

    layer_offloading_transformer_percent: 1

    extras_name_or_path: Tongyi-MAI/Z-Image-Turbo

    sample:

    sampler: flowmatch

    sample_every: 250

    width: 1024

    height: 1024

    samples: []

    neg: ''

    seed: 42

    walk_seed: true

    guidance_scale: 3

    sample_steps: 25

    num_frames: 1

    fps: 1

    meta:

    name: zimage_uncutgems_v1

    version: '1.0'

    SunInShadowJan 28, 2026
    CivitAI

    It works perfectly fine. It works with all my Loras. It even works with my anime and cartoon-style Loras. Anthromorphic Loras are a little problematic, but they still work. It also works when I apply my cartoon Loras realistically.

    wdwd132Feb 26, 2026
    CivitAI

    it's still the best lora so far -
    but I was hoping that you could put more asian man in dataset when training so we don't get bias result

    zramirez075Mar 6, 2026
    CivitAI

    Hello, Can I get please base workflow to run this model? Not sure to set the right options in the ksamplr.

    royrychou346Mar 6, 2026
    CivitAI

    This is the best lora ever, Plz we need Z image base ver.

    Curtis_1995Apr 6, 2026
    CivitAI

    best erect penis lora then kill the game. really need a zit or base bulge lora

    suhooweiApr 11, 2026
    CivitAI

    these on galleries are godsend. we gayz are so creative i love it and thank you for all ur workflows