data =负载(“airportDatasetGroundTruth3.mat”);
LabelData = data.gTruth.LabelData;
shuffledIndices = randperm(高度(LabelData));
地板idx =(0.6 *高(LabelData));
trainingDataTbl = LabelData (shuffledIndices (trainingIdx):);
validationIdx = idx + 1: idx + 1 +地板(0.1 *长度(shuffledIndices));
validationDataTbl = LabelData (shuffledIndices (validationIdx):);
testIdx = validationIdx(结束)+ 1:长度(shuffledIndices);
testDataTbl = LabelData (shuffledIndices (testIdx):);
imdsTrain = imageDatastore (trainingDataTbl {:,“imageFilename”});
bldsTrain = boxLabelDatastore (trainingDataTbl (: 2:6));
imdsValidation = imageDatastore (validationDataTbl {:,“imageFilename”});
bldsValidation = boxLabelDatastore (validationDataTbl (: 2:6));
imdsTest = imageDatastore (testDataTbl {:,“imageFilename”});
bldsTest = boxLabelDatastore (testDataTbl (: 2:6));
trainingData =结合(imdsTrain bldsTrain);
validationData =结合(imdsValidation bldsValidation);
testData =结合(imdsTest bldsTest);
annotatedImage = insertShape(我“矩形”,bbox);
annotatedImage = imresize (annotatedImage 2);
preprocessedTrainingData =变换(trainingData @(数据)preprocessData(数据、inputSize));
anchorBoxes = estimateAnchorBoxes (preprocessedTrainingData numAnchors)
featureExtractionNetwork = resnet50;
featureLayer =“activation_40_relu”;
numClasses =宽度(LabelData) 1;
lgraph = fasterRCNNLayers (inputSize numClasses、anchorBoxes featureExtractionNetwork, featureLayer);
augmentedTrainingData =变换(trainingData @augmentData);
data =阅读(augmentedTrainingData);
augmentedData {k} = insertShape(数据{1},“矩形”、数据{2});
重置(augmentedTrainingData);
蒙太奇(augmentedData“BorderSize”,10)
trainingData =变换(augmentedTrainingData @(数据)preprocessData(数据、inputSize));
validationData =变换(validationData @(数据)preprocessData(数据、inputSize));
annotatedImage = insertShape(我“矩形”,bbox);
annotatedImage = imresize (annotatedImage 2);
选择= trainingOptions (“个”,…
“CheckpointPath”,“E: \ ADRIAN数据集\ BAKALARKA \ \ checkpoint_fasterrcnn ',…
“ValidationData”,validationData);
[探测器,信息]= trainFasterRCNNObjectDetector (trainingData lgraph,选项,…
“NegativeOverlapRange”,0.3 [0],…
“PositiveOverlapRange”(0.6 - 1));
pretrained =负载(“fasterRCNNResNet50EndToEndVehicleExample.mat”);
探测器= pretrained.detector;
我= imread (testDataTbl.imageFilename {1});
我= imresize(我inputSize (1:2));
我= insertObjectAnnotation (,“矩形”bboxes,分数);
testData =变换(testData @(数据)preprocessData(数据、inputSize));
detectionResults =检测(testData探测器,“MinibatchSize”2);
[据美联社、召回、精密]= evaluateDetectionPrecision (detectionResults testData);
precisionv = cell2mat(精度);
标题(sprintf (“平均精度= % .2f”,意味着(美联社)))
tform = randomAffine2d (“XReflection”,真正的);
tform溃败= affineOutputView(深圳);
{1}= imwarp数据(数据{1}、tform“OutputView”,溃败);
{2}= bboxwarp数据(数据{2}、tform溃败);
函数targetSize data = preprocessData(数据)
{1}= imresize数据(数据{1},targetSize (1:2));
{2}= bboxresize数据(数据{2},规模);