CoreML: иногда возникает непредвиденная ошибка модели обработки ошибок

Контекст: я использую пользовательскую модель CoreML, созданную специалистом по данным. Модель представляет собой конвейер, который использует модель Apple SoundAnalysisPreprocessing в качестве первой модели. За моделью SoundAnalysisPreprocessing следует пользовательская модель, которая содержит различные слои свертки и softmax.

Проблема. При запуске прогноза я иногда получаю Unexpected error processing model. При точно таком же вводе я иногда получаю правильный результат, а иногда получаю эту ошибку.

Вопрос. Я понятия не имею, что делать с этой ошибкой. Это проблема с памятью из-за плохого распределения ввода? Проблема в самой модели? Вы хоть представляете, что я могу сделать, чтобы понять, что происходит?

Полный журнал ошибок:

[DSPGraph] throwing DSPGraph::Exception with backtrace:
0       0x7fff2bcf5df9  DSPGraph::Graph::processMultiple(DSPGraph::GraphIOData*, DSPGraph::GraphIOData*) + 249
1       0x7fff2bc3b570  processThroughGraph(id<MLFeatureProvider>, MLMultiArrayConstraint*, MLMultiArray*, NSString*, DSPGraph::Graph&, std::__1::vector<float, DSPGraph::Graph&::allocator<float> >&, void (DSPGraph::Graph, NSString*::GraphIOData&) block_pointer, NSError* __autoreleasing*) + 979
2       0x7fff2bc3c573  -[SNDSPGraphCustomModel predictionFromFeatures:options:error:] + 195
3       0x7fff2bc3ca49  -[_SNVGGishFrontEndProcessingCustomModel predictionFromFeatures:options:error:] + 98
4       0x7fff2496ac30  -[MLAppleSoundAnalysisPreprocessing predictionFromFeatures:options:error:] + 132
5       0x7fff248d345c  -[MLPipeline predictionFromFeatures:options:error:] + 178
6       0x7fff24923f76  -[MLModel predictionFromFeatures:error:] + 92
7          0x104b89a68  $s10TestCoreML17AudioFileAnalyzerC019previsionWithManualD3Cut33_1966162A0510E69792A8D979B37CC177LL3for10completiony10Foundation3URLV_ySo12MLMultiArrayCSgXEtF + 5992
8          0x104b87850  $s10TestCoreML17AudioFileAnalyzerC05startF03for10completiony10Foundation3URLV_yyXEtF + 80
9          0x104bb360c  $s10TestCoreML23ClassificationViewModelC14startRecognize4word8mockData11resultBlock06finishM0ySS_SbySb_SaySo16SNClassificationCGSgtcSgyyctF + 3436
10         0x104bad21c  $s10TestCoreML18ReadViewControllerC010collectionE0_15didSelectItemAtySo012UICollectionE0C_10Foundation9IndexPathVtFyycfU_ + 220
11         0x104b923fd  $sIeg_IeyB_TR + 45
12         0x104f79d64  _dispatch_client_callout + 8
13         0x104f7c6d6  _dispatch_continuation_pop + 552
14         0x104f8fa8f  _dispatch_source_invoke + 2205
15         0x104f87c53  _dispatch_main_queue_callback_4CF + 1043
[truncated?]
2019-10-30 20:33:04.209693+0100 TestCoreML[5024:191792] [] Caught graph exception 1718775073 !mrf fromBytePos (0) + numBytesToCopy (61440) > mABL->mBuffers[0].mDataByteSize (2112) in /BuildRoot/Library/Caches/com.apple.xbs/Sources/Listen_Sim/Listen-35/CoreAudioUtility/Source/CADSP/DSPGraph/DSPGraph_Utils.cpp:742

person CedricSoubrie    schedule 30.10.2019    source источник


Ответы (2)


Я считаю, что вам нужно обновить некоторые библиотеки в вашем коде. На основании этого GitHub, связанного с вашей ошибкой.

Github

исключение графа 1718775073 является ключом.

На форуме они сказали, что это исправление из-за странной разницы между переменными входящего и исходящего вызовов.

if (-0.01f <= hw_srate || hw_srate >= 0.1.f)
{
fmt.mSampleRate = prm->state;
fat->sample_rate = 1.0f;
}
person Michael Hearn    schedule 11.11.2019
comment
Единственная библиотека, связанная с аудиокодом, которая у меня есть, — это CoreML. И мы уже на iOS12. Спасибо за ссылку на github, но это не решило мою проблему. - person CedricSoubrie; 12.11.2019
comment
Попробуйте использовать печать по размеру объектов в файле внизу ошибки. - person Michael Hearn; 13.11.2019

Чтобы решить эту проблему, вам нужно вручную переместить файл модели в каталог приложения, а затем добавить его в xcode — похоже, это ошибка в Xcode, помещающая модель, которая хранится в другом каталоге, в пакет приложения.

person Osian    schedule 23.01.2020