资源简介

需要再matlab2017a即以上版本上运行 资源来自网络 本为matlab计算机视觉与深度学习实战28章示例代码

资源截图

代码片段和文件信息

clc; clear all; close all;
tic;
%% 加载数据
% vehicleDataset是一个dataset数据类型,第一列是图片的相对路径,第二列是图片中小汽车的位置
data = load(‘fasterRCNNVehicleTrainingData.mat‘);
% 提取训练集
vehicleDataset = data.vehicleTrainingData;
% 提取图片路径
dataDir = fullfile(toolboxdir(‘vision‘)‘visiondata‘);
vehicleDataset.imageFilename = fullfile(dataDir vehicleDataset.imageFilename);
% 展示前9幅图片
k = 9;
I=zeros(1282283k);
for i = 1 :  k
    % 读取图片
    tmp = imread(vehicleDataset.imageFilename{i});
    % 添加标识框
    tmp = insertShape(tmp ‘Rectangle‘ vehicleDataset.vehicle{i});
    I(:::i) = mat2gray(tmp);
end
% 显示
Is = I;
hfig = figure; montage(Is);
set(hfig ‘Units‘ ‘Normalized‘ ‘Position‘ [0 0 1 1]);
pause(1);
%% 构建CNN网络
% 输入层,最小检测对象约32*32
inputlayer = imageInputlayer([32 32 3]);
% 中间层
% 定义卷基层参数
filterSize = [3 3];
numFilters = 32;
middlelayers = [
    % 第一轮,只包含CNN和ReLU
    convolution2dlayer(filterSize numFilters ‘Padding‘ 1)
    relulayer()
    % 第二轮,包含CNN、ReLU和Pooling
    convolution2dlayer(filterSize numFilters ‘Padding‘ 1)
    relulayer()
    maxPooling2dlayer(3 ‘Stride‘2)
    ];
% 输出层
finallayers = [
    % 新增一个包含64个输出的全连接层
    fullyConnectedlayer(64)
    % 新增一个非线性ReLU层
    relulayer()
    % 新增一个2个输出的全连接层,用于判断图片是否包含检测对象
    fullyConnectedlayer(2)
    % 最添加softmax和classification层
    softmaxlayer()
    classificationlayer()
    ];
% 组合所有层
layers = [
    inputlayer
    middlelayers
    finallayers
    ];
%% 训练CNN网络
% 将数据划分两部分
% 前60%的数据用于训练,后面40%用于测试
ind = round(size(vehicleDataset1) * 0.6);
trainData = vehicleDataset(1 : ind :);
testData = vehicleDataset(ind+1 : end :);
% 训练过程包括4个步骤,每步可以使用单独的参数,也可以使用同一个参数
options = [
    % 第1步,Training a Region Proposal Network (RPN)
    trainingOptions(‘sgdm‘ ‘MaxEpochs‘ 10‘InitialLearnRate‘ 1e-5‘CheckpointPath‘ tempdir)
    % 第2步,Training a Fast R-CNN Network using the RPN from step 1
    trainingOptions(‘sgdm‘ ‘MaxEpochs‘ 10‘InitialLearnRate‘ 1e-5‘CheckpointPath‘ tempdir)
    % 第3步,Re-training RPN using weight sharing with Fast R-CNN
    trainingOptions(‘sgdm‘ ‘MaxEpochs‘ 10‘InitialLearnRate‘ 1e-6‘CheckpointPath‘ tempdir)
    % 第4步,Re-training Fast R-CNN using updated RPN
    trainingOptions(‘sgdm‘ ‘MaxEpochs‘ 10‘InitialLearnRate‘ 1e-6‘CheckpointPath‘ tempdir)
    ];
% 设置模型的本地存储
doTrainingAndEval = 1;
if doTrainingAndEval    
    % 训练 R-CNN 神经网络,其实神经网络工具箱提供了3个函数
    % (1)trainRCNNobjectDetector,训练快检测慢,允许指定proposalFcn
    % (2)trainFastRCNNobjectDetector,速度较快,允许指定proposalFcn
    % (3)trainFasterRCNNobjectDetector,优化运行性能,不需要指定proposalFcn
    detector = trainFasterRCNNobjectDetector(trainData layers options ...
        ‘NegativeOverlapRange‘ [0 0.3] ...
        ‘PositiveOverlapRange‘ [0.6 1] ...
        ‘BoxPyramidScale‘ 1.2);
else
    % 加载已经训练好的神经网络
    detector = data.detector;
end
% 快速测试训练结果
I = imread(‘highway.png‘);
% 运行检测器,输出目标位置和得分
[bboxes scores] = detect(detector I);
% 在图像上标记处识别的小汽车
I = insertObje

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4306  2017-07-25 21:55  rcnn_car_object_detection.m

     文件         35  2017-05-11 12:53  说明.txt

----------- ---------  ---------- -----  ----

                 4341                    2


评论

共有 条评论