Как я устал от CVAT и в соло написал десктопный инструмент для авторазметки датасетов на PyQt5

от автора

Привет, Хабр! Я расскажу о том, как сделал наш отечественный CVAT на Python с авторазметкой и обучением. Я как-то решил сделать свою нейронку, написал простенький софт для разметки, разметился, обучил нейронку, но чет не очень удобно было, да и разбирался я сам. Думаю — дай ка гляну гайд на ютубе по CV, там я и познакомился с CVAT. Что ж, программа удобная, правда докер у меня не ставился из-за старой винды, а данные на их сайт грузить тоннами было неудобно.

Tank Annotation tool, первые версии моего аннотатора

Tank Annotation tool, первые версии моего аннотатора

Я разметил так еще тыщу к своему датасету, перевел в свой формат разметки, который изначально написал, обучил и… Устал. Устал постоянно кидать кучу файлов на сервак, да и это довольно сомнительно для специфики моей нейронки. Вернулся к своему аннотатору. Он выглядел довольно простенько, но теперь то я попользовался CVAT и знаю, что нужно делать. Я плотно занялся разработкой своего Tank Annotation Tool, сделал зум, перемещение колёсиком, перевел на OpenGl для скорости, а потом подумал. Черт, так ведь это полноценное приложение!

Финальная версия Tank Annotation Tool перед рефакторингом

Финальная версия Tank Annotation Tool перед рефакторингом

У меня и скрипты были уже для перевода в разные форматы, и скрипты для обучения и для аннотирования. Что ж, неплохая база для того, чтобы пересобрать все под самостоятельный продукт, отвязать все от связанного с танками. Что ж, работа закипела, но прямо в процессе, поскольку я ушел из одного скрипта в полноценный проект, я создал модульную архитектуру с логикой, интерфейсом, и дело пошло очень бодро. Я размечал датасет, параллельно добавляя новые фичи, что мне были нужны здесь и сейчас, а потом, когда работа над собственной нейронкой была завершена я углубился в разработку полностью: тут и проджект менеджер, и темы, и иерархия классов, и авторазметка и пакетная разметка в отдельный «авто» буфер с последующей интеграцией в основной проект, и статистика. В общем и целом, работа шла, и вот уже сейчас это очень крутой аннотатор, что идет другой тропой нежели CVAT.

Тулбар и экпорт

Тулбар и экпорт
Мегю обучения модели и импорт аннотаций из популярных форматов

Мегю обучения модели и импорт аннотаций из популярных форматов
Иерархия классов и подготовка датасета.

Иерархия классов и подготовка датасета.

Главные УТП VisionForge

  1. Локальность и безопасность: все работает без контейнеров в рамках одного exe файла

  2. Умный конвейер автоматизации: можно загрузить свои веса и размечать ею данные для последующего дообучения модели.

  3. Полный замкнутый цикл: от ручной разметки, до обучения и автоматической разметки больших объемов данных.

  4. Скорость работы с big data: за счет работы напрямую с файловой системой.

Какие дальнейшие планы и что ждет проект:

  1. Сегментация и полигональная разметка (уже написан код, полирую)

  2. Поддержка видео и поквдровая разметка

  3. Расширение пула поддерживаемых моделей (выйти за рамки YOLO)

Ссылка на гитхаб проект: (подписывайтесь, новый релиз уже скоро)

https://github.com/fikstt2/VisionForge

Буду рад фидбеку, конструктивной критике и фич‑реквестам!

ссылка на оригинал статьи https://habr.com/ru/articles/1053394/