Модель CoreML, преобразованная из TensorFlow, не может использоваться внутри XCode - PullRequest
0 голосов
/ 24 февраля 2020

Я обучил модель, используя Tensorflow GPU и Mobil enet 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}}}}}

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

enter image description here enter image description here enter image description here

1 Ответ

1 голос
/ 25 февраля 2020

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

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

...