/ Модель

Характеристики

Контекст
128 000 токенов
Размер весов
16,6 ГБ
Лицензия
MIT
Архитектура
opencua · dense
Библиотека
transformers
Опубликована
25 янв 2026

SimpleSeg-Qwen2.5-VL

Генерация текстаТекст → текст3 профессии

Мультимодальная модель на базе Qwen2.5-VL сегментирует объекты на изображениях, выдавая координаты их контуров в виде последовательности точек.

188скачиваний за 30 дней9лайковвеса обновлены28 янв 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

SimpleSeg-Qwen2.5-VL — версия SimpleSeg на базе Qwen2.5-VL, представленная авторами проекта SimpleSeg. Это плотная мультимодальная модель на 7 млрд параметров, которая выполняет сегментацию объектов, предсказывая последовательность координат контура в текстовом виде. Для повышения точности авторы применяют двухэтапное обучение SFT и RL с наградой на основе IoU. Модель предназначена для сегментации по текстовому описанию и пространственного понимания изображений; координатный вывод можно преобразовать в полигоны и маски для последующей обработки или редактирования.

Архитектура использует стандартную структуру MLLM без специализированных модулей, поддерживает контекст до 128 000 токенов и распространяется в формате safetensors. Лицензия — MIT.

Сценарии применения

  • сегментация объекта на изображении по текстовому описанию
  • получение координат контура объекта для построения полигона
  • преобразование координат модели в маску для редактирования изображения
  • пространственная локализация объекта по запросу на естественном языке

Ограничения

Контуры выдаются как последовательности координат, которые для получения полигонов или масок требуют декодирования. В README приведены результаты на бенчмарках, но полные таблицы в доступном тексте опущены.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

Towards Pixel-level VLM Perception via Simple Points Prediction

Introduction

[!Note] This is Qwen2.5-VL version of SimpleSeg, a dense architecture with 7B paramters.

We present SimpleSeg, a strikingly simple yet highly effective approach to endow Multimodal Large Language Models (MLLMs) with native pixel-level perception. Our method reframes segmentation as a simple sequence generation problem: the model directly predicts sequence of points (textual coordinates) delineating object boundaries, entirely within its language space. To achieve high fidelity, we introduce a two-stage SFT→RL training pipeline, where Reinforcement Learning with an IoU-based reward refines the point sequences to accurately match ground-truth contours. We find that the standard MLLM architecture possesses a strong, inherent capacity for low-level perception that can be unlocked without any specialized architecture. On segmentation benchmarks, SimpleSeg achieves performance that is comparable to, and often surpasses, methods relying on complex, task-specific designs. This work lays out that precise spatial understanding can emerge from simple point prediction, challenging the prevailing need for auxiliary components and paving the way for more unified and capable VLMs.

Method

In this work, we explore the limits of MLLM pixel-level perception by predicting the next point in a contour with the simplest approach possible. Without introducing any complex architectures or special patterns, we show how even minimalistic point prediction can achieve effective segmentation at the pixel level.

Key Benefits

  • Simplicity: SimpleSeg requires no specialized modules and adheres to the standard MLLM architecture, it can be seamlessly and efficiently integrated as a new, core pre-training task for foundation models, similar to visual grounding.
  • Task Generality: By framing segmentation as a text-generation problem, our approach is inherently flexible. The model can be easily adapted to a wide range of vision-language tasks that require precise spatial localization.
  • Interpretable Output: The model generates explicit, human-readable coordinate sequences instead of dense pixel masks. This transparency simplifies debugging and makes the output directly usable for downstream applications like interactive editing or tool use.

Performance

  • Referring Expression Segmentation results
MethodsrefCOCOrefCOCO+refCOCOgAvg.
valtestAtestBvaltestAtestBvaltest
Decoder-based Models
NEXT-Chat74.778.969.565.171.956.767.067.068.9
LISA74.979.172.365.170.858.167.970.669.9
PixelLM73.076.568.266.371.758.369.370.569.2
AnyRef76.979.974.270.373.561.870.070.772.2
GSVA77.278.973.565.969.659.872.773.371.4
LaSagNA76.878.773.866.470.660.170.671.971.1
Groundhog78.579.975.770.575.064.974.174.674.2
Text4Seg (w/ SAM)79.281.775.672.877.966.574.075.375.4
Decoder-free Models
Text4Seg74.777.471.668.573.662.970.771.671.4
SimpleSeg-Qwen2.5-VL80.977.875.272.477.366.173.374.174.6
SimpleSeg-Kimi-VL80.080.676.270.476.267.172.874.774.8
  • Referring Expression Comprehension results
MethodsrefCOCOrefCOCO+refCOCOgAvg.
valtestAtestBvaltestAtestBvaltest
Decoder-based Models
LISA85.488.882.674.279.568.479.380.479.8
GSVA86.389.283.872.878.868.081.681.880.3
NEXT-Chat85.590.077.977.284.568.080.179.880.4
PixelLM89.892.286.483.287.078.984.686.086.0
Text4Seg (w/ SAM)90.393.487.585.289.979.585.485.487.1
Decoder-free Models
Text4Seg88.391.485.883.588.277.982.482.585.0
SimpleSeg-Qwen2.5-VL90.292.986.184.690.579.084.985.686.7
SimpleSeg-Kimi-VL91.392.187.182.688.379.384.686.386.5

Model Usage

Inference

We recommend using vLLM for production deployment. Requires vllm>=0.12.0 with --trust-remote-code.

First, start the vLLM server:

vllm serve sthui/SimpleSeg-Qwen2.5-VL \
  --trust-remote-code \
  --tensor-parallel-size 4 \
  --served-model-name SimpleSeg-Qwen2.5-VL \
  --host 0.0.0.0 \
  --port 8000

Then run the following code to inference:


import base64
from openai import OpenAI

# vLLM server configuration
VLLM_BASE_URL = "http://localhost:8000/v1"
MODEL_NAME = "SimpleSeg-Qwen2.5-VL"  # Should match --served-model-name in vllm serve

def encode_image(image_path: str) -> str:
    """Encode image to base64 string."""
    with open(image_path, "rb") as f:
        return base64.b64encode(f.read()).decode()

def inference(image_path: str, instruction: str) -> str:
    """Run GUI grounding inference via vLLM."""
    client = OpenAI(base_url=VLLM_BASE_URL, api_key="EMPTY")

    messages = [
        {
            "role": "user",
            "content": [
                {
                    "type": "image_url",
                    "image_url": {"url": f"data:image/png;base64,{encode_image(image_path)}"}
                },
                {"type": "text", "text": instruction},
            ],
        },
    ]

    response = client.chat.completions.create(
        model=MODEL_NAME,
        messages=messages,
        max_tokens=4096,
        temperature=0,
    )

    return response.choices[0].message.content

# Example usage
image_path = "./octopus.png"
instruction = "Output the polygon coordinates of octopus in the image."

response = inference(image_path, instruction)
print("Model output:", response)



Decode the polygons and masks from the response string

import re
import json
import pycocotools.mask as mask_utils

class RegexPatterns:
    BOXED_PATTERN = r'\\boxed\{([^}]*)\}'
    BLOCK_PATTERN = r'^```$\r?\n(.*?)\r?\n^```$'

    NON_NEGATIVE_FLOAT_PATTERN = (
        r'(?:[1-9]\d*\.\d+|0\.\d+|\d+)'
    )

    BBOX_PATTERN = rf'\[\s*({NON_NEGATIVE_FLOAT_PATTERN})\s*,\s*({NON_NEGATIVE_FLOAT_PATTERN})\s*,\s*({NON_NEGATIVE_FLOAT_PATTERN})\s*,\s*({NON_NEGATIVE_FLOAT_PATTERN})\s*\]'
    POINT_PATTERN = (
        rf'\[\s*({NON_NEGATIVE_FLOAT_PATTERN})\s*,\s*({NON_NEGATIVE_FLOAT_PATTERN})\s*\]'
    )

    POLYGON_PATTERN = rf'\[\s*{POINT_PATTERN}(?:\s*,\s*{POINT_PATTERN})*\s*\]'

polygon_matches = [
    m.group(0) for m in re.finditer(RegexPatterns.POLYGON_PATTERN, response, re.DOTALL)
]
pred_polygons = []
for polygon_match in polygon_matches:
    polygon = json.loads(polygon_match)
    pred_polygons.append(polygon)

pred_masks = []
for pred_polygon in pred_polygons:
    pred_polygon = np.array(pred_polygon) * np.array([width, height])
    rle = mask_utils.frPyObjects(pred_polygon.reshape((1, -1)).tolist(), height, width)
    mask = mask_utils.decode(rle)
    mask = np.sum(mask, axis=2, keepdims=True)
    pred_masks.append(mask)
pred_mask = np.sum(pred_masks, axis=0)
pred_mask = pred_mask.sum(axis=2)
pred_mask = (pred_mask > 0).astype(np.uint8)

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · transformers

Нельзя запустить

Модели нужен код из репозитория; автор пока не в списке доверенных организаций.

Класс архитектуры
OpenCUAForConditionalGeneration
Ревизия весов
9a197cd

0 моделей