[Python] OpenCVを使ってカスケード分類器を自作してみた

今回は、ピカチュウの画像を認識するための、カスケード分類器を作成しました

以下の画像の手前のピカチュウを認識させます。

開発環境

  • mac OS High Sierra バージョン 10.13.4
  • Python 3.6.4
  • OpenCV 3.4.10

 

カスケード分類器とは

特徴量データが記載されているデータファイルのこと

実際にやってみる

画像切り出す

 

以下のピカチュウの顔画像を、正解画像として学習させます。

 

OpenCVをbrewで入れる

基本的に、opencv_traincascade を使います。opencv_traincascadeを打つと、オプションが出る。
 

ディレクトリを作成する

  • pos(正解画像を保存するフォルダ)
  • vec(正解画像ベクトルファイル用フォルダ)
  • neg(不正解画像を保存するフォルダ)
  • cascade
  • cascade/trained_data (分類器用フォルダ)

 

画像配置

  • pos/の中に、正解画像(以下、ポジティブ画像)を入れる
  • neg/の中に、不正解画像(ネガティブ画像)を入れる
ネガティブ画像は、ピカチュウ以外ならどんな画像でもいいらしいです。

bing APIを叩いて、適当に100枚くらいネガティブ画像を集めてきました。

[Python] Bing APIを使って、画像を取得してみた

2018.06.10

ベクトルデータを作る

一枚の画像からベクトルデータを作成します。

opencv_traincascadeコマンドを使うと、一枚の画像を変形させて 数千枚以上のベクトルデータを作成することができます。

今回は、50枚の画像からベクトルデータを作ります。

 

ネガティブ画像のリストを1つのファイルにまとめる

 

こうなります

 

実際に分類器を作成する

すると、

cascate.xmlが作成されます。それがカスケード分類器になります。

ピカチュウ認識させてみる

 

元画像を認識させると、正常に認識しました。

まとめ

今回は、画像を少なくしたので、他の画像のピカチュウの顔を認識できるまで学習できなかったです。

次は、より精度のいいカスケード分類器を作っていきたいと思います。

 

4 件のコメント

  • コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    CAPTCHA