load('gTruth.mat')
socialdistencedetection = selectLabels(gTruth,'cars');
if isfolder(fullfile('TrainingData'))
cd TrainingData
else
mkdir TrainingData
end
addpath('TrainingData');
inputLayer = imageInputLayer([224 224 3],'Name','input','Normalization','none');
filterSize = [3 3];
middleLayers = [
convolution2dLayer(filterSize, 16, 'Padding', 1,'Name','conv_1',...
'WeightsInitializer','narrow-normal')
batchNormalizationLayer('Name','BN1')
reluLayer('Name','relu_1')
maxPooling2dLayer(2, 'Stride',2,'Name','maxpool1')
convolution2dLayer(filterSize, 32, 'Padding', 1,'Name', 'conv_2',...
'WeightsInitializer','narrow-normal')
batchNormalizationLayer('Name','BN2')
reluLayer('Name','relu_2')
maxPooling2dLayer(2, 'Stride',2,'Name','maxpool2')
convolution2dLayer(filterSize, 64, 'Padding', 1,'Name','conv_3',...
'WeightsInitializer','narrow-normal')
batchNormalizationLayer('Name','BN3')
reluLayer('Name','relu_3')
maxPooling2dLayer(2, 'Stride',2,'Name','maxpool3')
convolution2dLayer(filterSize, 128, 'Padding', 1,'Name','conv_4',...
'WeightsInitializer','narrow-normal')
batchNormalizationLayer('Name','BN4')
reluLayer('Name','relu_4')
maxPooling2dLayer(2, 'Stride',2,'Name','maxpoo4')
convolution2dLayer(filterSize, 256, 'Padding', 1,'Name','conv_5',...
'WeightsInitializer','narrow-normal')
batchNormalizationLayer('Name','BN5')
reluLayer('Name','relu_5')
];
lgraph = layerGraph([inputLayer; middleLayers]);
imageSize = [224 224 3];
Anchors = [
102 15
170 29
191 41
122 29
45 11
96 21
137 21
];
options = trainingOptions('sgdm', ...
'InitialLearnRate',0.01, ...
'Verbose',true,'MiniBatchSize',16,'L2Regularization',0.06,'MaxEpochs',80,...
'Shuffle','every-epoch','VerboseFrequency',50, ...
'DispatchInBackground',true,...
'ExecutionEnvironment','auto','ValidationData',Validation);
trainingData = objectDetectorTrainingData(socialdistencedetection,'SamplingFactor',1,...
'WriteLocation','TrainingData');
numClasses = size(trainingData,2)-1;
lgraph = yolov2Layers([224 224 3],numClasses,Anchors,lgraph,'relu_5');
analyzeNetwork(lgraph);
[detectorYolo2, info] = trainYOLOv2ObjectDetector(trainingData,lgraph,options);
save('detectorYolo2.mat','detectorYolo2');
x = 1:size(info.TrainingLoss,2);
y = info.TrainingLoss;
figure
plot(x,y)
title('Training Phase')
xlabel('Iteration')
ylabel('Mini Batch Training Loss')
0 Comments
Sign in to comment.