Если вы читаете это значит модель очень сырая. И использовать ее не рекомендуется.
🇷🇺 Russian Wall Length Extractor (Qwen3-VL-2B Fine-tuned)
Мультимодальная модель для извлечения длины и типа стены по строительным чертежам.
Основана на Qwen/Qwen3-VL-2B-Instruct и дообучена на задаче анализа фрагментов чертежей с выделенными красным прямоугольником объектами. Модель будет обновляться в будующем.
Модель возвращает результат строго в формате JSON.
🔧 Возможности
- Определение типа стены
- Определение длины стены
- Поиск длины на размерных линиях
- Попытка восстановления полной длины стены по фрагменту
- Возврат структурированного JSON
- Работа с русскоязычными строительными чертежами
📥 Формат входа (актуально для 4B модели)
На вход подается изображение и текстовый запрос:
Верни тип и длину выделенного красным прямоугольником элемента на плане. Тип бери из справочника типов. Если элемента нет в справочнике, верни {{}}. Если длину определить нельзя, верни length: null. Если длина найдена только после продолжения стены, заполни extended_wall. Верни в формате JSON: {{"extended_wall": {{"type": 0, "length": null}}, "walls": [{{"type": 0, "length": null}}]}}
Справочник типов: {objects_types}
где {objects_types} это {"Неизвестно": 3, "Стена_4": 9, "Окно": 0, ...}
📤 Формат выхода
{
"extended_wall": {
"type": 0,
"length": null
},
"walls": [
{
"type": 0,
"length": null
}
]
}
Если объект не является стеной:
{}
🚀 Пример использования
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)
⚙️ Рекомендуемые параметры
max_new_tokens=256
do_sample=False
temperature=0.0
🏋️ Обучение
- Базовая модель:
Qwen/Qwen3-VL-2B-Instruct - Тип обучения: Full Fine-Tuning
- Формат датасета: image + instruction → JSON
- Язык чертежей: русский
- Выходной формат: JSON
📌 Применение
- Анализ строительных чертежей
- Извлечение параметров стен
- Подготовка данных для BIM/IFC
- Автоматизация обработки проектной документации
- Извлечение структурированных данных из планов зданий
- Downloads last month
- 4