東大松尾研のDeep Learning基礎講座でチームが優秀賞を受賞しました

東京大学 松尾研究室主催のDeep Learning基礎講座(2018)でチームが口頭発表の優秀賞を受賞しました。(最優秀賞は別チームの方々)

f:id:maeharin:20190331143958j:plain

発表タイトルは 「Deep Learningによる一般物体認識を活用した 硬貨カウントの試み」

硬貨を撮影するとその総額をカウントしてくれるアプリをチーム(6名)で作りました

利用シーンは、

  • 知らない国の硬貨を手早くカウント
  • イベントや文化祭時の集計
  • 寺、神社のお賽銭カウント(メンバーの実家がお寺だった)

などを想定しました

デモ(iphoneアプリ)はこんな感じです

www.youtube.com

  • 対象はいったん日本円の硬貨(1円、5円、10円、50円、100円、500円)に限定
  • データセットが無かったので自前で約1,000枚分の画像を撮影・アノテーションアノテーションツールはVoTTを使用)
  • データオーギュメンテーションで4,000枚程度に水増し
  • モデルはYOLOv3を利用(darknet実装)
  • google colabやメンバーのGPUマシンを用いて学習
  • precisionとrecallのF値で学習結果を評価
  • 学習したモデル(yolov3のモデル)をcoremlのモデルに変換してiphoneアプリに組み込み(Non-Maximum Suppressionはiphoneアプリ側で行う)

のようにして作りました。撮影の状況にによって大きく精度が悪化したり、硬貨が重なってる時どうするのか、一画面に収まりきらない場合にどうするのか、光の強さにどう対応するか、など課題は多くあるものの、デモの完成までもっていけました

日本円をアノテーションしたフリーの学習データは見あたらなかったので、全員で手分けして作成しました。(ひたすら画像にバウンディングボックスをアノテーションしていく作業は心が折れそうになりましたが、作業時間の感覚が掴めたのは良い収穫)

f:id:maeharin:20190331121403j:plain

その後の各フェーズ(データ水増し、GPU環境の調達、モデルトレーニング、学習結果の評価、アプリ作成、資料作成など)はメンバーで分担。チーム決定から発表までは約2ヶ月で学生1名・社会人5名というメンバー構成。オンラインMTGがメインでしたが、自発性の高いメンバーにめぐまれたいいチームでした。

私は主にデモアプリ作成を担当。最初webカメラで作ってたのですが、スマホでさくっと動いたら便利だなと思い、iphoneアプリに作り変えました。(yolov2とv3で出力形式が異なったりしてかなり苦戦しました。。)

Deep Learning基礎講座 は講義とプロジェクト合わせて約半年間。講義期間は毎週プログラミングの宿題が出るハードな講義でしたが、松尾研の方々の貴重な講義が聞け、GPU環境が使え、切磋琢磨する受講生の方々と毎週コンペ形式の宿題に挑戦できるという環境は控えめにいって最高でした。

(前半の方の講義で講師の方から「今回が山場です、頑張ってください」と励ましの言葉があり一旦安堵したものの、numpyでシンプルなネットワークをスクラッチで実装する宿題から、CNN、RNN、VAE、GAN、強化学習と山が高くなっていき「いつになったら山場が終わるのかw」と思ったのはいい思い出)

大変貴重な機会を提供してくださった東京大学 松尾研究室のみなさまには本当に感謝です。これからもディープラーニングやっていきです