Автоматизированный учёт инструментов по фото.
Загрузка снимков, детекция YOLO и сохранение результатов в MongoDB.
Kitmatch — Сервис для автоматизированного учета инструментов: FastAPI backend + React frontend + Triton Inference Server (YOLO). Поддерживает обработку одиночных изображений и ZIP-архивов, очереди через RabbitMQ и хранение результатов в MongoDB.
🔥 Проект был представлен в рамках хакатона LCT-2025.
- 🤖 YOLO детекция инструментов: Модель распознаёт инструменты на фото в реальном времени, без ручного подсчёта и ошибок.
- 🖥️ Triton Inference Server: Высокопроизводительная подача запросов к модели; масштабирование и низкая задержка инференса.
- 🎨 Удобный фронтенд на React + Vite: Современный SPA с быстрой сборкой и hot-reload; drag-and-drop загрузка, просмотр и правка результатов в одном интерфейсе.
- 📦 Пакетная обработка (одиночные фото и ZIP): Батч-обработка разгружает оператора и ускоряет инвентаризацию.
- ⚡ Асинхронная архитектура на RabbitMQ: Одна очередь — для запуска моделей (
models), другая — для сохранения результатов в MongoDB (postprocessing→result). API сразу отдаёт ответ, тяжёлую работу выполняет в фоне; система не «висит» при пиковых нагрузках. - 🗄️ Хранение результатов в MongoDB: Детекции и метаданные сохраняются в документной БД; удобный поиск и история инвентаризаций.
- 🐳 Единый Docker Compose запуск: Поднимает backend, frontend, MongoDB и RabbitMQ — развёртывание за минуты, без ручной настройки сервисов.
- 🎚️ Настраиваемый confidence_threshold: Можно подстроить баланс между полнотой распознавания и скоростью под свой сценарий.
| Главная страница | Обработка одного изображения |
|---|---|
![]() |
![]() |
| Меню выбора: одно изображение или пакетная загрузка ZIP. | Drag-and-drop или выбор файла; отправка на инференс и просмотр детекций с возможностью правки. |
| Пакетная обработка | Разметка инструментов |
|---|---|
![]() |
![]() |
| Загрузка ZIP-архива; очередь задач, прогресс и сводка по всем изображениям. | Пример детекции: bbox и подписи классов на фото. |
HackatonLCT2025/
├── backend/ # FastAPI + очереди + интеграция с Triton
│ ├── kitmatch/src/kitmatch/ # Код приложения
│ ├── docker-compose.yml # Главный compose для всего стека
│ ├── Dockerfiles/Dockerfile
│ ├── pyproject.toml
│ └── .env # Переменные окружения backend (пример добавлен)
├── front/ # React + Vite, разворачивается через Nginx
├── triton-models-inference/ # Triton Inference Server c YOLO моделью
└── experiments/ # Ноутбуки и скрипты экспериментов
- Docker, Docker Compose
- (Опционально) NVIDIA GPU + NVIDIA Container Toolkit для ускорения Triton
- Создайте внешнюю сеть (нужна для связи backend и triton):
docker network create shared_network || true- Запустите Triton Inference Server:
cd triton-models-inference
docker compose up --build -dПо умолчанию Triton доступен как сервис triton_server внутри сети shared_network.
- Проверьте/настройте переменные окружения backend (
backend/.envуже добавлен):
API_PORT_EXTERNAL=8080
API_PORT_INTERNAL=8000
API_HOST=0.0.0.0
APP_ENV=development
MONGODB_URI=mongo_host
MONGO_PORT=27017
RABBITMQ_HOST=rabbit_host
RABBIT_HEARTBEAT_MODELS=600
RABBIT_BLOCKED_CONN_TIMEOUT_MODELS=300
RABBIT_HEARTBEAT_REQUESTS=3000
RABBIT_BLOCKED_CONN_TIMEOUT_REQUESTS=3000
BACKEND__TRITON_URL=http://triton_server:8000
MODEL_NAME="yolo11"- Запустите весь стек (backend, frontend, MongoDB, RabbitMQ, Dozzle):
cd backend
docker compose up --build -dОткройте приложение: http://localhost:8080.
- Frontend (React + Nginx) обслуживает UI и проксирует
/api/*на backend. - Backend (FastAPI) принимает изображения, создает задачи в RabbitMQ.
- Воркеры обращаются к Triton для инференса, результаты сохраняются в MongoDB.
- UI отображает результаты, поддерживается пакетная обработка
.zip.
Базовый URL: http://localhost:8080
— Загрузка одного изображения:
curl -X POST http://localhost:8080/api/v1/infer/image \
-H "Content-Type: multipart/form-data" \
-F "file=@/path/to/image.jpg" \
-F "confidence_threshold=0.6"— Загрузка ZIP-архива:
curl -X POST http://localhost:8080/api/v1/infer/archive \
-H "Content-Type: multipart/form-data" \
-F "file=@/path/to/archive.zip" \
-F "confidence_threshold=0.75" \
--output results.jsonДополнительно:
GET /health— состояние сервисаGET /api/ping— пинг API
backend/: FastAPI, очереди, интеграция Triton, Docker Compose главного стека.front/: React + Vite, сборка и запуск через Nginx контейнером.triton-models-inference/: Triton Server, репозиторий моделей, тестовый клиент инференса.experiments/: эксперименты (YOLO, DINOv3 и т.д.).
- Backend запускается внутри контейнера; зависимости управляются
pyproject.toml. - Frontend — стандартный Vite-поток разработки; для продакшена используется Nginx-образ.
- Triton — конфигурация модели в
model_repository/*/config.pbtxt.
- При первом запуске убедитесь, что существует сеть
shared_network. - Пути к датасетам/кэшам в Triton compose (host-пути) при необходимости адаптируйте под свою машину.
- Крупные веса/артефакты рекомендуется хранить через Git LFS.



