608 MB
16 files
Updated 5 days ago
Name
Size
.gitattributes1.99 kB
xet
LICENSE2.41 kB
xet
README.md21.3 kB
xet
prompts.txt1.31 MB
xet
t1.png1.49 MB
xet
t10.png1.55 MB
xet
t11.png1.38 MB
xet
t2.png1.39 MB
xet
t3.png1.42 MB
xet
t4.png1.71 MB
xet
t5.png1.32 MB
xet
t6.png1.51 MB
xet
t7.png1.49 MB
xet
t8.png1.32 MB
xet
t9.png1.55 MB
xet
tumblr.safetensors590 MB
xet
README.md

Tumblr NudeShot NSFW LoRA v1

Visitors

Cover

A Little NSFW Tumblr Archaeology 🏺🔞

This LoRA was trained largely on pre-2018 Tumblr-era NSFW data—from that ancient period of internet history when Tumblr was... well, a very different place.

If you were there, you probably remember.

This was before the great purge. Before the internet became politically correct, advertiser-approved, algorithmically house-trained, and covered in enough safety labels to make a microwave oven feel dangerously libertarian.

Back then, an image did not need permission from three recommendation systems, four content policies, Legal, Marketing, Trust & Safety, the advertising department, and an AI moderator that becomes emotionally distressed by the approximate geometry of a nipple.

Old Tumblr was not optimized.

It was barely supervised.

Professional photography lived next to terrible phone pictures. Amateur art lived next to accidental masterpieces. Beautiful lighting competed with compression artifacts, questionable composition, chaotic tagging, and images reposted so many times that every JPEG looked like it had survived a small war.

Nobody asked whether something was “brand-safe,” because most Tumblr blogs did not have brands. They had usernames like sad-goth-mermaid-1993, seventeen broken links, an autoplay song, and absolutely no business model.

Its natural habitat contained photography, amateur work, strange aesthetics, dubious taste, beautiful accidents, and an unlimited supply of:

“I clicked one link. How have I been scrolling for three hours?”

The algorithm was present, of course—but it had not yet been promoted to Supreme Global Minister of Human Attention.

Then 2018 arrived.

The platforms discovered political correctness. Advertisers discovered anxiety. Executives discovered the word “safety.” Everyone discovered that the human body was apparently a serious threat to quarterly revenue.

Millions of blogs disappeared.

The internet became cleaner, safer, friendlier, more inclusive, more responsible—and somehow developed the personality of an airport waiting lounge.

But apparently, not everything vanished.

Some of the old JPEGs escaped the corporate memory hole. They migrated through abandoned blogs, dead links, mysterious ZIP files, aging hard drives, and folders named things like new, new2, final, and final_REAL_THIS_TIME.

Years later, a ridiculous quantity of those pixels was fed to a GPU and compressed into a .safetensors file—because when historians refused to preserve old Tumblr, apparently the responsibility fell to a graphics card.

So if you feel nostalgic for old NSFW Tumblr—not necessarily because it was better, but because the internet was undeniably stranger, less obedient, and more human—you may recognize some of its visual DNA here.

Tumblr moved on. The blogs disappeared. The links died. The JPEGs survived. And now the ghosts live inside my LoRA. 👻

Consider this less of an AI model and more of a questionable piece of internet archaeology, excavated from the era before creativity required written approval from Legal, Marketing, Trust & Safety, seventeen advertisers, and a deeply concerned language model.

No museum ticket required.

Please do not touch the exhibits.

The algorithm is watching—and it has already marked this paragraph as “not suitable for most advertisers.”


✨ Features

  • Pre-2018 Tumblr-era photographic visual DNA
  • Realistic and amateur-photography characteristics
  • Varied indoor, outdoor, domestic, beach, and studio environments
  • Natural lighting, skin texture, framing, and camera imperfections
  • A broad mixture of polished photography and beautiful accidents
  • A dedicated optional token for detail-focused generations
  • Designed for adult artistic and archival-style NSFW image generation

🖥️ Training Details

Hardware

  • GPU: NVIDIA RTX PRO 6000 Blackwell 96GB

Dataset and Training

  • Training images: 11,109
  • Dataset character: largely pre-2018 Tumblr-era adult NSFW photography
  • Inference base model: Qwen/Qwen-Image-2512 T2I
  • LoRA rank: 32
  • Batch size: 8
  • Final checkpoint: Step 6,000

Trigger Words

Use the main trigger for normal generation:

zl_tumblr_v1

For prompts that specifically need the detail-focused subset learned from the training captions, use both triggers together:

zl_tumblr_v1, zl_tumblr_detailed_v1

The detailed trigger is optional. It was attached only to captions whose source descriptions explicitly identified the corresponding local anatomical detail. It should be used together with the main trigger, not as a replacement for it.


⚠️ Base Model Compatibility

This LoRA is compatible with and intended for Qwen/Qwen-Image-2512 Text-to-Image generation. The Python examples below use that base model.

Compatibility with Qwen-Image-Edit or unrelated model architectures is not guaranteed. A different base checkpoint may produce weak effects, visual artifacts, incorrect colors, or a loading error.


🔍 Scope and Limitations

This LoRA learns visual patterns from a large and varied collection of older internet photography. The source material was not a controlled studio dataset, which is part of its character but also part of its limitations.

Results may contain:

  • inconsistent anatomy, hands, fingers, feet, or limbs
  • duplicated, missing, or merged body parts
  • inaccurate local anatomy in difficult angles
  • dated compression, blur, noise, or low-resolution artifacts
  • inconsistent lighting or white balance
  • unpredictable framing, backgrounds, or camera quality
  • visual biases inherited from the source material

Prompt wording, seed, resolution, inference steps, LoRA weight, and the selected base model all affect the result. This is not an anatomical, medical, or historical archive model. Review generated output carefully.


🖼️ Examples

The following ten images were generated with this LoRA. All subjects described in the prompts are adults.


Example 1

Example 1

Prompt

zl_tumblr_v1, This is a close-up photograph of a nude woman from the back, focusing on her lower body and buttocks. She is wearing a turquoise bikini bottom, which is being pulled down by her right hand, revealing her buttocks. The bikini bottom has a string tie on the side. Her skin is light and smooth, and her body is slender with a defined waist. The background is blurred but appears to be an outdoor setting with bright, natural light, possibly a beach or a poolside. The overall tone of the image is soft and warm, with a focus on the contrast between the turquoise bikini and the natural skin tone. The photograph is taken from a slightly low angle, emphasizing the curves of her buttocks and the action of her hand pulling the bikini.

Example 2

Example 2

Prompt

zl_tumblr_v1, This is a photograph of a nude woman with light skin and long, wavy brown hair. She is standing on her tiptoes on a small, round table with a light-colored surface and a chrome base. The woman is bending forward, with her back arched and her head lowered, looking back towards the camera. Her legs are together, and her buttocks are prominently displayed in the center of the image. She is not wearing any clothing. The background features a plain, light-colored wall with a large, round clock mounted on it. The clock has a white face with black numbers and hands, and a silver frame. To the left of the image, there is a partial view of a green plant with long, thin leaves. The lighting in the room is soft and natural, suggesting it might be daytime. The overall setting appears to be a simple, domestic interior, possibly a kitchen or dining area.

Example 3

Example 3

Prompt

zl_tumblr_v1, The image is a photograph of a nude woman sitting on a white toilet in a bathroom. The woman has light skin and long, straight brown hair that cascades down her back. She is positioned with her legs spread apart, her left leg bent and her right leg straight. Her left hand is resting on her right thigh, holding a purple lace underwear, while her right hand is raised, touching her hair. Her facial expression is neutral, and she is looking slightly downward. The bathroom features blue mosaic tiles on the walls and floor, creating a vibrant and modern aesthetic. The toilet is positioned against a wall with a white radiator on the right side. A white towel rack is mounted on the wall to the left of the toilet, and a roll of toilet paper is on the rack. The lighting in the bathroom is bright and even, highlighting the details of the tiles and the woman's body. The overall scene is clean and well-maintained.

Example 4

Example 4

Prompt

zl_tumblr_v1, The image is a close-up photograph of a nude woman from the side, focusing on her lower back and buttocks. Her skin is light and smooth, with a subtle sheen, suggesting a soft, warm light source. Her long, straight, light brown hair cascades down her back, partially obscuring her right shoulder. Her right arm is extended forward, with her hand reaching towards a white coffee cup placed on a small, round, beige table. The coffee cup has a blue logo on it, which is partially visible. Her fingers are long and slender, with neatly manicured nails painted a light, neutral color. The background is softly blurred, featuring warm, muted tones of beige and light brown, suggesting an indoor setting, possibly a bedroom or a cozy living space. The overall atmosphere of the image is intimate and serene.

Example 5

Example 5

Prompt

zl_tumblr_v1, This is a detailed and explicit caption for the AI-generated image: A nude woman with long, wet, blonde hair is depicted in a dark, moody setting. She is drinking milk from a glass bottle, with the milk splashing and dripping down her body, creating a stark contrast against her pale skin. Her facial expression is one of intense pleasure, with her eyes closed and mouth open. Her breasts are small to medium-sized with nipples, and her body is slender with a flat stomach. The milk is visibly splashing and dripping down her torso, thighs, and legs, creating a dynamic and fluid effect. Her right hand is gripping the bottle, while her left hand rests on her hip. The background is blurred and dark, focusing attention on the woman and the milk. The overall atmosphere is sensual and provocative, emphasizing the woman's pleasure and the fluidity of the milk.

Example 6

Example 6

Prompt

zl_tumblr_v1, This is a photograph of a nude woman with long, dark hair and a tan complexion, positioned on a light brown, cushioned ottoman. She is lying on her back with her legs spread wide apart, exposing her genital area. Her arms are bent, and her hands rest on the ottoman. She has a small orange hair accessory in her hair. The background features a large, black and white poster of a woman wearing a black choker and a black bra, which partially obscures the view. The floor is covered with large, dark gray tiles. The overall setting appears to be indoors, possibly a studio or a private space.

Example 7

Example 7

Prompt

zl_tumblr_v1, zl_tumblr_detailed_v1, The image features a nude woman sitting on a black stool with her legs spread apart, revealing her buttocks and genitals. Her back is facing the camera, showcasing her smooth skin and the curve of her spine. Her hair is dark and straight, falling just past her shoulders. The background is a textured gray wall, which contrasts with her light skin tone. The stool has a black cushion and a metallic base. The lighting is soft, highlighting the contours of her body and creating subtle shadows. The overall composition is minimalist and focused on the subject's form and pose.

Example 8

Example 8

Prompt

zl_tumblr_v1, zl_tumblr_detailed_v1, This is a photograph of an adult nude woman sitting on a tiled balcony with white balustrades. She has a slim build, medium-length brown hair styled in loose waves, and is wearing a black headband. Her skin tone is light, and she has a natural, relaxed expression with a slight smile. She is holding a pair of black high-heeled sandals in her left hand, while her right hand rests on her right thigh. Her legs are spread apart, revealing her pubic hair and vulva. The background features a clear blue sky and a distant view of the ocean, with some greenery on the left side. The balcony tiles are light beige, and the balustrades have a classic, ornate design with cylindrical columns. The lighting is bright and natural, suggesting it is daytime.

Example 9

Example 9

Prompt

zl_tumblr_v1, An adult woman with light skin is kneeling on a tiled floor in an office setting. She is completely nude, except for a pair of black high heels and white knee-high socks. Her hair is styled in pigtails, and she is looking back over her shoulder with a slight smile. She is positioned in front of a black office chair with a gray checkered cloth draped over it. Behind her, there is a glass desk with a laptop and some papers on it. The room has a neutral color palette with beige walls and white trim. The overall scene is well-lit, suggesting it is daytime.

Example 10

Example 10

Prompt

zl_tumblr_v1, The image features an adult woman standing in front of a mirror, partially undressed. She is wearing a brown top that she is pulling down with her right hand, revealing her bare back and buttocks. Her left hand is placed on her chest. The woman has long, wavy blonde hair and fair skin. She is positioned in a dimly lit room with a wooden door and a beige wall in the background. The mirror reflects her image, showing her from the side and slightly from the back. The overall atmosphere of the image is intimate and private.

📄 Training Prompts

The repository includes a larger prompt collection derived from the training caption set. Each prompt occupies one line and can be reused or adapted for testing and sample generation.

Download prompts.txt


🚀 Reference Code — Qwen-Image-2512 T2I

This example loads Qwen-Image-2512 in BF16, fuses the official community Lightning 4-step adapter, and applies the Tumblr LoRA at weight 1.0. A high-memory CUDA GPU is recommended.

Installation

pip install -U diffusers transformers accelerate peft safetensors

Python

import math

import torch
from diffusers import DiffusionPipeline, FlowMatchEulerDiscreteScheduler


BASE_MODEL_ID = "Qwen/Qwen-Image-2512"

LIGHTNING_MODEL_ID = "lightx2v/Qwen-Image-2512-Lightning"
LIGHTNING_WEIGHT_NAME = (
    "Qwen-Image-2512-Lightning-4steps-V1.0-bf16.safetensors"
)

LORA_MODEL_ID = "perpetual3x/Tumblr-NudeShot-NSFW-LoRA-v1"
LORA_WEIGHT_NAME = "tumblr.safetensors"

DEVICE = "cuda"
DTYPE = torch.bfloat16


# Scheduler
scheduler_config = {
    "base_image_seq_len": 256,
    "base_shift": math.log(3),
    "invert_sigmas": False,
    "max_image_seq_len": 8192,
    "max_shift": math.log(3),
    "num_train_timesteps": 1000,
    "shift": 1.0,
    "shift_terminal": None,
    "stochastic_sampling": False,
    "time_shift_type": "exponential",
    "use_beta_sigmas": False,
    "use_dynamic_shifting": True,
    "use_exponential_sigmas": False,
    "use_karras_sigmas": False,
}

scheduler = FlowMatchEulerDiscreteScheduler.from_config(scheduler_config)


pipe = DiffusionPipeline.from_pretrained(
    BASE_MODEL_ID,
    scheduler=scheduler,
    torch_dtype=DTYPE,
).to(DEVICE)

# Fuse the 4-step Lightning adapter.
pipe.load_lora_weights(
    LIGHTNING_MODEL_ID,
    weight_name=LIGHTNING_WEIGHT_NAME,
    adapter_name="lightning",
)
pipe.fuse_lora(adapter_names=["lightning"], lora_scale=1.0)
pipe.unload_lora_weights()

# Load Tumblr NudeShot LoRA.
pipe.load_lora_weights(
    LORA_MODEL_ID,
    weight_name=LORA_WEIGHT_NAME,
    adapter_name="tumblr",
)
pipe.set_adapters(["tumblr"], adapter_weights=[1.0])

prompt = (
    "zl_tumblr_v1, an adult woman in a pre-2018 Tumblr-era photograph, "
    "natural skin texture, candid composition, soft available light, "
    "subtle vintage internet photography aesthetic"
)

negative_prompt = (
    "low quality, blurry, distorted anatomy, malformed hands, extra limbs, "
    "duplicated body parts, plastic skin, CGI, watermark, text"
)

generator = torch.Generator(device=DEVICE).manual_seed(42)

image = pipe(
    prompt=prompt,
    negative_prompt=negative_prompt,
    width=928,
    height=1328,
    num_inference_steps=4,
    true_cfg_scale=1.0,
    generator=generator,
).images[0]

image.save("tumblr_nudeshot.png")

For a detail-focused prompt, begin the prompt with both triggers:

zl_tumblr_v1, zl_tumblr_detailed_v1, ...

🧩 Low-VRAM Inference (16–24 GB)

The LoRA itself is relatively small. Most VRAM is consumed by the Qwen-Image base model and text encoder. Users with lower-memory NVIDIA GPUs can combine 4-bit quantization, CPU offloading, VAE tiling, batch size 1, and a lower output resolution.

Actual memory use and speed depend on the GPU, system RAM, CUDA version, Diffusers version, prompt length, and resolution.

Low-VRAM Installation

pip install -U diffusers transformers accelerate peft safetensors bitsandbytes

Low-VRAM Python

import torch
from diffusers import DiffusionPipeline
from diffusers.quantizers import PipelineQuantizationConfig


BASE_MODEL_ID = "Qwen/Qwen-Image-2512"
LORA_MODEL_ID = "perpetual3x/Tumblr-NudeShot-NSFW-LoRA-v1"
LORA_WEIGHT_NAME = "tumblr.safetensors"


quant_config = PipelineQuantizationConfig(
    quant_backend="bitsandbytes_4bit",
    quant_kwargs={
        "load_in_4bit": True,
        "bnb_4bit_quant_type": "nf4",
        "bnb_4bit_compute_dtype": torch.bfloat16,
    },
    components_to_quantize=[
        "transformer",
        "text_encoder",
    ],
)


pipe = DiffusionPipeline.from_pretrained(
    BASE_MODEL_ID,
    torch_dtype=torch.bfloat16,
    quantization_config=quant_config,
)

pipe.load_lora_weights(
    LORA_MODEL_ID,
    weight_name=LORA_WEIGHT_NAME,
    adapter_name="tumblr",
)
pipe.set_adapters(["tumblr"], adapter_weights=[1.0])

# Do not call pipe.to("cuda") when CPU offloading is enabled.
pipe.enable_model_cpu_offload()
pipe.vae.enable_tiling()

prompt = (
    "zl_tumblr_v1, an adult woman in a candid pre-2018 Tumblr-era "
    "photograph, natural skin texture, available light"
)

negative_prompt = (
    "low quality, blurry, distorted anatomy, malformed hands, "
    "extra limbs, duplicated body parts, watermark, text"
)

generator = torch.Generator(device="cuda").manual_seed(42)

image = pipe(
    prompt=prompt,
    negative_prompt=negative_prompt,
    width=768,
    height=1024,
    num_images_per_prompt=1,
    num_inference_steps=30,
    true_cfg_scale=3.0,
    max_sequence_length=256,
    generator=generator,
).images[0]

image.save("tumblr_nudeshot_low_vram.png")

If model CPU offloading still causes an out-of-memory error, replace:

pipe.enable_model_cpu_offload()

with:

pipe.enable_sequential_cpu_offload()

Sequential CPU offloading uses less GPU memory but is substantially slower. Do not move the pipeline to CUDA before enabling either offloading mode.

For additional details, see the official Diffusers documentation for quantization and memory optimization.


🔞 Responsible Use

This model is intended exclusively for lawful, consensual, adult artistic, archival-style, and editorial creative work.

Do not use this LoRA to:

  • create or sexualize minors or youthful-looking persons
  • create non-consensual or exploitative sexual content
  • depict an identifiable real person without permission
  • harass, threaten, exploit, or defame another person
  • create illegal content
  • bypass the rules of platforms or services

Users are responsible for ensuring that their prompts, source material, and generated content comply with applicable laws and platform policies.


License & Copyright Notice

This LoRA may be used for personal and non-commercial purposes only. See the repository LICENSE file for the complete terms.

For commercial licensing inquiries, please contact the author.

Total size
608 MB
Files
16
Last updated
Sep 13
Pre-warmed CDN
US EU US EU

Contributors