SlideShare une entreprise Scribd logo
1  sur  43
Télécharger pour lire hors ligne
第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?

Contenu connexe

Tendances

3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理
3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理
3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理Toru Tamaki
 
kaggle Freesound Audio Tagging 2019 4th place solution
kaggle Freesound Audio Tagging 2019 4th place solutionkaggle Freesound Audio Tagging 2019 4th place solution
kaggle Freesound Audio Tagging 2019 4th place solution理 秋山
 
Introduction to YOLO detection model
Introduction to YOLO detection modelIntroduction to YOLO detection model
Introduction to YOLO detection modelWEBFARMER. ltd.
 
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3Preferred Networks
 
SSD: Single Shot MultiBox Detector (ECCV2016)
SSD: Single Shot MultiBox Detector (ECCV2016)SSD: Single Shot MultiBox Detector (ECCV2016)
SSD: Single Shot MultiBox Detector (ECCV2016)Takanori Ogata
 
SSII2020 [OS2-02] 教師あり事前学習を凌駕する「弱」教師あり事前学習
SSII2020 [OS2-02] 教師あり事前学習を凌駕する「弱」教師あり事前学習SSII2020 [OS2-02] 教師あり事前学習を凌駕する「弱」教師あり事前学習
SSII2020 [OS2-02] 教師あり事前学習を凌駕する「弱」教師あり事前学習SSII
 
20160724_cv_sfm_revisited
20160724_cv_sfm_revisited20160724_cv_sfm_revisited
20160724_cv_sfm_revisitedKyohei Unno
 
[DL輪読会]Deep High-Resolution Representation Learning for Human Pose Estimation
[DL輪読会]Deep High-Resolution Representation Learning for Human Pose Estimation[DL輪読会]Deep High-Resolution Representation Learning for Human Pose Estimation
[DL輪読会]Deep High-Resolution Representation Learning for Human Pose EstimationDeep Learning JP
 
深層学習によるHuman Pose Estimationの基礎
深層学習によるHuman Pose Estimationの基礎深層学習によるHuman Pose Estimationの基礎
深層学習によるHuman Pose Estimationの基礎Takumi Ohkuma
 
【DL輪読会】Mastering Diverse Domains through World Models
【DL輪読会】Mastering Diverse Domains through World Models【DL輪読会】Mastering Diverse Domains through World Models
【DL輪読会】Mastering Diverse Domains through World ModelsDeep Learning JP
 
[DL輪読会] Residual Attention Network for Image Classification
[DL輪読会] Residual Attention Network for Image Classification[DL輪読会] Residual Attention Network for Image Classification
[DL輪読会] Residual Attention Network for Image ClassificationDeep Learning JP
 
Active Convolution, Deformable Convolution ―形状・スケールを学習可能なConvolution―
Active Convolution, Deformable Convolution ―形状・スケールを学習可能なConvolution―Active Convolution, Deformable Convolution ―形状・スケールを学習可能なConvolution―
Active Convolution, Deformable Convolution ―形状・スケールを学習可能なConvolution―Yosuke Shinya
 
Deep Learningによる超解像の進歩
Deep Learningによる超解像の進歩Deep Learningによる超解像の進歩
Deep Learningによる超解像の進歩Hiroto Honda
 
[DL輪読会]LightTrack: A Generic Framework for Online Top-Down Human Pose Tracking
[DL輪読会]LightTrack: A Generic Framework for Online Top-Down Human Pose Tracking[DL輪読会]LightTrack: A Generic Framework for Online Top-Down Human Pose Tracking
[DL輪読会]LightTrack: A Generic Framework for Online Top-Down Human Pose TrackingDeep Learning JP
 
You Only Look One-level Featureの解説と見せかけた物体検出のよもやま話
You Only Look One-level Featureの解説と見せかけた物体検出のよもやま話You Only Look One-level Featureの解説と見せかけた物体検出のよもやま話
You Only Look One-level Featureの解説と見せかけた物体検出のよもやま話Yusuke Uchida
 
Sift特徴量について
Sift特徴量についてSift特徴量について
Sift特徴量についてla_flance
 
R-CNNの原理とここ数年の流れ
R-CNNの原理とここ数年の流れR-CNNの原理とここ数年の流れ
R-CNNの原理とここ数年の流れKazuki Motohashi
 
物体検出の話Up用
物体検出の話Up用物体検出の話Up用
物体検出の話Up用Takashi Abe
 
10分でわかる主成分分析(PCA)
10分でわかる主成分分析(PCA)10分でわかる主成分分析(PCA)
10分でわかる主成分分析(PCA)Takanori Ogata
 

Tendances (20)

3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理
3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理
3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理
 
kaggle Freesound Audio Tagging 2019 4th place solution
kaggle Freesound Audio Tagging 2019 4th place solutionkaggle Freesound Audio Tagging 2019 4th place solution
kaggle Freesound Audio Tagging 2019 4th place solution
 
Introduction to YOLO detection model
Introduction to YOLO detection modelIntroduction to YOLO detection model
Introduction to YOLO detection model
 
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
 
SSD: Single Shot MultiBox Detector (ECCV2016)
SSD: Single Shot MultiBox Detector (ECCV2016)SSD: Single Shot MultiBox Detector (ECCV2016)
SSD: Single Shot MultiBox Detector (ECCV2016)
 
SSII2020 [OS2-02] 教師あり事前学習を凌駕する「弱」教師あり事前学習
SSII2020 [OS2-02] 教師あり事前学習を凌駕する「弱」教師あり事前学習SSII2020 [OS2-02] 教師あり事前学習を凌駕する「弱」教師あり事前学習
SSII2020 [OS2-02] 教師あり事前学習を凌駕する「弱」教師あり事前学習
 
20160724_cv_sfm_revisited
20160724_cv_sfm_revisited20160724_cv_sfm_revisited
20160724_cv_sfm_revisited
 
[DL輪読会]Deep High-Resolution Representation Learning for Human Pose Estimation
[DL輪読会]Deep High-Resolution Representation Learning for Human Pose Estimation[DL輪読会]Deep High-Resolution Representation Learning for Human Pose Estimation
[DL輪読会]Deep High-Resolution Representation Learning for Human Pose Estimation
 
Semantic segmentation
Semantic segmentationSemantic segmentation
Semantic segmentation
 
深層学習によるHuman Pose Estimationの基礎
深層学習によるHuman Pose Estimationの基礎深層学習によるHuman Pose Estimationの基礎
深層学習によるHuman Pose Estimationの基礎
 
【DL輪読会】Mastering Diverse Domains through World Models
【DL輪読会】Mastering Diverse Domains through World Models【DL輪読会】Mastering Diverse Domains through World Models
【DL輪読会】Mastering Diverse Domains through World Models
 
[DL輪読会] Residual Attention Network for Image Classification
[DL輪読会] Residual Attention Network for Image Classification[DL輪読会] Residual Attention Network for Image Classification
[DL輪読会] Residual Attention Network for Image Classification
 
Active Convolution, Deformable Convolution ―形状・スケールを学習可能なConvolution―
Active Convolution, Deformable Convolution ―形状・スケールを学習可能なConvolution―Active Convolution, Deformable Convolution ―形状・スケールを学習可能なConvolution―
Active Convolution, Deformable Convolution ―形状・スケールを学習可能なConvolution―
 
Deep Learningによる超解像の進歩
Deep Learningによる超解像の進歩Deep Learningによる超解像の進歩
Deep Learningによる超解像の進歩
 
[DL輪読会]LightTrack: A Generic Framework for Online Top-Down Human Pose Tracking
[DL輪読会]LightTrack: A Generic Framework for Online Top-Down Human Pose Tracking[DL輪読会]LightTrack: A Generic Framework for Online Top-Down Human Pose Tracking
[DL輪読会]LightTrack: A Generic Framework for Online Top-Down Human Pose Tracking
 
You Only Look One-level Featureの解説と見せかけた物体検出のよもやま話
You Only Look One-level Featureの解説と見せかけた物体検出のよもやま話You Only Look One-level Featureの解説と見せかけた物体検出のよもやま話
You Only Look One-level Featureの解説と見せかけた物体検出のよもやま話
 
Sift特徴量について
Sift特徴量についてSift特徴量について
Sift特徴量について
 
R-CNNの原理とここ数年の流れ
R-CNNの原理とここ数年の流れR-CNNの原理とここ数年の流れ
R-CNNの原理とここ数年の流れ
 
物体検出の話Up用
物体検出の話Up用物体検出の話Up用
物体検出の話Up用
 
10分でわかる主成分分析(PCA)
10分でわかる主成分分析(PCA)10分でわかる主成分分析(PCA)
10分でわかる主成分分析(PCA)
 

Similaire à Opencv object detection_takmin

コンピュータビジョン7章資料_20140830読書会
コンピュータビジョン7章資料_20140830読書会コンピュータビジョン7章資料_20140830読書会
コンピュータビジョン7章資料_20140830読書会Nao Oec
 
はじめての人のためのDeep Learning
はじめての人のためのDeep Learningはじめての人のためのDeep Learning
はじめての人のためのDeep LearningTadaichiro Nakano
 
Kashiwa.R#1 画像解析とパターン認識における R の利用
Kashiwa.R#1 画像解析とパターン認識における R の利用Kashiwa.R#1 画像解析とパターン認識における R の利用
Kashiwa.R#1 画像解析とパターン認識における R の利用nmaro
 
画像処理でのPythonの利用
画像処理でのPythonの利用画像処理でのPythonの利用
画像処理でのPythonの利用Yasutomo Kawanishi
 
大規模画像認識とその周辺
大規模画像認識とその周辺大規模画像認識とその周辺
大規模画像認識とその周辺n_hidekey
 
画像認識で物を見分ける
画像認識で物を見分ける画像認識で物を見分ける
画像認識で物を見分けるKazuaki Tanida
 
201209 Biopackathon 12th
201209 Biopackathon 12th201209 Biopackathon 12th
201209 Biopackathon 12thSatoshi Kume
 
Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Pythonによる機械学習入門 ~SVMからDeep Learningまで~Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Pythonによる機械学習入門 ~SVMからDeep Learningまで~Yasutomo Kawanishi
 
Face Recognition with OpenCV and scikit-learn
Face Recognition with OpenCV and scikit-learnFace Recognition with OpenCV and scikit-learn
Face Recognition with OpenCV and scikit-learnShiqiao Du
 
AV 画像認識とその周辺 - UT Startup Gym 講演資料
AV 画像認識とその周辺 - UT Startup Gym 講演資料AV 画像認識とその周辺 - UT Startup Gym 講演資料
AV 画像認識とその周辺 - UT Startup Gym 講演資料ぱろすけ
 
LexADV_WOVis Ver.0.1bの概要
LexADV_WOVis Ver.0.1bの概要LexADV_WOVis Ver.0.1bの概要
LexADV_WOVis Ver.0.1bの概要ADVENTURE Project
 
Ember.js Tokyo event 2014/09/22 (Japanese)
Ember.js Tokyo event  2014/09/22 (Japanese)Ember.js Tokyo event  2014/09/22 (Japanese)
Ember.js Tokyo event 2014/09/22 (Japanese)Yuki Shimada
 
関西CVPRML勉強会 2012.2.18 (一般物体認識 - データセット)
関西CVPRML勉強会 2012.2.18 (一般物体認識 - データセット)関西CVPRML勉強会 2012.2.18 (一般物体認識 - データセット)
関西CVPRML勉強会 2012.2.18 (一般物体認識 - データセット)Akisato Kimura
 
エンジニアのための機械学習の基礎
エンジニアのための機械学習の基礎エンジニアのための機械学習の基礎
エンジニアのための機械学習の基礎Daiyu Hatakeyama
 
introduce "Stealing Machine Learning Models via Prediction APIs"
introduce "Stealing Machine Learning Models  via Prediction APIs"introduce "Stealing Machine Learning Models  via Prediction APIs"
introduce "Stealing Machine Learning Models via Prediction APIs"Isao Takaesu
 
Why Reactive Matters #ScalaMatsuri
Why Reactive Matters #ScalaMatsuriWhy Reactive Matters #ScalaMatsuri
Why Reactive Matters #ScalaMatsuriYuta Okamoto
 
OpenCVの拡張ユーティリティ関数群
OpenCVの拡張ユーティリティ関数群OpenCVの拡張ユーティリティ関数群
OpenCVの拡張ユーティリティ関数群Norishige Fukushima
 
[DL輪読会]Deep Face Recognition: A Survey
[DL輪読会]Deep Face Recognition: A Survey[DL輪読会]Deep Face Recognition: A Survey
[DL輪読会]Deep Face Recognition: A SurveyDeep Learning JP
 
PythonによるDeep Learningの実装
PythonによるDeep Learningの実装PythonによるDeep Learningの実装
PythonによるDeep Learningの実装Shinya Akiba
 

Similaire à Opencv object detection_takmin (20)

コンピュータビジョン7章資料_20140830読書会
コンピュータビジョン7章資料_20140830読書会コンピュータビジョン7章資料_20140830読書会
コンピュータビジョン7章資料_20140830読書会
 
はじめての人のためのDeep Learning
はじめての人のためのDeep Learningはじめての人のためのDeep Learning
はじめての人のためのDeep Learning
 
Kashiwa.R#1 画像解析とパターン認識における R の利用
Kashiwa.R#1 画像解析とパターン認識における R の利用Kashiwa.R#1 画像解析とパターン認識における R の利用
Kashiwa.R#1 画像解析とパターン認識における R の利用
 
画像処理でのPythonの利用
画像処理でのPythonの利用画像処理でのPythonの利用
画像処理でのPythonの利用
 
大規模画像認識とその周辺
大規模画像認識とその周辺大規模画像認識とその周辺
大規模画像認識とその周辺
 
画像認識で物を見分ける
画像認識で物を見分ける画像認識で物を見分ける
画像認識で物を見分ける
 
201209 Biopackathon 12th
201209 Biopackathon 12th201209 Biopackathon 12th
201209 Biopackathon 12th
 
Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Pythonによる機械学習入門 ~SVMからDeep Learningまで~Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Pythonによる機械学習入門 ~SVMからDeep Learningまで~
 
Face Recognition with OpenCV and scikit-learn
Face Recognition with OpenCV and scikit-learnFace Recognition with OpenCV and scikit-learn
Face Recognition with OpenCV and scikit-learn
 
AV 画像認識とその周辺 - UT Startup Gym 講演資料
AV 画像認識とその周辺 - UT Startup Gym 講演資料AV 画像認識とその周辺 - UT Startup Gym 講演資料
AV 画像認識とその周辺 - UT Startup Gym 講演資料
 
LexADV_WOVis Ver.0.1bの概要
LexADV_WOVis Ver.0.1bの概要LexADV_WOVis Ver.0.1bの概要
LexADV_WOVis Ver.0.1bの概要
 
Ember.js Tokyo event 2014/09/22 (Japanese)
Ember.js Tokyo event  2014/09/22 (Japanese)Ember.js Tokyo event  2014/09/22 (Japanese)
Ember.js Tokyo event 2014/09/22 (Japanese)
 
関西CVPRML勉強会 2012.2.18 (一般物体認識 - データセット)
関西CVPRML勉強会 2012.2.18 (一般物体認識 - データセット)関西CVPRML勉強会 2012.2.18 (一般物体認識 - データセット)
関西CVPRML勉強会 2012.2.18 (一般物体認識 - データセット)
 
エンジニアのための機械学習の基礎
エンジニアのための機械学習の基礎エンジニアのための機械学習の基礎
エンジニアのための機械学習の基礎
 
introduce "Stealing Machine Learning Models via Prediction APIs"
introduce "Stealing Machine Learning Models  via Prediction APIs"introduce "Stealing Machine Learning Models  via Prediction APIs"
introduce "Stealing Machine Learning Models via Prediction APIs"
 
Gurobi python
Gurobi pythonGurobi python
Gurobi python
 
Why Reactive Matters #ScalaMatsuri
Why Reactive Matters #ScalaMatsuriWhy Reactive Matters #ScalaMatsuri
Why Reactive Matters #ScalaMatsuri
 
OpenCVの拡張ユーティリティ関数群
OpenCVの拡張ユーティリティ関数群OpenCVの拡張ユーティリティ関数群
OpenCVの拡張ユーティリティ関数群
 
[DL輪読会]Deep Face Recognition: A Survey
[DL輪読会]Deep Face Recognition: A Survey[DL輪読会]Deep Face Recognition: A Survey
[DL輪読会]Deep Face Recognition: A Survey
 
PythonによるDeep Learningの実装
PythonによるDeep Learningの実装PythonによるDeep Learningの実装
PythonによるDeep Learningの実装
 

Plus de Takuya Minagawa

Machine Learning Operations (MLOps): Overview, Definition, and Architecture
Machine Learning Operations (MLOps): Overview, Definition, and ArchitectureMachine Learning Operations (MLOps): Overview, Definition, and Architecture
Machine Learning Operations (MLOps): Overview, Definition, and ArchitectureTakuya Minagawa
 
点群SegmentationのためのTransformerサーベイ
点群SegmentationのためのTransformerサーベイ点群SegmentationのためのTransformerサーベイ
点群SegmentationのためのTransformerサーベイTakuya Minagawa
 
Learning to Solve Hard Minimal Problems
Learning to Solve Hard Minimal ProblemsLearning to Solve Hard Minimal Problems
Learning to Solve Hard Minimal ProblemsTakuya Minagawa
 
ConditionalPointDiffusion.pdf
ConditionalPointDiffusion.pdfConditionalPointDiffusion.pdf
ConditionalPointDiffusion.pdfTakuya Minagawa
 
楽しいコンピュータビジョンの受託仕事
楽しいコンピュータビジョンの受託仕事楽しいコンピュータビジョンの受託仕事
楽しいコンピュータビジョンの受託仕事Takuya Minagawa
 
20200910コンピュータビジョン今昔物語(JPTA講演資料)
20200910コンピュータビジョン今昔物語(JPTA講演資料)20200910コンピュータビジョン今昔物語(JPTA講演資料)
20200910コンピュータビジョン今昔物語(JPTA講演資料)Takuya Minagawa
 
2020/07/04 BSP-Net (CVPR2020)
2020/07/04 BSP-Net (CVPR2020)2020/07/04 BSP-Net (CVPR2020)
2020/07/04 BSP-Net (CVPR2020)Takuya Minagawa
 
20190706cvpr2019_3d_shape_representation
20190706cvpr2019_3d_shape_representation20190706cvpr2019_3d_shape_representation
20190706cvpr2019_3d_shape_representationTakuya Minagawa
 
20190307 visualslam summary
20190307 visualslam summary20190307 visualslam summary
20190307 visualslam summaryTakuya Minagawa
 
20190131 lidar-camera fusion semantic segmentation survey
20190131 lidar-camera fusion semantic segmentation survey20190131 lidar-camera fusion semantic segmentation survey
20190131 lidar-camera fusion semantic segmentation surveyTakuya Minagawa
 
2018/12/28 LiDARで取得した道路上点群に対するsemantic segmentation
2018/12/28 LiDARで取得した道路上点群に対するsemantic segmentation2018/12/28 LiDARで取得した道路上点群に対するsemantic segmentation
2018/12/28 LiDARで取得した道路上点群に対するsemantic segmentationTakuya Minagawa
 
run Keras model on opencv
run Keras model on opencvrun Keras model on opencv
run Keras model on opencvTakuya Minagawa
 
20181130 lidar object detection survey
20181130 lidar object detection survey20181130 lidar object detection survey
20181130 lidar object detection surveyTakuya Minagawa
 
object detection with lidar-camera fusion: survey (updated)
object detection with lidar-camera fusion: survey (updated)object detection with lidar-camera fusion: survey (updated)
object detection with lidar-camera fusion: survey (updated)Takuya Minagawa
 

Plus de Takuya Minagawa (20)

Machine Learning Operations (MLOps): Overview, Definition, and Architecture
Machine Learning Operations (MLOps): Overview, Definition, and ArchitectureMachine Learning Operations (MLOps): Overview, Definition, and Architecture
Machine Learning Operations (MLOps): Overview, Definition, and Architecture
 
MobileNeRF
MobileNeRFMobileNeRF
MobileNeRF
 
点群SegmentationのためのTransformerサーベイ
点群SegmentationのためのTransformerサーベイ点群SegmentationのためのTransformerサーベイ
点群SegmentationのためのTransformerサーベイ
 
Learning to Solve Hard Minimal Problems
Learning to Solve Hard Minimal ProblemsLearning to Solve Hard Minimal Problems
Learning to Solve Hard Minimal Problems
 
ConditionalPointDiffusion.pdf
ConditionalPointDiffusion.pdfConditionalPointDiffusion.pdf
ConditionalPointDiffusion.pdf
 
楽しいコンピュータビジョンの受託仕事
楽しいコンピュータビジョンの受託仕事楽しいコンピュータビジョンの受託仕事
楽しいコンピュータビジョンの受託仕事
 
20210711 deepI2P
20210711 deepI2P20210711 deepI2P
20210711 deepI2P
 
20201010 personreid
20201010 personreid20201010 personreid
20201010 personreid
 
20200910コンピュータビジョン今昔物語(JPTA講演資料)
20200910コンピュータビジョン今昔物語(JPTA講演資料)20200910コンピュータビジョン今昔物語(JPTA講演資料)
20200910コンピュータビジョン今昔物語(JPTA講演資料)
 
2020/07/04 BSP-Net (CVPR2020)
2020/07/04 BSP-Net (CVPR2020)2020/07/04 BSP-Net (CVPR2020)
2020/07/04 BSP-Net (CVPR2020)
 
20200704 bsp net
20200704 bsp net20200704 bsp net
20200704 bsp net
 
20190825 vins mono
20190825 vins mono20190825 vins mono
20190825 vins mono
 
20190706cvpr2019_3d_shape_representation
20190706cvpr2019_3d_shape_representation20190706cvpr2019_3d_shape_representation
20190706cvpr2019_3d_shape_representation
 
20190307 visualslam summary
20190307 visualslam summary20190307 visualslam summary
20190307 visualslam summary
 
Visual slam
Visual slamVisual slam
Visual slam
 
20190131 lidar-camera fusion semantic segmentation survey
20190131 lidar-camera fusion semantic segmentation survey20190131 lidar-camera fusion semantic segmentation survey
20190131 lidar-camera fusion semantic segmentation survey
 
2018/12/28 LiDARで取得した道路上点群に対するsemantic segmentation
2018/12/28 LiDARで取得した道路上点群に対するsemantic segmentation2018/12/28 LiDARで取得した道路上点群に対するsemantic segmentation
2018/12/28 LiDARで取得した道路上点群に対するsemantic segmentation
 
run Keras model on opencv
run Keras model on opencvrun Keras model on opencv
run Keras model on opencv
 
20181130 lidar object detection survey
20181130 lidar object detection survey20181130 lidar object detection survey
20181130 lidar object detection survey
 
object detection with lidar-camera fusion: survey (updated)
object detection with lidar-camera fusion: survey (updated)object detection with lidar-camera fusion: survey (updated)
object detection with lidar-camera fusion: survey (updated)
 

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を生成