私はFF14のためのアプリとして「言語を超える力」を作りました。(現在も開発途中ですが) どういうアプリかというと、「画像認識でFF14に出てくる文字を、現実世界に使われている文字に分類する」アプリです。
詳細は以前の記事を参照してください。
blog.gelehrte.com
このアプリは上記目的と同時に「FF14の文字を画像データとして保存し、画像認識のデータとしてタグ付けする」ツールともなっています。このおかげで、現在も画像認識用機械学習データを集めることができています。今回はこのアプリ「言語を超える力」を「任意の画像データを保存し、画像認識データとしてタグ付けする」ツールとして一般化し開発したいなと考えています。今回はその考察を書きたいと思います。
画像認識のデータとしてタグ付けするツールとは
そもそも画像認識のためのデータを集める方法とは
Web検索を利用する方法
機械学習のデータを集める方法として、Web検索を使う方法がよく使われます。例えば、以下のような記事でもWebから画像を取ってきています。ももクロの顔画像はWeb上にたくさんあるので、Web検索で良質なデータを取得することが可能だったのかと思います。
qiita.com
ただ、今回作成した「言語を超える力」で使用するための画像データはWeb検索で取得することが難しいデータを扱おうとしていました。(FF14の文字の画像データなんて、Web上にないので・・・・)
アプリとして画像タグ付けツール
私も最初このツールを使っていたというツールを紹介。思えばこのツールが今作っているツールのきっかけになっている気がします。
daiiz.hatenablog.com
このツールを使い、「言語を超える力」アプリの機械学習データの一部が作られています。便利ですね。
ではどのようなツールを作りたいか
機械学習をしたモデルを用いて、学習するデータを容易に集めやすいツールを目指す
「言語を超える力」アプリは以下のような手順で文字認識を行なっています。
- 内臓のカメラを使って、FF14の文字を写真に撮る。
- 画像をTensorFlowが動作しているサーバーに送る。
- サーバーから画像分類(文字分類)の結果を、候補4つまで返してもらう。
- 人手で、その4つの候補から正しいと思われる結果を選択する。
- 選択した結果は、再度サーバーに送られ、タグ付けされた画像としてサーバー内に保存する。また選択した結果をアプリで表示する。
という流れになっています。このアプリのメリットは、機械学習でタグ付け候補を絞り込み、容易にタグ付けしやすくしていることです。これを一般化できないかなと思っています。
一般化に向けての説明の前に補足。先ほどまでアプリという表現を使っていましたが、実際にはiPhoneやAndroidで動作するアプリ側と、アプリと通信しTensorFlowが動作するサーバー側に分かれています。昔、どういうイメージで作るかをラフ描きしたのを再掲します。
一般化するには:アプリ側
「言語を超える力」がFF14特化している部分は、画像認識の候補結果をアルファベットで表示しているところです。この候補結果の部分を削除すればかなり一般化できるのではないかなと思います。
一般化するには:サーバー側
現在、サーバーはAmazon EC2+Nginx+uWSGI+Flask+TensorFlowで動作しています。これはかなり一般的な内容となっています。これはDockerで構築できるようになるのではないかなと考えています。別にAmazon EC2を使用する必要はなく、イントラネット内での動作も可能なようにしたいと思っています。
終わりに
「言語を超える力」アプリ自体は一応動作しているので、一般化はさほど難しくはないと思っています。近いうちに形にできるのではないかなと考え中。ただ「言語を超える力」アプリ自身ももっと拡張したいので、同時開発になるのかな。
今回はここまで
それではー