Модель CoreML, преобразованная из TensorFlow, не может использоваться внутри Xcode

Я обучил модель, используя Tensorflow GPU и Mobilenet v2 в качестве предварительно обученной модели, и после этого я попытался преобразовать ее в CoreML, как .mlmodel. Я читал, что вам нужно добавить некоторую предварительную / постобработку, и для этого вы можете создать конвейер и использовать этот конвейер внутри Xcode. Я пробовал использовать их пример, который можно найти здесь:

https://github.com/hollance/coreml-survival-guide/blob/master/MobileNetV2%2BSSDLite/ssdlite.py

Преобразование прошло успешно, но я не могу использовать его в Xcode, я получаю эту ошибку, и я не знаю, как ее решить, потому что этот процесс не полностью задокументирован. Ошибка:

Error Domain=com.apple.vis Code=3 "The VNCoreMLTransform request failed" UserInfo={NSLocalizedDescription=The VNCoreMLTransform request failed, NSUnderlyingError=0x2828e8b40 {Error Domain=com.apple.CoreML Code=0 "Failed to evaluate model 1 in pipeline" UserInfo={NSLocalizedDescription=Failed to evaluate model 1 in pipeline, NSUnderlyingError=0x2828e9560 {Error Domain=com.apple.CoreML Code=0 "Shape (2 x 1 x 1917) was not in enumerated set of allowed shapes" UserInfo={NSLocalizedDescription=Shape (2 x 1 x 1917) was not in enumerated set of allowed shapes}}}}}

Также так выглядит модель:

введите здесь описание изображения  введите описание изображения здесь  введите описание изображения здесь


person Serban Coroiu    schedule 24.02.2020    source источник


Ответы (1)


Одна из ваших моделей создает данные в форме (2 x 1 x 1917), но следующая модель в конвейере не позволяет вводить данные этой формы.

Вам нужно, чтобы формы ввода / вывода совпадали между различными моделями в конвейере. (И убедитесь, что модель действительно создает данные в этих формах; тот факт, что mlmodel говорит, что форма является чем-то, не означает, что это действительно правильно.)

person Matthijs Hollemans    schedule 25.02.2020