Task #6661
open
Руки, ладони и тело, привязанные к лицам
Added by Redmine Admin about 1 month ago.
Updated about 1 month ago.
Description
Модели MediaPipe: детектор ладоней (192), 21 точка руки (224), 33 точки позы (256, lite). Тело каждого лица — кроп от его лица (детектор позы MediaPipe сам ищет голову). Рука привязывается к телу с ближайшим запястьем, иначе к ближайшему лицу. Рисуются в цвете лица. TDD: чистые функции домена (кроп тела от лица, кроп руки от ладони, привязка рук), затем фикстуры с руками и телом.
Готово (не закоммичено).
- Модели MediaPipe в crates/native/models: детектор ладоней (192), 21 точка руки (224), поза lite (256), всего +21 MB; tools/convert_mediapipe.sh собирает все четыре. Детектор позы роняет tf2onnx, поэтому кроп тела строится от лица.
- Тело: кроп от лица — 5 ширин лица вниз, 20 поперёк (подобрано на фикстурах); остальные лица на кадре закрашиваются серым, чтобы модель читала тело своего лица: нос на своём лице в 117 телах из 117 против 78 без маски.
- Руки: ладони по кадру, рука по кропу ладони, рука отдаётся телу с ближайшим суставом той же руки (запястье, локоть, плечо) в пределах 2 ширин лица, иначе ближайшему лицу. Правая/левая рука от модели: 130 из 133 и 164 из 164 верно.
- Фикстуры: poses/wave-three.mp4 (три человека машут, CC BY-SA 4.0), poses/sign-alphabet.mp4 (жестовая азбука, CC0).
- Итог на фикстурах: 147 из 148 рук своему человеку, тело у каждого лица, у жестикулирующего тело на всех кадрах и рука на 80%.
- Отдельный поток: ладони 7 мс, рука 5 мс, тело 8 мс; лица идут в темпе камеры, руки и тело на кадр-два позже. Рисуются пунктиром в цвете лица. --no-limbs отключает.
- TDD: domain/body (10), domain/hands (10), domain/limbs (2), adapters/landmarks/palms (3), limbs на фикстурах (4), отрисовка (3), crowd regions (1). tools/check.sh: 15 из 15.
Ложные руки на кадре по плечи исправлены.
Причина: модель позы угадывает руки за кадром и уверена, что видела бы их (visibility до 0.86 на интервью, руки которого вне кадра). Сустав теперь считается видимым только при visibility > 0.5 и presence > 0.7 (вероятность, что сустав внутри изображения): у угаданных рук presence не выше 0.61, у настоящих 0.81 и выше в 9 суставах из 10.
Тест: на интервью и head-shake (кадр по плечи) ни одного локтя, запястья и руки; плечи на интервью в 57 телах из 59. Руки на фикстурах с руками по-прежнему 147 из 148. Ложные ладони на фоне отсекает модель руки: 0 рук на трёх роликах без рук. tools/check.sh: 15 из 15.
Also available in: Atom
PDF