CoolFace
Modelpublic

GreenMap/qwen3-vl-2b-ru-blueprint-extractor

sourceHugging Faceapache-2.0updated 3mo agoView on Hugging Face
0likes18downloads
Model Card

<font color="red">Если вы читаете это значит модель очень сырая. И использовать ее не рекомендуется.</font>

🇷🇺 Russian Wall Length Extractor (Qwen3-VL-2B Fine-tuned)

Мультимодальная модель для извлечения длины и типа стены по строительным чертежам.

Основана на Qwen/Qwen3-VL-2B-Instruct и дообучена на задаче анализа фрагментов чертежей с выделенными красным прямоугольником объектами. Модель будет обновляться в будующем.

Модель возвращает результат строго в формате JSON.


🔧 Возможности

  • —Определение типа стены
  • —Определение длины стены
  • —Поиск длины на размерных линиях
  • —Попытка восстановления полной длины стены по фрагменту
  • —Возврат структурированного JSON
  • —Работа с русскоязычными строительными чертежами

📥 Формат входа (актуально для 4B модели)

На вход подается изображение и текстовый запрос:

text
Верни тип и длину выделенного красным прямоугольником элемента на плане. Тип бери из справочника типов. Если элемента нет в справочнике, верни {{}}. Если длину определить нельзя, верни length: null. Если длина найдена только после продолжения стены, заполни extended_wall. Верни в формате JSON: {{"extended_wall": {{"type": 0, "length": null}}, "walls": [{{"type": 0, "length": null}}]}}
Справочник типов: {objects_types}

где {objectstypes} это {"Неизвестно": 3, "Стена4": 9, "Окно": 0, ...}


📤 Формат выхода

json
{
  "extended_wall": {
    "type": 0,
    "length": null
  },
  "walls": [
    {
      "type": 0,
      "length": null
    }
  ]
}

Если объект не является стеной:

json
{}

🚀 Пример использования

python
from transformers import AutoProcessor
from transformers import AutoModelForImageTextToText
from PIL import Image
import torch

MODEL_NAME = "GreenMap/qwen3-vl-2b-ru-blueprint-extractor"

processor = AutoProcessor.from_pretrained(
    MODEL_NAME,
    trust_remote_code=True,
)

model = AutoModelForImageTextToText.from_pretrained(
    MODEL_NAME,
    trust_remote_code=True,
    dtype=torch.bfloat16,
).cuda()

image = Image.open("drawing.png").convert("RGB")

messages = [
    {
        "role": "user",
        "content": [
            {"type": "image", "image": image},
            {
                "type": "text",
                "text": (
                    "Запрос из файла."
                ),
            },
        ],
    }
]

text = processor.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True,
)

inputs = processor(
    text=[text],
    images=[image],
    return_tensors="pt",
)

inputs = {
    k: v.cuda()
    for k, v in inputs.items()
}

with torch.no_grad():
    generated = model.generate(
        **inputs,
        max_new_tokens=256,
        do_sample=False,
    )

answer = processor.decode(
    generated[0],
    skip_special_tokens=True,
)

print(answer)

⚙️ Рекомендуемые параметры

python
max_new_tokens=256
do_sample=False
temperature=0.0

🏋️ Обучение

  • —Базовая модель: Qwen/Qwen3-VL-2B-Instruct
  • —Тип обучения: Full Fine-Tuning
  • —Формат датасета: image + instruction → JSON
  • —Язык чертежей: русский
  • —Выходной формат: JSON

📌 Применение

  • —Анализ строительных чертежей
  • —Извлечение параметров стен
  • —Подготовка данных для BIM/IFC
  • —Автоматизация обработки проектной документации
  • —Извлечение структурированных данных из планов зданий