Full supervised fine-tuning of
Qwen3-VL-2B-Instruct on the
MegaStyle dataset — a large-scale vision-language style description dataset containing ~1.36M image-style-description triples across 1,000 distinct artistic styles.
This model specializes in generating concise, style-aware image descriptions conditioned on a target artistic style and color palette.
MegaStyle is a curated vision-language dataset for style-conditioned image description. Each sample consists of:
The dataset covers a broad spectrum of artistic styles including but not limited to:
Each style is paired with specific color palette directives and lighting descriptions, enabling fine-grained style-aware generation.
1{
2 "messages": [
3 {"role": "user", "content": "<image>\nDescribe this image in the following style:\nIn the style of Art Deco, golden hues with deep blues in high-contrast distribution, dramatic lighting, digital illustration"},
4 {"role": "assistant", "content": "Skyscraper with geometric golden facade against night sky"}
5 ],
6 "images": ["/path/to/image.jpg"]
7}
1from transformers import Qwen2_5_VLForConditionalGeneration, AutoProcessor
2from qwen_vl_utils import process_vision_info
3
4model_name = "Kassadin88/Qwen3-VL-2B-MegaStyle"
5
6model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
7 model_name,
8 torch_dtype="auto",
9 device_map="auto",
10)
11processor = AutoProcessor.from_pretrained(model_name)
12
13messages = [
14 {
15 "role": "user",
16 "content": [
17 {"type": "image_url", "image_url": {"url": "https://example.com/image.jpg"}},
18 {"type": "text", "text": "Describe this image in the following style:\nIn the style of Impressionism, soft pastel colors with dappled light, oil painting"},
19 ],
20 }
21]
22
23text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
24image_inputs, video_inputs = process_vision_info(messages)
25inputs = processor(text=[text], images=image_inputs, videos=video_inputs, padding=True, return_tensors="pt").to(model.device)
26
27output_ids = model.generate(**inputs, max_new_tokens=256)
28generated_ids = [output_ids[len(input_ids):] for input_ids, output_ids in zip(inputs.input_ids, output_ids)]
29output_text = processor.batch_decode(generated_ids, skip_special_tokens=True, clean_up_tokenization=False)
30print(output_text[0])
If you find our work helpful, feel free to give us a cite.
1@misc{qwen3-vl,
2 title = {{Qwen3-VL}},
3 author = {{Qwen Team}},
4 year = {2026},
5 url = {https://qwen.ai/blog?id=qwen3-vl}
6}
1@misc{qwen3-vl-2b-megastyle,
2 title={Qwen3-VL-2B-MegaStyle: Style-Conditioned Image Description via Full SFT},
3 author={Kassadin88},
4 year={2026},
5 url={https://huggingface.co/Kassadin88/Qwen3-VL-2B-MegaStyle}
6}