以前の記事はこちら
FF14のスクリーンショットからエオルゼア文字を英数字にクラス分けさせるため、TensorFlow+「Object Detection API」と「Object Detection Tools」を使っています。その設定のお話です。
現在の結果
コレぐらい判定できるようになりました
入力
出力
どこを修正したのか
FF14のスクリーンショットとエオルゼア文字のサイズの問題
スクリーンショットは人によると思いますが、1920x1280で保存している人が多いと思います。またエオルゼア文字自体は小さく100x100ぐらいがせいぜいの大きさ。なので学習画像データも大きなデータを入れる必要があり、判定するときも画像サイズを大きめで入力・判定するようにしました。
efficientdet_d0_coco17_tpu-32.config
以下の部分を
image_resizer { keep_aspect_ratio_resizer { min_dimension: 512 max_dimension: 512 pad_to_max_dimension: true } }
以下のように修正
image_resizer { keep_aspect_ratio_resizer { min_dimension: 500 max_dimension: 1024 pad_to_max_dimension: true } }
本当はもっとでかいサイズにしたいのですが、私のPCのメモリ・グラボのメモリが追いつきませんでした。
object_detection_tf2_image2image.py
このファイルは以前、「Object Detection Tools」内のファイルobject_detection_tf2.pyを静止画用に修正したファイルです。詳しくはこちらを。
blog.gelehrte.com
このファイルの
img_bgr = cv2.resize(img, (300, 300))
を
width = 1920 h, w = img.shape[:2] height = round(h * (width / w)) img_bgr = cv2.resize(img, (width, height))
サイズ比率固定で、拡大目に入力サイズを変えるようにしました。
学習回数
10000を12000ぐらいにしました。それぐらいがちょうど良さそうです。12000超えても学習スコアが上がらなくなり発散しやすくなったからです。
今後の予定
Web版を作る
その話は前回の記事で話したので、そっちを参照
blog.gelehrte.com
設定を常に見直す
今回の復習として、実際に「言語を超える力」で「入力はなにか」と「判定したいものは何か」というのを重視した方が良いことがわかりました。これからも特に、「efficientdet_d0_coco17_tpu-32.config」の中を見直し、設定を考え直したいと思います。
「言語を超える力でこのSS読んで」ハッシュタグで、みんなが入力したいスクショを送ってもらう。
私だけではなく、多くの人にとってどんな入力を入れたくなるかを教えてもらう必要があることがわかりました。ハッシュタグ「言語を超える力でこのSS読んで」で、広く募集する必要がありますね。
今回はここまで、それでは。