У вас было три варианта решения:
1. Упростить модели 🖱️
Можно заменить тяжёлые модели на более лёгкие. Они требуют меньше вычислений и быстрее обрабатывают кадры. Но точность может снизиться, и система начнёт пропускать нужные события.
2. Оптимизировать модели на CPU 🖱️
Можно оставить модели и оптимизировать их выполнение: убрать лишние вычисления, подобрать подходящий формат и ускорить инференс.
Но модель — лишь один этап обработки. Кадр нужно получить, передать в обработку и отправить результат дальше. Если время теряется на других этапах, оптимизация модели не поможет.
3. Пересобрать архитектуру 🖱️
Этот вариант выбрали в СИБУРе.
Наша команда проанализировала весь путь кадра и увидела, что проблема не только в отдельных моделях, а в том, как они взаимодействуют между собой.
Поэтому мы разделили обработку видео на отдельные этапы, настроили повторное использование уже полученных данных и распределение нагрузки между компонентами.
Это позволило избежать лишних вычислений и ускорить процессы на крупных кейсах до 28 раз. Подробнее об этом писали в статье на «Хабре»
💚 — за новый формат интерактивов.