blog家電メーカーで働いているmeideruのブログです。技術系・ガジェット系の話を書いています。SVMで物体検出をやってみました。結論から言うと、初めてにしては、まぁまぁな検出精度だなと思いました笑。今日は、ここまでのまとめを書きたいと思います。物体検出はオブジェクト検出とも呼ばれていて、多くの人はそちらの呼び名を使用しているかもしれません。物体検出とは、画像内に写っているものから特定の物体を検出することです。以下の画像を見れば、一発で理解できると思います。@物体検出これが物体検出です。多くの手法が存在しますが、どれでも根本的にやることは同じです。画像内から領域を抽出して画像認識させ、一致する箇所を枠で囲うだけです。Searchやスライディングウィンドウなどがあります。アルゴリズムの詳細については、この場で解説しませんので、興味のある方は調べてみてください。Gradients)とは、特徴ベクトルの一種です。輝度の勾配をヒストグラム化したものです。Machine)とは、分類アルゴリズムの一種です。分類アルゴリズムの中では、最も強力なものの一つと言われています。こちらも、アルゴリズムの詳細については、この場で解説しませ。興味のある方は調べてみてください。HOGとSVMで画像検出をやってみた何を検出するのか横向きの自動車を検出します。@学習データなぜ、それをやろうと思ったのかと言うと、学習データがあったからです。物体検出としては良い題材だと思います。学習データは、以下のURLから無料でダウンロードできます。data)を学習させます。すべての学習データからHOG特徴量を計算して、SVMで学習させます。このとき、HOGはscikit-image、SVMはscikit-learnというライブラリを用います。以下が学習部分のコードです。リファクタリングしていないので汚いです。modelPath)ポイントはSVMの学習にグリッドサーチを使用している点です。これを用いると、色々なハイパラメータを組み合わせて最適なモデルを作成することができます。学習データに対して、クロスバリデーションで平均精度99.8%まで到達できました。検出方法(予測方法)学習したモデルを活かして、物体を検出させる方法について書きます。候補領域の抽出には、スライディングウィンドウを採用しました。Suppression(以下NMSと略す)で領域をまとめています。このアルゴリズムは過去に記事を書きましたので、そちらをご覧ください。Suppressionのアルゴリズムhttp://meideru.com/archives/3538最近は機械学習にのめり込んでいます。ディープラーニングを用いた画像認識の勉強しています。これまでに手書き文字(MNIST)の認識や、一般物体認識(CIFAR-10)に挑戦しました。(CIFAR-10の記事は準備中です。今挑戦しているのは物体検出...結果まずは成功例から示します。@成功例(NMS前)@成功例(NMS後)上手く検出できていますね!NMSをかけると完璧です。次に、失敗例を示します。その2(NMS後)余計な場所が検出されていますね。上手く検出できていません。これは何故なのでしょうか?考察します。上手く検出できない理由は、考えてみると、とても簡単なことでした。分類器は、99.8%の精度だと言いました。これはすごい精度ですが、言い返せば1000枚に2枚は認識に失敗するということです。今回、スライディングウィンドウで抽出している候補領域の数はおよそ1200個でした。いうことは、必然的に失敗する箇所が出てくるのです。調べて見た結果、画像検出ではAdaBoostという手法が存在するようです。AdaBoostは、1つ1つの精度はあまり良くない識別器を複数つなげることで、全体として精度の良い識別器を構成する手法です。HOG+SVMの他にも識別器を作って、それを繋げるということになります。こちらにわかりやすい説明が書いてありました。感想SVMの学習が思ったよりも速くてビックリしましたΣ(・□・;)これまでは中心に勉強してきたディープラーニングは学習にとてもとても時間がかかります。コメントをキャンセルコメント名前PREV自然言語処理を勉強しよう!NEXT人工知能のプロ野球の予想順位が外れすぎててワロタRSSプロフィール新卒2年目の社会人。blog家電メーカーで働いているmeideruのブログです。技術系・ガジェット系の話を書いています。