Разбор оптимизации AURA — AR-компаньона для рабочего стола. Узнайте, как ускорить запуск с 35 до 1.5 секунд и внедрить ИИ-функции. Читайте и применяйте!
Представьте: на вашем рабочем столе появляется полупрозрачный светящийся шар, который смотрит на вас через веб-камеру, оценивает ваше выражение лица и жесты — и всё это в реальном времени. Звучит как научная фантастика? А вот и нет: AURA — реальный проект с открытым исходным кодом. Он не только анализирует ваши эмоции, но и позволяет управлять компьютером жестами. В этой статье мы разберём, как разработчикам удалось сократить время запуска с 35 секунд до 1,5 секунды, и какие уроки вы можете извлечь для своих проектов.
Первая версия AURA была настоящим кошмаром для пользователя. Приложение запускалось 35 секунд — за это время можно успеть сварить кофе и пересмотреть свои жизненные решения. Вот основные проблемы, которые тормозили систему.
При старте приложение синхронно импортировало PyTorch, EasyOCR, MediaPipe, PyAutoGUI и другие библиотеки. Это как если бы шеф-повар перед приготовлением блюда лично здоровался с каждым овощем на кухне — красиво, но неэффективно. Пока все модули загружались, пользователь не мог даже увидеть окно приложения.
Два потока — модуль распознавания эмоций и модуль распознавания жестов — пытались одновременно получить доступ к веб-камере. Windows, как справедливый арбитр, не позволял двум потокам использовать один и тот же дескриптор камеры, что приводило к краху приложения. Это напоминает двух детей, которые тянутся к одной и той же игрушке на дне рождения — только вместо игрушки у них камера, а вместо праздника — бесконечные ошибки.
Фронтенд опрашивал бэкенд каждые 500 миллисекунд через WebSocket. В результате «эмпатичные» реакции AURA появлялись с задержкой, как смех за кадром в старом ситкоме. Вы улыбаетесь, а шар «замечает» это только через полсекунды — комедийный тайминг, если бы комедия была о горе.
В .bat-файле, который должен был запускать приложение, была лишняя закрывающая скобка на второй строке. Приложение падало ещё до того, как успевало нормально запуститься. Это как споткнуться о собственные шнурки, не выйдя из дома.
Разработчики провели серьёзную работу над ошибками и добились впечатляющих результатов. Вот ключевые изменения, которые они внесли.
Тяжёлые ML-библиотеки (PyTorch, EasyOCR, MediaPipe) теперь загружаются не при старте, а по мере необходимости — в фоновых потоках. Это как если бы вы не носили с собой весь чемодан инструментов, а брали только то, что нужно в данный момент. Время загрузки PyTorch и EasyOCR сократилось с 15 секунд до 0 — они просто не загружаются при запуске.
Вместо двух потоков, борющихся за камеру, был создан единый менеджер, который получает доступ к веб-камере только один раз. Это решило проблему крашей и снизило нагрузку на систему. Теперь камера используется эффективно, и никаких конфликтов.
Раньше фронтенд собирался из исходников при каждом запуске — это занимало около 10 секунд. Теперь Electron загружает предварительно собранный статический пакет, как обычное приложение. Время рендеринга интерфейса упало с 10,5 до 0,4 секунды.
Частота опроса увеличена с 2 Гц до 20 Гц. Теперь шар реагирует на ваши эмоции практически мгновенно — быстрее, чем некоторые ваши друзья. Это делает взаимодействие более естественным и отзывчивым.
Теперь, когда приложение запускается за 1,5 секунды, давайте посмотрим, что оно умеет. AURA анализирует ваше лицо и жесты, превращая компьютер в интерактивного помощника.
С помощью face-mesh (отслеживание точек на лице) AURA определяет ваше настроение и меняет свой внешний вид:
MediaPipe Hands позволяет управлять компьютером жестами:
Фронтенд на Electron с Framer Motion и Tailwind создаёт эффект стекла: шар с жидким градиентом, панель настроения, прицелы, док быстрого доступа и HUD с вашей веб-камерой. Внутри — Python/FastAPI бэкенд с классом AuraBrain, который управляет CameraManager, VisionEngine, VoiceEngine и AutomationEngine. Всё это общается с фронтендом через WebSocket на 20 Гц.
Оптимизация AURA — отличный пример того, как можно улучшить производительность десктоп-приложения. Вот что вы можете сделать прямо сейчас:
Примените эти принципы в своём проекте — и ваши пользователи скажут вам спасибо (или хотя бы не будут поминать вас недобрым словом). А если хотите попробовать AURA сами, скачайте репозиторий и запустите StartAURA.bat. Только не открывайте его во время собеседования — предупреждающий звук при злости может выдать ваше волнение.
Хочешь закрепить знания на практике?
Решай задачи на Algolit — интерактивная платформа для обучения
Начать бесплатно →