较低的平均精度R-CNN更快

29日视图(30天)
Adrian Kleffler
Adrian Kleffler 2023年5月11日18:44
回答: 罗希特 约12小时前
你好,我想火车快R-CNN对象探测器…运行此代码后,训练花了7个小时但是平均精度很差…一个类的平均精度零. .我不知道什么´s错……
data =负载(“airportDatasetGroundTruth3.mat”);
LabelData = data.gTruth.LabelData;
%显示前几排的数据集。
LabelData (1:4,:)
rng (0)
shuffledIndices = randperm(高度(LabelData));
地板idx =(0.6 *高(LabelData));
trainingIdx = 1: idx;
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);
data =阅读(trainingData);
我={1}数据;
bbox ={2}数据;
annotatedImage = insertShape(我“矩形”,bbox);
annotatedImage = imresize (annotatedImage 2);
imshow (annotatedImage)
inputSize = (224 224 3);
preprocessedTrainingData =变换(trainingData @(数据)preprocessData(数据、inputSize));
numAnchors = 3;
anchorBoxes = estimateAnchorBoxes (preprocessedTrainingData numAnchors)
featureExtractionNetwork = resnet50;
featureLayer =“activation_40_relu”;
numClasses =宽度(LabelData) 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);
结束
蒙太奇(augmentedData“BorderSize”,10)
trainingData =变换(augmentedTrainingData @(数据)preprocessData(数据、inputSize));
validationData =变换(validationData @(数据)preprocessData(数据、inputSize));
data =阅读(trainingData);
我={1}数据;
bbox ={2}数据;
annotatedImage = insertShape(我“矩形”,bbox);
annotatedImage = imresize (annotatedImage 2);
imshow (annotatedImage)
选择= trainingOptions (“个”,
“MaxEpochs”现年40岁的
“MiniBatchSize”2,
“InitialLearnRate”1的军医,
“CheckpointPath”,“E: \ ADRIAN数据集\ BAKALARKA \ \ checkpoint_fasterrcnn ',
“ValidationData”,validationData);
doTraining = true;
如果doTraining
%火车R-CNN探测器越快。
% * NegativeOverlapRange和PositiveOverlapRange确保调整
%,训练样本与地面紧密重叠的真理。
[探测器,信息]= trainFasterRCNNObjectDetector (trainingData lgraph,选项,
“NegativeOverlapRange”,0.3 [0],
“PositiveOverlapRange”(0.6 - 1));
其他的
%负载pretrained检测器的例子。
pretrained =负载(“fasterRCNNResNet50EndToEndVehicleExample.mat”);
探测器= pretrained.detector;
结束
我= imread (testDataTbl.imageFilename {1});
我= imresize(我inputSize (1:2));
[bboxes,分数]=检测(探测器,I);
我= insertObjectAnnotation (,“矩形”bboxes,分数);
imshow(我)
testData =变换(testData @(数据)preprocessData(数据、inputSize));
detectionResults =检测(testData探测器,“MinibatchSize”2);
[据美联社、召回、精密]= evaluateDetectionPrecision (detectionResults testData);
recallv = cell2mat(回忆);
precisionv = cell2mat(精度);
(r,指数)= (recallv)进行排序;
p = precisionv(指数);
情节(r, p)
包含(“回忆”起)
ylabel (“精度”)
网格
标题(sprintf (“平均精度= % .2f”,意味着(美联社)))
函数data = augmentData(数据)
%随机翻转图像水平和边界框。
tform = randomAffine2d (“XReflection”,真正的);
深圳=大小(数据{1});
tform溃败= affineOutputView(深圳);
{1}= imwarp数据(数据{1}、tform“OutputView”,溃败);
%经盒。
{2}= bboxwarp数据(数据{2}、tform溃败);
结束
函数targetSize data = preprocessData(数据)
% targetSize调整图像和边界框。
深圳=大小(数据{1}、(1 2));
规模= targetSize(1:2)。/深圳;
{1}= imresize数据(数据{1},targetSize (1:2));
%
%调整盒子。
{2}= bboxresize数据(数据{2},规模);
结束
平均精度只有33% ....二等头等舱(15%,8%,73%,第三类、第四类0%,66%第五类)

答案(1)

罗希特
罗希特 约10小时前
嗨,艾德里安,
我知道你想火车更快RCNN模型对象检测但越来越低精度的分数。
这是潜在的平均精度低的原因你更快R-CNN对象探测器:
  1. 训练数据不足:确保你有一个多样化的、有代表性的训练数据集和一个足够数量的样本为每个类。确保数据集涵盖了广泛的对象不同。可以探索数据增强技术人为地增加训练数据集的大小,如随机缩放、旋转、裁剪或翻转。
  2. 不准确的边界框注释:验证边界框注释在地面实况数据是准确和严密封闭感兴趣的对象。不正确或不精确的注释可能导致低劣的性能。
  3. 培训或微调不足:考虑培训模型更多的时代或调整学习速率调度允许模型更好的收敛和提高性能。例如,您可以试着减少学习速率随着时间的推移,改善培训动态和性能
  4. 不恰当的网络体系结构或特征提取层:尝试不同的特征提取网络或层捕获更多的对象检测相关特性。
  5. 不足hyperparameter优化:优化训练选项,如优化器(如。亚当,RMSprop), mini-batch大小和重叠范围,找到最优配置特定的数据集。
通过处理这些方面做适当的调整,你可以努力改善的平均精度快R-CNN对象探测器。

s manbetx 845


释放

R2023a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!