機械学習おはようございます、機械学習エンジニアのハヤシです。本稿では現在テスト中の配信中の映像からゲームを自動で設定する機能についてご紹介します。背景Mirrativには「マイアプリ」や「おすすめ」といったタブがあり、そのタブにいろいろな配信が表示されています。視聴者さんはこれらのタブから自分の見たい配信をタップして、視聴を開始します。配信者さん向けの機能として「現在遊んでいるアプリを設定する」という機能があります。配信開始時や配信中にアプリ名を選択し、「いまこのゲームの配信をしているよ」と表明する機能です。(以下「アプリ設定をする」と表現します)「マイアプリ」や「おすすめ」にどの配信が表示するか判断するロジックに、このアプリ設定の情報を使用しています。アプリ設定がされている配信は、上記のタブで紹介される確率が高まり、視聴者さんが来やすくなり、コメントも付きやすくなります。一方でアプリ設定をしていない配信者さんはアプリ設定をしている配信者さんより配信への入室率や1回以上コメントが送られる割合が下がる傾向にあります。それゆえ配信を続けるモチベーションを保つのが難しく、次回以降の配信の継続率が下がってしまう事象が観測されていました。コメントがない配信、喋る内容がわからなくなりがちです。向上させたいと思いました。配信プラットフォームであると共にSNSです。プラットフォーム上で配信を通じたコミュニケーションを通じてわかりあってもらうことを願っております。ゆえに、配信を続けてもらえる配信者さんを少しでも増やすことを目的として当機能を開発することにしました。プロセスから実際にフォアグラウンドで動いているアプリ情報を取得するのは非常に難しいです。配信のキャプチャ画像をクラス分類することである程度の精度が出せそうなため、機械学習による配信中のゲームの自動推定機能を開発するに至りました。解く以上アプリ推定の精度が100%になることはまずありえません。いう通知ダイアログを出してユーザーに選ばせる仕様で想定していました。ところで、ゲームの内容とは無関係の通知ダイアログが出てきたとしてタップしますか?少なくとも僕はしません。配信者さんから見て自動でアプリが設定されることにネガティブな感情を持つことはほぼ無い上、仮にアプリ設定が間違ったとしても重大な問題につながる可能性は非常に低いと判断したため、アプリ未設定の場合はメッセージを出した上で自動で設定することにしました。推定結果を画像つきで投稿するプロトタイプのbotを*1作りました。ユーザーが設定したアプリと推定したアプリが違うとき投稿されるチャンネル沸き立つ社内slack現状のモデルで精度十分でしたが、1枚あたりの推定処理が遅いという課題を抱えていました。パフォーマンス要件アプリ未設定の配信者さんに対し可能な限り早く正確な推定をしたいため、現在放送されている全配信の画面キャプチャを1分ごとに画像認識モデルに通すスケジュールバッチを実装することにしました。この段階でバッチ処理の単位時間と処理件数が算出できたため、あとは実際に運用するインフラの選定に移れます。インスタンスを利用しています。インスタンスと比較して利用料金が非常に高価である上リソース監視にGPUも入れる必要があります。インスタンスの並列処理で対応可能と判断しました。ベースにしたモデルだと精度・処理速度ともにパフォーマンス要件を満たせる可能性が高いと判断しました。閾値を高めにすることでアプリ設定の正答率を担保するようにしています。モデルと比較してみました。エモモの画像を学習させていなかったため、ゲームとして誤認識してしまう事象が散見されました。エモモをゲームと認識してしまうミス、かわいいけどこれではだめ、かわいいけど。分類するモデルを作り、自動設定の対象外としました。その他クラスと認識されるエモモ、これは正しい。secパフォーマンスをほぼ犠牲にすることなく、モデルの精度が更に良くなったのでこれでいきましょう。配信してみたアプリ未設定のまま対象タイトルを配信しているとこんな感じでアプリが自動設定されます。画面は開発中のものです。現在試験中の機能ですが、ユーザーさんから頂いたフィードバックや自動設定された配信の数値指標から見えてきた今後の展開などを次回の記事で書こうと思います。一緒に開発してくれるエンジニアを募集しています!体験入社や副業も大歓迎です。09:00Tweet関連記事2019-12-12ミラティブにてクラロワAPIを利用したイベントをやってみたこんにちわ。