Привет, Хабр! Я расскажу о том, как сделал наш отечественный CVAT на Python с авторазметкой и обучением. Я как-то решил сделать свою нейронку, написал простенький софт для разметки, разметился, обучил нейронку, но чет не очень удобно было, да и разбирался я сам. Думаю — дай ка гляну гайд на ютубе по CV, там я и познакомился с CVAT. Что ж, программа удобная, правда докер у меня не ставился из-за старой винды, а данные на их сайт грузить тоннами было неудобно.
Я разметил так еще тыщу к своему датасету, перевел в свой формат разметки, который изначально написал, обучил и… Устал. Устал постоянно кидать кучу файлов на сервак, да и это довольно сомнительно для специфики моей нейронки. Вернулся к своему аннотатору. Он выглядел довольно простенько, но теперь то я попользовался CVAT и знаю, что нужно делать. Я плотно занялся разработкой своего Tank Annotation Tool, сделал зум, перемещение колёсиком, перевел на OpenGl для скорости, а потом подумал. Черт, так ведь это полноценное приложение!
У меня и скрипты были уже для перевода в разные форматы, и скрипты для обучения и для аннотирования. Что ж, неплохая база для того, чтобы пересобрать все под самостоятельный продукт, отвязать все от связанного с танками. Что ж, работа закипела, но прямо в процессе, поскольку я ушел из одного скрипта в полноценный проект, я создал модульную архитектуру с логикой, интерфейсом, и дело пошло очень бодро. Я размечал датасет, параллельно добавляя новые фичи, что мне были нужны здесь и сейчас, а потом, когда работа над собственной нейронкой была завершена я углубился в разработку полностью: тут и проджект менеджер, и темы, и иерархия классов, и авторазметка и пакетная разметка в отдельный «авто» буфер с последующей интеграцией в основной проект, и статистика. В общем и целом, работа шла, и вот уже сейчас это очень крутой аннотатор, что идет другой тропой нежели CVAT.
Главные УТП VisionForge
-
Локальность и безопасность: все работает без контейнеров в рамках одного exe файла
-
Умный конвейер автоматизации: можно загрузить свои веса и размечать ею данные для последующего дообучения модели.
-
Полный замкнутый цикл: от ручной разметки, до обучения и автоматической разметки больших объемов данных.
-
Скорость работы с big data: за счет работы напрямую с файловой системой.
Какие дальнейшие планы и что ждет проект:
-
Сегментация и полигональная разметка (уже написан код, полирую)
-
Поддержка видео и поквдровая разметка
-
Расширение пула поддерживаемых моделей (выйти за рамки YOLO)
Ссылка на гитхаб проект: (подписывайтесь, новый релиз уже скоро)
https://github.com/fikstt2/VisionForge
Буду рад фидбеку, конструктивной критике и фич‑реквестам!
ссылка на оригинал статьи https://habr.com/ru/articles/1053394/