Task #6616
openЛицо с сильным наклоном головы не распознаётся
0%
Description
Снимок от заказчика: голова наклонена к плечу примерно на 35°, офисный фон. Лицо не распознаётся.
MediaPipe перед моделью меша поворачивает кроп по линии глаз, которую даёт детектор (ключевые точки BlazeFace), и модель получает лицо в вертикальном положении. Наш кроп всегда выровнен по осям кадра, ключевые точки детектора не читаются.
Нужно: снимок в датасет, повёрнутый кроп по глазам детектора и по мешу на слежении, тесты на наклоны в обе стороны.
Updated by Redmine Admin about 1 month ago
Готово.
Причина: детектор находил наклонённое лицо (0.89), модель меша на выровненном по кадру кропе давала 0.013; снимок, повёрнутый вертикально, — 1.0.
Сделано как в MediaPipe: ключевые точки глаз детектора, кроп повёрнут по линии глаз (turned_roi, crop_turned), меш возвращается через тот же поворот; на слежении — поворот по углам глаз меша, размер вдоль осей лица. Поза головы считается в квадратных пикселях и осях лица.
Замеры: снимок заказчика распознаётся, крен −51°; все пять портретов под ±15/30/45° распознаются; крен следует повороту с точностью 5°, рыскание в пределах 9°, тангаж на наклонах до 30° — в пределах 20°.
Побочные правки: порог детектора 0.5 → 0.75 (настоящие лица датасета от 0.83, призраки на узорах 0.51–0.64); кроп сдвигается внутрь кадра по повёрнутому контуру; калибровка улыбки перемерена (покой 0.578, улыбка 0.610).
Тесты: снимок заказчика, повёрнутые портреты, крен и рыскание при наклоне, кроп и обратное отображение, кроп слежения при наклоне, поза в core, голова, наклоняющаяся от 0 до 50° за три секунды, остаётся одним человеком.