Ошибка и зависание в iOS Vision API "computeBlinkFunction" во время обнаружения функции

Я использую iOS Vision API для обнаружения функций в режиме реального времени на ARFrame Буферы передавались с камеры на iPhone X. Обычно это работает довольно хорошо, но как на iOS 11, так и на iOS 12 я иногда видел ошибки в консоли, о которых я не смог найти никакой информации. Эта ошибка выводится несколько раз подряд и обычно связана с серьезными зависаниями в моем приложении.

Кто-нибудь видел эту ошибку раньше в своей консоли, или есть идеи, что ее вызывает? Любая информация или советы по отладке будут с благодарностью.

LandmarkDetector error -20:out of bounds in int vision::mod::LandmarkAttributes::computeBlinkFunction(const vImage_Buffer &, const Geometry2D_rect2D &, const std::vector<Geometry2D_point2D> &, vImage_Buffer &, vImage_Buffer &, std::vector<float> &, std::vector<float> &) @ /BuildRoot/Library/Caches/com.apple.xbs/Sources/Vision/Vision-2.0.62/LandmarkDetector/LandmarkDetector_Attributes.mm:535

Немного больше информации: я думаю, что эта ошибка происходит во время моего VNDetectFaceLandmarksRequest, В настоящее время я передаю ограничивающий прямоугольник, найденный ARKit, нормализованный в inputFaceObservations, но я также видел эти ошибки, когда я использовал VNDetectFaceRectangleRequest чтобы найти границу лица. Я использую VNSequenceRequestHandler сделать эти запросы в режиме реального времени на каждом ARFrame с камеры, работающей в фоновом режиме.

1 ответ

В этом году на WWDC с Vision было рассмотрено, что запросы на обнаружение намного более ресурсоемки, чем запросы на отслеживание. Я считаю, что рекомендация состояла в том, что, как только вы получите обнаружение, вы должны прекратить свои запросы на обнаружение и просто использовать вместо этого отслеживание. Одна вещь, которую я заметил в своем собственном коде Vision (я использую его для текста и штрих-кодов), состоит в том, что, как только вы получаете начальное обнаружение, вы начинаете получать поток наблюдений, и, возможно, Vision выводит наблюдения быстрее чем система может реально справиться, если это будет продолжаться достаточно долго.

Другие вопросы по тегам