桃山検出器を作ってみた!
この記事は #プリッカソン Advent Calendar 2019 の3日目の記事です。
「プリッカソン」って何?って人は一日目の記事を見てください。
お前の記事タイトル、すっげーフリーダムだったぜ!
はじめに
皆さんもある日突然「特に理由はないけど桃山を見つけたい…」という衝動に駆られた経験があるかと思います。私もです。
手動で見るけるのも趣があってよいと思いますが、やはり時間は有限なのでできれば自動でやってほしいですよね?
せっかくのAdvent Calendarの時期なので、むかしむかし個人的に遊んでみたけどTwitterでちょっと画像を載せた程度で放置されている桃山検出器を紹介したいと思います。
Custom Vision
さて、検出器を作ってみた…というとなんだか難しそうな雰囲気が漂いますが、最近はとても便利な世の中になったので非常に簡単に桃山を検出することができます。
今回はMicrosoft AzureのCustom Vision(Object Detection)を使って桃山の検出がどの程度できるかを実験してみたいとおもいます。
Custom VisionのObject Detectionでは以下の手順だけで物体検出が行えるえもい機械学習サービスです。
1.画像をアップロードする
2.検出したい物体(ここでは桃山)の範囲を選択する
3.範囲ごとにラベルを付けてデータセットを作る
4.学習させてモデルを作成
5.モデルを使用して物体認識
コードを一切書かずにデータセットの用意→学習→結果のテストを行えるので、ちょっと遊んでみようかなレベルの気楽さで物体検出ができるのが超えもいです。
教師画像を追加してみた
前述のとおり、Object Detectionには教師データが必要です。今回教師データとして突っ込んだ画像は部分的ですが以下の通りです。アニメの作画、CG、プロモーション用など雑多に突っ込んでいます。
桃山検出器なのになぜ他のキャラクターが入っているかというと…実は実験中に桃山だけをデータセットに突っ込んだところ人間をすべて桃山と認識してしまい全人類が桃山になってしまう現象が起こってしまいました。
桃山である or 桃山でないで分けるのもアリといえばアリなのですが、せっかく名前のあるキャラクターなので他キャラクターもデータセットに入れることにしました。
ラベルを付けてみた
画像をアップロード後、認識したい物体の範囲とラベルを指定します。一枚の画像から複数の領域を指定できます。
指定はこんな感じにブラウザのみで簡単に行えます。自分で任意の領域を指定することもできますが顔や人の付近にマウスを近づけると自動的に領域を設定してくれるので微調整程度ですむのが便利。
CG山の顔が良い…
カフェ用描き下ろしも突っ込んじゃう
ノイズになりそうだけどリアル桃山も入れておこう…
ラベルを付けてみた(Suggested object)
すでに学習済みのモデルがある場合には「Suggested object」をOnにすることで、モデルに基づいた検出結果から自動的に範囲指定とタグを付けてくれます。
Suggestが間違っていたら修正してデータセットに加えましょう。下の画像ではかなりSuggestが仕事をしています。
トレーニングやってみた
ある程度データが集まったら学習をさせるターンです。
今回登録したデータ数は以下のとおりです。虹ノ咲さんは桃山検出器で遊んでいた当時は画像が少なすぎて無理でした。
狙ったわけではありませんが桃山のデータが多くなりました。主人公なので画面に映りやすく必然的にデータが多くなりました。各キャラでデータ数が偏っているので「パフォーマンスに影響する可能性がある」旨の警告が出ていますが、ひとまず無視して進めます。
さて、肝心の学習ですがなんとメニューの「Train」ボタンを押すだけでできてしまいます。自動でモデルを作成してパフォーマンスも表示してくれます。
テストしてみた
学習したモデルを使用して簡単にテストしてみましょう。データセットに含まれない未知の画像を入力したほうが面白いのでプリチャン最新話付近の画像をいくつか入力してみましょう。
モデルのテストはメニューの「Quick Test」からウィンドウを開けばすぐに出来ます。画像のURLとローカルファイルのどちらにも対応しているので便利ですね。
ではさっそく…最新話「カンペキ! わたくしのジュエルコーデ獲得計画ですわ! だもん!」の画像からモデルの検出結果を見てみましょう。
後ろを向いているのでえもちゃんは厳しかった様子
ガンギマリしてても金森まりあ
服装が違っても大丈夫。見切れりんかちゃんもりんかちゃん判定。
座ってても大丈夫(萌黄…)。虹ノ咲さんはまりあになってた。
CGでも赤城あんな
再トレーニングやってみた
Custom Visionはテストした画像を使ってデータセットを強化することができます。正解はそのまま、未検出や誤検出は修正してデータセットに加えてしまいましょう。このように「データ追加→学習→テスト」のサイクルを繰り返してモデルを強化していきます。
ちなみに、今回検出に使用したモデルは5回トレーニングを行っています。「Quick Test」の画像をよく見るとiterationのドロップダウンが「iteration 5」と表示されています。
すずが桃山判定だったので修正
検出されなかった後ろ姿のえもを追加。後ろ姿のデータが増えればそのうち検出されるようになるはず。
桃山を多めにテストしてみた
桃山検出器と銘打ったのに最新回があんなメイン回で桃山成分が少ないので最新話に近いあたりから見繕います。(こういう事をしているから桃山のデータの数が増えていく)
まりあの特徴がパジャマで消えているので厳し目
パジャマ山でもOK
検出できなかった3人はデータ不足か
ツルピカ☆キラッツでも大丈夫なんだ…(萌黄…)
ルミナスプラネットコーデのデータはないけど検出できるみたい
ポーズを決めてる山
おわりに
お手軽簡単にキャラクター検出ができるかも!というお話でした。自分のデータセットを作って桃山を発見してみてください。
今回はテストだけでしたがCustom Visionで作成したモデルにはEndpointからもアクセスできたり、モデル自体をダウンロードしてローカルで使用できたりするのでアイデア次第で色んなサービスにも利用できるはずです。
では、良い桃山ライフを。
この記事が気に入ったらサポートをしてみませんか?