Найти в Дзене

Как мы искали замену Yolo и что из этого вышло

Эта история началась не с любви к экспериментам, а с простой рабочей задачи. Нам нужно было научить систему находить на документах печати, аккуратно вырезать их и передавать дальше на классификацию. Причем не просто распознавать: надо было отличать круглые печати от квадратных штампов. Для ИИ, который проверяет документы, это критично. Всё началось с Yolo от Ultralytics. Отличная модель, быстрая, точная, но лицензия AGPL требует раскрытия кода при публичном использовании. Для внутренних задач — ок, а вот для веба уже вопросы. Поэтому мы решили поискать альтернативы с открытыми лицензиями (MIT, Apache, BSD). На бумаге задача была проста: пройтись по моделям, выбрать подходящие и проверить. На практике пришлось запускать инференс, чтобы убедиться, что модели реально работают. Для тестов брали обычные бытовые изображения, на которых нейросети уже предобучены (ImageNet, COCO и прочие глобальные датасеты). Модель их «знает», поэтому сразу видно, как она справляется. Yolo8 в Keras
Логично б
Оглавление

Эта история началась не с любви к экспериментам, а с простой рабочей задачи. Нам нужно было научить систему находить на документах печати, аккуратно вырезать их и передавать дальше на классификацию. Причем не просто распознавать: надо было отличать круглые печати от квадратных штампов. Для ИИ, который проверяет документы, это критично.

Всё началось с Yolo от Ultralytics. Отличная модель, быстрая, точная, но лицензия AGPL требует раскрытия кода при публичном использовании. Для внутренних задач — ок, а вот для веба уже вопросы. Поэтому мы решили поискать альтернативы с открытыми лицензиями (MIT, Apache, BSD).

На бумаге задача была проста: пройтись по моделям, выбрать подходящие и проверить. На практике пришлось запускать инференс, чтобы убедиться, что модели реально работают. Для тестов брали обычные бытовые изображения, на которых нейросети уже предобучены (ImageNet, COCO и прочие глобальные датасеты). Модель их «знает», поэтому сразу видно, как она справляется.

Наши кандидаты

Yolo8 в Keras
Логично было попробовать, ведь часть проекта работает на Keras. Но модель показывала картинку, но не обнаруживала объекты. Судя по всему, внутренние изменения в Keras и специфика Yolo8 не совместились. Скорость бодрая, но толку нет.

Yolo7 из стороннего репозитория
Энтузиасты подчищали модели под MIT, но код оказался старым и требовал много ручной подгонки. Не вариант для нормального инференса.

SSD
Сработала с первого раза: нашла объекты, пусть не идеально, но стабильно и быстро. Отличный рабочий вариант.

Detr от Hugging Face
Трансформер, который «взлетел» с первого прогона. Минус — больше данных и ресурсов на обучение. Плюс — уверенный и мягкий инференс.

Detectron2 и линейка RCNN
Двухэтапные детекторы — чуть медленнее, но точнее. Подняли FasterRCNN и MaskRCNN: обе справились с тестами. FasterRCNN даже нашла печать на документе, хотя специально этому её не учили.

Другие варианты
TinyYOLOv3 в ImageAI — быстрая, хорошо подойдёт, если важна скорость.
PP-YOLOE+ в PaddlePaddle — перспективная, но пока не копали глубоко.

А что же мы выбрали?

Мы решили не ограничиваться только тем, что дают предобученные модели и немного «докрутили» под наши задачи. Результат впечатляет: точность на тестовых изображениях такая же, как на классификационных сетках, а на детектирующей задаче — выше 98%.

Вывод: вариантов много — быстрые, стабильные, те, что работают из коробки, и те, что требуют танцев. Главное, что теперь есть надёжная альтернатива Yolo, подходящая под наши нужды.

-2