Error while training SSD object detector
조회 수: 6 (최근 30일)
이전 댓글 표시
i am using MATLAB 2020a to train SSD object detetctor for my database.I receive error which i am unable to troubleshoot. please help me out.
here is the code:
vehicleDataset1=vehicleDataset1.wbc;
rng(0);
shuffledIndices1 = randperm(height(vehicleDataset1));
idx1 = floor(0.6 * length(shuffledIndices1) );
trainingData1 = vehicleDataset1(shuffledIndices1(1:idx1),:);
testData1 = vehicleDataset1(shuffledIndices1(idx1+1:end),:);
imdsTrain1 = imageDatastore(trainingData1{:,'filename'});
bldsTrain1 = boxLabelDatastore(trainingData1(:,'wbc'));
imdsTest1 = imageDatastore(testData1{:,'filename'});
bldsTest1 = boxLabelDatastore(testData1(:,'wbc'));
trainingData1 = combine(imdsTrain1,bldsTrain1);
testData1 = combine(imdsTest1, bldsTest1);
data1 = read(trainingData1);
I1 = data1{1};
bbox1 = data1{2};
annotatedImage1 = insertShape(I1,'Rectangle',bbox1);
annotatedImage1 = imresize(annotatedImage1,2);
figure
imshow(annotatedImage1)
inputSize1 = [300 300 3];
numClasses1 = width(vehicleDataset1)-1;
lgraph1 = ssdLayers(inputSize1, numClasses1, 'resnet50');
augmentedTrainingData1 = transform(trainingData1,@augmentData);
augmentedData1 = cell(4,1);
for k = 1:4
data1 = read(augmentedTrainingData1);
augmentedData1{k} = insertShape(data1{1},'Rectangle',data1{2});
reset(augmentedTrainingData1);
end
figure
montage(augmentedData1,'BorderSize',10)
preprocessedTrainingData1 = transform(augmentedTrainingData1,@(data)preprocessData(data,inputSize1));
data1 = read(preprocessedTrainingData1);
I1 = data1{1};
bbox1 = data1{2};
annotatedImage1 = insertShape(I1,'Rectangle',bbox1);
annotatedImage1 = imresize(annotatedImage1,2);
figure
imshow(annotatedImage1)
options = trainingOptions('sgdm',...
'InitialLearnRate',5e-5,...
'MiniBatchSize',16,...
'Verbose',true,...
'MaxEpochs',50,...
'Shuffle','every-epoch',...
'VerboseFrequency',10,...
'CheckpointPath',tempdir);
[detector1,info1] = trainSSDObjectDetector(preprocessedTrainingData1,lgraph1,options);
data1 = read(testData1);
I1 = data1{1,1};
I1 = imresize(I1,inputSize1(1:2));
[bboxes1,scores1] = detect(detector1,I1, 'Threshold', 0.4);
I1 = insertObjectAnnotation(I1,'rectangle',bboxes1,scores1);
figure
imshow(I1)
here is error:
Invalid transform function defined on datastore.
The cause of the error was:
Error using bboxwarp>iParseInputs (line 324)
The value of 'bboxA' is invalid. Expected input number 1, bboxA, to be integer-valued.
Error in bboxwarp (line 81)
params = iParseInputs(bboxA,tform,ref,varargin{:});
Error in augmentData (line 23)
[B{2},indices] = bboxwarp(A{2},tform,rout,'OverlapThreshold',0.25);
Error in matlab.io.datastore.TransformedDatastore/applyTransforms (line 489)
data = ds.Transforms{ii}(data);
Error in matlab.io.datastore.TransformedDatastore/read (line 162)
[data, info] = ds.applyTransforms(data, info);
Error in nnet.internal.cnn.DataLoader/manageReadQueue (line 161)
data = read(self.Datastore);
Error in nnet.internal.cnn.DataLoader/readAhead (line 192)
manageReadQueue(self);
Error in nnet.internal.cnn.DataLoader (line 80)
readAhead(self);
Error in nnet.internal.cnn.GeneralDatastoreDispatcher (line 272)
this.DataLoader = nnet.internal.cnn.DataLoader(ds,...
Error in nnet.internal.cnn.DataDispatcherFactory.createDataDispatcherMIMO (line 170)
nnet.internal.cnn.GeneralDatastoreDispatcher( ...
Error in vision.internal.cnn.trainNetwork>iCreateTrainingDataDispatcher (line 190)
dispatcher = nnet.internal.cnn.DataDispatcherFactory.createDataDispatcherMIMO( ...
Error in vision.internal.cnn.trainNetwork (line 40)
trainingDispatcher = iCreateTrainingDataDispatcher(ds, mapping, trainedNet,...
Error in trainSSDObjectDetector (line 233)
[network, info] = vision.internal.cnn.trainNetwork(...
Error in wbc_detetctor_traininga (line 61)
[detector1,info1] = trainSSDObjectDetector(preprocessedTrainingData1,lgraph1,options);
댓글 수: 0
채택된 답변
Divya Gaddipati
2020년 6월 16일
Make sure your groundtruths are valid and non-empty i.e., the values of the bounding boxes are finite, positive, non-fractional, non-NaN and should be within the image boundary with a positive height and width. You should either discard or fix the samples with invalid bounding boxes.
댓글 수: 2
Madura Meenakshi Ramamoorthi
2021년 1월 30일
Hi, Can you please tell how to discard invalid bounding boxes
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!