今週はHOG特徴量の調査と並行に、魚を実際にHOG特徴量を用いてReal Adaboostを用いた機械学習を行いたい。
そして実際に魚検出の実装まで行い、その際の欠点、改善点を見出したい。
Real Adaboostは学部のときに使用したAdaboostの派生である。
Adaboostは弱識別気の出力を0か1にしていたがReal Adaboostは出力を特徴量の分布に応じて実数化(Real)する。
そうすることによってサンプルに対しどの程度の識別が可能であるかわかるようになり、少ない弱識別器で高精度な検出を行うことができる、といったアルゴリズムである。
5/18
論文を読んだ。Real Adaboostのプログラムを作成中。
明日のサリ大学の面接に向けて勉強。
5/19
サリ大の面接を受けた。
全然ダメだった。へこむ。進捗はない。
5/20
HOGについての論文を読む。
5/21
進捗はない。
5/22
Real Adaboostのプログラムを呼んだ。
5/23
進捗はない
英語の勉強をした。
5/24
TOEICを受けた。あまり勉強していなかったのでいい感触はもてなかった。悔しい。
今週はHOG特徴量について調べ、今月末までには実際に実装まで持っていきたい。
HOG特徴量について調べることと、それが魚識別についてどうアプローチできるか調べたい。
5/11
HOGについて論文を読んだ
5/12
進捗はありません
5/13
進捗はありません
5/14
HOGについて論文を読み、プログラムを組み始めた
5/15
論文を読んだ
5/16
HOGについて論文を読み、プログラムを組んだ。
魚の画像を3枚実装したが、思いのほか体表や輪郭など面白い部分に似たような特徴が出た。
この輪郭や体表に出ている特徴量ならAdaboostに通してもいい結果が出るのでは...
image1
image2
image3
5/17
進捗はありません
['日にち', 'HOG特徴量について調べる', 'HOG特徴量の実装と考察'],
['2015/5/11', 5, 0],
['2015/5/12', 5, 0],
['2015/5/13', 5, 5],
['2015/5/14', …
Continue Reading ››
今週はSURFとCascadeed FASTとORBの特徴量抽出プログラムの実装を試みる。
先週はSIFTの特徴量抽出を行った。
今週実装しようと思う3つの特徴量はどれもSIFTを基礎とした応用分野である。
また、AKAZEという特徴量抽出のプログラムも行いたかったが、OpenCV3.0.0-alphaを用いるために実装が容易ではない。
したがってAKAZEは実装せず、ほかの特徴量を用いて研究を進める。
4/20
SURFの特徴量抽出プログラムを実装してみた。
画像はSIFTのときと同様である。
SURFはSIFT特徴量の高速版といったもので、実際に同じ画像の特徴量抽出の処理速度を計測しても
SIFTは約4000ms,SURFは700msである。
今回はReleaseでのビルドでエラーが起きたためにDebugで処理速度を測ったが、その差は一目瞭然である。
SURFについてもっと調べたい。
4/21
Cascade FASTについて論文を読み、前処理であるFASTの特徴量抽出プログラムを実装した。
FAST特徴量では特徴点マッチングの実装が難しかったために、今回はどのような特徴を抽出したかだけを魚画像で実験した。
結果は以下のとおりである。
4/22
進捗はありません
4/23
ORB特徴量についての論文を読んだ。
どうやらORBは以前実装したFASTやSIFTを基礎としたアルゴリズムらしい。
4/24
ORBの特徴量を実装した。
これでFAST,SIFT,SURF,ORBの4つの特徴量抽出プログラムを実装できた。
SIFTとSURFは2つの画像から対応点を一致させるプログラムなので、FAST,ORBのように特徴点抽出のプログラムに書き直し、そこからこれらの特徴点の違いについて考えようと思う。
学部での研究ではHaar-Like特徴量を用いて魚種判別を行った。
しかし研究結果をみると魚種判別において必ずしもHaar-Like特徴が適しているとはいえない。
よりよい精度向上のために他の特徴量を用いてどのような特徴が得られるのか吟味したい。
そこで特徴量について調べたところFAST,AKAZE,ORB,SIFT,SURFの5つの特徴が魚種判別における特徴量としてふさわしいのではないかと考えた。
現在はこの5つの特徴量について論文を読み、詳しく調べている。
調べた上でこの中からより魚種判別にふさわしい特徴量を実装し、そこから新規性を生み出したい。
4/13
FASTについての論文を読んだ。
4/14
SIFTについての論文を読んだ
4/15
SIFTについて調べた。
4/16
SIFT特徴量はDoG(Difference of Gaussian)フィルタを用いて特徴点の検出とスケールの探索を同時に行う。そうすることで計算コストを抑えることができる。
DoGとはLoG(Laplacian-of-Gaussian)を近似したオペレーターである。式は以下
SIFTの特徴量抽出を実装してみた。
図のように対象物を動かしても特徴がきちんと対応していることがわかる。
SIFTは特定画像を用いた物体認識や、特徴点追跡のアプリケーションに多く用いられているので、魚検出のアルゴリズムを作る際に参考になりそうな特徴量の一つになりそうである。
4/17
SURFについて調べた。
向きを揃えることでの学習がエラー続きでなかなか終わりません。
学習が収束しないのは学習させる材料が悪いことが理由として考えられます。
今は魚の目だけに焦点を置いて学習させています。
1/6
魚の目だけを学習させています。
正解画像、非正解画像、どちらも1000枚です。
1/7
学習がなかなか終わらないので魚の目の正解画像の質が悪いのではないかと思い、
新しく目の正解画像を作っています。
vecファイルの中身を見てみました。
とりあえず画像は6枚あります。
Haar-like特徴では輝度値を基準にして学習を行います。
6枚の画像から見てわかるとおり、背景や魚の模様などで輝度値が異なることから
学習が収束せず、エラーが起きてしまうのではないかと思います。
魚の種類や模様、また、背景画像などを統一することによって精度を高めたいと思います。
今週は魚の向きを合わせたポジティブ画像での学習をしつつ
魚の顔だけに焦点を当てたポジティブ画像を作成し、精度の検証をしたいと思っています。
12/15
土日、停電にあっていたため学習が途中で止まっていた。
やり直し
12/16
やり直ししながらポジティブ画像を作成中
12/17
なにかしらのエラーが起き、学習が止まっていた。
顔に焦点を当てたポジティブ画像が完成したので、今度はこちらを試してみる。
機械学習のためには
opencv_haartraining と opencv_traincascade の二つのアプリケーションがあるが
処理速度が早く、精度がいいのは後者だと調べてわかった。
しかし、それと引き換えにエラーが多いのも後者らしい。
エラーで完成しませんでした。では話にならないので
次もエラーが出た場合には前者のアプリケーションで試してみようと思う。
前回の全体ゼミをふまえて、今後は次のような計画で進めていきたいと思います。
まず、今回の結果がどうして悪かったのか、原因を探るためにいくつかの検証をしてきたいと思っています。
・画像サイズが違うことによる精度の善し悪し
・向きを揃えることによる精度の善し悪し
・背景がないものとあるものに関しての制度の善し悪し
これらを検証することによって良い方法を見つけ出し、片山さん以上の精度のものを出す。
12/8 向きを揃えた正解画像を作成中
12/9 向きを揃えた1000枚の正解画像を作成し、学習中
12/10 エラーが発生してなかなか学習が完了しない。魚の顔を学習させるためのポジティブ画像を作成中
12/11 進捗なし
12/12 エラーが出ずに学習中、うまくいけば完了