I was trying to upscale this image in img2img to 1024x1024 and was really struggling. I couldn’t preserve the patterns in her gown and for some reason the gown wouldn’t stay in her right hand, it’d fall against her leg, and was longer for some reason. Trying to force-correct these things often ended up with distortions. Any ideas?

Example of fail

Here’s the generation for the 512x512 above:

Prompt:

extremely detailed CG, high resolution, beautiful detailed eyes, Corinna, (french braid:1.2), adorable, standing, looking back over her shoulder, cheerful, smile, thin legs, sheer nightgown

Negative prompt:

3d, 3d render, painting, digital painting, watermark, sepia, black & white, NG_DeepNegative_V1_75T, EasyNegative, verybadimagenegative_v1.3, bad_pictures, (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, ((monochrome)), ((grayscale)), (ugly:1.33), bad face, bad fingers, bad anatomy, spot, (poorly eyes:1.2), pubic hair, pubes, hairy, missing fingers, long hair, ((butt)), ((thick legs))

Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 2809846013, Size: 512x512, Model hash: 0c874641a9, Model: myneFactoryAscendance_v20, Version: v1.4.0

Used embeddings: easynegative [119b], verybadimagenegative_v1.3 [89de]

  • Whompus@burggit.moe
    link
    fedilink
    arrow-up
    5
    ·
    edit-2
    1 year ago
    Here's your image upscaled 4x and with a fixed face

    The hands and panties normally would be fixed via inpainting before upscaling, but that’s not what this is about.

    This was done in a single img2img generation using a few extensions: ADetailer, Multidiffusion Upscaler, and ControlNet. I left the prompt and negative prompt blank, relying on ControlNet Inpaint to keep the image consistent. Multidiffusion (with support from ControlNet Tile) did the upscaling, and I pasted your prompt into ADetailer to fix the face.

    Image metadata

    Steps: 20, Sampler: Euler, CFG scale: 7, Seed: 2809846013, Size: 2048x2048, Model hash: 0c874641a9, Model: myneFactoryAscendance_v20, Denoising strength: 0.5, ADetailer model: face_yolov8n.pt, ADetailer prompt: "extremely detailed CG, high resolution, beautiful detailed eyes, Corinna, (french braid:1.2), adorable, standing, looking back over her shoulder, cheerful, smile, thin legs, sheer nightgown", ADetailer negative prompt: "3d, 3d render, painting, digital painting, sepia, black & white, easynegative, verybadimagenegative, (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, ((monochrome)), ((grayscale)), (ugly:1.33), bad face, spot, (poorly eyes:1.2)", ADetailer confidence: 0.3, ADetailer dilate/erode: 32, ADetailer mask blur: 4, ADetailer denoising strength: 0.4, ADetailer inpaint only masked: True, ADetailer inpaint padding: 32, ADetailer use inpaint width/height: True, ADetailer inpaint width: 512, ADetailer inpaint height: 512, ADetailer version: 23.7.5, Tiled Diffusion upscaler: 4x-UltraSharp, Tiled Diffusion scale factor: 4, Tiled Diffusion: {"Method": "MultiDiffusion", "Tile tile width": 96, "Tile tile height": 96, "Tile Overlap": 8, "Tile batch size": 4, "Upscaler": "4x-UltraSharp", "Upscale factor": 4, "Keep input size": true, "NoiseInv": true, "NoiseInv Steps": 10, "NoiseInv Retouch": 1, "NoiseInv Renoise strength": 1, "NoiseInv Kernel size": 64}, ControlNet 0: "preprocessor: inpaint_global_harmonious, model: controlnet11Models_inpaint [be8bc0ed], weight: 1, starting/ending: (0, 1), resize mode: Crop and Resize, pixel perfect: True, control mode: ControlNet is more important, preprocessor params: (512, 64, 64)", ControlNet 1: "preprocessor: tile_resample, model: controlnet11Models_tileE [e47b23a8], weight: 1, starting/ending: (0, 1), resize mode: Crop and Resize, pixel perfect: True, control mode: Balanced, preprocessor params: (512, 1, 64)", Version: v1.4.0

    • Nobu@burggit.moe
      link
      fedilink
      arrow-up
      3
      ·
      1 year ago

      Heck yeah, never tried doing it this way. will have to see what i can do with this :D Thanks

    • Pink Bow@burggit.moeOP
      link
      fedilink
      arrow-up
      2
      ·
      1 year ago

      Oh wow, this is excellent and is going to help me a lot. Thank you very much for the tutorial!

  • Nobu@burggit.moe
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    1 year ago

    You can always try upscaling without re-rendering the whole image. It will stay the same, but upscaled to a higher resolution. This is the method i use to upscale to big resolution.

    example:

    The above image has a resolution of: 5120 x 2880

    Initial render was 512 x 768. So it keeps the whole image intact, no changes, but does the upscale on it. Mind you, any imperfections will stay in this method.

    If you truely want to upscale with a re-render you can expect the image to slightly change. I never had luck keeping an image to stay the exact same when upscaling using img2img

    • Pink Bow@burggit.moeOP
      link
      fedilink
      arrow-up
      1
      ·
      1 year ago

      Perhaps I’m doing things wrong, but I want the image to change slightly. To me, her face looks way better in the img2img, even if other things got changed. Perhaps I need to work on getting the txt2img to render more correctly rather than using img2img as a crutch.

      • Nobu@burggit.moe
        link
        fedilink
        arrow-up
        2
        ·
        1 year ago

        Correct! you want to do it in txt2img first (render really good image). only THEN do you wanna upscale it (not via img2img as it will take a shit ton of time and change the image slightly). u want to do it via extras tab then, and then choosing a method to upscale. i can tell you exactly what you need, how to do it in future if u want. go with you step by step

  • LongerDonger@burggit.moe
    link
    fedilink
    arrow-up
    2
    ·
    1 year ago

    What about upscaling it normally and then using img2img with a really weak strength (or whatever its called when you turn the noise option up high and it makes the image mostly the same, I don’t remember the name of it). Or maybe just try that without even upscaling it first, just play around with that noise setting, high values should make the image change less.

      • LongerDonger@burggit.moe
        link
        fedilink
        arrow-up
        1
        ·
        1 year ago

        Yeah, that’s the one. Keeping that pretty high will only change the image a slight bit, and should therefore keep OP’s image mostly intact (with the added benefit of being processed at a higher resolution)

  • pinecone@burggit.moe
    link
    fedilink
    arrow-up
    2
    ·
    1 year ago

    If you don’t use hires fix during generation, you can also upscale afterwards by using the hires fix upscalers in the extras tab in the web-ui.

    • Nobu@burggit.moe
      link
      fedilink
      arrow-up
      1
      ·
      edit-2
      1 year ago

      Going with what pinecone mentioned here, this is what i do most of the time. like 9.99/10 of the time.

      Basically, hires fix > base resolution of 512x768 (by upscaling with 2, which will generate an end image of 1024x1536).

      then u can move that gorgeous (but tiny resolution) image to your extras, to then get 5120 x 2880 or whatever resolution

      PS: a cool method to use for horizontal images (like wallpapers) instead of vertical like phone wallpapers, is to switch the values. so instead of 512x768 u can do 768x512

  • awoo@burggit.moe
    link
    fedilink
    arrow-up
    1
    ·
    1 year ago

    An alternative to img2img is to simply use the highres fix scaling when you generate it. IMO if you have the original setup (prompt, seed, model, embedding, lora, etc) as opposed to only the output image, you should always give highres fix scaling a try.