Skip to content

About

Десктопное приложение для разметки, создания датасетов, обучения и тестирования внутри приложения

Topics

Resources

Stars

9 stars

Watchers

1 watching

Forks

Repository files navigation

VisionForge 🚀

VisionForge — профессиональный настольный инструмент для умной разметки изображений, аугментации, контроля качества датасетов, обучения моделей YOLO и экспорта в Production.
Всё в одном: от импорта сырых видео и сегментации в 1 клик до кластеризации эмбеддингов, тренировки и инференса в реальном времени.

English version →

Python 3.9+ License: GPL-3.0 PyQt5 OpenCV YOLO


✨ Ключевые возможности

🪄 1. Умная 1-клик сегментация (Smart Magic Tool [M])

  • Сегментация в один клик: кликните по объекту — гибридный алгоритм (адаптивный ROI, FloodFill + многомасштабный GrabCut / FastSAM / YOLO-seg) мгновенно строит точный полигональный контур по пиксельным границам.
  • Сглаживание контуров: оптимизация вершин полигонов алгоритмом Рамера-Дугласа-Пекера (approxPolyDP) без потери детализации.

🎞️ 2. Импорт видео и покадровая нарезка (Video Slicing)

  • Поддержка видеоформатов .mp4, .avi, .mkv, .mov.
  • Режимы извлечения: по интервалу кадров, по целевой частоте (FPS) или с детекцией смены сцен (Keyframes / Scene Change).

🚀 3. Интерполяция треков между ключевыми кадрами (Ctrl+I)

  • Разметьте объект на начальном и конечном ключевом кадре — VisionForge автоматически рассчитает плавные траектории движения bounding box'ов и вершин полигонов на всех промежуточных кадрах.

🎨 4. Интерактивная песочница аугментаций (Augmentation Sandbox)

  • Живой предпросмотр аугментаций в реальном времени с интерактивными ползунками:
    • Геометрия: поворот, масштаб, сдвиг по осям X/Y, отражение по горизонтали и вертикали.
    • Цвет: поканальные HSV-сдвиги оттенка (Hue), насыщенности (Saturation) и яркости (Value).
    • Эффекты: Гауссов шум, размытие (Blur), симуляция дождя (Rain), тумана (Fog) и вырезов (Cutout).
  • Автоматический пересчет и трансформация всех полигонов и bounding box'ов с возможностью сохранения аугментированных копий в датасет в 1 клик.

🔍 5. Поиск дубликатов и контроль качества (Dataset Deduplication & QA)

  • Перцептивный хеш (64-bit pHash): быстрое выявление почти идентичных кадров и серийных снимков через 2D ДКП (дискретное косинусное преобразование) с фильтрацией по порогу схожести (%).
  • Детекция дефектов: автоматический поиск смазанных/размытых кадров (дисперсия Лапласиана), пересвеченных и слишком темных изображений с пакетным удалением.

🗺️ 6. Интерактивная карта эмбеддингов (t-SNE / PCA Explorer)

  • Извлечение 144-мерных дескрипторов изображений (пространственные гистограммы, цветовые градиенты, текстуры).
  • Понижение размерности в 2D (быстрый PCA или нелинейный t-SNE).
  • Поиск аномалий: автоматическая подсветка выбросов (Outliers) красными кольцами для мгновенного нахождения ошибок разметки, редких ракурсов или некорректных классов.
  • Интерактивный холст: зум, панорамирование, карточки предпросмотра и мгновенный переход к кадру по двойному клику.

⚡ 7. Экспорт в Production и генератор автономного инференса

  • Конвертация моделей YOLO: экспорт в форматы ONNX (с поддержкой FP16, dynamic batch, ONNX Simplify), TensorRT, OpenVINO, CoreML.
  • Генератор Python-скрипта инференса: создание готового, полностью автономного Python-скрипта для детекции/сегментации на веб-камерах, видеофайлах или RTSP-потоках с замером FPS и сохранением видео.

🎯 8. Разметка, иерархия классов и обучение

  • Двухслойная архитектура проектов (.vf): разделение проверенного ручного слоя (main) и слоя предсказаний нейросетей (auto) с потоковым утверждением без блокирующих окон.
  • Иерархия классов: создание мегаклассов, группировка, объединение и цветовая палитра.
  • Экспорт датасетов: YOLO (Detection / Segmentation / Classification), COCO JSON, Pascal VOC XML.
  • Встроенное обучение YOLO: настройка гиперпараметров, графики метрик и логи в реальном времени.

⌨️ Горячие клавиши

Клавиша Действие
M Режим «Магия» (1-клик сегментация)
B Переключиться в режим прямоугольника (Box)
P Переключиться в режим полигона (Polygon)
N Принудительно начать рисование нового объекта
A Авторазметка текущего кадра загруженной моделью
T Переключить активный класс на следующий
F / G Предыдущий / следующий кадр
Ctrl + I Окно интерполяции треков между кадрами
Ctrl + Z Отмена последнего действия (Undo)
Ctrl + D Удалить текущее изображение из датасета
D Удалить выделенный бокс / полигон
E Изменить класс выделенного объекта
S Сохранить проект
Enter / Двойной клик Завершить построение полигона
Esc Сбросить незавершенное рисование
F11 Полноэкранный режим
ПКМ Контекстное меню управления классами

📦 Установка и запуск

Вариант 1: Быстрый запуск из исходников (Python 3.9+)

# 1. Клонирование репозитория
git clone https://github.com/fikstt2/VisionForge.git
cd VisionForge

# 2. Создание и активация виртуального окружения
python -m venv .venv

# Windows:
.venv\Scripts\activate
# Linux / macOS:
source .venv/bin/activate

# 3. Установка зависимостей
pip install -r requirements.txt

# 4. Запуск VisionForge
python main.py
# или в Windows через батник:
run.bat

Вариант 2: Запуск тестов

python run_tests.py

📁 Структура проекта

VisionForge/
├── core/                        # Ядро приложения
│   ├── annotation_widget.py     # Виджет разметки (OpenGL/QPainter, боксы, полигоны, магия)
│   ├── smart_segmenter.py       # Движок 1-клик сегментации (FastSAM / GrabCut / Adaptive ROI)
│   ├── video_extractor.py       # Модуль нарезки видео (Interval / FPS / Scene Change)
│   ├── track_interpolator.py    # Алгоритм интерполяции траекторий боксов и полигонов
│   ├── augmentation_engine.py   # Движок аугментаций изображений и аннотаций
│   ├── dataset_deduplicator.py  # 64-bit pHash дедупликация и QA детекция дефектов
│   ├── embedding_explorer.py    # Модуль дескрипторов, t-SNE / PCA проекций и поиска выбросов
│   ├── gallery_dialog.py        # Галерея датасета с фильтрами
│   ├── thumbnail_bar.py         # Карусель миниатюр
│   └── i18n.py                  # Движок локализации (RU/EN)
├── detection/                   # Детекция в реальном времени и оверлей
├── locales/                     # Файлы локализации (ru.json, en.json)
├── project/                     # Управление проектами .vf, импортеры и экспортеры
│   ├── project_manager.py       # Менеджер монолитного формата .vf
│   ├── dataset_preparer.py      # Сплиттер и сборщик датасетов YOLO / COCO / VOC
│   ├── exporters.py             # Экспорт аннотаций
│   └── importers.py             # Импорт аннотаций
├── ui/                          # Графический интерфейс (PyQt5)
│   ├── main_window.py           # Главное окно редактора
│   ├── embedding_map_dialog.py  # Интерактивная 2D карта эмбеддингов t-SNE/PCA
│   ├── augmentation_sandbox_dialog.py # Интерактивная песочница аугментаций
│   ├── deduplication_dialog.py  # Диалог поиска дубликатов и дефектов
│   ├── track_interpolation_dialog.py  # Диалог интерполяции треков
│   ├── video_extractor_dialog.py      # Диалог нарезки видео
│   ├── production_export_dialog.py    # Экспорт в ONNX / TensorRT / OpenVINO
│   ├── inference_generator_dialog.py  # Генератор автономных Python-скриптов
│   ├── project_hub_dialog.py    # Хаб проектов с недавними записями
│   ├── statistics_dialog.py     # Статистика и аналитика классов
│   └── training_widget.py       # Обучение моделей YOLO
├── tests/                       # Модульные тесты (57 тестов)
├── main.py                      # Точка входа в приложение
├── run.bat                      # Скрипт быстрого запуска для Windows
└── requirements.txt             # Зависимости проекта

📄 Лицензия

Проект распространяется под лицензией GNU General Public License v3.0 (GPLv3). Подробности в файле LICENSE.

About

Десктопное приложение для разметки, создания датасетов, обучения и тестирования внутри приложения

Topics

Resources

Stars

9 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages