LoginSignup
1
1

More than 5 years have passed since last update.

GoogleのAutoML Visionで「快盗戦隊ルパンレンジャーVS警察戦隊パトレンジャー」の登場人物を検出してみた

Posted at

非常に簡易的な操作で機械学習のモデルを生成できるGoogleの「AutoML Vision」を試してみました。

AutoML Vision
https://cloud.google.com/vision/automl/docs/?hl=ja

コンソールからポチポチと画像をアップロードして、ラベルを付けるだけで、あとは勝手に学習してくれるという素敵なシステムです。

猫を分類したり、魚を分類したり、二郎を分類したりするのが流行りだそうですが、娘が毎週見ている「快盗戦隊ルパンレンジャーVS警察戦隊パトレンジャー」の登場人物をAIで分類できたら「パパかっこいい!」となるのではないかということで、こちらにチャレンジしてみました。

かざすAI図鑑アプリ「LINNÉ LENS」リリース(特許出願中) 第一弾は約4,000種、日本の水族館にいる生き物の9割に対応
https://www.value-press.com/pressrelease/206311

ラーメン二郎とブランド品で AutoML Vision の認識性能を試す
https://cloudplatform-jp.googleblog.com/2018/03/automl-vision-in-action-from-ramen-to-branded-goods.html

画像収集

機械学習で一番大変なのは画像収集なのではないか? とやってみて分かりました。「AutoML Vision」では1ラベルにつき100枚以上、数百枚の画像を推奨しているようでしたが、100枚以下でも機能している事例を読みましたので、今回は1キャラクター50枚を目処にしました。

画像検索から拾ってくるのが定番のようですので、ヤフーとグーグルの画像検索からポチポチ拾っていきました。スクリプトを書いて自動化せよと怒られそうでしたが、「50枚くらいならいけるか・・・」という誘惑に負けました。

拾ってきた画像はサイズも形式もバラバラです。後処理で、複数の人物が同じ画像に収まっているものは、機械学習の妨げになるのではないかということで、トリミングを施しました。

ちなみに今回分類したのは以下の7名です。

登場人物
・夜野 魁利(やの かいり) / ルパンレッド
・宵町 透真(よいまち とおま) / ルパンブルー
・早見 初美花(はやみ うみか) / ルパンイエロー
・朝加 圭一郎(あさか けいいちろう) / パトレン1号
・陽川 咲也(ひかわ さくや) / パトレン2号
・明神 つかさ(みょうじん つかさ) / パトレン3号
・高尾ノエル(たかお のえる) / ルパンエックス / パトレンエックス

執事のおっさんも入れておけば良かった・・・。

それぞれ50枚ずつなので合わせて350枚の画像を用意しました。

AutoML Visionのセットアップ

Google Cloudのアカウントは持っている前提で、以下からプロジェクトを作成(既存のプロジェクトでも問題ないです)。

次に課金を有効に。

「AutoML Vision」のAPIを有効化します。

以上だったような、もう少し手続きがあったような・・・。

機械学習していくぞ

以下のURLから「AutoML Vision」のコンソールが開きます。

中に「Dataset」というものと「Model」というものが見れます。

・Dataset 画像ファイルにラベルを付けたものの集合体
・Model Datasetを機械学習にかけて学習させたもの

まずDatasetを作成し、それを機械学習させてModelを作ります。そのModelにプログラムなどから分類したい画像を渡して、その結果を取得します。

データセットを作る

以下のURLからデータセットを新規作成できます。

1.png

Dataset nameは好きな名前を付けてください。

画像のアップ方法はPCからJPG,PNG,ZIPでアップロードする、CSVを使ってアップロードするなどの方法があります。

Classification typeでは画像に複数のラベルを付けるか否か、という選択がありますが、現状では1画像には1枚のラベルというのが効果的だと書かれています。

画像のアップが終わったら、ラベルを付けていきます。

2.jpg

UIはGoogle Photoに似てますね。

左側に「Add Label」というリンクがあるので、ここから使いたいラベルを追加していきます。それから、画像をクリックして、それぞれの画像にラベルを付けます。ラベルはRESTなどで叩いた際の戻り値になってきますので、分かりやすいものを付けておいた方が良いです。

モデルを作る

データセットを用意したら、「TRAIN」というタブを開き「Train New Model」をクリックします。ウインドウが開くので、モデルに名前を付けて、「START TRAINING」をクリックすると学習が始まります。

今回は画像360枚、7つのラベルを設定して学習を行いました。所要時間は1時間程度だったと思います。完了したらEVALUATEのタブから結果を確認できます。

1.png

幾つかの指標があります。

・Precision(適合率) 正と判断したデータが、実際に正である割合
・Recall(再現率) 正であるデータが、正と判断された割合
・Score threshold(閾値)

PrecisionとRecallはいずれも高い割合の方がモデルの精度が高いことを示します。ただし、トレードオフの関係にあり、PrecisionとRecallがいずれも高い数値を出す、Score thresholdの数字を探る必要があります(スライダーを動かすだけで簡単にチェックできます)。コンソールやAPIからアクセスする際にも、閾値を設定することになりますので、ここでちゃんとチェックしておきましょう。

4.png

ちなみにこちらはラベル毎の結果。上手くいけば、左上から右下に、斜めに適合率の高い青い数字が出てくるはずです。この結果からはルパンブルーとルパンレッドはなかなか難しかったということが分かります。

コンソールで結果を楽しんでみる

モデルが完成したら「PREDICT」のタブから、簡単に機械学習の結果をチェックできます。

2.png

こちらの「UPLOAD IMAGES」のボタンを押すと画像選択画面になり、アップロードした画像を、先程作成したモデルで分類して結果を教えてくれます。

3.png

検知したラベルと、その精度を返してくれます。

Pythonのコードも例示されていて、もちろんAPIから叩くこともできます。こちらの方法は追って紹介したいと思います。

やってみて分かったこと

簡単すぎてびっくり

ほぼ機械学習デビューで、AutoMLデビューだったのですが、簡単すぎてびっくりしました。コンソールを使って画像をぽちぽちアップして、コンソールから結果を確認する、これだけであればノンプログラマーでも支障なく出来そうです。(その後、Pythonから結果を取得するのはなかなか苦労がありましたが・・・)

データセット大事

みんなが言うことですがデータ作りがとても大事で、これで精度が大いに変わります。

今回一番の反省点は、ヒーローの変身前と変身後のデータをごっちゃにしてしまったこと。今回はデータ量が少なかったですし、「快盗戦隊ルパンレンジャーVS警察戦隊パトレンジャー」は色が似通ってたりするので、見分けるのは難しいようでした。出来上がったモデルでも、変身前は大方判別できましたが、変身後はかなり間違える・・・という状態です。次回やるなら、変身前、変身後で計14ラベルでやるべきかなと思いました。

この辺のデータ作り、ラベル作りのノウハウはそれなりにありそうですね。

とにかくトライ

「百聞は一見に如かず」という言葉がありますが、実地で試してみると分かることが多いよね、と思いました。言葉や用語からして機械学習は難しそうというイメージを持っていた自分ですが、試して、体験しながら、言葉の意味も多少は理解できたように思います。具体的なユースケースがあまり思い付けてないのですが、触ったところで、多少なりともアイデアも出てきました。

あと楽しんでやれるテーマが必要だなあと。二郎を分類した人はきっと楽しかっただろうし、自分も「子供に凄い!」と言われたいというのが多少モチベーションになってデータ作りもできたので、ここって大事だよなあと改めて思いました。

では。

快盗戦隊ルパンレンジャーVS警察戦隊パトレンジャー
http://www.tv-asahi.co.jp/lvsp/

1
1
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
1
1