みなさんGWはどうでしたか?
私はプログラミングしてました。
妻には「どこか連れて行きなさいよ」と怒られながらプログラミングしていました。
ということで、エオルゼア翻訳のお話です。経緯は過去の記事を見ていただけると嬉しいです。
gelehrtecrest.hatenablog.com
今日の記事は、現状の進捗報告です。
まず最初に。
実はすでにWeb上でアプリ公開されているのです。
ただし、あまりにも正答率が低すぎるので、まだURLは秘密とさせてください。
正答率の低さについての言い訳と、今後の対策についてもお話しします。
1.フォントを学習データに
学習データの確保のために、フォントを画像にしました。
gelehrtecrest.hatenablog.com
2. スクリーンショットから画像データを収集し、学習データを増やす
以下のURLのツールを使いました。
daiiz.hatenablog.com
このツールはスクリーンショットから正方形に成型した画像データをjson型で出力してくれます。
そのツールを基に、json型からjpg画像ファイルに変換するツールは、自分で作りました。
このツールについては後日記事にしたいと思います。
3. TensorFlowを使って学習、評価するアプリを作る
ここの記事を参考にしました。
qiita.com
ソースコードも真似させていただきました。ただし、tensorflowのバージョンに違いがあって、いくつか修正が必要でした。
4. python3 + Flask + uWSGI + nginx を作る
以下の記事を参考にしました。
これはそのままですね。
5. 入力された画像をクリッピングし、判定したい文字だけを切り出す
今回はJcropを採用しました。スマホでも動作するはずです。
6. マスク処理をする
切り出した文字は、色次第で判定できない場合があるので、白黒変換するツールを作りました。
これはひと手間かかるため、アディショナルな機能としています。
ここの内容については後日記事にしたいと思います。
7. OpenCVを使って文字区切りをする
ここを参考にして、輪郭判定を行いました。
qiita.com
8. tensorflowとFlaskを繋げる
まぁ繋げて、動作確認しただけです。
9. AWS上に環境を整える
今回はAWS Lightsailを採用しました。
最近追加された機能ですね。
東京リージョンではないため、sshが重いことを除けば、結構使い勝手いいかと思います。
Amazon Lightsail – AWSの力、VPSの簡単さ | Amazon Web Services ブログ
ここまでやりました。
以下はToDoです。
1. 精度アップ
上述の通り、精度が悪いです。
どれくらい悪いかというと、正答率40%ぐらいです。
対応策としては
- 学習データを増やす
- 学習ループを増やす
- 学習クラスを減らす(例えば今は a と A は別クラスにしているのですが、同じクラスにする・・・・やりたくないけど)
2. マスク処理の修正
まだバグがあるので、修正が必要です
3. uWSGIのサービス化
うまくサービス化できなかったので、もう少し調べてサービス化させたいです。
こんなところでしょうか。
早めに公開できるようにしたいですねー