Tensorflowを用いて物体検出の実装を目指す-テンプレートマッチング

最近アルバイトのこともあって物体検出のことについて調べていました。
有名なところではRCNNに続きFast RCNNFaster RCNNYOLO、最近だとSSDというのが熱い感じ?

Faster RCNNSSDはすでにTensorflow版のがGithubで公開されてますが、自分で実装して見たいなと思った。
最終的にはSSDの実装を目指したいけどRCNNからYOLOまで芋づる式的に論文を読まないと実装は難しいとのこと。
まずはRCNNから実装を目指す。

道路標識を認識する学習モデルを作っていたので、画像から道路標識を検出する物体検出器を作る。
RCNNはできたけど、その前にOpenCVにはテンプレートマッチングなるものが用意されているらしいのでそれを使って道路標識っぽいものを探してその部分を切り取って画像認識にかける。という物体検出もどきを作ったのでそれを記事にする。

コードはここ

github.com

少し前の記事で道路標識のモデルを作った。

owatank.hatenablog.com

この道路標識のモデルは「止まれ」と「速度制限(10~80まで)」の2クラスだったが、今思えばかなりアホなことをしている。
出力層の活性化でSoftmaxを使用しているということは出力が確率になる。予測結果として出力の0.5以上の値を採用するとして、新しい入力として猫の画像を渡したら少なくとも出力結果は[0.5... ,0.5...]になるはず。これはいけない
猫の画像で「止まれ」と「制限速度」のそれっぽさが0.5以上になるってかなりおかしいはず。そもそも2クラス分類でSoftmax使うのがおかしいのは?

なので物体検出で使う画像認識のモデルは、「止まれ」、「速度制限10」、「速度制限20」、「速度制限30」の4クラス分類の学習モデルにしました。
次はRCNNの実装についてを記事にする。