Downloads · 30 days
0
weathon/smolvlm2_anti_aesthetics_7b
smolvlm2_anti_aesthetics_7b is a image-text-to-text model from weathon. Use it for the image-text-to-text task on the model card, and read the license before you ship it in a product. It is set up for transformers.
This repository contains the model weights presented in the paper Position: Universal Aesthetic Alignment Narrows Artistic Expression.
Downloads · 30 days
0
Access
Public
Updated May 14, 2026
Repo size
1.4 GB
Likes
0
Public
Click a slice to open those files.
.safetensors94.4 MB · 86%
From the Hugging Face model README
This repository contains the model weights presented in the paper Position: Universal Aesthetic Alignment Narrows Artistic Expression.
The model is trained on the VisionReward dataset to explore the bias introduced by universal aesthetic alignment in generative models. This specific checkpoint is a 7B parameter version optimized for faster speed.
import torch
from transformers import Qwen3VLForConditionalGeneration, AutoProcessor
from PIL import Image
# Load the model and processor
model = Qwen3VLForConditionalGeneration.from_pretrained(
"weathon/smolvlm2_anti_aesthetics_7b", dtype="auto", device_map="cuda"
)
processor = AutoProcessor.from_pretrained("Qwen/Qwen3-VL-4B-Instruct")
# Example rating logic
def rate_single_image(image, dimension, guideline):
messages = [
{
"role": "user",
"content": [
{
"type":"text",
"text": f"Please rate this image for its {dimension} quality. Use this guideline {guideline}. Response a single number.",
},
{
"type": "image",
"image": image.resize((512, 512))
}
],
}
]
inputs = processor.apply_chat_template(
messages,
tokenize=True,
add_generation_prompt=True,
return_dict=True,
return_tensors="pt",
padding=True
).to(model.device)
id_of_interest = processor.tokenizer.convert_tokens_to_ids(["0", "1", "2"])
with torch.no_grad():
logits = model(**inputs).logits
# Extract probabilities for the rating tokens
logits = logits[:, -1, id_of_interest]
prob = torch.softmax(logits, dim=-1)
# Calculate weighted score
score = torch.dot(prob[0], torch.tensor([0, 1, 2], device=prob.device).bfloat16())
return float(score)
@article{guo2025aesthetic,
title={Aesthetic Alignment Risks Assimilation: How Image Generation and Reward Models Reinforce Beauty Bias and Ideological "Censorship"},
author={Guo, Wenqi Marshall and Qian, Qingyun and Hasan, Khalad and Du, Shan},
journal={arXiv preprint arXiv:2512.11883},
year={2025}
}