![]() |
OpenCV 4.13.0
Open Source Computer Vision
|
以下で説明するオブジェクト検出器は、最初に P.F. Felzenszwalb によって [93] で提案された。これは、オブジェクトカテゴリを表現するために勾配方向ヒストグラム(HOG)特徴に対する単一のフィルタを用いるDalal-Triggs検出器に基づいている。この検出器はスライディングウィンドウ方式を用い、画像のすべての位置とスケールでフィルタを適用する。最初の革新は、「ルート」フィルタ(Dalal-Triggsフィルタに相当)に、部品フィルタの集合と関連する変形モデルを加えて定義される星型構造の部品ベースモデルを用いてDalal-Triggsモデルを充実させたことである。画像内の特定の位置とスケールにおける星型モデルの1つのスコアは、与えられた位置でのルートフィルタのスコアに、各部品についての最大値(その部品の配置全体にわたる、ルートに対する部品の理想位置からの偏差を測る変形コストを引いた、その位置での部品フィルタスコア)の総和を加えたものである。ルートおよび部品のフィルタスコアは、いずれもフィルタ(重みの集合)と、入力画像から計算された特徴ピラミッドのサブウィンドウとの内積によって定義される。もう一つの改良は、星型モデルの混合によるモデルクラスの表現である。特定の位置とスケールにおける混合モデルのスコアは、与えられた位置でのその構成要素モデルのスコアの、構成要素全体にわたる最大値である。
検出器は、P.F. Felzenszwalb によって [92] で提案されたカスケードアルゴリズムにより劇的に高速化された。このアルゴリズムは、スコアに対するしきい値を用いて部分的な仮説を枝刈りする。アルゴリズムの基本的な考え方は、元のモデルの部品の順序付けによって定義されるモデルの階層を用いることである。ルートを含む (n+1) 個の部品を持つモデルに対して、(n+1) 個のモデルの系列が得られる。この系列のi番目のモデルは、元のモデルの最初のi個の部品によって定義される。この階層を用いることで、部品の部分集合の最良の構成を見た後に、低スコアの仮説を枝刈りできる。弱いモデルで高いスコアを得た仮説は、より豊かなモデルを用いてさらに評価される。
OpenCVには、DPMカスケード検出器のC++実装がある。
クラス | |
| class | cv::dpm::DPMDetector |
| これはC++の抽象クラスであり、DPMを扱うための外部ユーザーAPIを提供する。 続きを読む... | |