无效的变换函数上定义数据存储。

33视图(30天)
doTrainingAndEval = true;
% LoadingGroundTruth;
data =负载(“miovehicleDatasetGtruth.mat”);
miovehicleDataset = data.data.miovehicleDataset
%数据集划分成训练,有效和测试
rng (0)
shuffledIndices = randperm(高度(miovehicleDataset));
地板idx =(0.6 *高(miovehicleDataset));
trainingIdx = 1: idx;
trainingDataTbl = miovehicleDataset (shuffledIndices (trainingIdx):);
validationIdx = idx + 1: idx + 1 +地板(0.1 *长度(shuffledIndices));
validationDataTbl = miovehicleDataset (shuffledIndices (validationIdx):);
testIdx = validationIdx(结束)+ 1:长度(shuffledIndices);
testDataTbl = miovehicleDataset (shuffledIndices (testIdx):);
%使用imageDatastore和boxLabelDatastore为加载图片和标签数据创建数据存储在训练和评估
imdsTrain = imageDatastore (trainingDataTbl {:,“imageFilename”});
bldsTrain = boxLabelDatastore (trainingDataTbl(:, 2:结束));
% % % %替代代码行~ 29;可选为第17行代码;
% carTbl = trainingDataTbl(:,“汽车”)
% busTbl = trainingDataTbl(:,“公共汽车”)
% work_vanTbl = trainingDataTbl (:,“work_van”)
% motorcycleTbl = trainingDataTbl(:,“摩托车”)
% bicycleTbl = trainingDataTbl(:,“自行车”)
% pedestrianTbl = trainingDataTbl(:,“行人”)
% pickup_truckTbl = trainingDataTbl (:,“pickup_truck”)
% articulated_truckTbl = trainingDataTbl (:,“articulated_truck”)
% singleunit_truckTbl = trainingDataTbl (:,“singleunit_truck”)
% motorized_vehicleTbl = trainingDataTbl (:,“motorized_vehicle”)
% nonmotorized_vehicleTbl = trainingDataTbl (:,“nonmotorized_vehicle”)
% bldsTrain = boxLabelDatastore (carTbl、busTbl work_vanTbl, motorcycleTbl, bicycleTbl, pedestrianTbl, pickup_truckTbl, articulated_truckTbl, singleunit_truckTbl, motorized_vehicleTbl, nonmotorized_vehicleTbl)
imdsValidation = imageDatastore (validationDataTbl {:,“imageFilename”});
bldsValidation = boxLabelDatastore (validationDataTbl(:, 2:结束));
imdsTest = imageDatastore (testDataTbl {:,“imageFilename”});
bldsTest = boxLabelDatastore (testDataTbl(:, 2:结束));
% % %结合图像和数据存储盒标签
trainingData =结合(imdsTrain bldsTrain);
validationData =结合(imdsValidation bldsValidation);
testData =结合(imdsTest bldsTest);
inputSize = (224 224 3);
因为代码线41 %可能错误
preprocessedTrainingData =变换(trainingData @(数据)preprocessData(数据、inputSize));
numAnchors = 3;
anchorBoxes = estimateAnchorBoxes (preprocessedTrainingData numAnchors)
featureExtractionNetwork = resnet50;
featureLayer =“activation_40_relu”;
numClasses =宽度(miovehicleDataset) 1;
lgraph = fasterRCNNLayers (inputSize numClasses、anchorBoxes featureExtractionNetwork, featureLayer);
augmentedTrainingData =变换(trainingData @augmentData);
augmentedData =细胞(4,1);
k = 1:4
data =阅读(augmentedTrainingData);
augmentedData {k} = insertShape(数据{1},“矩形”、数据{2});
重置(augmentedTrainingData);
结束
trainingData =变换(augmentedTrainingData @(数据)preprocessData(数据、inputSize));
validationData =变换(validationData @(数据)preprocessData(数据、inputSize));
选择= trainingOptions (“个”,
“MaxEpochs”10
“MiniBatchSize”2,
“InitialLearnRate”1 e - 3,
“CheckpointPath”tempdir,
“ValidationData”,validationData);
pretrained =负载(“rcnnresnet50dectrvehicleexample.mat”);
detector1 = pretrained.detector1;
[detector1,信息]= trainFasterRCNNObjectDetector (trainingData lgraph,选项,
“NegativeOverlapRange”,0.3 [0],
“PositiveOverlapRange”(0.6 - 1));
faster_rcnn_detector_miovehicleDataset = detector1
保存(“faster_rcnn_detector_miovehicleDataset”)
我= imread (testDataTbl.imageFilename {1});
我= imresize(我inputSize (1:2));
[bboxes,分数]=检测(detector1,我);
我= insertObjectAnnotation (,“矩形”bboxes,分数);
imshow(我)
函数data = augmentData(数据)
%随机翻转图像水平和边界框。
tform = randomAffine2d (“XReflection”,真正的);
溃败= affineOutputView(尺寸(数据{1}),tform);
{1}= imwarp数据(数据{1}、tform“OutputView”,溃败);
{2}= bboxwarp数据(数据{2}、tform溃败);
结束
函数targetSize data = preprocessData(数据)
% targetSize调整图像和边界框。
规模= targetSize (1:2)。{1}/大小(数据,[1 - 2]);
{1}= imresize数据(数据{1},targetSize (1:2));
{2}= bboxresize数据(数据{2},规模);
结束
无效的变换函数上定义数据存储。
错误的原因是:
错误使用vision.internal.cnn.validation.checkTrainingBoxes(12)行
训练数据的读取输入数据存储包含无效的边界框。边界框必须
非空,完全包含在他们相关的图像,必须积极的宽度和高度。使用数据存储
转换方法和删除无效的边界框。
错误vision.internal.cnn.fastrcnn.validateImagesAndBoxesTransform(20)行
盒= vision.internal.cnn.validation.checkTrainingBoxes(图像、盒);
错误
trainFasterRCNNObjectDetector > @(数据)vision.internal.cnn.fastrcnn.validateImagesAndBoxesTransform(数据、params.ColorPreprocessing)
(第1667行)
transformFcn =
@(数据)vision.internal.cnn.fastrcnn.validateImagesAndBoxesTransform(数据,params.ColorPreprocessing);
在matlab.io.datastore错误。TransformedDatastore / applyTransforms(第473行)
data = ds.Transforms{2}(数据);
在matlab.io.datastore错误。TransformedDatastore /读(第162行)
(数据、信息)= ds。applyTransforms(数据、信息);
错误vision.internal.cnn.rcnnDatasetStatistics > readThroughAndGetInformation(第72行)
批=阅读(数据存储);
错误vision.internal.cnn.rcnnDatasetStatistics(29)行
params = readThroughAndGetInformation(数据存储,layerGraph);
错误trainFasterRCNNObjectDetector > iCollectImageInfo(第1674行)
imageInfo = vision.internal.cnn.rcnnDatasetStatistics (trainingData rpnLayerGraph imageInfoParams);
错误trainFasterRCNNObjectDetector(第427行)
[imageInfo、trainingData选项]= iCollectImageInfo (trainingData、fastRCNN iRPNParamsEndToEnd (params),
参数,选项);
错误fasterrcnnnetworkdetectorcode(第65行)
[detector1,信息]= trainFasterRCNNObjectDetector (trainingData lgraph,选项,…
还有一个pretrained探测器中加载代码;超过200 mb的,所以我不能在这里分享。请指导我的错误,我认为错误,请等待,因为空的边界框。200年有11类,车辆数据集。并不是所有的图片都11类。所以边界盒[]。
1评论
郑元
郑元 2021年4月24日
喂,我现在面临着同样的问题,当训练我YOLOv2模型。
你已经解决了吗?
谢谢你!

登录置评。

答案(0)