Effacer les filtres
Effacer les filtres

Error: Undefined function 'preprocessData' for input arguments of type 'cell'.

19 vues (au cours des 30 derniers jours)
I am implementing MATLAB 2019b examle "Object Detection Using YOLO v2 Deep Learning"(https://www.mathworks.com/help/vision/ug/train-an-object-detector-using-you-only-look-once.html), but when I run the following line of code:
anchorBoxes = estimateAnchorBoxes(preprocessedTrainingData ,numAnchors)
it gives me error as mentioned in title. Thanks for helping out.
A small piece of code from example is mentioned below:
%...............Code..................................%
unzip vehicleDatasetImages.zip
data = load('vehicleDatasetGroundTruth.mat');
vehicleDataset = data.vehicleDataset;
rng(0)
shuffledIdx = randperm(height(vehicleDataset));
idx = floor(0.6 * height(vehicleDataset));
trainingDataTbl = vehicleDataset(shuffledIdx(1:idx),:);
imdsTrain = imageDatastore(trainingDataTbl{:,'imageFilename'});
bldsTrain = boxLabelDatastore(trainingDataTbl(:,'vehicle'));
trainingData = combine(imdsTrain,bldsTrain);
inputSize = [224 224 3];
preprocessedTrainingData = transform(trainingData, @(data)preprocessData(data,inputSize));
numAnchors = 5;
anchorBoxes = estimateAnchorBoxes(preprocessedTrainingData ,numAnchors)
%.................................................................................................................................................%
  1 commentaire
Harshveer Singh
Harshveer Singh le 6 Mai 2020
I am also getting the similar error. Unable to resolve it. I copied all the supporting function into a .m file. I then tried calling the function through its name in the command window but unable to do so. Someone please help how to go ahead with it.

Connectez-vous pour commenter.

Réponse acceptée

Steven Lord
Steven Lord le 9 Oct 2019
The preprocessData function is a supporting function that is part of that example and is not on the MATLAB path in general. Scroll down to the Supporting Functions section of that example and make a copy of that function, either as a local function inside the file where you're implementing your own variant of the example or as a separate function file.
  4 commentaires
TEJAS PHUTANE
TEJAS PHUTANE le 29 Déc 2019
I have changed the code for detection of balls from 1000 images but still stuck on following problem while executing code:
trainingDataForEstimation = transform(trainingData,@(data)preprocessData(data,inputSize));
numAnchors = 7;
[anchorBoxes, meanIoU] = estimateAnchorBoxes(trainingDataForEstimation, numAnchors)
OUTPUT:
Invalid transform function defined on datastore.
The cause of the error was:
Error using bboxresize>iParseInputs (line 89)
The value of 'bboxA' is invalid. Expected input number 1, bboxA, to be integer-valued.
Error in bboxresize (line 49)
params = iParseInputs(bboxA,scale);
Error in training>preprocessData (line 56)
data{2} = bboxresize(data{2},scale);
Error in training>@(data)preprocessData(data,inputSize) (line 17)
trainingDataForEstimation = transform(trainingData,@(data)preprocessData(data,inputSize));
Error in matlab.io.datastore.TransformedDatastore/read (line 148)
data = self.Transforms{ii}(data);
Error in matlab.io.Datastore/readall (line 250)
data = [data; read(copyds)]; %#ok<AGROW>
Error in matlab.io.datastore.TransformedDatastore/readall (line 188)
data = readall@matlab.io.Datastore(copyds);
Error in estimateAnchorBoxes>iReadallBoxes (line 270)
boxes = readall(ds);
Error in estimateAnchorBoxes>iCheckBoxesFromDatastore (line 215)
boxes = iReadallBoxes(ds);
Error in estimateAnchorBoxes>iParseInputs (line 168)
boxes = iCheckBoxesFromDatastore(datastore);
Error in estimateAnchorBoxes (line 136)
[boxes, numAnchors, params] = iParseInputs(datastore, numAnchors, varargin{:});
Error in training (line 19)
[anchorBoxes, meanIoU] = estimateAnchorBoxes(trainingDataForEstimation, numAnchors)
jose cabrera
jose cabrera le 27 Avr 2023
Hi, Did you find the solution??
Im getting the same problem

Connectez-vous pour commenter.

Plus de réponses (2)

michael scheinfeild
michael scheinfeild le 7 Mar 2020
some fix needed in preprocessing , first round and be sure it is positive top left , i think maybe check box outside image will be good , i didnt did it . also rounding of box cordinates is important !. also see that in image we have several bounding boxes and we check them all !
function data = preprocessData(data,targetSize)
% Resize image and bounding boxes to the targetSize.
scale = targetSize(1:2)./size(data{1},[1 2]);
data{1} = imresize(data{1},targetSize(1:2));
boxEstimate=round(data{2});
boxEstimate(:,1)=max(boxEstimate(:,1),1);
boxEstimate(:,2)=max(boxEstimate(:,2),1);
data{2} = bboxresize(boxEstimate,scale);
end
  9 commentaires

Connectez-vous pour commenter.


Samuel Manickavasagam S
Samuel Manickavasagam S le 23 Jan 2020
Tejas Phutane i too have this error
  1 commentaire
TEJAS PHUTANE
TEJAS PHUTANE le 2 Mar 2020
I tried verifying 1000 images in batches of 50 images and found errors in total 60 images.This method solved my problem

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by