頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


機械学習(TensorFlow)で位置計測っぽいことをやってみた

データセットの元画像

↑ランダムな位置にランダム径の円を描いた64x64サイズのグレースケール画像とそのデータを持つデータセットを作成(訓練用10,000、評価用1,000枚)。


NNの構成はTensorFlowのチュートリアルにあるcifar-10と同じような感じ。各層を順に書くと
畳み込み
プーリング
LRN
畳み込み
LRN
プーリング
全結合
ドロップアウト
全結合
出力
という具合。今回のはカラーじゃないとか、出力層は半径、x座標、y座標の3個しかなかったり、といった違いはある。
損失関数は単になんのひねりもないけど各値の差の絶対値の和。

学習の推移1

↑約1時間半くらいかけて15エポック(3,000step)回した。

予測の結果1

↑いくつかの評価用元画像から予測した円を赤線で描いてる。うーん、、、精度が微妙。

学習の推移2

↑えーい、とさらに30エポック。TensorBoardが続きに書いてくれないのは損失関数のところnameを付加したからかな?

予測の結果2

↑まあちょっとはマシになったかも?
顔を見分けるというのを試した時の精度がすごく良かったので、今回の結果は精度的には残念な感じはする。
NNの構成とかハイパーパラメータいじったりで改善の余地は色々あるんでしょう、多分。
これ以上やんないけど。

とりあえず、MNISTやCifar-10みたいに正解のクラスを1つ選ぶとかじゃなくて、出力層で正解の値を得るように学習する、ということができそうということはわかった。

<< 3Dのボーン付き人体モデルをSceneKitで使う  TopPage  Apple RenewプログラムでiPadにさよなら >>

コメント

こんにちは

こんにちは

出力層で正解の値を取得できないかとネットで探していたら
こちらのページにたどり着きました。

こちらの記事、とても参考になりました。
もしよろしかったら、こちらのコードを公開していただけないでしょうか。
(恐らく、同様のケースを探している方は多いかと、、)

ご検討のほどよろしくお願いします。

2017.05.01   たかふみ   編集


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/1055-39382b05




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad