$30 off During Our Annual Pro Sale. View Details »

Poke_Battle_Logger の紹介: リモポケ学会20230714

Poke_Battle_Logger の紹介: リモポケ学会20230714

Yusuke Fukasawa

July 14, 2023
Tweet

More Decks by Yusuke Fukasawa

Other Decks in Research

Transcript

  1. 機械学習で
    ポケモン対戦動画を解析する
    Poke Battle Logger
    2023/07/14 リモポケ学会
    fufufukakaka(@fukkaa1225)

    View Slide

  2. 自己紹介
    ● fufufukakaka, fu3ka3 (ふか)
    ● 機械学習エンジニア
    ○ 自然言語処理・推薦をはじめとして全般
    ● ポケモン歴
    ○ 赤緑からDP
    ○ XYから復帰して対戦もちょっとたしなむように(1シーズンだけ
    やる程度)
    ○ SVは継続して対戦を楽しめている。レートは1700弱

    View Slide

  3. アジェンダ
    ● ポケモンのランクマッチについて
    ● Poke_Battle_Logger: なぜ対戦動画を解析したいのか
    ● Poke_Battle_Logger を構成するコンポーネント
    ● Web App の紹介
    ● 得られたデータからの分析結果
    ○ 勝敗率
    ○ HOME の Stats とどれくらい差があるのか
    ● 今後の展望

    View Slide

  4. アジェンダ
    ● ポケモンのランクマッチについて
    ● Poke_Battle_Logger: なぜ対戦動画を解析したいのか
    ● Poke_Battle_Logger を構成するコンポーネント
    ● Web App の紹介
    ● 得られたデータからの分析結果
    ○ 勝敗率
    ○ HOME の Stats とどれくらい差があるのか
    ● 今後の展望

    View Slide

  5. ポケモンのランクマッチ
    知っている方・やっている方 🙋🙋🙋

    View Slide

  6. ポケモンの対戦
    → 2人同時手番非対称情報ゲーム

    View Slide

  7. ゲーム理論的な観点から見るポケモン対戦
    ● 2人 → シングルなら大体2人
    ● 同時手番 → 2人とも同時に次の手を選択する
    ● 非対称情報 → 相手の技構成は見えない。相手の努力値(ス
    テータス振り)や持ち物も見えない。
    ● かつ、扱えるキャラ(1000体)・技の数も山ほどある
    ● つまり非常に理論的解析が難しいゲーム
    ○ 囲碁・将棋よりも探索空間は広い

    View Slide

  8. ポケモン対戦: 例
    VS

    View Slide

  9. ポケモン対戦: 例
    VS
    持ち物: こだわり鉢巻
    AS252B4、意地っ張り
    つららおとし
    聖なる剣
    不意打ち
    噛み砕く
    持ち物: ???
    努力値・性格: ???
    ???
    ???
    ???
    ???
    氷・悪

    View Slide

  10. ポケモン対戦: 例(同速の場合)
    自分\相手
    つらら
    おとし
    せいなるつ
    るぎ ふいうち かみくだく
    つらら
    おとし (40,40) (40,100) (40,30) (40,40)
    せいなる
    つるぎ (100,0) (100,0) (100,30) (100,0)
    ふいうち (30,40) (30,100) (30,30) (30,40)
    かみくだく (40,40) (40,100) (40,30) (40,40)
    自分が先手を取れる
    場合(確率: 0.5)

    View Slide

  11. ポケモン対戦: テラスタル
    ● SV からの要素
    ● 対戦で一匹にだけ使える
    ● タイプを事前に決めておいたタイプに変更
    できる
    ○ 18タイプどれにでも変更できる
    ポケモン公式サイト ポケモンたちが宝石のように光り輝く「テラスタル」
    https://www.pokemon.co.jp/ex/sv/ja/features/220803_06/

    View Slide

  12. ポケモン対戦: 例(こちらが素早さ
    が上で、かつテラスタルがお互い
    残っている場合)
    2パターンのテラスタルの
    み考察する
    1. ゴースト
    2. フェアリー
    自分はゴーストにテラスで
    きるとする

    View Slide

  13. ポケモン対戦: 例(こちらが素早さ
    が上で、かつテラスタルがお互い
    残っている場合)
    自分\相手
    ゴーストテラス
    (確率0.45)
    フェアリー
    テラス
    (確率0.45)
    テラスしない
    (確率0.1)
    ゴースト
    テラス ? ? ?
    テラス
    しない ? ?
    せいなるつるぎ\
    ふいうち
    見積もった確率を元に
    相手のテラスに対する混
    合戦略を求めます

    View Slide

  14. 1vs1 の解析で既にパンクしそう

    View Slide

  15. ポケモン対戦
    ● 【悲報】ゲーム理論的な解析解を求めるのは不可能

    View Slide

  16. ポケモン対戦
    ● 【悲報】ゲーム理論的な解析解を求めるのはほぼ不可能
    ● 解析できたとしても、1vs1の対面を突き詰めることしかできない

    View Slide

  17. ポケモン対戦
    ● 【悲報】ゲーム理論的な解析解を求めるのはほぼ不可能
    ● 解析できたとしても、1vs1の対面を突き詰めることしかできない
    ● 他にも解析したい場面↓
    ○ 3匹の選出順番
    ○ テラスタルタイミング
    ○ 交代
    ○ etc

    View Slide

  18. ポケモン対戦
    ● 【悲報】ゲーム理論的な解析解を求めるのはほぼ不可能
    ● 解析できたとしても、1vs1の対面を突き詰めることしかできない
    ● 他にも解析したい場面↓
    ○ 3匹の選出順番
    ○ テラスタルタイミング
    ○ 交代
    ○ etc
    → データを集めて立ち向かう

    View Slide

  19. 対戦を記録して振り返りたい
    → 動画を撮ろう
    AVerMedia 2Plus
    を使っています
    avermedia 公式サイト
    https://www.avermedia.co.jp/product-detail/GC513

    View Slide

  20. View Slide


  21. View Slide

  22. 動画を見返すよりも
    効率よく振り返りたい
    勝った試合だけは
    何度も見ます

    View Slide

  23. Poke Battle
    📹 Logger

    View Slide

  24. Poke Battle Logger の概要

    View Slide

  25. Poke Battle Logger の概要
    ● 動画から対戦の統計を取り出す動画解析バッチ
    ○ 6vs6 の見せ合いでどんなポケモンを出したか
    ○ 実際に選んだ 3匹はなんだったのか
    ○ 先発は誰だったのか
    ○ どのポケモン同士が対面したのか
    ○ どのポケモンで相手のポケモンを倒した(倒された)のか

    View Slide

  26. Poke Battle Logger の概要
    ● 動画から対戦の統計を取り出す動画解析バッチ
    ○ 6vs6 の見せ合いでどんなポケモンを出したか
    ○ 実際に選んだ 3匹はなんだったのか
    ○ 先発は誰だったのか
    ○ どのポケモン同士が対面したのか
    ○ どのポケモンで相手のポケモンを倒した(倒された)のか
    ● それらを集計・表示する web application の開発

    View Slide

  27. アジェンダ
    ● ポケモンのランクマッチについて
    ● Poke_Battle_Logger: なぜ対戦動画を解析したいのか
    ● Poke_Battle_Logger を構成するコンポーネント
    ● Web App の紹介
    ● 得られたデータからの分析結果
    ○ 勝敗率
    ○ HOME の Stats とどれくらい差があるのか
    ● 今後の展望

    View Slide

  28. Poke Battle Logger のコンポーネント
    1. フレーム抽出
    2. 6vs6 の画面からのポケモン識別
    3. 対戦中の画面からのポケモン名識別

    View Slide

  29. Poke Battle Logger: フレーム抽出
    ● どのフレームに着目するか、を決めてそれを抽出する処理
    ○ ポケモンの選出画面
    ○ 対戦中の画面
    ○ 勝ち負け・ランクが表示されている画面
    ○ etc

    View Slide

  30. Poke Battle Logger: フレーム抽出
    ● どのフレームに着目するか、を決めてそれを抽出する処理
    ○ ポケモンの選出画面
    ○ 対戦中の画面
    ○ 勝ち負け・ランクが表示されている画面
    ○ etc
    ● 「選出画面は ”Standing By” をテンプレートマッチングできれば取
    れる」「対戦画面は “Lv.50”をテンプレートで...」などを取りたい画面
    に対して、必要なテンプレートを地道に整備

    View Slide

  31. Poke Battle Logger の概要
    ● まず必要なもの
    ● どのフレームに着目するか、を決めてそれを抽出する処理
    ○ ポケモンの選出画面
    ○ 対戦中の画面
    ○ 勝ち負け・ランクが表示されている画面
    ○ etc
    ● 「選出画面は ”Standing By” をテンプレートマッチングできれば取れる」「対戦画面
    は “Lv.50”をテンプレートで...」などを取りたい画面に対して地道に整備する

    View Slide

  32. Poke Battle Logger: 6vs6 の画面からのポケモン識別

    View Slide

  33. Poke Battle Logger: 6vs6 の画面からのポケモン識別

    View Slide

  34. Poke Battle Logger: 6vs6 の画面からのポケモン識別
    Template
    Matching
    Fine-tuned
    Swin
    Transformer
    🤗

    View Slide

  35. Poke Battle Logger: 6vs6 の画面からのポケモン識別
    Template
    Matching
    Fine-tuned
    Swin
    Transformer
    🤗
    Microsoft が開発した Transformer を画像系へ応用したモデルの一つ
    細かいウィンドウに区切った後に Transformer に通し、それをマージする
    今回は事前に集めたポケモン画像(400枚)を使ってこれを fine-tuning した
    Swin Transformer

    View Slide

  36. Poke Battle Logger: 6vs6 の画面からのポケモン識別
    Fine-tuned
    Swin
    Transformer
    🤗
    Template
    Matching

    View Slide

  37. 実際に選んだ 3匹はなんだったのか

    View Slide

  38. 実際に選んだ 3匹はなんだったのか

    View Slide

  39. 実際に選んだ 3匹はなんだったのか

    View Slide

  40. 実際に選んだ 3匹はなんだったのか
    OCR
    (Tesseract)
    for 7 lang

    View Slide

  41. 実際に選んだ 3匹はなんだったのか
    Orthworm,ミミズズ,Ferdeter,Schlurm,
    꿈트렁,拖拖蚓,拖拖蚓
    OCR
    (Tesseract)
    for 7 lang

    View Slide

  42. 実際に選んだ 3匹はなんだったのか
    英語のOCRは日本語よりも簡単なので
    自分は英語を選択してプレイしています
    OCR
    (Tesseract)
    for 7 lang

    View Slide

  43. View Slide

  44. アジェンダ
    ● ポケモンのランクマッチについて
    ● Poke_Battle_Logger: なぜ対戦動画を解析したいのか
    ● Poke_Battle_Logger を構成するコンポーネント
    ● Web App の紹介
    ● 得られたデータからの分析結果
    ○ 勝敗率
    ○ HOME の Stats とどれくらい差があるのか
    ● 今後の展望

    View Slide

  45. View Slide

  46. View Slide

  47. View Slide

  48. View Slide

  49. View Slide

  50. View Slide

  51. View Slide

  52. 技術スタックなど
    ● FastAPI + NextJS + ChakraUI
    ● ユーザ認証: Auth0
    ● DB: MySQL
    ● 動画読み込みと諸々の関数: OpenCV

    View Slide

  53. アジェンダ
    ● ポケモンのランクマッチについて
    ● Poke_Battle_Logger: なぜ対戦動画を解析したいのか
    ● Poke_Battle_Logger を構成するコンポーネント
    ● Web App の紹介
    ● 得られたデータからの分析結果
    ○ 勝敗率
    ○ HOME の Stats とどれくらい差があるのか
    ● 今後の展望

    View Slide

  54. 勝敗率
    先発率 勝率
    採用率 選出率
    シーズン6
    (5月)

    View Slide

  55. 勝敗率
    先発率 負け率
    遭遇率 選出率
    シーズン6
    (5月)

    View Slide

  56. HOMEとの
    遭遇率比較
    (5月)

    View Slide

  57. HOMEとの
    遭遇率比較
    (5月)

    View Slide

  58. アジェンダ
    ● ポケモンのランクマッチについて
    ● Poke_Battle_Logger: なぜ対戦動画を解析したいのか
    ● Poke_Battle_Logger を構成するコンポーネント
    ● Web App の紹介
    ● 得られたデータからの分析結果
    ○ 勝敗率
    ○ HOME の Stats とどれくらい差があるのか
    ● 今後の展望

    View Slide

  59. 今後の展望(1/4)
    ● 技の読み取り
    ○ 英語ロムなら出来るが、この機能を実装すると日本語ロムが地
    獄になる(OCR精度の問題)
    ○ しかし一番やりたいことでもある。なぜならこれをやらないとこの
    ゲームの解析はいつまで経っても進捗しないから...

    View Slide

  60. 今後の展望(2/4)
    ● 似ている試合」の検索
    ○ ポケモンをベクトルで表現できれば、ある試合をベクトルで表現
    できて vector search ができる
    ■ パーティ・3体の並び・行動順などから、ポケモンを word・並
    びを sentence に見立てて item2vec が学習できる
    ○ ポケ徹のパーティ情報とかを抽出して学習したいが、スクレイピ
    ングしたくない...ので、自分でたくさん対戦してデータをためる
    (現在の保有試合数: 400くらい)

    View Slide

  61. 今後の展望(3/4)
    ● 対戦中のスコア表示: (将棋みたいなやつ)
    ○ とりあえず特徴量を使って計算するアプローチから始めたい。ど
    んな特徴量が勝敗に寄与するのか?
    ○ 現在得られているデータから何かしらの勝率を推測できるか

    View Slide

  62. 今後の展望(4/4)
    ● 対戦中のスコア表示: (将棋みたいなやつ)
    ○ とりあえず特徴量を使って計算するアプローチから始めたい。ど
    んな特徴量が勝敗に寄与するのか?
    ○ 現在得られているデータから何かしらの勝率を推測できるか
    友人内での private alpha テストが終わったらアプリケーションをイン
    ターネットに放流したいと思っています
    見かけたら「おっやっとるな」と思っていただけると嬉しいです
    Thank You For
    Your Attention!

    View Slide

  63. 引用元出典
    ● 画像
    ○ いらすとや https://www.irasutoya.com
    ○ ポケモン図鑑 https://zukan.pokemon.co.jp
    ○ ポケモン公式サイト ポケモンたちが宝石のように光り輝く「テラスタル」
    https://www.pokemon.co.jp/ex/sv/ja/features/220803_06/
    ○ application 内で用いている sprites https://pokemondb.net/sprites
    ○ Tessrract OCR
    https://commons.wikimedia.org/wiki/File:Tesseract_OCR_logo_%28Goog
    le%29.png
    ● 論文
    ○ Swin Transformer: Hierarchical Vision Transformer using Shifted
    Windows https://arxiv.org/abs/2103.14030

    View Slide