日曜プログラミング

ゲーム好きの中の人が、自分が作りたいアプリを作る記録です

エオルゼア文字を求めて : (イベント)ゴールドソーサー・フェスティバル その2 : 自動文字区切り試作

今日は前回に引き続き、ゴールドソーサーでの文字探し、言語を超える力(Language Echo) で翻訳してみるというお話です。

gelehrtecrest.hatenablog.com

実は背景が混雑している時に問題がおきたというお話も含めて

背景が混雑しているとメモリ不足を起こす!

最近、いくつかのチャレンジをしています。

文字区切りを自動化できないか!

方法としては以下を行なっています。

  • 文字は基本縦長とし、mなどのある程度の横長の文字も考慮して、縦の長さ(h)が横の長さ(w)と比べてh
  • 文字区切りは、画像の濃淡による輪郭判定を厳しくする。淡い部分は文字がくっついた部分とする
  • 厳しくした輪郭判定では淡い部分は削除されるため、文字区切りが成功する・・・・はず

としています。

この方法を行う場合、ノイズ(文字ではない部分)の判定を行う必要があります。
ノイズは空白文字として扱うこととしています。

生じた問題:メモリ不足

要するにノイズが多すぎるのです

DAMN ! worker 1 (pid: 4046) died, killed by signal 9

こんな警告を出してエラー落ちします。

とりあえずの対応:手動判別の時の自動文字区切りの諦め

手動で文字判別するときは、人手で文字区切りができていると考えました。


今回テストした画像はこちら

f:id:gelehrtecrest:20170602120344p:plain


文字区切りはこの程度行います。元の画像に対して、白い線が入っていることがわかるでしょうか。
f:id:gelehrtecrest:20170602120505p:plain
Copyright (C) 2010 - 2017 SQUARE ENIX CO., LTD. All Rights Reserved.

これを濃淡にします。
f:id:gelehrtecrest:20170602120553p:plain
Copyright (C) 2010 - 2017 SQUARE ENIX CO., LTD. All Rights Reserved.

そりゃここまでくれば、文字はっきりわかるでしょというツッコミは・・・・・やめてねw

結果

正解は「Welcome」なのでだいぶん近くなってきたと思います。ノイズがまだ含まれている割には。


これからの予定

さてどうしようか悩んでいます。
自動判別時の自動文字区切りはあきらめたくありませんが、完ぺきを求めると難しそうです。
単純にサーバーのメモリを増やすという方法も考えられます。まぁ AWS の Lightesail使っている状態ですしね・・・・・・普通にEC2使えばいいのかなぁ

とりあえず考えられるのは

  • 文字区切りアルゴリズムを考える
  • TensorFlowにかける前に、明らかなノイズ文字を排除する
  • ループ関係で、メモリを節約する方法を考える
  • サーバーを強化する

というところでしょうか。

サーバー強化は最終手段ということで、引き続き開発を続けます。


スポンサーリンク