Downloads · 30 days
195
39% of all-time downloads
Trendyol/Trendyol-Vision-Flash
Trendyol-Vision-Flash is a image-text-to-text model from Trendyol. 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. The card lists the license as cc-by-4.0.
Trendyol-Vision-Flash is a fine-tuned vision-language model (VLM) built on OpenGVLab/InternVL35-1B-Instruct for Trendyol catalog quality and moderation workflows. It is the lightweight Flash-tier VLM in the Trendyol-V…
Downloads · 30 days
195
39% of all-time downloads
All-time downloads
505
Public
Parameters
1.1B
2.1 GB on disk
Likes
9
Public
Click a slice to open those files.
.safetensors2.1 GB · 99%
From the Hugging Face model README
Trendyol-Vision-Flash is a fine-tuned vision-language model (VLM) built on OpenGVLab/InternVL3_5-1B-Instruct for Trendyol catalog quality and moderation workflows. It is the lightweight Flash-tier VLM in the Trendyol-Vision family — built for production serving under high traffic, with low-latency inference on a single GPU for brand detection, product similarity, attribute extraction, title generation, content moderation, product captioning, and other e-commerce catalog operations.
Trendyol-Vision-Flash vs Master: Flash is the production-tier VLM for day-to-day, high-traffic catalog workloads on a single GPU. Trendyol-Vision-Master is the larger expert VLM for critical or harder cases (e.g. category detection) and retains stronger general capabilities.
Not intended for Master-tier category detection, general open-domain chat, medical/legal advice, surveillance, or any use described under Ethical Considerations. Optimized for production catalog workflows rather than general-purpose assistance. For category detection at scale, use Trendyol/Trendyol-Vision-Master.
Specialized for e-commerce catalog operations (moderation and enrichment). The tasks below are the primary, production-validated workloads; related catalog workflows can be prompted similarly, with best results on these patterns.
0 = Forbidden, 1 = Fantasy, 2 = Safe). Fantasy means content that may be published but should be treated as adult (+18).See Task Prompts below for per-task prompt templates.
Install dependencies:
pip install "transformers==4.56.2" accelerate sentencepiece torch torchvision pillow requests
Load the model, preprocess images from URLs, and run inference with the native InternVL model.chat() API:
import torch
import requests
from PIL import Image
from io import BytesIO
from torchvision import transforms as T
from torchvision.transforms.functional import InterpolationMode
from transformers import AutoModel, AutoTokenizer
MODEL_ID = "Trendyol/Trendyol-Vision-Flash"
IMAGENET_MEAN = (0.485, 0.456, 0.406)
IMAGENET_STD = (0.229, 0.224, 0.225)
model = AutoModel.from_pretrained(
MODEL_ID,
trust_remote_code=True,
dtype=torch.bfloat16,
low_cpu_mem_usage=True,
use_flash_attn=False,
).eval().cuda()
tokenizer = AutoTokenizer.from_pretrained(
MODEL_ID,
trust_remote_code=True,
use_fast=False,
)
def build_transform(input_size=448):
return T.Compose([
T.Lambda(lambda img: img.convert("RGB") if img.mode != "RGB" else img),
T.Resize((input_size, input_size), interpolation=InterpolationMode.BICUBIC),
T.ToTensor(),
T.Normalize(mean=IMAGENET_MEAN, std=IMAGENET_STD),
])
def load_image_from_url(url, input_size=448):
response = requests.get(url, timeout=30)
response.raise_for_status()
image = Image.open(BytesIO(response.content)).convert("RGB")
return build_transform(input_size)(image).unsqueeze(0)
urls = [
"https://cdn.dsmcdn.com/mnresize/620/920/ty1571/prod/QC/20240924/23/a77c7933-c626-3753-9cad-fbb7388bff45/1_org_zoom.jpg",
"https://cdn.dsmcdn.com/mnresize/620/920/ty1569/prod/QC/20240924/23/356395c3-c71c-37c5-88c4-5ef97899b3d8/1_org_zoom.jpg",
"https://cdn.dsmcdn.com/mnresize/620/920/ty1571/prod/QC/20240924/23/112305b3-ba5d-3a28-8fd3-b1857749afca/1_org_zoom.jpg",
]
pixel_values = torch.cat([load_image_from_url(url) for url in urls], dim=0)
pixel_values = pixel_values.to(dtype=torch.bfloat16, device="cuda")
question = """<image>
Görsellerden, Eldiven kategorisinde yer alan ürünün markasını çıkar.
Sadece verilen görsellerde doğrulanabilen bilgilere dayan.
Emin olmadığında "Unknown" şeklinde cevap ver.
Sadece marka adını döndür."""
generation_config = {"max_new_tokens": 32, "do_sample": False}
response = model.chat(tokenizer, pixel_values, question, generation_config)
print(response) # Adidas
Image ordering: concatenate pixel_values in the same order as <image> placeholders in the prompt. For a single <image> token with multiple product photos, pass all images in one batch (default behavior).
GPU note: Trendyol-Vision-Flash is designed for single-GPU inference. No tensor parallelism required.
Trendyol-Vision-Flash can be served with vLLM as an OpenAI-compatible API on a single GPU.
vllm serve Trendyol/Trendyol-Vision-Flash \
--trust-remote-code \
--max-model-len 16384 \
--structured-outputs-config.backend xgrammar \
--served-model-name Trendyol-Vision-Flash \
--interleave-mm-strings \
When calling the vLLM OpenAI API, use image_url content blocks:
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer EMPTY" \
-d '{
"model": "Trendyol-Vision-Flash",
"temperature": 0.0,
"max_tokens": 32,
"messages": [
{
"role": "user",
"content": [
{"type": "image_url", "image_url": {"url": "https://cdn.dsmcdn.com/mnresize/620/920/ty1571/prod/QC/20240924/23/a77c7933-c626-3753-9cad-fbb7388bff45/1_org_zoom.jpg"}},
{"type": "image_url", "image_url": {"url": "https://cdn.dsmcdn.com/mnresize/620/920/ty1569/prod/QC/20240924/23/356395c3-c71c-37c5-88c4-5ef97899b3d8/1_org_zoom.jpg"}},
{"type": "image_url", "image_url": {"url": "https://cdn.dsmcdn.com/mnresize/620/920/ty1571/prod/QC/20240924/23/112305b3-ba5d-3a28-8fd3-b1857749afca/1_org_zoom.jpg"}},
{"type": "text", "text": "Görsellerden, Eldiven kategorisinde yer alan ürünün markasını çıkar.\nSadece verilen görsellerde doğrulanabilen bilgilere dayan.\nEmin olmadığında \"Unknown\" şeklinde cevap ver.\nSadece marka adını döndür."}
]
}
]
}'
Pass any prompt below to model.chat() using the same image-loading flow from Quickstart. Replace {placeholders} with your data. Use one <image> per image group; for tasks with multiple image slots, pass num_patches_list (e.g. [1, 1] for before/after).
Images: product photos (1–16)
Output: brand name or Unknown
<image>
Görsellerden, {category} kategorisinde yer alan ürünün markasını çıkar.
Sadece verilen görsellerde doğrulanabilen bilgilere dayan.
Emin olmadığında "Unknown" şeklinde cevap ver.
Sadece marka adını döndür.
Images: before listing images, then after listing images
Output: 1 (same SKU) or 0 (different)
E-ticaret kataloğundaki ürün benzerliği konusunda uzmansınız.
İki ürünün önceki ve sonraki başlık/görsellerini karşılaştırarak aynı ürün olup olmadığını belirle.
Ambalaj, arka plan veya model farkları tek başına fark sayılmaz; renk, boyut, miktar veya varyant farkları fark sayılır.
Sadece "1" veya "0" döndür.
Önceki Ürün Başlığı:
{before_title}
Önceki Ürün Resimleri:
<image>
Sonraki Ürün Başlığı:
{after_title}
Sonraki Ürün Resimleri:
<image>
Images: 1 product image
Output: JSON object
<image>
Bu görseldeki, başlığı '{title}' ve açıklaması '{description}' olan ürünün {attribute_list} bilgilerini json formatında çıkarır mısın?
Example:
<image>
Bu görseldeki, başlığı 'Helen Bar Sandalyesi-mavi-9519q0119' ve açıklaması 'Maksimum kargolanma süresi: Sipariş tarihinden sonraki 7. gün Ortalama montaj süresi: 1 dakika Genişlik: 62cm Derinlik: 52cm Yükseklik: 96cm Oturak Yüksekliği: 44cm Ürün Ağırlığı: 10kg Kullanılan malzeme: Metal Kullanılan sünger: Yüksek yoğunluklu gri sünger Kullanılan kol: Metal Kollu Kullanılan ayak: Metal Ayaklı + Kromajlı Garanti süresi - Menşei: 24 Ay - Yerli Sipariş bazlı üretim-tedarik yapıldığından sipariş iptali yapılamamaktadır Anlaşmalı olunan ambar ve kargolarla bina kapısında teslimat yapılmaktadır' olan ürünün Garanti Süresi, Materyal, Model, Sandalye Kumaşı, Sandalye Sayısı, Tema / Stil bilgilerini json formatında çıkarır mısın?
Image URL: https://cdn.dsmcdn.com/ty1325/product/media/images/prod/QC/20240522/17/f63a7316-5998-3c7d-b45f-93ff8e9c34a2/1_org_zoom.jpg
Expected output:
{
"Garanti Süresi": "2 Yıl",
"Materyal": "Metal",
"Model": "Bar Sandalyesi",
"Sandalye Kumaşı": "çıkarılamadı",
"Sandalye Sayısı": "1",
"Tema / Stil": "Modern"
}
Images: 1 product image
Output: plain-text title
<image>
Ürün fotoğrafı ile '{reference_title}' bilgisini karşılaştırıp, Trendyol katalog moderasyon kurallarına göre yanıltıcı ifadelerden kaçınarak net bir başlık üret; çıktıyı düz metin ver.
Images: 1 product image
Output: English product description
<image>
Without speculating about details you cannot see, describe this product based on the image and the information provided.
Product title: {title}
Brand: {brand}
First decide which object is the product, review OCR for brand/model/title clues, then analyze colors, shape, material, pattern, and other grounded details.
Images: 1 product image
Labels: 0 (Forbidden) = not publishable, 1 (Fantasy) = publishable but adult (+18) content, 2 (Safe) = publishable without restriction.
<image>
Ürün Başlığı: {title}
Bu ürün görselini ve başlığını inceleyerek moderasyon sınıflandırması yap. Sonucu 0 (Forbidden), 1 (Fantasy) veya 2 (Safe) olarak ver.
Images: 1 product image
Output: {"amount": <number|null>, "unit": "KG"|"L"|"PIECE"|null}
<image>
Extract total product quantity from the title and image. Title is the primary source; use the image only when the title is missing or ambiguous.
Return only JSON: {"amount": <number|null>, "unit": "KG"|"L"|"PIECE"|null}
Convert g→KG, ml/cc→L, counts→PIECE. Ignore model numbers, storage, wattage, and dimensions. If unclear, return {"amount": null, "unit": null}.
Product Title: {title}
@misc{trendyol-vision-flash,
title={Trendyol-Vision-Flash: Lightweight Catalog Quality Vision-Language Model (VLM)},
author={Trendyol Data Science Team},
year={2026},
howpublished={\url{https://huggingface.co/Trendyol/Trendyol-Vision-Flash}}
}
@article{zhu2025internvl3_5,
title={InternVL3.5: Advancing Open-Source Multimodal Models},
author={Zhu, Weiyun and others},
year={2025},
url={https://huggingface.co/OpenGVLab/InternVL3_5-1B-Instruct}
}
This model is licensed under the Creative Commons Attribution 4.0 International License (CC BY 4.0).
You are free to share and adapt the model for any purpose, even commercially, as long as you give appropriate credit and indicate if changes were made.
This release is a fine-tune of OpenGVLab/InternVL3_5-1B-Instruct, which is licensed under Apache License 2.0 (including its Qwen3 language-model component). Redistribution of this derivative continues to satisfy Apache-2.0 notice and attribution requirements for the base model; retain the Apache-2.0 license text and any NOTICE attributions shipped with InternVL3.5 when redistributing.
For the full CC BY 4.0 license text, see: https://creativecommons.org/licenses/by/4.0/legalcode
Released by the Trendyol Data Science Team.