この記事は技術的すぎるため、ほとんどの読者には理解しにくいかもしれません。技術的な詳細を削除せずに、( 2013年10月) |
カスケード学習は、複数の分類器を連結するアンサンブル学習の特殊な例であり、ある分類器の出力から収集されたすべての情報を、カスケード内の次の分類器の追加情報として利用します。投票アンサンブルやスタッキングアンサンブルはマルチエキスパートシステムですが、カスケーディングは多段階のシステムです。
カスケード分類器は、特定の物体の数百枚の「ポジティブ」サンプル画像と、同じサイズの任意の「ネガティブ」画像を用いて学習されます。学習済みの分類器を画像内の特定の領域に適用し、対象の物体を検出できます。フレーム全体で物体を検索するには、検索ウィンドウを画像上で移動させ、分類器ですべての位置をチェックします。このプロセスは、物体検出および追跡、特に顔検出と顔認識のための画像処理で最も一般的に使用されています。
最初のカスケード型分類器は、ViolaとJones (2001)による顔検出器でした。この分類器には、カメラやスマートフォンなどの低消費電力CPUに実装できるよう、高速であることが求められました。
この説明から、分類器は上下逆さまの顔(眉毛が正しい位置にない)や顔の横(鼻が中央になく、鼻の横の影が消えている可能性がある)を受け入れないことがわかります。画像平面(顔の横)にない回転ごとに、別のカスケード分類器をトレーニングする必要があり、画像平面(顔が逆さままたは横に傾いている)にある回転ごとに、回転した特徴に対して再トレーニングまたは実行する必要があります。特徴はスケーリングできるため、スケーリングは問題になりません(中央のピクセル、左のピクセル、および右のピクセルは、検査された四角形に対してのみ相対的な寸法を持ちます)。最近のカスケードでは、四角形のある部分のピクセル値を別の部分と比較することは、Haar ウェーブレットに置き換えられています。
全体的なパフォーマンスを良好にするには、次の基準を満たす必要があります。
したがって、1 ステージのトレーニング手順は、多数の弱学習者 (単純なピクセル差分演算子) を用意し、それらをグループとしてトレーニング (正しい結果が得られた場合は重みを上げる) することですが、計算時間を短く保つためにアクティブな弱学習者の数を少数に抑えるように注意してください。
Viola & Jonesの最初の検出器は38段階で構成され、最初の段階では1つの特徴が、次の5段階では10、25、25、50と、合計6000個の特徴が処理されました。最初の段階では、不要な矩形を迅速に削除することで、次の段階の計算コストを回避します。これにより、計算時間は、物体が含まれる可能性の高い画像部分の詳細な分析に費やされます。
カスケードは通常、コストを考慮したADAboostによって実行されます。感度閾値(この例では0.8)を調整することで、真陽性が100%に近くなり、偽陽性も多少発生するように調整できます。その後、所望の精度/計算時間に達するまで、ステージ2から手順を再開できます。
初期アルゴリズムの後、カスケード全体のトレーニングを最適化し、最小限の複雑さで所望の真の検出率を達成できることが理解されました。このようなアルゴリズムの例としては、RCBoost、ECBoost、RCECBoostなどがあります。最も基本的なバージョンでは、各ステップにおいて、ステージを追加するか、前のステージに弱学習器を追加するか、どちらかコストの低い方を選択し、所望の精度に達するまで繰り返すものと理解できます。分類器の各ステージの検出率(感度)が所望の検出率を下回ることはできないため、これは制約付き最適化問題です。正確には、全体の感度はステージの感度の積になります。
OpenCVでは、正面顔と上半身の事前学習済みカスケードを備えたカスケード分類器が利用可能です。OpenCV では、haar_training または train_cascades メソッドを用いて新しいカスケードを学習することも可能です。これは、Haar 類似特徴を持つ人間以外の物体など、より具体的なターゲットの物体検出を高速化するために使用できます。この処理には、負のサンプルと正のサンプルの2セットが必要です。負のサンプルは任意の非物体画像に対応します。カスケード分類器の学習における時間的制約は、クラウドコンピューティング手法を用いることで回避できます。
この用語は、統計において、段階的なモデルを説明するためにも使用されます。たとえば、分類器 ( k平均法など) は、特徴のベクトル (決定変数) を受け取り、可能性のある分類結果ごとに、ベクトルがクラスに属する確率を出力します。これは通常、決定 (最も高い確率でクラスに分類) を行うために使用されますが、カスケード分類器では、この出力を別のモデル (別のステージ) への入力として使用します。これは、すべての相互作用項を調べなければ適合できない、高度な組み合わせルールやカウント ルール (たとえば、2 つの特徴が負の場合は class1、それ以外の場合は class2) を持つモデルで特に役立ちます。カスケード分類器を使用すると、後続のステージで分類の組み合わせ特性を徐々に近似したり、1 つのステージでは表現できない分類アルゴリズムで相互作用項を追加したりすることができます。
簡単な例として、ルール(3 つの特徴のうち 2 つが負の場合はクラス 1、それ以外の場合はクラス 2)に一致しようとすると、決定木は次のようになります。
ツリーには、完全なルールセットを表現するために必要なリーフのあらゆる組み合わせが含まれていますが、(特徴1 正、特徴2 負)と(特徴1 負、特徴2 正)は実際には同じルールに結合している必要があります。そのため、リーフのサンプル数が少なすぎるツリーが生成されます。2段階アルゴリズムは、特徴1または(排他的)特徴2が負の場合にクラス1に中高確率を与えることで、これら2つのケースを効果的に統合できます。2番目の分類器は、この高い確率を取得し、特徴3の正負を判定します。
バイアス-分散分解では、カスケード モデルは通常、バイアスを下げながら分散を上げるものと考えられています。