Ошибка при преобразовании фрагмента типа узла с помощью onnx_coreml - PullRequest
0 голосов
/ 12 февраля 2020

Я преобразовал свою модель dar knet YOLOv3-SPP в модель PyTorch .pt. Затем я преобразовал .pt в .onnx. Моя конечная цель - добраться до модели CoreML. Я пытался использовать этот GitHub репозиторий. Однако при преобразовании моей модели я получаю сообщение об ошибке, похожее на это ...

...    
145/229: Converting Node Type LeakyRelu
146/229: Converting Node Type Conv
147/229: Converting Node Type Reshape
148/229: Converting Node Type Transpose
149/229: Converting Node Type Reshape
150/229: Converting Node Type Slice
Traceback (most recent call last):
  File "convert2.py", line 11, in <module>
    coreml_model = convert(model_proto, image_input_names=['inputImage'], image_output_names=['outputImage'], minimum_ios_deployment_target='13')
  File "/usr/local/lib/python3.6/dist-packages/onnx_coreml/converter.py", line 626, in convert
    _convert_node_nd(builder, node, graph, err)
  File "/usr/local/lib/python3.6/dist-packages/onnx_coreml/_operators_nd.py", line 2387, in _convert_node_nd
    return converter_fn(builder, node, graph, err)
  File "/usr/local/lib/python3.6/dist-packages/onnx_coreml/_operators_nd.py", line 2011, in _convert_slice
    end_masks=end_masks
  File "/usr/local/lib/python3.6/dist-packages/coremltools/models/neural_network/builder.py", line 4220, in add_slice_static
    assert len(strides) == rank
AssertionError

Используемый мной скрипт заключается в следующем ...

import sys
from onnx import onnx_pb
from onnx_coreml import convert

model_in = sys.argv[1]
model_out = sys.argv[2]

model_file = open(model_in, 'rb')
model_proto = onnx_pb.ModelProto()
model_proto.ParseFromString(model_file.read())
coreml_model = convert(model_proto, image_input_names=['inputImage'], image_output_names=['outputImage'], minimum_ios_deployment_target='13')
coreml_model.save(model_out)

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

1 Ответ

0 голосов
/ 12 февраля 2020

Выглядит как несоответствие ранга между рангом входного тензора и параметром среза. Не могли бы вы сообщить об ошибке в onnx-coreml

Как прокомментировал @ matthi js -hollemans, попробуйте установить последнюю версию onnx-coreml

pip install onnx-coreml==1.2

Несколько других проблем:

  1. С какой версией модели onnx вы работаете? с оператором-9 изменено поведение среза, и это может быть потенциальной точкой отказа преобразователя.

  2. Не могли бы вы также присоединить модель ONNX?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...