Classification code R2016a, will not compile

I am trying to compile a simple example using bag of features with SVM. The compiler runs but the resulting executable gives the following error:
Undefined function 'predict' for input arguments of type 'single'.
Error in imageCategoryClassifier/predictImage (line 541)
Error in imageCategoryClassifier/predict (line 177)
Sample Code :
function test()
disp('This script takes a user defined image and runs it through a classifier. The output of the function is printed to screen')
x = load('model.mat');
[labelIdx,scores] = classifyListbox(x.img, x.categoryClassifier);
disp([labelIdx,scores])
function [labelIdx,scores] = classifyListbox(image,categoryClassifier)
[labelIdx, scores] = predict(categoryClassifier, image);
return

3 Commenti

How do you generate the input to the predict function?
Looks like predict wants categoryClassifier to be of type imageCategoryClassifier . You can type the following command to see if it returns imageCategoryClassifier or single.
class(categoryClassifier)
Greg
Greg il 19 Apr 2017
Modificato: Greg il 19 Apr 2017
I'm having a similar issue with predict and fitcnb. Even if I force mcc to include the needed toolboxes (with the -a tag) they're excluded. I haven't found a solution yet.

Accedi per commentare.

Risposte (2)

Image Analyst
Image Analyst il 2 Ago 2016
image is a built in function. You should not name your variables or dummy variables that.
Also, I fixed your formatting, but here is how you can do it yourself next time: http://www.mathworks.com/matlabcentral/answers/13205#answer_18099
Check your mccExcluded.log file to see if predict is allowed to be compiled.

2 Commenti

Thanks for the input. I tried the run the exe, and get errors in the imageCategoryClassifier methods:
Undefined function 'predict' for input arguments of type 'single'.
Error in imageCategoryClassifier/predictImage (line 541)
Error in imageCategoryClassifier/predict (line 177)
Error in imageCategoryClassifier/getPredictionOutputClasses (line 551)
Error in imageCategoryClassifier/predict (line 150)
Error in test_classifier (line 14)
MATLAB:UndefinedFunction
-----------------------------------------
The "mccExcluded.log" file has 4 exclusions:
The List of Excluded Files
Excluded files Exclusion Message ID Reason For Exclusion Exclusion Rule
C:/Program Files/MATLAB/R2016a-network/toolbox/local/+matlab/+internal/+toolboxes/addInstalledToolboxesToPath.m MATLAB:Completion:ExcludedBy Cannot be packaged for use in the target environment MCR. Removed from the parts list by license Compiler. [Cc]:/Program Files/MATLAB/R2016a-network/toolbox/local/[+]matlab/[+]internal/[+]toolboxes/addInstalledToolboxesToPath[.]m
C:/Program Files/MATLAB/R2016a-network/toolbox/local/+matlab/+internal/+zipAddOns/addInstalledZipAddOnsToPath.m MATLAB:Completion:ExcludedBy Cannot be packaged for use in the target environment MCR. Removed from the parts list by license Compiler. [Cc]:/Program Files/MATLAB/R2016a-network/toolbox/local/[+]matlab/[+]internal/[+]zipAddOns/addInstalledZipAddOnsToPath[.]m
C:/Program Files/MATLAB/R2016a-network/toolbox/local/pathdef.m MATLAB:Completion:ExcludedBy Cannot be packaged for use in the target environment MCR. Removed from the parts list by license Compiler. [Cc]:/Program Files/MATLAB/R2016a-network/toolbox/local/pathdef[.]m
C:/Program Files/MATLAB/R2016a-network/toolbox/matlab/codetools/initdesktoputils.m MATLAB:Completion:ExcludedBy Cannot be packaged for use in the target environment MCR. Removed from the parts list by license Compiler. [Cc]:/Program Files/MATLAB/R2016a-network/toolbox/matlab/codetools
Mike
Well it looks like it's excluding things. I don't know why. It would be worth asking the Mathworks.

Accedi per commentare.

Steven Lord
Steven Lord il 4 Ago 2016
There's nothing in your code that MATLAB Compiler can statically analyze and determine it needs to include the imageCategoryClassifier class (in particular its constructor and its predict method) from Computer Vision System Toolbox in your application.
I believe "helping" MATLAB Compiler by telling it that it needs to include imageCategoryClassifier will work. Try using the technique described in this Answer to do that.

1 Commento

Steve-
Thanks for the response.
I added the following to my script.
%#imageCategoryClassifier.m
%#predict
The first is a constructor and second is a method. I still get an error when running the executable:
Undefined function 'predict' for input arguments of type 'single'.
Error in imageCategoryClassifier/predictImage (line 541)
Error in imageCategoryClassifier/predict (line 177)
Error in imageCategoryClassifier/getPredictionOutputClasses (line 551)
Error in imageCategoryClassifier/predict (line 150)
Am I specifying the method directive correctly? Mike

Accedi per commentare.

Richiesto:

il 2 Ago 2016

Modificato:

il 19 Apr 2017

Community Treasure Hunt

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

Start Hunting!

Translated by