www.gusucode.com > IPCV_Eval_Kit_R2019a_0ce6858工具箱matlab程序源码 > IPCV_Eval_Kit_R2019a_0ce6858/code/demo_files/I5_06_2_6_trainYOLOv2ObjectDetector.m

    %% YOLO v2偵傛傞暔懱専弌婍偺妛廗

%% 弶婜壔
clear; close all force; clc; rng('default');

%% 幵椉専弌婍梡偺妛廗僨乕僞僙僢僩傪儘乕僪
data = load('vehicleTrainingData.mat');
trainingData = data.vehicleTrainingData;
dataDir = fullfile(toolboxdir('vision'),'visiondata');
trainingData.imageFilename = fullfile(dataDir,trainingData.imageFilename);

%% YOLO v2僱僢僩儚乕僋傪掕媊
% 擖椡夋憸僒僀僘
imageSize = [128 128 3];

% 僋儔僗悢(崱夞偼幵椉偺傒側偺偱1屄)
numClasses = width(trainingData)-1;

% 傾儞僇乕儃僢僋僗
anchorBoxes = [
    43 59
    18 22
    23 29
    84 109
];

% 妛廗嵪傒儌僨儖
baseNetwork = resnet50;

% 摿挜拪弌偺憌傪巜掕
featureLayer = 'activation_40_relu';

% YOLO v2専弌僱僢僩儚乕僋偺嶌惉
lgraph = yolov2Layers(imageSize,numClasses,anchorBoxes,baseNetwork,featureLayer);

%% 怺憌妛廗僱僢僩儚乕僋傾僫儔僀僓乕偱惍崌妋擣
analyzeNetwork(lgraph)

%% YOLO v2偺妛廗僆僾僔儑儞傪巜掕
options = trainingOptions('sgdm',...
          'InitialLearnRate',0.001,...
          'Verbose',true,...
          'MiniBatchSize',16,...
          'MaxEpochs',30,...
          'Shuffle','every-epoch',...
          'VerboseFrequency',30,...
          'CheckpointPath',tempdir);

%% YOLO v2暔懱専弌婍傪妛廗
[detector,info] = trainYOLOv2ObjectDetector(trainingData,lgraph,options);

%% 懝幐娭悢偺悇堏傪妋擣
figure
plot(info.TrainingLoss)
grid on
xlabel('孞傝曉偟夞悢')
ylabel('懝幐娭悢')

%% 僥僗僩夋憸偺撉傒崬傒偲専弌
img = imread('detectcars.png');
[bboxes,scores] = detect(detector,img);
if(~isempty(bboxes))
    img = insertObjectAnnotation(img,'rectangle',bboxes,scores);
end
figure
imshow(img)

%%
% _Copyright 2019 The MathWorks, Inc._