Matlab ターゲット検出 - Alexnet 転移学習に基づく R-CNN 実装

        物体検出とは、画像内で対象となる物体を見つけ出し、その種類と位置を特定することです。従来の物体検出方法は、特徴抽出とマッチングを中核としており、時間の計算量が高く、特徴抽出の堅牢性が低いという欠点があります。

        この論文では、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)。

おすすめ

転載: blog.csdn.net/qq_37904531/article/details/131490670