物体検出とは、画像内で対象となる物体を見つけ出し、その種類と位置を特定することです。従来の物体検出方法は、特徴抽出とマッチングを中核としており、時間の計算量が高く、特徴抽出の堅牢性が低いという欠点があります。
この論文では、Alexnet ネットワーク モデルに基づいて、R-CNN ターゲット検出ネットワークが転移学習の原理に基づいてトレーニングされます。そして、Matlab に付属する一時停止標識 (一時停止標識) の画像データ セットを識別し、データ セットがマークされています。その実装手順は次のとおりです。
ステップ 1: Alexnet の事前トレーニング済みモデルをインポートします (事前にダウンロードする必要があります。https://blog.csdn.net/shitao99/article/details/106536156を参照してください)。実装コードは次のとおりです。
%% 步骤1:载入AlexNet
% net=alexnet;
net =load('alexnet.mat');
net =net.netTransfer;
ステップ 2: トレーニング セット イメージをロードします。実装コードは次のとおりです。
data = load('stopSignsAndCars.mat', 'stopSignsAndCars');
stopSignsAndCars = data.stopSignsAndCars;
% 设置图像路径参数
visiondata = fullfile(toolboxdir('vision'),'visiondata');
stopSignsAndCars.imageFilename = fullfile(visiondata, stopSignsAndCars.imageFilename);
% 显示数据
summary(stopSignsAndCars)
% 只保留文件名及其所包含的“stop sign”区域
stopSigns = stopSignsAndCars(:, {'imageFilename','stopSign'});
ステップ 3: トレーニング パラメーターを設定し、移行学習原理に基づいて、Alexnet 畳み込みニューラル ネットワークに基づく一時停止標識を含む 41 枚の画像を通じて R-CNN 検出器をトレーニングします。実装コードは次のとおりです。
% 设置训练策略
options = trainingOptions('sgdm', ...
'MiniBatchSize', 128, ...
'InitialLearnRate', 1e-3, ...
'LearnRateSchedule', 'piecewise', ...
'LearnRateDropFactor', 0.1, ...
'LearnRateDropPeriod', 100, ...
'MaxEpochs', 2, ...
'Plots','training-progress', ...
'Verbose', true);
% 训练网络.
rcnn = trainRCNNObjectDetector(stopSigns, net, options, ...
'NegativeOverlapRange', [0 0.3], 'PositiveOverlapRange',[0.5 1])
ステップ 4: テスト画像を使用して、一時停止標識画像上でトレーニングされたターゲット検出器の検出効果を確認し、元の画像上でターゲット領域をマークし、カテゴリと信頼度を表示します。実装コードは次のとおりです。
% 载入测试图片
testImage = imread('stopSignTest.jpg');
% 检测“stop sign“标志
[bboxes,score,label] = detect(rcnn,testImage,'MiniBatchSize',128)
% 计算置信度并显示
[score, idx] = max(score);
bbox = bboxes(idx, :);
annotation = sprintf('%s: (Confidence = %f)', label(idx), score);
outputImage = insertObjectAnnotation(testImage, 'rectangle', bbox, annotation);
figure
imshow(outputImage)
上記は R-CNN ターゲット検出を実現するための matlab のコードのすべてです。参考と学習のためにご利用ください。理解できない友人がいる場合は、コメントを残すかプライベート メッセージを送信してください。また、コードをカスタマイズするためにブロガーにプライベート メッセージを送信することもできます (Q: 809315756)。