How do I import yolov3 onnx model into MATLAB?

12 views (last 30 days)
Alexander Zimmerer
Alexander Zimmerer on 24 Aug 2021
Dear Community,
I am currently trying to import a pretrained yolo image segmentation model into Matlab (R2021a, all Addons and Toolboxes installed). When I was doing it with a yolov2-network as described here, I am able to do so.
However when I try to the the same with a newer version of the classifier, provided by the ONNX Model Zoo, I receive the following error message:
modelname='yolov3-10.onnx' %downloaded and stored in current dir
lgraph = importONNXLayers(modelname,'ImportWeights',true);
Error using nnet.internal.cnn.onnx.translateONNX>getONNXImageInputSize (line 482)
Unspecified input dimensions are supported only for sequence or batch dimensions.
Error in nnet.internal.cnn.onnx.translateONNX>createInputLayer (line 464)
ONNXInputShape = getONNXImageInputSize(ONNXInputDims); % Returns [C H W]
Error in nnet.internal.cnn.onnx.translateONNX (line 59)
inputLayer = createInputLayer(thisGraph, inputsWithoutInitializers{i}, UserImageInputSize);
Error in nnet.internal.cnn.onnx.importONNXLayers (line 10)
[LayersOrGraph, translationIssues] = nnet.internal.cnn.onnx.translateONNX(modelProto, OutputLayerType, UserImageInputSize, ImportWeights);
Error in importONNXLayers (line 48)
Layers = nnet.internal.cnn.onnx.importONNXLayers(modelfile, varargin{:});
Any I idea what I could do instead?
Many thanks in advance :)
Alex

Answers (2)

Anshika Chaurasia
Anshika Chaurasia on 17 Sep 2021
Hi Alexander,
The reason for error is that your model has variable input dimensions (i.e. input dimensions are not fix).
The possible workaround to import such model is to use importONNXFunction.
Hope it helps!
  1 Comment
Alexander Zimmerer
Alexander Zimmerer on 20 Sep 2021
Hi Anshika,
thank you very much for your answer.
When I use importONNXFunction as recommended is it possible from there to change the input layer to fixed dimensions and create a layer graph out of it?
Thanks again and best regards
Alex

Sign in to comment.


David Willingham
David Willingham on 20 Sep 2021
Hi Alex,
Have you seen that there is access to yolov3 in matlab?
David
  1 Comment
Alexander Zimmerer
Alexander Zimmerer on 21 Sep 2021
Hey David,
many thanks also for your answer. In fact this was exactly what I was doing meanwhile. However I still wanted to understand a kind of "generic" procedure of importing any open source model into matlab, train the model and ideally import it into Simulink to test it and generate code out of it.
So that's the basic idea behind my question ;)
Alex

Sign in to comment.

Products


Release

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!