Краткое описание
Проект выполнен для умных очков RK3588 Android. Лицо анфас, левый и правый профиль определяются локально без облачного сервиса распознавания. SDK принимает кадры Camera2 или локальные изображения и возвращает рамку лица, пять ключевых точек, направление, yaw, уверенность, кратковременный ID трека и время обработки. В поставку вошли Core AAR, Face AAR, Camera2 Demo и документация по интеграции.
Объем включает детекцию лица и оценку направления позы, а не идентификацию человека. Имена, табельные номера, база лиц, проверка 1:1, поиск 1:N, liveness, анализ возраста, пола и эмоций не входят.
Исходные условия
Целевая платформа — умные очки RK3588 Android arm64-v8a. Требовалось находить людей в предпросмотре камеры для выбора касанием, локального увеличения и последующих операций. Обработка должна была работать офлайн на устройстве и встраиваться в существующее Android-приложение.
Входы: Camera2 YUV_420_888, NV21, RGBA_8888 и локальные снимки. Реализация также учитывает различие частоты камеры и инференса, срок жизни буфера, поворот, зеркало, YUV stride и перевод координат модели в координаты предпросмотра.
Состав поставки
| Компонент | Содержание |
|---|---|
| Android SDK | Core AAR и Face AAR |
| Demo | Camera2 Demo APK для детекции в реальном времени |
| API | Синхронная и асинхронная детекция |
| Вход | YUV_420_888, NV21, RGBA_8888, локальные изображения |
| Выход | Рамка, уверенность, пять точек, анфас/слева/справа, yaw, trackId, время вызова |
| Документы | Руководство, примеры, диагностика, примечания к версии и список SHA-256 |
| Режим | Офлайн-обработка на RK3588 Android |
Техническое решение
Конвейер: Camera2 или снимок → формат и ориентация → OpenCV YuNet → геометрия пяти точек → анфас/лево/право → краткое сопровождение → callback и наложение на UI.
Базовая версия использует OpenCV 4.10.0 и YuNet на CPU. Реальный поток использует 320×320, стандартная обработка снимков — 640×640. Три направления используют один детектор и API; направление оценивается по геометрии точек.
Demo отправляет запрос каждые 100 мс, около десяти в секунду. Экземпляр SDK держит не более одного незавершенного асинхронного запроса. DirectBuffer приложения хранит Y/U/V. Camera2 использует acquireLatestImage(), пропуская устаревшие кадры и ограничивая задержку.
Причина ошибки и исправление
Некоторые изображения определялись на ПК, но давали ноль результатов в Android Demo. Сравнение модели, входов и мобильного выхода локализовало ошибку в чтении матрицы OpenCV Java.
FaceDetectorYN.detect() возвращает одноканальную матрицу N×15. Исходный Android-код читал не все 15 значений строки, поэтому корректные результаты отбрасывались проверкой длины. Исправление читает строку полностью по числу столбцов и каналов. Также добавлены поворот, преобразование цвета, резервная обработка широких изображений и проверка согласованности AAR.
Регрессия расширена на анфас, профили, кадры без лица, снимки и Camera2, чтобы разделить проблемы модели, предобработки, декодирования и координат UI.
Инженерная проверка
Данные взяты из протокола поставки от 29.07.2026 и относятся к Eye Algo Face SDK 0.4.5 fix5 на RK3588 Android arm64-v8a. Они подтверждают сборку, API и короткий тракт, но не серийную точность, долговременную стабильность или производительность.
| Проверка | Результат |
|---|---|
| Unit-тесты SDK, Core, Face | 157/157 пройдено |
| Unit-тесты Demo | 13/13 пройдено |
| Тесты Python-инструментов | 143/143 пройдено |
| Android Lint | 0 Error, 19 Warning |
| Сборка APK/AAR | Пройдена |
| Установка, запуск, разрешения | Пройдены |
| Camera2, 10 секунд | submit/callback 79/79; dropped 0 |
| Краткий поиск ошибок | Сбоев, ошибок камеры, разрешений и native-библиотек не найдено |
Набор содержит анфас, симметричные левый/правый профили и отрицательные кадры. Он проверяет детекцию, направление и UI, но не является основанием для Precision, Recall, F1 или точности по позам.
Результаты и применение
- Анфас, левый и правый профиль объединены в одном Android SDK API.
- Camera2 и локальные изображения используют общую структуру результата.
- Локальная обработка уменьшает необходимость передачи исходного видео и работает без сети.
- Рамки и точки подходят для выбора, краткого трекинга, увеличения и последующих алгоритмов.
- Пакет содержит Demo, AAR, руководство, диагностику и список хешей.
Применение: выбор человека в умных очках, сцены с несколькими людьми, подсказка направления, офлайн-снимки и подготовка кропов. Идентификация, liveness и поведенческий анализ не входят.
Границы приемки
Текущий артефакт предназначен для тестирования заказчиком и интеграции, а не для продуктивной подписи. До выпуска нужны ключи заказчика и зафиксированный реальный набор для правил разметки, Precision, Recall, F1, матрицы ошибок по позам и допустимых порогов.
Крайние профили, перекрытие, блики, темнота, малые лица и пересъемка экрана могут давать пропуски или ошибочное направление. Время одного изображения нельзя переносить на среднее, P95, устойчивую частоту или длительную работу. Незавершенный восьмичасовой тест не указан как пройденный.
Частые вопросы
SDK требует сеть?
Детекция работает на RK3588 Android без облака. Сеть нужна только функциям приложения заказчика.
Есть идентификация личности?
Нет. Есть положение лица, пять точек и направление, но нет имени, базы лиц, 1:1 и 1:N.
Как интегрировать в Android?
Core AAR и Face AAR дают синхронный и асинхронный API. В пакет входят Camera2 Demo, форматы, правила буфера, примеры и диагностика.
Какие проверки RK3588 выполнены?
Установка, запуск, разрешения, статические примеры и десятисекундный Camera2-тракт. Формальная точность, подпись и восемь часов стабильности — отдельные пункты.
Можно сразу использовать на другом RK3588?
API и метод интеграции повторно применимы, но камера, Android, ориентация, stride, память, температура и нагрузка требуют повторной проверки сборки, функций, производительности и стабильности.

Online
Phone
WeChat
Top