ドローン開発日記~第7回勉強会開催~
ブログから記事を見つけたい場合はこちら
こんにちは、開発メンバーのKです。
私は最近、個人的なお勉強としてSemantic Segmentation系の論文を読むようにしています。しかし、画像認識自体が初心者なので、わからない言葉はひたすらググりながらです。さらに、英語はまだ得意ではないので、論文1本読むのに映画数本分の時間を要しています。。。
さて、今回は勉強会として、SSDの学習をさせるための画像を準備しました。
以下、目次です。
1 用意した画像
学習画像は学習において、とっても大切です。様々なパターンの画像を用意しないと、過学習の要因となってしまうでしょう。そのため、なるべく似たような画像にならないようにしました。
今回やりたいことは、「人の顔を検知する」です。そのため、人の顔写真を用意しました。具体的には3人いる開発メンバーの顔写真です。各々が慣れない自撮りをして、色々な角度で、色々な表情で、背景もなるべく異なるように撮りました。
(このままでは自撮りが特技になるかも...)
とりあえず、画像の枚数は一人当たり20~30枚ほど、合計で60枚だけ用意しました。後で、この画像を加工したものも使って、学習画像を増やそうと考えています。
用意した画像をまとめると以下の通りです。
- 3人分の顔写真を用意(なるべく、角度、表情、背景が異なるように)
- 画像数: 64枚(学習用59枚、評価用5枚)
- 画像解像度: (2448x3264)、(1920x1080)、(1280x720)の3パターン
- カラー: すべてRGB
2 アノテーション
使用したアノテーションツールはVoTTです。
このツールで人の顔に検知枠を作りました。開発メンバー3人のうち、1人の顔をpositiveとしてlabelをつけ、その他2人の顔はnegativeとしてなにもつけないようにしました。
また、データセットはPascal VOCの形式で出力しました。
以下、簡易的ですが、アノテーション手順です。
※なお、以下では説明のために、いらすとやさんのお顔を使っています。
3 学習結果
学習の方法については、以下を参照してください
主な学習環境やパラメータは以下の通りです。
- GPU: Nvidia Quadro P2000
- モデル: SSD
- Epoch: 500
- Batch Size: 2
- Optimizer: MomentumSGD
- learning rate: 0.0001
- learning rate decay: 0.1
- learning rate decayのタイミング: 200、300、400
そして、学習の結果は、、、うまくいきませんでした。。。
四角の枠がまったくついてくれませんでした。。あらら。
うまくいかない原因は、おそらく用意した画像がすくなかったこと、positiveの数が少なかったことなどが考えられます。
また、パラメータもろくに考えていないのもいけないでしょう。
次回からは、ちゃんと検知できるように問題解決をしたいと思います!