LoginSignup
38
24

More than 3 years have passed since last update.

【Tensorflow】Object DetectionでDeep写輪眼

Last updated at Posted at 2019-08-19

はじめに

夏休みの自由研究でObject Detectionを使用して、Deep写輪眼を作成しました。
と言っても、単純にObjecet Detection APIをファインチューニングしただけですが。
※特別な実装はしていないため、ソースコードは本記事に出てきません。


一つ目の動画で「午」の印忘れてる。。。

利用ツール

数か月前までは、Tensorflowの生「Object Detection API」を苦労しながら触っていたのですが、最近はからあげさんの「Object Detection Tools」が楽ちんなので良く利用しています。

karaage0703/object_detection_tools
Object detection useful tools for TensorFlow Object Detection API - karaage0703/object_detection_tools

詳しい使用方法は以下を参照お願いします。
TensorFlowの「Object Detection API」で物体検出の自前データを学習する方法

データ準備

 子・丑・寅・卯・辰・巳・午・未・申・酉・戌・亥の12パターンに対し、200枚(実写180枚、アニメ20枚)ずつぐらいアノテーションして学習データを用意しました。

 はじめはアニメ画像だけで頑張ってたのですが、さすがに少なすぎて性能出ず、、、

ちなみに、以下のグー・パー・指さしは1000枚ずつアノテーションしているため(一般的には1000枚くらい必要とか良く言われますし)、単純に200枚はデータが足りない感が強いです(まぎらわしい印もちょいちょいありますし、、、

データ拡張

 上述の通り、学習データ数は少なかったのですが、ある程度の汎化性能は持って欲しかったので、以下のデータ拡張オプションを使用しました。
  random_horizontal_flip:左右反転
   ※上下反転をすると「巳」と「亥」を混同しそうだったためvertical_flipは未指定
  random_adjust_brightness:明度変更
  random_adjust_contrast:コントラスト変更
  random_adjust_hue:色相変更
  random_adjust_saturation:彩度変更
  random_distort_color:明度、コントラスト、色相、彩度の変更をランダムに適用
  random_black_patches:黒点付与
  random_crop_image:画像切り抜き
  random_absolute_pad_image:パディング付与

 最初は欲張って、以下も適用していたのですが、mAPとLossが上下を繰り返して、全く収束しなかったので外しました(ちなみに、グー・パー・指さしの場合は全適用して学習が出来ていました
  random_rotation90:90度回転
  random_rgb_to_gray:グレースケール化
  random_jitter_boxes:バウンディングボックス座標ズラし
  random_self_concat_image:自身の画像を並べる

おわりに

 やっていることはObject Detection APIを用いてデータ用意して、ファインチューニングしただけなので、正直exampleに毛が生えた程度ですが、データセットを色々変えてやってみるだけでも気付きが多かったです。
やる前はそもそも印の識別なんて出来るのか半信半疑でしたが、意外と出来ましたし🐤
Twitterに投げたら色々な方からアドバイス貰えましたし🐤🐤

38
24
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
24