/ Модель

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

Контекст
128 000 токенов
Параметры
3,1 млрд
Размер весов
15 ГБ
Лицензия
Apache 2.0
Архитектура
qwen2_5_vl · dense
Базовая модель
Qwen2.5-VL-3B-Instruct
Библиотека
peft
Опубликована
27 мар 2025

diagram2graph

Языковая модельИзображение, текст → embedding

Мультимодальная модель для извлечения узлов, связей и атрибутов из изображений диаграмм в структурированный JSON.

0скачиваний за 30 дней10лайковвеса обновлены5 апр 2025

Бенчмарки

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

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

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

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

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

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

Diagram2Graph — мультимодальная модель Zackariya Solution Internship Team (Mohammed Safvan), дообученная методом PEFT на Qwen/Qwen2.5-VL-3B-Instruct. Она извлекает из изображений диаграмм структурированные данные в формате JSON: узлы, рёбра и их атрибуты, пригодные для представления визуальной информации в виде графа знаний.

Модель предназначена для экспериментов с преобразованием диаграмм в графы и изучения извлечения структуры из изображений. Её также можно применять как основу для анализа BPMN-диаграмм и блок-схем или автоматизированной обработки документов. Архитектура — Vision-Language Transformer; размер — 3,1 млрд параметров, контекст — 128 000 токенов. В карточке заявлена многоязычная направленность.

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

  • Преобразование блок-схем в узлы и связи графа
  • Извлечение структуры BPMN-диаграмм
  • Построение графа знаний по изображению диаграммы
  • Извлечение структурированных данных из визуальных документов

Ограничения

Модель может хуже справляться со сложными и плотными диаграммами и обобщать на другие типы диаграмм; README предназначает её для обучения и экспериментов, а не для производственного применения.

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

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

Открыть на Hugging Face

🖼️🔗 Diagram-to-Graph Model

This model is a research-driven project built during an internship at Zackariya Solution. It specializes in extracting structured data(JSON) from images, particularly nodes, edges, and their sub-attributes to represent visual information as knowledge graphs.

🚀 Note: This model is intended for learning purposes only and not for production applications. The extracted structured data may vary based on project needs.

📝 Model Details

  • Developed by: Zackariya Solution Internship Team(Mohammed Safvan)
  • Fine Tuned from: Qwen/Qwen2.5-VL-3B-Instruct
  • License: Apache 2.0
  • Language(s): Multilingual (focus on structured extraction)
  • Model type: Vision-Language Transformer (PEFT fine-tuned)

🎯 Use Cases

✅ Direct Use

  • Experimenting with diagram-to-graph conversion 📊
  • Understanding AI-driven structured extraction from images

🚀 Downstream Use (Potential)

  • Enhancing BPMN/Flowchart analysis 🏗️
  • Supporting automated document processing 📄

❌ Out-of-Scope Use

  • Not designed for real-world production deployment ⚠️
  • May not generalize well across all diagram types

📊 How to Use

%pip install -q "transformers>=4.49.0" accelerate datasets "qwen-vl-utils[decord]==0.0.8"

import os
import PIL
import torch
from qwen_vl_utils import process_vision_info
from transformers import Qwen2_5_VLForConditionalGeneration, Qwen2_5_VLProcessor


MODEL_ID="zackriya/diagram2graph"
MAX_PIXELS = 1280 * 28 * 28
MIN_PIXELS = 256 * 28 * 28


model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
	MODEL_ID,
	device_map="auto",
	torch_dtype=torch.bfloat16
)

processor = Qwen2_5_VLProcessor.from_pretrained(
	MODEL_ID,
	min_pixels=MIN_PIXELS,
	max_pixels=MAX_PIXELS
)


SYSTEM_MESSAGE = """You are a Vision Language Model specialized in extracting structured data from visual representations of process and flow diagrams.
Your task is to analyze the provided image of a diagram and extract the relevant information into a well-structured JSON format.
The diagram includes details such as nodes and edges. each of them have their own attributes.
Focus on identifying key data fields and ensuring the output adheres to the requested JSON structure.
Provide only the JSON output based on the extracted information. Avoid additional explanations or comments."""

def run_inference(image):
	messages= [
    	{
        	"role": "system",
        	"content": [{"type": "text", "text": SYSTEM_MESSAGE}],
    	},
    	{
        	"role": "user",
        	"content": [
            	{
                	"type": "image",
                	# this image is handled by qwen_vl_utils's process_visio_Info so no need to worry about pil image or path
                	"image": image,
            	},
            	{
                	"type": "text",
                	"text": "Extract data in JSON format, Only give the JSON",
            	},
        	],
    	},
	]

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

	inputs = processor(
    	text=[text],
    	images=image_inputs,
    	return_tensors="pt",
	)
	inputs = inputs.to('cuda')

	generated_ids = model.generate(**inputs, max_new_tokens=512)
	generated_ids_trimmed = [
    	out_ids[len(in_ids):]
    	for in_ids, out_ids
    	in zip(inputs.input_ids, generated_ids)
	]

	output_text = processor.batch_decode(
    	generated_ids_trimmed,
    	skip_special_tokens=True,
    	clean_up_tokenization_spaces=False
	)
	return output_text
image = eval_dataset[9]['image'] # PIL image
# `image` could be URL or relative path to the image
output = run_inference(image)

# JSON loading
import json
json.loads(output[0])

🏗️ Training Details

  • Dataset: Internally curated diagram dataset 🖼️
  • Fine-tuning: LoRA-based optimization ⚡
  • Precision: bf16 mixed-precision training 🎯

📈 Evaluation

  • Metrics: F1-score 🏆
  • Limitations: May struggle with complex, dense diagrams ⚠️

Results

  • +14% improvement in node detection
  • +23% improvement in edge detection
Samples(Base)Node F1(Fine)Node F1(Base)Edge F1(Fine)Edge F1
image_sample_10.461.00.590.71
image_sample_20.670.570.250.25
image_sample_31.01.00.250.75
image_sample_40.50.830.150.62
image_sample_50.720.780.00.48
image_sample_60.750.750.290.67
image_sample_70.61.01.01.0
image_sample_80.61.01.01.0
image_sample_91.01.00.550.77
image_sample_100.670.80.01.0
image_sample_110.80.80.51.0
image_sample_120.671.00.620.75
image_sample_131.01.00.730.67
image_sample_140.740.950.560.67
image_sample_150.860.710.670.67
image_sample_160.751.00.80.75
image_sample_170.81.00.630.73
image_sample_180.830.830.330.43
image_sample_190.750.80.060.22
image_sample_200.811.00.230.75
Mean0.7490.8910.46050.6945

🤝 Collaboration

Are you interested in fine tuning your own model for your use case or want to explore how we can help you? Let's collaborate.

Zackriya Solutions

🔗 References

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

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

GPU в ailist

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

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

Репозиторий содержит только адаптер (LoRA/PEFT) без базовой модели.

Класс архитектуры
Qwen2_5_VLForConditionalGeneration
Ревизия весов
976c513

0 моделей