Ошибка и зависание в iOS Vision API "computeBlinkFunction" во время обнаружения функции - PullRequest
0 голосов
/ 06 декабря 2018

Я использую 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 Ответ

0 голосов
/ 07 декабря 2018

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

...