SlideShare a Scribd company logo
第10回CV勉強会 OpenCV祭り
       物体検出徹底解説!
               takmin
<質問>
OpenCVで一番有名な機能
 といったらなんでしょう?
<答え>
      顔検出
(※この発言は個人の見解であり、所属す
  る組織の公式見解ではありません)
実は認識出来るのは「顔」だけ
   じゃないんです

というわけで、「物体」検出の仕
 組みと使い方を徹底解説
物体検出徹底解説!
   物体検出の仕組み
       Viola & Johnsのアルゴリズムを解説
   物体検出の使い方
       2.0以降の変更点
   物体検出器を作ってみよう!
       opencv_createsamples
       opencv_traincascade
物体検出の仕組み
Viola & Johnsのアルゴリズム
   OpenCVの物体検出は、以下の手法を実装している
       Rainer Lienhart and Jochen Maydt, "An Extended Set of Haar-like
        Features for Rapid Object Detection", IEEE ICIP 2002,Vol. 1, pp. 900-903,
        Sep. 2002.
       Ojala and M. Pietikainen, “Multiresolution Gray-Scale and Rotation
        Invariant Texture Classification with Local Binary Patterns”, IEEE Trans on
        PAMI,Vol. 24. No.7, July, 2002. (LBPの論文)

    ここでは、大元となった以下の論文を元に解説する
    Paul Viola and Michael J. Jones,
    "Rapid Object Detection using a Boosted Cascade of
    Simple Features",
    IEEE CVPR, 2001.
物体検出の流れ
探索窓
物体検出の基本原理
           学習フェーズ   認識フェーズ

             学習画像
            学習画像
           学習画像     入力画像
Haar-Like
特徴
        特徴量抽出       特徴量抽出

AdaBoost
            学習        認識


           学習結果
                    認識結果
            データ
機械学習とは?
   人間が自然に行っている学習能力と同様の機能をコン
    ピュータで実現させるための技術・手法のこと
       事前にコンピュータにサンプルデータを与え、そのパターンを
        統計的に抽出させる。
               学習サンプル
                               学習結果
AdaBoost
   弱い識別器を並べて、強い識別器を作成する機械学習


              非正解画    教師
       正解画像     像     信号




                 学習
    弱い識別器                    強い識別器



                      ・・・・
AdaBoostの学習の流れ
以下の処理を繰り返し、1ラウンドごとに1つの特徴を選ぶ

1.        学習画像(正解及び非正解)を用意する。(例:顔画像と顔を含まない画
          像)

2.        各画像ごとの重みを、正解画像、非正解画像ごとに一様にする。(各々
          の合計は0.5)

3.        以下を指定回数繰り返す。
     1.   重みの合計が1になるように正規化
     2.   各々の識別器に画像の判定を行わせ、学習画像毎の重みを元にエラー率を
          算出する
     3.   エラー率が最も小さくなった識別器を選択する。
     4.   その識別器が判別を誤った画像の重みを重くする。

4.        選択した識別器の重み付き和を最終的な強識別器とする。
Haar-Like特徴




      特徴量 = 白領域 の画素値-黒領域の画素値
Haar-Like特徴と探索窓
   探索窓の中に、1つHaar-Like特徴を持つ。
   1つの弱識別器は、1つの探索窓から構成
   探索窓内のHaar-Like特徴の「位置」、「サイズ」、「種類」
    を様々に変えて、約12万個の識別器を用意。
               矩形特徴
       探索窓   (Haar-Like特徴)
AdaBoostの学習結果の例
   AdaBoostを通して、最適な探索まで自動的に選択される

                            選択された特徴の例




       画像出典:
        P.Viola and M.J. Jones, "Rapid Object Detection using a Boosted Cascade of Simple
       Features", IEEE CVPR, 2001.
検出の高速化



1.   積分画像によるHaar-Like特徴計算の
     高速化
2.   Attentional Cascadeによる物体領域選
     択の高速化
高速化の仕組み – 積分画像 -
   各画素の値を積分した画像を作成する。(右下に行くほど画
    素の値が大きくなる)
   矩形領域の画素値の総和が非常に高速に計算可能になる。
    P1 = 領域Aの画素値の総和
    P2 = 領域A+Bの画素値の総和
    P3 = 領域A+Cの画素値の総和
    P4 = 領域A+B+C+Dの画素値の総和
                                                 P’2
     A          B                 B’
           P1         P2

     C          D           A’        P’1   D’         P’4


                      P4
          P3
                                 C’          P’3




    D = P4 – P2 – P3 + P1   D’ = P’4 – P’2 – P’3 + P’1
高速化の仕組み – Attentional Cascade -
   画像中は「物体以外」の領域の方が多い
       効率よく「物体以外」の領域を削除するために、強識別器を複
        数連結させ、上位で関係ない領域を早めに削除する。


        全ての探索窓



                TRUE          TRUE       TRUE
           1           2             3          更なる処理

               FALSE       FALSE     FALSE



                   拒否された探索窓
物体検出器の構造(まとめ)
   物体検出器の学習データは以下の構造を持つ

    カスケード型検出器

     ステージ1(強識別器)      ステージ2(強識別器)

      弱識別器1            弱識別器1
        Haar-Like特徴      Haar-Like特徴

      弱識別器2            弱識別器2           ・・・・・



            ・                ・
            ・                ・
            ・                ・
            ・                ・
OpenCVで物体検出
OpenCVで物体検出
OpenCV 2.0以降の変更点:

   CascadeClassifierクラスを追加
       CインターフェースのCvHaarClassifierCascadeに対応


   弱識別器として使用する特徴量の基底クラス導入
       FeatureEvaluatorクラスを継承することで、独自特徴量を実
        装可能。
       現在はHaar特徴とLBP特徴が実装されている。
Local Binary Pattern (LBP)
• 注目画素の8近傍の値が、注目画素より高いか低いかで
  ラベリングし、符号化
• 全画素で符号を計算し、ヒストグラムを作成




 Jo Chang-yeon, “Face Detection using LBP features”, CS 229 Final Project Report
Local Binary Pattern (LBP)                               続き
• 顔画像をM個のブロックへ分割(重なりなし)し、それぞれ
  のヒストグラムを求めて結合する(256×M個のビン)
• この結合ヒストグラムの一つのビンが弱識別器




 Jo Chang-yeon, “Face Detection using LBP features”, CS 229 Final Project Report
物体検出の実行(顔検出の例)
/* 正面顔検出器のロード */
cv::CascadeClassifier cascade( "haarcascade_frontalface_alt.xml" );

std::vector<cv::Rect> faces;
std::vector<cv::Rect>::iterator face_itr;

/* 顔検出 */
fcascade.detectMultiScale( image, faces);

/* 顔領域の描画 */
for( face_itr = faces.begin(); face_itr != face_itr.end(); face_itr++ )
{
   cv::rectangle( image, *face_itr, CV_RGB(255,0,0), 3 );
}

/* 画像の表示(略) */
物体検出の実行
   実行の流れ
    1.    CascadeClassifierクラスへオブジェクトの学習ファイル
          (XML)を読み込み
          コンストラクタの引数、もしくはload()メソッド
          ファイル読み込み時にHaar特徴かLBP特徴かは自動で
            判断
    2.    CascadeClassifier::detectMultiScale ()関数で、物体検出
          std::vector<cv::Rect>クラスへ結果を格納
学習データ
   “<OpenCV_HOME>/data/”
       “haarcascades/” : Haar特徴を用いた学習データ
           正面顔
           顔パーツ
           横顔
           上・下半身
       “lbpcascades/” : LBP特徴を用いた学習データ
           正面顔
物体検出器の作成
手順
1.   学習データを集める。(正解画像と非正解画像)

2.   学習用テキストファイルを作成する

3.   “opencv_createsamples”を用いて正解画像データ
     を作成する。

4.   “opencv_traincascade”を用いて物体情報を学習さ
     せて、XMLファイルを生成する。
参考資料
私の知る限り、ver2.0以降の物体検出器生成手順を
書いた正式なドキュメントはありません(!?)
ただし、ver1.1までのドキュメントでも、使い方はなんとか類推で
きる。


参考資料:
 “/doc/haartraining.htm”
 http://lab.cntl.kyutech.ac.jp/~kobalab/nishida/opencv/haa
  rtraining_jp.htm(日本語訳)
 http://robotik.inflomatik.info/other/opencv/OpenCV_O
  bjectDetection_HowTo.pdf
学習画像を集める
正解画像3000枚、非正解画像7000枚程度

   Google Image
       http://images.google.co.jp/
   Flickr
       http://www.flickr.com/
   研究用データ
       Pascal VOC
           http://pascallin.ecs.soton.ac.uk/challenges/VOC/
       MITの顔画像データ
           http://cbcl.mit.edu/software-datasets/FaceData2.html
       カリフォルニア工科大学の物体画像データ
           http://www.vision.caltech.edu/Image_Datasets/Caltech101/Caltech101.html
           http://www.vision.caltech.edu/Image_Datasets/Caltech256/
       etc
   自分で撮影する
学習用テキストを編集する
   画像のリストファイルを作成する(非正解画像の例)
                                  NG.txt
     <作業ディレクトリ>            NG¥image_0001.jpg
     NG.txt                NG¥image_0002.jpg
     OK.txt                NG¥image_0003.jpg
                           NG¥image_0004.jpg
              NG           NG¥image_0005.jpg
          image_0001.jpg          .
          image_0002.jpg          .
                                  .
          image_0003.jpg
                                  .
              OK
          image_0001.jpg
          image_0002.jpg
          image_0003.jpg
学習用テキストを編集する
   画像のリストファイルを作成する(正解画像の例)

                                           OK.txt
     <作業ディレクトリ>
                           OK¥image_0001.jpg 1 120 100 45 45
     NG.txt
                           OK¥image_0002.jpg 2 100 200 50 50 50 30 25 25
     OK.txt                OK¥image_0003.jpg 1 40 55 60 60
                           OK¥image_0004.jpg 1 104 98 40 40
              NG
                           OK¥image_0005.jpg 2 62 70 50 50 120 162 30 30
          image_0001.jpg
                                           .
          image_0002.jpg                   .
          image_0003.jpg                   .
                                           .
              OK
          image_0001.jpg
          image_0002.jpg       ファイル名                  物体の位置×物体数
                                           物体数     (x,y,width,height)
          image_0003.jpg
物体座標の表記
          (0, 0)                                        x




                   (X,Y)



                                   Heigh
                                   t


                           Width
           y


以下のサイトから、”ObjectMaker”というプロットツールをダウンロード可能!
http://opencv.willowgarage.com/wiki/ObjectDetection

“ObjectMarker”を日本語化他、色々と使いやすく改造した物
http://www.hvrl.ics.keio.ac.jp/~takuya/profile_j.html
正解画像データの作成
コマンドラインで“opencv_createsamples”という実
行ファイルを使用して、正解画像を変換する。
   2通りの正解データ作成方法
    1.       1枚の画像を、歪めたり、回転させたり、色の分布を変える
             などして、大量の学習データを作成する場合。(ロゴなど)
             正直精度悪くてあんまり使えない。


    2.       大量の学習画像を集めて、オブジェクトの領域をプロットす
             る場合。(顔、バイク、車など)
正解画像データの作成
画像ファイルリストから生成する場合

場所:
                                              このファイルを次のカス
<OpenCV_HOME>/bin/opencv_createsamples”       ケード学習時に使用する

コマンド例:
opencv_createsamples -info OK.txt -vec uiuc_car.vec -num 500 -w
50 -h 20 –show

-info:   正解画像リストファイル
-vec:    出力データファイル名
-num:    正解画像数
-w:      学習時の画像幅
-h:      学習時の画像高さ
-show:   学習画像のGUIによる確認
学習の開始
場所:
“<OpenCV_HOME>/bin/opencv_traincascade”

コマンド例:
opencv_traincascade -data uiuc_car -vec uiuc_car.vec -bg NG.txt -numPos 500
-numNeg 1327 -w 50 -h 20 -numStages 9 -featureType HAAR -mode ALL

-data:    作成するファイル名。拡張子に”.xml”が付与される。
-vec:     createsamplesで作成した正解画像データ名
-bg:      非正解画像ファイル名
-numPos: 正解画像数
-numNeg:非正解画像数
-w, -h:   画像サイズ。createsamplesで指定したものと同じにする。
-numStages:        作成するステージ数
-featureType:      特徴の型。HAARまたはLBP
-mode: Haar-Like特徴の種類を指定
学習の開始
学習の様子
===== TRAINING 0-stage =====
<BEGIN
POS count : consumed 500 : 500
NEG count : acceptanceRatio 1327 : 1
Precalculation time: 44.686
+----+---------+---------+
| N | HR | FA |
+----+---------+---------+
| 1|         1|       1|
+----+---------+---------+
| 2|         1|       1|
+----+---------+---------+
| 3|         1|       1|
+----+---------+---------+
| 4| 0.998| 0.517709|
+----+---------+---------+
| 5| 0.996| 0.37679|
+----+---------+---------+
END>
実験
   UIUC Car Datasetを使って車を学習させてみる
       正解画像:500枚 非正解画像:500枚
       学習画像サイズ100x40
       更にCaltech256のclutterデータ827枚を非正解画像として追
        加
       HAAR特徴は50x20の画像サイズに対し、LBP特徴は100x40
        の画像サイズに対して学習
    学習画像例
    positive                 negative
結果
HAAR特徴




 LBP特徴
結果
HAAR特徴




 LBP特徴
結果


特徴量      Recall   Precision   F-measure

HAAR特徴   64%      23%         34%

LBP特徴    70%      46%         56%
まとめ
   OpenCVの物体検出は顔以外にも使える
   物体検出の原理の解説
       原理を分かっていたほうが、学習パラメータの意味も理解しや
        すい
   OpenCVで検出器を作成する方法の解説
       学習画像をたくさん集める必要
       createsamplesで正解画像データを作成し、traincascadeで学習
        データXMLを生成
Any Question?

More Related Content

Opencv object detection_takmin

  • 1. 第10回CV勉強会 OpenCV祭り 物体検出徹底解説! takmin
  • 3. <答え> 顔検出 (※この発言は個人の見解であり、所属す る組織の公式見解ではありません)
  • 4. 実は認識出来るのは「顔」だけ じゃないんです というわけで、「物体」検出の仕 組みと使い方を徹底解説
  • 5. 物体検出徹底解説!  物体検出の仕組み  Viola & Johnsのアルゴリズムを解説  物体検出の使い方  2.0以降の変更点  物体検出器を作ってみよう!  opencv_createsamples  opencv_traincascade
  • 7. Viola & Johnsのアルゴリズム  OpenCVの物体検出は、以下の手法を実装している  Rainer Lienhart and Jochen Maydt, "An Extended Set of Haar-like Features for Rapid Object Detection", IEEE ICIP 2002,Vol. 1, pp. 900-903, Sep. 2002.  Ojala and M. Pietikainen, “Multiresolution Gray-Scale and Rotation Invariant Texture Classification with Local Binary Patterns”, IEEE Trans on PAMI,Vol. 24. No.7, July, 2002. (LBPの論文) ここでは、大元となった以下の論文を元に解説する Paul Viola and Michael J. Jones, "Rapid Object Detection using a Boosted Cascade of Simple Features", IEEE CVPR, 2001.
  • 9. 物体検出の基本原理 学習フェーズ 認識フェーズ 学習画像 学習画像 学習画像 入力画像 Haar-Like 特徴 特徴量抽出 特徴量抽出 AdaBoost 学習 認識 学習結果 認識結果 データ
  • 10. 機械学習とは?  人間が自然に行っている学習能力と同様の機能をコン ピュータで実現させるための技術・手法のこと  事前にコンピュータにサンプルデータを与え、そのパターンを 統計的に抽出させる。 学習サンプル 学習結果
  • 11. AdaBoost  弱い識別器を並べて、強い識別器を作成する機械学習 非正解画 教師 正解画像 像 信号 学習 弱い識別器 強い識別器 ・・・・
  • 12. AdaBoostの学習の流れ 以下の処理を繰り返し、1ラウンドごとに1つの特徴を選ぶ 1. 学習画像(正解及び非正解)を用意する。(例:顔画像と顔を含まない画 像) 2. 各画像ごとの重みを、正解画像、非正解画像ごとに一様にする。(各々 の合計は0.5) 3. 以下を指定回数繰り返す。 1. 重みの合計が1になるように正規化 2. 各々の識別器に画像の判定を行わせ、学習画像毎の重みを元にエラー率を 算出する 3. エラー率が最も小さくなった識別器を選択する。 4. その識別器が判別を誤った画像の重みを重くする。 4. 選択した識別器の重み付き和を最終的な強識別器とする。
  • 13. Haar-Like特徴 特徴量 = 白領域 の画素値-黒領域の画素値
  • 14. Haar-Like特徴と探索窓  探索窓の中に、1つHaar-Like特徴を持つ。  1つの弱識別器は、1つの探索窓から構成  探索窓内のHaar-Like特徴の「位置」、「サイズ」、「種類」 を様々に変えて、約12万個の識別器を用意。 矩形特徴 探索窓 (Haar-Like特徴)
  • 15. AdaBoostの学習結果の例  AdaBoostを通して、最適な探索まで自動的に選択される 選択された特徴の例 画像出典: P.Viola and M.J. Jones, "Rapid Object Detection using a Boosted Cascade of Simple Features", IEEE CVPR, 2001.
  • 16. 検出の高速化 1. 積分画像によるHaar-Like特徴計算の 高速化 2. Attentional Cascadeによる物体領域選 択の高速化
  • 17. 高速化の仕組み – 積分画像 -  各画素の値を積分した画像を作成する。(右下に行くほど画 素の値が大きくなる)  矩形領域の画素値の総和が非常に高速に計算可能になる。 P1 = 領域Aの画素値の総和 P2 = 領域A+Bの画素値の総和 P3 = 領域A+Cの画素値の総和 P4 = 領域A+B+C+Dの画素値の総和 P’2 A B B’ P1 P2 C D A’ P’1 D’ P’4 P4 P3 C’ P’3 D = P4 – P2 – P3 + P1 D’ = P’4 – P’2 – P’3 + P’1
  • 18. 高速化の仕組み – Attentional Cascade -  画像中は「物体以外」の領域の方が多い  効率よく「物体以外」の領域を削除するために、強識別器を複 数連結させ、上位で関係ない領域を早めに削除する。 全ての探索窓 TRUE TRUE TRUE 1 2 3 更なる処理 FALSE FALSE FALSE 拒否された探索窓
  • 19. 物体検出器の構造(まとめ)  物体検出器の学習データは以下の構造を持つ カスケード型検出器 ステージ1(強識別器) ステージ2(強識別器) 弱識別器1 弱識別器1 Haar-Like特徴 Haar-Like特徴 弱識別器2 弱識別器2 ・・・・・ ・ ・ ・ ・ ・ ・ ・ ・
  • 21. OpenCVで物体検出 OpenCV 2.0以降の変更点:  CascadeClassifierクラスを追加  CインターフェースのCvHaarClassifierCascadeに対応  弱識別器として使用する特徴量の基底クラス導入  FeatureEvaluatorクラスを継承することで、独自特徴量を実 装可能。  現在はHaar特徴とLBP特徴が実装されている。
  • 22. Local Binary Pattern (LBP) • 注目画素の8近傍の値が、注目画素より高いか低いかで ラベリングし、符号化 • 全画素で符号を計算し、ヒストグラムを作成 Jo Chang-yeon, “Face Detection using LBP features”, CS 229 Final Project Report
  • 23. Local Binary Pattern (LBP) 続き • 顔画像をM個のブロックへ分割(重なりなし)し、それぞれ のヒストグラムを求めて結合する(256×M個のビン) • この結合ヒストグラムの一つのビンが弱識別器 Jo Chang-yeon, “Face Detection using LBP features”, CS 229 Final Project Report
  • 24. 物体検出の実行(顔検出の例) /* 正面顔検出器のロード */ cv::CascadeClassifier cascade( "haarcascade_frontalface_alt.xml" ); std::vector<cv::Rect> faces; std::vector<cv::Rect>::iterator face_itr; /* 顔検出 */ fcascade.detectMultiScale( image, faces); /* 顔領域の描画 */ for( face_itr = faces.begin(); face_itr != face_itr.end(); face_itr++ ) { cv::rectangle( image, *face_itr, CV_RGB(255,0,0), 3 ); } /* 画像の表示(略) */
  • 25. 物体検出の実行  実行の流れ 1. CascadeClassifierクラスへオブジェクトの学習ファイル (XML)を読み込み  コンストラクタの引数、もしくはload()メソッド  ファイル読み込み時にHaar特徴かLBP特徴かは自動で 判断 2. CascadeClassifier::detectMultiScale ()関数で、物体検出  std::vector<cv::Rect>クラスへ結果を格納
  • 26. 学習データ  “<OpenCV_HOME>/data/”  “haarcascades/” : Haar特徴を用いた学習データ  正面顔  顔パーツ  横顔  上・下半身  “lbpcascades/” : LBP特徴を用いた学習データ  正面顔
  • 28. 手順 1. 学習データを集める。(正解画像と非正解画像) 2. 学習用テキストファイルを作成する 3. “opencv_createsamples”を用いて正解画像データ を作成する。 4. “opencv_traincascade”を用いて物体情報を学習さ せて、XMLファイルを生成する。
  • 30. 学習画像を集める 正解画像3000枚、非正解画像7000枚程度  Google Image  http://images.google.co.jp/  Flickr  http://www.flickr.com/  研究用データ  Pascal VOC  http://pascallin.ecs.soton.ac.uk/challenges/VOC/  MITの顔画像データ  http://cbcl.mit.edu/software-datasets/FaceData2.html  カリフォルニア工科大学の物体画像データ  http://www.vision.caltech.edu/Image_Datasets/Caltech101/Caltech101.html  http://www.vision.caltech.edu/Image_Datasets/Caltech256/  etc  自分で撮影する
  • 31. 学習用テキストを編集する  画像のリストファイルを作成する(非正解画像の例) NG.txt <作業ディレクトリ> NG¥image_0001.jpg NG.txt NG¥image_0002.jpg OK.txt NG¥image_0003.jpg NG¥image_0004.jpg NG NG¥image_0005.jpg image_0001.jpg . image_0002.jpg . . image_0003.jpg . OK image_0001.jpg image_0002.jpg image_0003.jpg
  • 32. 学習用テキストを編集する  画像のリストファイルを作成する(正解画像の例) OK.txt <作業ディレクトリ> OK¥image_0001.jpg 1 120 100 45 45 NG.txt OK¥image_0002.jpg 2 100 200 50 50 50 30 25 25 OK.txt OK¥image_0003.jpg 1 40 55 60 60 OK¥image_0004.jpg 1 104 98 40 40 NG OK¥image_0005.jpg 2 62 70 50 50 120 162 30 30 image_0001.jpg . image_0002.jpg . image_0003.jpg . . OK image_0001.jpg image_0002.jpg ファイル名 物体の位置×物体数 物体数 (x,y,width,height) image_0003.jpg
  • 33. 物体座標の表記 (0, 0) x (X,Y) Heigh t Width y 以下のサイトから、”ObjectMaker”というプロットツールをダウンロード可能! http://opencv.willowgarage.com/wiki/ObjectDetection “ObjectMarker”を日本語化他、色々と使いやすく改造した物 http://www.hvrl.ics.keio.ac.jp/~takuya/profile_j.html
  • 34. 正解画像データの作成 コマンドラインで“opencv_createsamples”という実 行ファイルを使用して、正解画像を変換する。  2通りの正解データ作成方法 1. 1枚の画像を、歪めたり、回転させたり、色の分布を変える などして、大量の学習データを作成する場合。(ロゴなど)  正直精度悪くてあんまり使えない。 2. 大量の学習画像を集めて、オブジェクトの領域をプロットす る場合。(顔、バイク、車など)
  • 35. 正解画像データの作成 画像ファイルリストから生成する場合 場所: このファイルを次のカス <OpenCV_HOME>/bin/opencv_createsamples” ケード学習時に使用する コマンド例: opencv_createsamples -info OK.txt -vec uiuc_car.vec -num 500 -w 50 -h 20 –show -info: 正解画像リストファイル -vec: 出力データファイル名 -num: 正解画像数 -w: 学習時の画像幅 -h: 学習時の画像高さ -show: 学習画像のGUIによる確認
  • 36. 学習の開始 場所: “<OpenCV_HOME>/bin/opencv_traincascade” コマンド例: opencv_traincascade -data uiuc_car -vec uiuc_car.vec -bg NG.txt -numPos 500 -numNeg 1327 -w 50 -h 20 -numStages 9 -featureType HAAR -mode ALL -data: 作成するファイル名。拡張子に”.xml”が付与される。 -vec: createsamplesで作成した正解画像データ名 -bg: 非正解画像ファイル名 -numPos: 正解画像数 -numNeg:非正解画像数 -w, -h: 画像サイズ。createsamplesで指定したものと同じにする。 -numStages: 作成するステージ数 -featureType: 特徴の型。HAARまたはLBP -mode: Haar-Like特徴の種類を指定
  • 37. 学習の開始 学習の様子 ===== TRAINING 0-stage ===== <BEGIN POS count : consumed 500 : 500 NEG count : acceptanceRatio 1327 : 1 Precalculation time: 44.686 +----+---------+---------+ | N | HR | FA | +----+---------+---------+ | 1| 1| 1| +----+---------+---------+ | 2| 1| 1| +----+---------+---------+ | 3| 1| 1| +----+---------+---------+ | 4| 0.998| 0.517709| +----+---------+---------+ | 5| 0.996| 0.37679| +----+---------+---------+ END>
  • 38. 実験  UIUC Car Datasetを使って車を学習させてみる  正解画像:500枚 非正解画像:500枚  学習画像サイズ100x40  更にCaltech256のclutterデータ827枚を非正解画像として追 加  HAAR特徴は50x20の画像サイズに対し、LBP特徴は100x40 の画像サイズに対して学習 学習画像例 positive negative
  • 41. 結果 特徴量 Recall Precision F-measure HAAR特徴 64% 23% 34% LBP特徴 70% 46% 56%
  • 42. まとめ  OpenCVの物体検出は顔以外にも使える  物体検出の原理の解説  原理を分かっていたほうが、学習パラメータの意味も理解しや すい  OpenCVで検出器を作成する方法の解説  学習画像をたくさん集める必要  createsamplesで正解画像データを作成し、traincascadeで学習 データXMLを生成