主要内容

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

オブジェクトのカスケ,ド検出器の学習

検出器を学習させる理由

愿景。CascadeObjectDetector系统对象には,顔の正面、横顔,鼻,目および上半身を検出するための事前学習済みの分類器がいくつか付属しています。ただし,アプリケ,ションによってはこれらの分類器では不十分な場合もあります。计算机视觉工具箱™ には、カスタム分類器を学習させるための関数trainCascadeObjectDetectorが用意されています。

検出できるオブジェクトのタ@ @プ

计算机视觉工具箱のオブジェクトカスケード検出機能では,縦横比があまり変化しないオブジェクトカテゴリを検出できます。縦横比が一定であるオブジェクトには,顔,一時停止標識,特定方向から見た自動車などがあります

愿景。CascadeObjectDetector系统对象はイメージ上でウィンドウをスライドさせてイメージ内のオブジェクトを検出します。その後,カスケード分類器を使用して,ウィンドウに関心対象のオブジェクトが含まれるかどうかを判断します。さまざまなスケールでオブジェクトを検出するためにウィンドウのサイズは変わりますが,縦横比は固定されています。ほとんどの3次元オブジェクトでは縦横比が変わるため,検出器は,面外の回転により非常に大きな影響を受けます。したがって,オブジェクトのすべての向きを使って検出器を学習させなければなりません。1の検出器ですべての向きを処理できるように学習させることはできません。

カスケ,ド分類器の仕組み

カスケ,ド分類器は複数のステ,ジで構成されています。それぞれのステ,ジは弱学習器のアンサンブルです。弱学習器は"決定株"と呼ばれるシンプルな分類器です。各ステ,ジの学習にはブ,スティングという手法が使用されます。“ブ,スティング”は,弱学習器による決定の加重平均を取ることで,非常に正確な分類器を学習させる機能を提供します。

分類器の各ステージにより,スライディングウィンドウの現在の位置で定義される領域にポジティブまたはネガティブのラベルが付けられます。“ポジティブ”はオブジェクトが見かったことを,“ネガティブ”はオブジェクトが見からなかったことを示します。ラベルがネガティブの場合には,この領域の分類が完了し,検出器はウィンドウを次の位置にスライドさせます。ラベルがポジティブの場合は,分類器がその領域を次のステ,ジに渡します。検出器は,最後のステージで領域がポジティブと分類された場合,現在のウィンドウ位置で見つかったオブジェクトを報告します。

これらのステ,ジは,できるだけ早期にネガティブサンプルを棄却するように設計されています。ここでは大部分のウィンドウには関心のあるオブジェクトが含まれないことを仮定しています。逆に,真陽性は稀であるため,時間をかけて確認する必要があります。

  • "真陽性"は,ポジティブサンプルが正しく分類された場合に生じます。

  • "偽陽性"は,ネガティブサンプルが誤って正として分類された場合に生じます。

  • "偽陰性"は,ポジティブサンプルが誤って負として分類された場合に生じます。

検出器が適切に機能するためには,カスケードの各ステージで偽陰性率が低く設定されていなければなりません。あるステージでオブジェクトが誤って負と判断されると分類処理が停止するため,この誤りを修正することはできません。ただし,各ステ,ジの偽陽性率は高い値に設定できます。検出器でオブジェクトでないものが正と判断されても,その誤りはその後のステ,ジで修正できます。

カスケ,ド分類器の全体的な偽陽性率は f 年代 です。ここで, f は範囲(0 1)にある各ステジの偽陽性率を, 年代 はステ,ジ数をそれぞれ示します。同様に,全体的な真陽性率は t 年代 であり, t は範囲(0 1]にある各ステ,ジの真陽性率を示します。したがって,ステ,ジ数を増やすと全体的な偽陽性率が下がりますが,全体的な真陽性率も下がります。

trainCascadeObjectDetectorを使用したカスケ,ド分類器の作成

カスケド分類器の学習には一連のポジティブサンプルと一連のネガティブメジが必要です。ポジティブサンプルとして使用する,関心領域が指定された一連のポジティブイメージを提供しなければなりません。メジラベラを使用して,関心のあるオブジェクトに境界ボックスでラベルを付けることができます。。また,関数でネガティブサンプルを自動的に生成するための一連のネガティブイメージも提供しなければなりません。検出器の精度が適切な水準に達するよう,ステージ数,特徴のタイプおよびその他の関数パラメーターを設定します。

パラメ,タ,設定の考慮事項

学習に使用するステージ数,偽陽性率,真陽性率,特徴のタイプがそれぞれ最適になるような関数パラメーターを選択します。パラメ,タ,の設定時には以下のトレ,ドオフを考慮してください。

条件 考慮事項
学習セットが大きい(千単位)。 ステ,ジ数を増やして各ステ,ジの偽陽性率を高い値に設定します。
学習セットが小さい。 ステ,ジ数を減らして各ステ,ジの偽陽性率を低い値に設定します。
オブジェクトを検知できない確率を減らす。 真陽性率を大きくします。ただし,真陽性率が高い場合,各ステージで必要な偽陽性率が得られず,検出器で誤検知が多発する可能性があります。
誤検知の数を減らす。 ステ,ジ数を増やすか,各ステ,ジの偽警報率を減らします。

学習に使用できる特徴のタ@ @プ

必要なオブジェクト検出のタ@ @プに適した特徴を選択してください。trainCascadeObjectDetectorは,次の3種類の特徴をサポ,トしています。哈尔,ロカルバナリパタン(LBP),勾配方向ヒストグラム(HOG)です。哈尔特徴および枸杞多糖特徴は,スケールの細かいテクスチャの表現に向いているため,顔の検出によく使用されます。猪特徴は,人や自動車などのオブジェクトの検出によく使用されます。これらはオブジェクトの全体的な形状をキャプチャするのに便利です。たとえば,以下に示す HOG 特徴の可視化では、自転車の外郭がわかります。

場合によっては,パラメ,タ,を調整するために関数trainCascadeObjectDetectorを何度か実行しなければなりません。時間を節約するために,データの小さいサブセットに対して枸杞多糖または猪特徴を使用できます。哈尔特徴を使用した検出器の学習には長い時間がかかります。その後,哈尔特徴を実行して精度が向上したかどうかを確認できます。

ポジティブサンプルの指定

ポジティブサンプルを簡単に作成するには,メジラベラアプリを使用できます。メジラベラでは、対話形式で四角形の関心領域 (ROI) を指定して、ポジティブ サンプルに簡単にラベルを付けることができます。

また,次の2の方法のいずれかを使用してポジティブサンプルを手動で指定することもできます。最初の方法では,大きい。これらの領域には関心のあるオブジェクトが含まれています。2番目の方法では,関心のあるオブジェクトをイメージからトリミングし,これを個別のイメージとして保存します。その後,。さらに,既存のサンプルに回転やノイズを加えたり,輝度やコントラストを変更して,追加のポジティブサンプルを生成することもできます。

ネガティブ▪▪メ▪▪ジの指定

ネガティブサンプルは明示的に指定されません。代わりに,関数trainCascadeObjectDetectorは,ユーザーが指定した,関心のあるオブジェクトが含まれないネガティブイメージから自動的にネガティブサンプルを生成します。関数は新しい各ステージを学習させる前に,ネガティブイメージで既に学習済みのステージから構成される検出器を実行します。これらのイメージから検出されたオブジェクトはすべて誤検知であり,ネガティブサンプルとして使用されます。この方法では,カスケードの新しい各ステージが,その前のステージで生じた誤りを正すように学習が行われます。

ステージを追加するにつれて検出器の全体的な偽陽性率が下がるため,ネガティブサンプルの生成は難しくなります。そのため,ネガティブメジをできる限り多く提供すると役に立ます。学習の精度を高めるには,関心のあるオブジェクトに通常関連のある背景を含むネガティブイメージを提供してください。また,関心のあるオブジェクトに似た外観をもつ,オブジェクトではないものを含むネガティブイメージも含めます。たとえば,一時停止標識検出器を学習させる場合、一時停止標識に類似した交通標識や形を含むネガティブ イメージを含めてください。

ステ,ジ数の選択

各ステージの偽陽性率が低く,より少数のステージと,各ステージの偽陽性率が高く,より多数のステージには,トレードオフ効果が存在します。偽陽性率が低いステ,ジは,より多くの弱学習器を含むため,複雑度が高くなります。一方,偽陽性率が高いステ,ジには,より少数の弱学習器が含まれます。一般に,ステージが増えるにつれて全体的な偽陽性率は指数的に小さくなるため,シンプルなステージを多く含める方が得策です。たとえば,各ステージの偽陽性率が 50% である場合、2 ステージ構成のカスケード分類器の全体的な偽陽性率は 25% になります。3 ステージ構成の場合には、これが 12.5% になり、その後も同様に率が減少します。ただし、ステージ数が大きいほど、分類器に必要な学習データの量は増大します。また、ステージ数を増やすと偽陰性率も高くなります。この増加により、ポジティブ サンプルを誤って棄却する確率が上がります。偽陽性率 (FalseAlarmRate)とステ,ジ数(NumCascadeStages)は,全体的な偽陽性率が許容範囲内に収まるように設定してください。その後,この2のパラメタを実験的に調整できます。

学習が早期終了する場合もあります。たとえば,ステージ数パラメーターを 20 に設定したにもかかわらず、7 ステージ後に学習が停止したとします。その場合、関数で十分な数のネガティブ サンプルが生成されなかった可能性があります。関数を再実行してステージ数を 7 に設定しても、同じ結果は得られません。各ステージで使用される正とネガティブ サンプルの数は新しいステージ数に合わせて再計算されるため、結果はステージごとに異なります。

検出器の学習所要時間

良質の検出器の学習には数千単位の学習サンプルが必要です。大量の学習デ,タを処理するには数時間から数日に及ぶ長い時間がかかります。学習中は,関数によって各ステ,ジの学習にかかった時間がmatlab®のコマンドウィンドウに表示されます。学習所要時間は指定した特徴のタ@ @プによって異なります。哈尔特徴を使用すると,枸杞多糖や猪特徴を使用した場合よりもずっと多くの時間がかかります。

トラブルシュ,ティング

ポジティブサンプルが足りなくなった場合の対処方法

関数trainCascadeObjectDetectorは,各ステ,ジの学習に使用されるポジティブサンプルの数を自動的に決定します。この数は,ユ,ザ,が提供したポジティブサンプルの総数と,TruePositiveRateおよびNumCascadeStagesパラメ,タ,の値に基づいています。

各ステ,ジの学習に使用可能なポジティブサンプルの数は,真陽性率に依存します。この率は,ポジティブサンプルのう関数で負として分類することのできるサンプルの割合を指定します。いずれかのステ,ジで負として分類されたサンプルが,その後のステ,ジに進むことはありません。たとえば,TruePositiveRate0.9に設定し,使用可能なサンプルのすべてが第1ステ,ジの学習に使用されたとします。その場合,ポジティブサンプルの10%が負として棄却されるため,第2ステージの学習に使用できるのはポジティブサンプル全体の90%だけになります。学習を継続した場合,各ステ,ジの学習に使用できるサンプル数は徐々に減り続けます。したがって,後続の各ステージでは,より少数のポジティブサンプルを使用して,さらに困難な分類問題を解かなければなりません。ステージが進むにつれて使用できるサンプル数が少なくなると,後のステージでデータの過適合が生じる可能性が大きくなります。

各ステ,ジの学習には同数のサンプルを使用するのが理想的です。そのためには,各ステージの学習に使用されるポジティブサンプルの数が,使用可能なポジティブサンプルの総数未満でなければなりません。唯一の例外として,TruePositiveRateの値にポジティブサンプル総数を乗算した値が1未満の場合には,ポジティブサンプルが負として棄却されることはなくなります。

関数では,次の式を使用して各段階で使用するポジティブサンプルの数を計算します。

阳性样本数=地板上totalPositiveSamples/ (1 + (NumCascadeStages- 1) * (1 -TruePositiveRate)))

この計算では,各ステ,ジで同じ数のポジティブサンプルが使用できることは保証されません。これは,ポジティブサンプルのうち負として棄却されるサンプルの数を確実に予測するのは不可能なためです。あるステージの学習に使用できるポジティブサンプル数が,関数で上記の式により自動計算されたサンプル数の10%を上回っていれば,学習は継続されます。ポジティブサンプルの数が足りなくなると学習は停止され,関数から警告が出力されます。関数からは,その時点までに学習の済んだステ,ジを含む分類器も出力されます。学習が停止した場合,ポジティブサンプルをさらに追加することができます。あるいはTruePositiveRateの値を大きくすることも可能です。ステ,ジ数を減らすオプションもありますが,その場合は全体の偽警報率が増加する可能性があります。

ネガティブサンプルが足りなくなった場合の対処

関数は各ステ,ジで使用されるネガティブサンプルの数を計算します。これは各ステ,ジで使用されるポジティブサンプルの数に,NegativeSamplesFactorの値を乗算して求められます。

ポジティブサンプルの場合と同様に,計算されたネガティブサンプル数を特定のステージで必ずしも使用できるとは限りません。関数trainCascadeObjectDetectorは,ネガティブ。ただし,新しいステージに進むにつれてカスケード分類器の全体的な偽警報率が下がるため,ネガティブサンプルが見つかる確率も下がります。

あるステージで学習に使用できるネガティブサンプル数が,計算されたネガティブサンプル数の10%を上回っていれば,学習は継続されます。ネガティブサンプルの数が足りなくなると学習は停止され,関数から警告が出力されます。また,その時点までに学習の済んだステ,ジを含む分類器も出力されます。学習が停止した場合は,ネガティブ。あるいは,ステ,ジ数を減らしたり,偽陽性率を高く設定することもできます。

5ステジ一時停止標識検出器の学習

真陽性率を低く設定した5ステ,ジ一時停止標識検出器の学習

10ステ,ジ一時停止標識検出器の学習

一時停止標識検出器の学習

垫子ファ@ルからポジティブサンプルデ@タを読み込みます。ファ@ @ルには,複数のオブジェクトカテゴリの境界ボックスを指定するテ@ @ブルが含まれます。このテ,ブルは,训练图像标签アプリからエクスポ,トされたものです。

ポジティブサンプルを読み込みます。

负载(“stopSignsAndCars.mat”);

テ,ブルから一時停止標識の境界ボックスを選択します。

positiveInstances = stopSignsAndCars(:,1:2);

Matlabパスにメジフォルダを追加します。

imDir = fullfile(matlabroot,“工具箱”“愿景”“visiondata”...“stopSignImages”);目录(imDir);

ネガティブメジのフォルダを指定します。

negativeFolder = fullfile(matlabroot,“工具箱”“愿景”“visiondata”...“nonStopSigns”);

ネガティブ▪▪メ▪▪ジを含むimageDatastoreオブジェクトを作成します。

negativeImages = imageDatastore(negativeFolder);

猪特徴を使用して‘stopSignDetector.xmlという名前のカスケードオブジェクト検出器を学習させます。メモ:コマンドの実行には数分かかる場合があります。

trainCascadeObjectDetector (“stopSignDetector.xml”positiveInstances,...negativeFolder,“FalseAlarmRate”, 0.1,“NumCascadeStages”5);
自动设置ObjectTrainingSize(35岁,32)使用最多42 42正样本每阶段使用最多84负样本每阶段——cascadeParams训练阶段1的5  [........................................................................)使用42积极和84 -样品时间训练阶段1:训练阶段2 5 0秒  [........................................................................)使用42积极和84 -样品时间训练阶段2:训练阶段3的5 0秒  [........................................................................)使用42积极和84 -样品时间训练阶段3:2秒训练阶段4的5  [........................................................................)使用42积极和84 -样品时间训练阶段4:5的5 6秒的训练阶段  [........................................................................使用42个阳性样本和17个阴性样本第五阶段训练时间:9秒训练完成

新たに学習させた分類器を使用して,。

探测器=视觉。CascadeObjectDetector (“stopSignDetector.xml”);

テスト▪▪メ▪▪ジを読み取ります。

Img = imread(“stopSignTest.jpg”);

一時停止標識を検出します。

Bbox = step(检测器,img);

境界ボックスの四角形を挿入し、マ、クした、メ、ジを返します。

detectedImg = insertObjectAnnotation(img,“矩形”bbox,“停车标志”);

検出した一時停止標識を表示します。

图;imshow (detectedImg);

パスから▪▪メ▪▪ジディレクトリを削除します。

rmpath (imDir);

関連するトピック

外部のWebサ电子邮箱ト