# - HotArt3-SPO >

This version adds Step-aware Preference Optimization (SPO) LORA, [a novel post-training approach that independently evaluates and adjusts the denoising performance at each step, using a step-aware preference model and a step-wise resampler to ensure accurate step-aware supervision... blah, blah, blah = makes the output way artfully beautiful, a.k.a. - NICER !!!]

P.S.: The SPO approach is better than Direct Preference Optimization (DPO) that has extended its success from aligning large language models (LLMs) to aligning text-to-image diffusion models with human preferences. Unlike most existing DPO methods, which assume that all diffusion steps share a consistent preference order with the final generated images, this assumption neglects step-specific denoising performance and that preference labels should be tailored to each step's contribution.

## Overview - **Model ID**: `hotart3spo` - **Category**: stable diffusion xl - **Provider**: modelslab - **Status**: model_ready - **Screenshot**: `https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/67a67e2e-16bb-4e51-99c7-252fbc81a5d7/width=832/18968425.jpeg` ## API Information This model can be used via our HTTP API. See the API documentation and usage examples below. ### Endpoint - **URL**: `https://modelslab.com/api/v6/images/text2img` - **Method**: POST ### Parameters - **`prompt`** (required): prompt help in image generation - Type: textarea - Example: Enter prompt - **`model_id`** (required): Enter model_id that can help in image generation - Type: text - Example: Enter model_id here - **`lora_model`** (required): - Type: multiple_models - **`width`** (required): width of the image - Type: number (range: 512-1024) - **`height`** (required): height of the image - Type: number (range: 512-1024) - **`negative_prompt`** (optional): Negative prompt help in avoid things that you do not want in image - Type: textarea - Example: Enter negative prompt that you do not want see in image - **`scheduler`** (optional): - Type: select (options: DPM++ 2M, DPM++ SDE, Euler, Euler a) - **`guidance_scale`** (optional): - Type: number (range: 1-10) ## Usage Examples ### cURL ```bash curl --request POST \ --url https://modelslab.com/api/v6/images/text2img \ --header "Content-Type: application/json" \ --data '{ "key": "YOUR_API_KEY", "model_id": "hotart3spo", "prompt": "R3alisticF, hauntingly beautiful oriental necromancer, long flowing brown hair, bangs, darkly tanned skin, earrings, bone necklaces, dark eyeshadow, red lips, vibrant, front-laced transparent, filmy silk blouse, cleavage, holding skull, in a sandstone room lit by candles, High Detail, Perfect Composition, high contrast, silhouetted, chiascuro", "width": "1024", "height": "1024", "negative_prompt": "(worst quality:2), (low quality:2), (normal quality:2), (jpeg artifacts), (blurry), (duplicate), (morbid), (mutilated), (out of frame), (extra limbs), (bad anatomy), (disfigured), (deformed), (cross-eye), (glitch), (oversaturated), (overexposed), (underexposed), (bad proportions), (bad hands), (bad feet), (cloned face), (long neck), (missing arms), (missing legs), (extra fingers), (fused fingers), (poorly drawn hands), (poorly drawn face), (mutation), (deformed eyes), watermark, text, logo, signature, grainy, tiling, censored, nsfw, ugly, blurry eyes, noisy image, bad lighting, unnatural skin, asymmetry", "scheduler": "DPMSolverMultistepScheduler", "guidance_scale": "7.5" }' ``` ### Python ```python import requests response = requests.post( "https://modelslab.com/api/v6/images/text2img", headers={ "Content-Type": "application/json" }, json={ "key": "YOUR_API_KEY", "model_id": "hotart3spo", "prompt": "R3alisticF, hauntingly beautiful oriental necromancer, long flowing brown hair, bangs, darkly tanned skin, earrings, bone necklaces, dark eyeshadow, red lips, vibrant, front-laced transparent, filmy silk blouse, cleavage, holding skull, in a sandstone room lit by candles, High Detail, Perfect Composition, high contrast, silhouetted, chiascuro", "width": "1024", "height": "1024", "negative_prompt": "(worst quality:2), (low quality:2), (normal quality:2), (jpeg artifacts), (blurry), (duplicate), (morbid), (mutilated), (out of frame), (extra limbs), (bad anatomy), (disfigured), (deformed), (cross-eye), (glitch), (oversaturated), (overexposed), (underexposed), (bad proportions), (bad hands), (bad feet), (cloned face), (long neck), (missing arms), (missing legs), (extra fingers), (fused fingers), (poorly drawn hands), (poorly drawn face), (mutation), (deformed eyes), watermark, text, logo, signature, grainy, tiling, censored, nsfw, ugly, blurry eyes, noisy image, bad lighting, unnatural skin, asymmetry", "scheduler": "DPMSolverMultistepScheduler", "guidance_scale": "7.5" } ) print(response.json()) ``` ### JavaScript ```javascript fetch("https://modelslab.com/api/v6/images/text2img", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ "key": "YOUR_API_KEY", "model_id": "hotart3spo", "prompt": "R3alisticF, hauntingly beautiful oriental necromancer, long flowing brown hair, bangs, darkly tanned skin, earrings, bone necklaces, dark eyeshadow, red lips, vibrant, front-laced transparent, filmy silk blouse, cleavage, holding skull, in a sandstone room lit by candles, High Detail, Perfect Composition, high contrast, silhouetted, chiascuro", "width": "1024", "height": "1024", "negative_prompt": "(worst quality:2), (low quality:2), (normal quality:2), (jpeg artifacts), (blurry), (duplicate), (morbid), (mutilated), (out of frame), (extra limbs), (bad anatomy), (disfigured), (deformed), (cross-eye), (glitch), (oversaturated), (overexposed), (underexposed), (bad proportions), (bad hands), (bad feet), (cloned face), (long neck), (missing arms), (missing legs), (extra fingers), (fused fingers), (poorly drawn hands), (poorly drawn face), (mutation), (deformed eyes), watermark, text, logo, signature, grainy, tiling, censored, nsfw, ugly, blurry eyes, noisy image, bad lighting, unnatural skin, asymmetry", "scheduler": "DPMSolverMultistepScheduler", "guidance_scale": "7.5" }) }) .then(response => response.json()) .then(data => console.log(data)); ``` ## Links - [Model Playground](https://modelslab.com/models/community-model/hotart3spo) - [API Documentation](https://docs.modelslab.com) - [ModelsLab Platform](https://modelslab.com)