В своем приложении я использовал vnimagerequesthandler с пользовательской MlModel для обнаружения объектов. < /p>
Приложение работает нормально с версиями iOS до 14.5. < /p>
Когда iOs 14.5. выбрасывает ошибку (ошибка domain = com.apple.vis code = 11 "встречаемого неизвестного исключения" userInfo = {nslocalizedDescription = встречи с неизвестным исключением}), память pixelbuffer и никогда не выпущена, он сделал буферы avcapturetput, а затем не появился. Pixelbuffer. В другой VAR я решил проблему, что новый кадр не появится, но проблема утечки памяти все еще происходит. src = "https://i.sstatic.net/j350u.png"/>
из -за памяти, а после панели. /> Обратите внимание, что до версии iOS 14.5 обнаружение работает отлично, попробуйте handler.perform ([visionrequest]) < /code> никогда не бросает никакой ошибки. < /p>
Вот мой код: < /p>
private func predictWithPixelBuffer(sampleBuffer: CMSampleBuffer) {
guard let pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else {
return
}
// Get additional info from the camera.
var options: [VNImageOption : Any] = [:]
if let cameraIntrinsicMatrix = CMGetAttachment(sampleBuffer, kCMSampleBufferAttachmentKey_CameraIntrinsicMatrix, nil) {
options[.cameraIntrinsics] = cameraIntrinsicMatrix
}
autoreleasepool {
// Because of iOS 14.5, there is a bug that when perform vision request failed, pixel buffer memory leaked so the AVCaptureOutput buffers is full, it will not output new frame any more, this is a temporary work around to copy pixel buffer to a new buffer, this currently make the memory increased a lot also. Need to find a better way
var clonePixelBuffer: CVPixelBuffer? = pixelBuffer.copy()
let handler = VNImageRequestHandler(cvPixelBuffer: clonePixelBuffer!, orientation: orientation, options: options)
print("[DEBUG] detecting...")
do {
try handler.perform([visionRequest])
} catch {
delegate?.detector(didOutputBoundingBox: [])
failedCount += 1
print("[DEBUG] detect failed \(failedCount)")
print("Failed to perform Vision request: \(error)")
}
clonePixelBuffer = nil
}
}
< /code>
кто -нибудь испытал ту же проблему? Если да, то как это исправить?
Подробнее здесь: https://stackoverflow.com/questions/673 ... n-ios-14-5
Утечка памяти Coreml в iOS 14,5 ⇐ IOS
Программируем под IOS
1740847772
Anonymous
В своем приложении я использовал vnimagerequesthandler с пользовательской MlModel для обнаружения объектов. < /p>
Приложение работает нормально с версиями iOS до 14.5. < /p>
Когда iOs 14.5. выбрасывает ошибку (ошибка domain = com.apple.vis code = 11 "встречаемого неизвестного исключения" userInfo = {nslocalizedDescription = встречи с неизвестным исключением}), память pixelbuffer и никогда не выпущена, он сделал буферы avcapturetput, а затем не появился. Pixelbuffer. В другой VAR я решил проблему, что новый кадр не появится, но проблема утечки памяти все еще происходит. src = "https://i.sstatic.net/j350u.png"/>
из -за памяти, а после панели. /> Обратите внимание, что до версии iOS 14.5 обнаружение работает отлично, попробуйте handler.perform ([visionrequest]) < /code> никогда не бросает никакой ошибки. < /p>
Вот мой код: < /p>
private func predictWithPixelBuffer(sampleBuffer: CMSampleBuffer) {
guard let pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else {
return
}
// Get additional info from the camera.
var options: [VNImageOption : Any] = [:]
if let cameraIntrinsicMatrix = CMGetAttachment(sampleBuffer, kCMSampleBufferAttachmentKey_CameraIntrinsicMatrix, nil) {
options[.cameraIntrinsics] = cameraIntrinsicMatrix
}
autoreleasepool {
// Because of iOS 14.5, there is a bug that when perform vision request failed, pixel buffer memory leaked so the AVCaptureOutput buffers is full, it will not output new frame any more, this is a temporary work around to copy pixel buffer to a new buffer, this currently make the memory increased a lot also. Need to find a better way
var clonePixelBuffer: CVPixelBuffer? = pixelBuffer.copy()
let handler = VNImageRequestHandler(cvPixelBuffer: clonePixelBuffer!, orientation: orientation, options: options)
print("[DEBUG] detecting...")
do {
try handler.perform([visionRequest])
} catch {
delegate?.detector(didOutputBoundingBox: [])
failedCount += 1
print("[DEBUG] detect failed \(failedCount)")
print("Failed to perform Vision request: \(error)")
}
clonePixelBuffer = nil
}
}
< /code>
кто -нибудь испытал ту же проблему? Если да, то как это исправить?
Подробнее здесь: [url]https://stackoverflow.com/questions/67364197/coreml-memory-leak-in-ios-14-5[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия