カスケード 分類 器。 カスケード分類器でペットボトルを判別してみる │ Kazuki Room ~電子工作・ロボット・3Dプリンター・RaspberryPi~

Haar

カスケード 分類 器

最近、OpenCVで遊んでいて、付属の顔検出用の分類器の精度があまり良くないので、自分で作ってみることにした。 ドキュメントがとっ散らかっているので、メモとして残す。 次の画像は付属の分類器を使って検出したもの。 False-Positiveも多くて、うまく顔を捕捉できていないのがわかる。 OpenCVはバージョン2. 2を使った。 手順としては• サンプルの収集• ラベル付け• 分類器の生成 となる。 サンプルの収集 今回は、ポジティブサンプルとネガティブサンプル用にあわせて10392枚集めた。 画像検索のでは、Bing Search on Azureが一番いいと思う。 は制限がきつくて、Yahooはクレカの登録が要る。 Bingはで無料プランを登録すれば良い。 使うときはAuthヘッダにアカウントキーを入れてやれば良い。 スクリプトは以下にあげておいた。 ラベル付け 集めたサンプルを一枚一枚、ポジティブとネガティブに手作業で分類する。 ポジティブサンプルなら対象 顔 の座標を記録する。 そのためのツールを今回は自分で作った。 ボタンはそれぞれ以下のとおり• RESET - その画像の座標選択をリセット• SKIP - ポジティブにもネガティブにもしない• NEXT - 座標が選択されていたらポジティブ、選択されていなければネガティブに分類 その結果、10392枚あったサンプルは• ポジティブ : 3302枚• ネガティブ : 2561枚 になった。 男の顔とか検出しても誰も得しないと思ったので、女性だけポジティブサンプルに入れた。 それから極端な横顔などを除いたら、この数になった。 本当はポジティブだけで5000枚くらいが良いらしい。 この作業が大体10時間くらいかかる。 ツールはgithubにあげておいた。 分類器の生成 上のツールでラベル付けをすると、ポジティブサンプルは info. dat に、ネガティブサンプルは bg. txt に一覧が出力される。 中身は下のような書式になっている。 info. jpg 1 816 41 212 235 bg. jpg これをもとに分類器を生成する。 dat -vec kawaii. vec -num 3302 その他の引数の詳細は これで、 kawaii. vec が出力されるので、次に、この kawaii. vec と bg. その前に出力ファイルが kawaii ディレクトリに保存されるので kawaii ディレクトリを作っておく。 vec -bg bg. txt -numPos 2971 -numNeg 2561 -featureType HAAR -mode ALL その他の引数の詳細は ここで、 -numPos に渡す値に注意が必要で、上の 3302 を指定するとサンプル数が足りなくなって以下のエラーが出る。 OpenCV Error: Bad argument Can not get new positive sample. The most possible reason is insufficient count of samples in given vec-file. 9 で大概うまくいくらしいのでそうする。 あとは分類器を作ってくれるのを待つ。 特徴量も Haar-Like だけじゃなくて、LBP と HOG が新たに使えるようになってる。 として出力される。 この他にステージごとの分類器も出力されている。 xml この作業は以下の環境で、プロセスの優先度を-20にして丸2日くらい掛かった。 06GHz• メモリ 16GB 顔を検出してみる 最後に、先ほど作った分類器を使って実際に顔を検出してみる。 OpenCVには用のラッパがついているし、とかあまり書きたくないのでを使った。 CascadeClassifier 'cascade. detectMultiScale im, 1. circle im, center, radius, cv. imwrite 'result. jpg', im という具合で、簡単に書けるので遊べる。 結果は、まあまあ改善した気がする。 おしまい。 記事中の画像は から拝借した shkh.

次の

OpenCVで顔認証を行いトリミングして保存する

カスケード 分類 器

「社内で自分の席にいる人が何人か把握できるようにしたいんだけど、定点Webカメラ使って何とかできない?」 何だか面白そう!先日新しくこんな仕事をいただいた、新米エンジニア小林です。 パッと思いついたのは 1.一定時間ごとにWebカメラで写真を撮影する 2.画像認識を使って、写真に写った、対象となっている人が自分の席にいるか判定する という単純な手法。 しかし、 画像認識ってどうやってやるの?……うーん、とりあえずやってみるか! というわけで、「とりあえず画像認識してみたい」という人に向けて、簡単な画像認識の方法を、実際に今回の仕事で行った順序に沿って紹介します。 目的を明確化する 何を、どのように画像認識するのか? 実際に画像認識を始める前に、改めて手短に目的を明確化しておきます。 まずは、「何を」。 定点Webカメラからの撮影範囲内に自分の席を持つ3人を対象に、自分の席にいる人が何人か判定を行います。 次に、「どのように」。 自分の席についている人が何人かという判定条件については、簡素化のため以下のような前提とします。 ・写真内に対象となっている3人以外は現れない ・必ず自分以外の席には座らない この前提の元、人の上半身を検出できれば自分の席にいると判定するようにします。 この条件にヒットする人が何人いるか数えることで本題を満たします。 また、Pythonというプログラム言語とOpenCVという画像認識ライブラリを用います。 今回は以下のような環境を構築しました。 ・Mac mini Late 2012 ・OS X El Capitan ver10. 5 ・Python3. 4 ・OpenCV3. 0 環境構築の方法についてはを参考に。 画像認識を行う どうすれば人の上半身を検出できるようになるか? 今回は、 ・プログラムに「『上半身』とはこういうものだ」と学習させる ・実際に、判定させたい画像をプログラムに投げて判定させる という順序で進めていきます。 始めに、プログラムに「『上半身』とはこういうものだ」と学習させます。 具体的には、「この写真は『上半身』の写真だ」「これは『上半身』の写真ではない」ということをプログラムに学習させることによって、「上半身」の写真の特徴量を抽出します。 抽出した特徴量をまとめたデータをカスケード分類器といいます。 最後に、判定させたい画像を、カスケード分類器のデータを読み込ませたプログラムに対して投げることで、プログラムが写真内に写っている上半身を検出します。 カスケード分類器を作成する どのようにカスケード分類器を作成するのか? 以下に手順を示します。 ・「上半身」の画像を集める ・「上半身」の画像のリストを作成する ・vecファイルをつくる ・「上半身」でない画像を集める ・「上半身」でない画像のリストを作成する ・カスケード分類器を作成する 「上半身」の画像を集める まず、プログラムに「『上半身』とはこういうものだ」と教えるために必要となる「上半身」の画像を集めます。 ここで注意事項があります。 それは 画面いっぱいに人の上半身が一つ写っている画像を探すこと です。 こうすることで、「上半身」の画像のリストを作成するの段階で大きく手間を省くことができます。 また、プログラムに学習させるにあたって、「上半身」の画像はできる限り多めに用意しましょう。 によると7000枚ぐらいあると良いです。 しかし、「そんなに大量の画像を集められない!」というそこのあなた。 そんな場合は以下の方法で枚数を増やすことができます。 ・データセットを配布しているサイトを探す ・持っている画像を反転、回転した画像を新たに生成する 「上半身」でない画像を集める 次にプログラムに「「これは『上半身』の写真ではない」と教えるために必要となる「上半身」でない画像を集めます。 この写真は「上半身」が写っていない画像であれば何でもOKです。 「上半身」でない画像もできる限り多めに用意しましょう。 によると3000枚ぐらいあると良いです。 「上半身」の画像のリストを作成する 画像収集が終了したら、次は集めた画像の一覧を作成します。 リストのフォーマットは以下のようになります。 これでしばらくするとカスケード分類器が完成します! 実験:自分の席にいる人が何人か数える 判定させたい画像を、カスケード分類器のデータを読み込ませたプログラムに対して投げてみます。 具体的には、まず下記のソースコードを. py形式で保存します。 cvtColor img, cv2. imwrite names[identifier], img i3DESIGN(アイスリーデザイン)は渋谷を本社、ウクライナを開発拠点に据えるIT企業です。 ITサービスのプロフェッショナルとして、お客様のビジネスにおけるデジタルトランスフォーメーションを支援します。 [ビジネスデザイン・UI・設計・プロジェクト管理・品質管理・運用]を一貫してご提供できることが、i3DESIGNの強みです。 お問い合わせ ご意見、ご要望からサービスについてのご質問など、お気軽にお尋ねください。 , Ltd. All rights reserved.

次の

OpenCV

カスケード 分類 器

カスケード分類器というものを使って入力した画像から顔を検出します。 カスケード分類器 カスケードとは、連続したもの、数珠繋ぎになったものを意味します。 カスケード分類器は、いくつかの特徴量をまとめた学習データです。 ここでの顔検出の流れは、• 入力画像の特徴を抽出• カスケード分類器よりその特徴にマッチする部分を探す となります。 また、カスケード分類器は以下の特徴のどれかを使って作成することができます。 Haar-Like特徴• LBP特徴• HOG特徴 これらの特徴の詳しい説明は省きます・・・ ではHaar-Like特徴とLBP特徴のカスケード分類器を標準で提供しています。 で顔検出 ここではHaar-Like特徴を用いた分類器を使用します。 detectMultiScale image, faces, 1. imageは入力画像 の行列• objectsは矩形を要素とするベクトル• scaleFactorは各画像スケールにおける縮小量• minNeighborsは検出される領域の候補となる矩形は最低でもこの数の近傍矩形を含む• png 第二引数ではカスケード特徴器を指定しています。 これを変えると顔検出ではなく目の検出などもできるようになります。 画像検出 まずはlenna できました。 次はの画像 凄い。 カスケード型分類器• で物体検出• HOG特徴の実装• 立大のhaar-like特徴量のpdf• 猿でもわかる顔検出の原理• detectMultiScaleについて hyottokoaloha.

次の