Python版OpenCVでHoG特徴+SVM識別器(分類器・xmlファイル)を作成する方法をソースコード付きで解説します。
【画像分類】HoG特徴 + SVM識別器
HoG SVMは、物体検出に使われる識別器の1つです。
HoG SVMでは、HoG特徴量とSVM(サポートベクタマシン)を組み合わせて識別器を作成します。
前回は、画像(手書き数字画像)をリサイズのみしてそのまま学習させましたが、今回はHoG SVMで学習します。
動画解説
本ページの内容は以下動画でも解説しています。
前回記事
【Python/OpenCV】SVMで画像分類①(手書き数字編)
Pythonライブラリ「OpenCV」でSVM(サポートベクタマシン)を実装し、手書き数字画像から数字を判別します。
人検出などでは明暗差よりも輪郭情報を捉えたほうが検出精度が良いとされています。
そのため、人検出はHaar-like特徴よりもHoG特徴をよく使います。
画像処理ライブラリOpenCVにも実装されているので、今回はそちらを利用して識別器を作成してみます。
関連記事
HoG特徴量の原理・計算式
HoG特徴量の基本的な原理や仕組みについてまとめました。
404 NOT FOUND | Python入門速報
【サンプルコード】cv2.HOGDepreorで実装
サンプルプログラムのソースコードです。
Hog特徴量の計算をcv2.HOGDepreorで行います。
cv2.HOGDepreor
cv2.HOGDepreorでは、グレースケール画像のHog特徴を計算できます。
hog = cv2.HOGDepreor(win_size, block_size, block_stride, cell_size, nbins) hog.compute(img)
パラメータ | 説明 |
---|---|
win_size | 検出窓サイズ |
block_size | ブロックサイズ |
block_stride | ブロックの移動量(セルサイズの倍数にする) |
cell_size | セルサイズ |
nbins | 1セル毎のビン数 |
img | グレースケール画像(8bit) |
【サンプルコード】HoG特徴を自前で実装
サンプルプログラムのソースコードです。
【Python版OpenCV超入門】使い方とサンプルコードを解説
Python版OpenCVで画像処理プログラミングを行う方法を入門者向けにソースコード付きで解説するページです。
コメント
識別機を作成した後の使い方を教えて頂けないでしょうか。
宜しくお願い致します。
※k様
コメントありがとうございます。
作成した識別器の扱い方ですが、私も現在調査中でうまく行っていません。
申し訳ないのですが、分かり次第、追記したいと思います。
もしk様が使い方がわかれば教えてくださると嬉しいです。
返信ありがとうございます。
このサイトにはいつもお世話になっております。
機械学習を研究に使用しておりまして、現在勉強中です。
分かりましたらお知らせお知らせ致します。
ご丁寧にありがとうございました。
※k様
コメントありがとうございます。
こちらこそ、少しでもお役に立てるよう今後も機械学習について書いていく所存です。
尚、機械学習に関する内容は、下記ページにまとめていく予定です。
【機械学習入門】アルゴリズム&プログラミング
よろしくお願いします。
自作識別器の出力はどこに出力されるのですか?
※T様
コメントありがとうございます。
自作識別器(hog_train.xml)はPythonスクリプトと同じフォルダ内に出力されます。
出力されていない場合の対処法等わかりますか??
※T様
コメントありがとうございます。
エラーメッセージ等は出てないでしょうか。
出ていなければ、pos、negフォルダ内の学習用画像を読み込めていないかもしれません。
返信ありがとうございます。
こちらの手違いで読み込めていませんでした。
お手数かけました。
ありがとうございます。
※T様
コメントありがとうございます。
無事解決されたようで何よりです。
やかん、土鍋、マグカップ画像をWEBカメラに映して、リアルタイムで認識させる方法はどうすればいいのでしょうか。
以下記事を参考に、カスケード型識別機で検出している箇所を差し替えればいけるはずです。
後日、この記事にも追記したいと思います。
https://python.joho.info/programming/python/opencv-haar-cascade-face-detection-py/