主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

学習データからのアンカーボックスの推定

アンカーボックスは,快R-CNNやYOLO v2意思などの深層学習オブジェクト検出器に重要なパラメーターです。アンカーボックスの形状,スケール,および数は,検出器の効率性と正確性に影響します。

詳細については,アンカーボックスによるオブジェクトの検出を参照してください。

学習データの読み込み

295年イメージと関連するボックスラベルが含まれる車両データセットを読み込みます。

data =负载(“vehicleTrainingData.mat”);vehicleDataset = data.vehicleTrainingData;

ローカルの車両データフォルダーへの絶対パスを追加します。

dataDir = fullfile (toolboxdir (“愿景”),“visiondata”);vehicleDataset。imageFilename = fullfile (dataDir vehicleDataset.imageFilename);

データセットの概要を表示します。

总结(vehicleDataset)
变量:imageFilename: 295×1 cell数组的字符向量车辆:295×1 cell

グラウンドトゥルースボックス分布の可視化

ラベル付きボックスを可視化し,データセットに存在するオブジェクトサイズの範囲を理解しやすくします。

すべてのグラウンドトゥルースボックスを1つの配列に統合します。

allBoxes = vertcat (vehicleDataset.vehicle {:});

ボックスの縦横比に対してボックス領域をプロットします。

aspectRatio = allBoxes(:,3) ./ allBoxes(:,4);面积= prod (allBoxes (:, 3:4), 2);图散射(区域,aspectRatio)包含(“箱区”) ylabel (”“纵横比(宽/高));标题(“盒子面积与纵横比”

プロットには,サイズと形状が類似したオブジェクトのグループがいくつか示されますが,グループは分散しているため,手動でアンカーボックスを選択するのは困難です。アンカーボックスを推定する優れた方法は,意味のある計量を使用して類似するボックスをグループ化できるクラスタリングアルゴリズムを使用することです。

アンカーボックスの推定

関数estimateAnchorBoxesを使用して,学習データからアンカーボックスを推定します。この関数は,十字路口在联盟(借据)距離計量を使用します。

ボックスサイズの増加に伴い誤差が増大するユークリッド距離計量とは異なり,借据に基づいた距離計量はボックスのサイズに対して不変です[1]。また,借据距離計量を使用すると,縦横比とサイズが類似するボックスがまとめてクラスタリングされるため,アンカーボックスの推定がデータに適合します。

車両データセット内のグラウンドトゥルースボックスを使用して,boxLabelDatastoreを作成します。オブジェクト検出器に学習させるための前処理手順にイメージのサイズ変更が含まれている場合,アンカーボックスを推定する前に,变换bboxresizeを使用してboxLabelDatastore内の境界ボックスのサイズを変更します。

trainingData = boxLabelDatastore (vehicleDataset(:, 2:结束));

アンカーの数を選択し,関数estimateAnchorBoxesを使用してアンカーボックスを推定します。

numAnchors =5;[anchorBoxes, meanIoU] = estimateAnchorBoxes (trainingData numAnchors);anchorBoxes
anchorBoxes =5×221 27 87 116 67 92 43 61 86 105

アンカーの数を選択することは,経験的解析を使用し,十分に注意して選択しなければならない別の学習ハイパーパラメーターです。推定されたアンカーボックスを判断する1つの品質の尺度は,各クラスターにおけるボックスの平均借据です。関数estimateAnchorBoxesは,借据距離計量をもつk——クラスタリングアルゴリズムを使用し,方程式1 -bboxOverlapRatio(allBoxes boxInCluster)によってオーバーラップを計算します。

meanIoU
meanIoU = 0.8411

0.5平均借据がを超えている場合,アンカーボックスと学習データ内のボックスは適切にオーバーラップしています。アンカーの数を増やすと,平均借据測定値が向上する場合があります。ただし,オブジェクト検出器内のアンカーボックスが増えると計算コストが増加して過適合につながり,検出器の性能が低下する可能性もあります。

値の範囲をスイープし,アンカーボックスの数に対する平均借据をプロットして,アンカーの数と平均借据間のトレードオフを測定します。

maxNumAnchors = 15;meanIoU = 0 ([maxNumAnchors, 1]);主播= cell(maxNumAnchors, 1);k = 1: maxNumAnchors估计锚和平均欠条。[anchorBoxes {k}, meanIoU (k)] = estimateAnchorBoxes (trainingData k);结束图的阴谋(1:maxNumAnchors meanIoU,“o”) ylabel (“意思是借据”)包含(“锚”)标题(“锚点数目与平均欠条数目”

アンカーボックスを2個使用すると,平均借据値は0.65より大きくなります。7個を超えるアンカーボックスを使用した場合でも,平均借据値がわずかに改善されるだけです。これらの結果を踏まえ,次の手順では2 ~ 6の値を使用して複数のオブジェクト検出器に学習させて評価します。この経験的解析は,検出速度や精度など,アプリケーションの性能要件を満たすために必要なアンカーボックスの数の決定に役立ちます。

参照

雷德蒙,约瑟夫和阿里·法哈迪。“YOLO9000:更好、更快、更强。”《IEEE计算机视觉与模式识别会议论文集》,第7263-7271页。2017.

雷蒙德,约瑟夫和阿里·法哈迪。“YOLO9000:更好、更快、更强。”2017 IEEE计算机视觉与模式识别会议(CVPR), 6517-25。火奴鲁鲁,HI: IEEE, 2017。https://doi.org/10.1109/CVPR.2017.690。