Эта проблема может быть легко проиллюстрирована на примере кода Apple здесь .Я заметил, что промежуток времени, в течение которого начальная сеть v3 делала вывод / прогноз, дрейфовал с течением времени все выше и выше.Начиная примерно с 400 мс до 800-900 мс.У меня есть сравнительно глубокая сеть, которую я наблюдал в течение 1 секунды, чтобы сделать прогноз.Приложение становится довольно непригодным (в режиме реального времени и с AR).
Для быстрого и грязного профилирования я только что сделал тик / ток:
let requestHandler = VNImageRequestHandler(cvPixelBuffer: currentBuffer!, orientation: orientation)
visionQueue.async {
do {
// Release the pixel buffer when done, allowing the next buffer to be processed.
defer { self.currentBuffer = nil }
self.tik = Date()
try requestHandler.perform([self.classificationRequest])
let tok = Date()
let executionTime = tok.timeIntervalSince(self.tik)
print("Total Execution time: \(executionTime*1000) ms")
} catch {
print("Error: Vision request failed with error \"\(error)\"")
}
Это делает хорошую демонстрацию в течение 1 или 2 минут, но, похоже, наблюдается некоторое видимое падение кадра.Кто-нибудь видел это и какие-либо указатели о том, как отлаживать?Я новичок в этом, мне может понадобиться немного покопаться в одном из инструментов.Но было бы здорово, если бы кто-то там с глубоким опытом в такого рода отладке.Также будет хорошая дискуссия, если это действительно какая-то ошибка со стороны Apple.
Дополнительная информация : Я также выяснил причину, по которой пример кода решил запустить начальную функцию только на ЦП, не прибегая к использованию графического процессора для графики AR и SceneKit.В одном из моих прогонов я отключил это так, чтобы сеть могла использовать графический процессор.Похоже, что это создает сильную конкуренцию между AR и Vision, когда оба хотят мощности графического процессора.Впоследствии я также заметил, что перемещение телефона может сильно повлиять на FPS и время вывода из-за того, что AR пытается отследить телефон (плюс я также добавил обнаружение самолета, которое подчеркивало весь телефон, нагревая его).