Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Poke_Battle_Logger の紹介: リモポケ学会20230714
Search
Yusuke Fukasawa
July 14, 2023
Research
1
880
Poke_Battle_Logger の紹介: リモポケ学会20230714
https://twitter.com/rimopoke/status/1679815756572401664
のスライドです
Yusuke Fukasawa
July 14, 2023
Tweet
Share
More Decks by Yusuke Fukasawa
See All by Yusuke Fukasawa
対戦におけるポケモンの “意味変化”を追う_リモートポケモン学会
fufufukakaka
0
68
機械学習を用いたポケモン対戦選出予測
fufufukakaka
1
840
Poke_Battle_Loggerの紹介
fufufukakaka
0
310
Cookpad TechConf2022 / Machine-Learning-At-Cookpad-Mart
fufufukakaka
1
3.1k
20221116_MLOps勉強会_クックパッドマートにおける推薦タスクとMLOps
fufufukakaka
2
1.8k
RedshiftML in Cookpad
fufufukakaka
2
6.4k
Other Decks in Research
See All in Research
ダイナミックプライシング とその実例
skmr2348
3
480
Zipf 白色化:タイプとトークンの区別がもたらす良質な埋め込み空間と損失関数
eumesy
PRO
8
1k
Language is primarily a tool for communication rather than thought
ryou0634
4
790
最近のVisual Odometryと Depth Estimation
sgk
1
310
ニュースメディアにおける事前学習済みモデルの可能性と課題 / IBIS2024
upura
3
680
Weekly AI Agents News! 9月号 プロダクト/ニュースのアーカイブ
masatoto
2
170
marukotenant01/tenant-20240916
marketing2024
0
610
[ECCV2024読み会] 衛星画像からの地上画像生成
elith
1
900
TransformerによるBEV Perception
hf149
1
580
尺度開発における質的研究アプローチ(自主企画シンポジウム7:認知行動療法における尺度開発のこれから)
litalicolab
0
360
12
0325
0
190
The many faces of AI and the role of mathematics
gpeyre
1
1.4k
Featured
See All Featured
Building Your Own Lightsaber
phodgson
103
6.1k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
YesSQL, Process and Tooling at Scale
rocio
169
14k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.1k
We Have a Design System, Now What?
morganepeng
51
7.3k
Mobile First: as difficult as doing things right
swwweet
222
9k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.5k
Gamification - CAS2011
davidbonilla
80
5.1k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
32
2.7k
The Cost Of JavaScript in 2023
addyosmani
45
7k
Transcript
機械学習で ポケモン対戦動画を解析する Poke Battle Logger 2023/07/14 リモポケ学会 fufufukakaka(@fukkaa1225)
自己紹介 • fufufukakaka, fu3ka3 (ふか) • 機械学習エンジニア ◦ 自然言語処理・推薦をはじめとして全般 •
ポケモン歴 ◦ 赤緑からDP ◦ XYから復帰して対戦もちょっとたしなむように(1シーズンだけ やる程度) ◦ SVは継続して対戦を楽しめている。レートは1700弱
アジェンダ • ポケモンのランクマッチについて • Poke_Battle_Logger: なぜ対戦動画を解析したいのか • Poke_Battle_Logger を構成するコンポーネント •
Web App の紹介 • 得られたデータからの分析結果 ◦ 勝敗率 ◦ HOME の Stats とどれくらい差があるのか • 今後の展望
アジェンダ • ポケモンのランクマッチについて • Poke_Battle_Logger: なぜ対戦動画を解析したいのか • Poke_Battle_Logger を構成するコンポーネント •
Web App の紹介 • 得られたデータからの分析結果 ◦ 勝敗率 ◦ HOME の Stats とどれくらい差があるのか • 今後の展望
ポケモンのランクマッチ 知っている方・やっている方 🙋🙋🙋
ポケモンの対戦 → 2人同時手番非対称情報ゲーム
ゲーム理論的な観点から見るポケモン対戦 • 2人 → シングルなら大体2人 • 同時手番 → 2人とも同時に次の手を選択する •
非対称情報 → 相手の技構成は見えない。相手の努力値(ス テータス振り)や持ち物も見えない。 • かつ、扱えるキャラ(1000体)・技の数も山ほどある • つまり非常に理論的解析が難しいゲーム ◦ 囲碁・将棋よりも探索空間は広い
ポケモン対戦: 例 VS
ポケモン対戦: 例 VS 持ち物: こだわり鉢巻 AS252B4、意地っ張り つららおとし 聖なる剣 不意打ち 噛み砕く
持ち物: ??? 努力値・性格: ??? ??? ??? ??? ??? 氷・悪
ポケモン対戦: 例(同速の場合) 自分\相手 つらら おとし せいなるつ るぎ ふいうち かみくだく つらら
おとし (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)
ポケモン対戦: テラスタル • SV からの要素 • 対戦で一匹にだけ使える • タイプを事前に決めておいたタイプに変更 できる
◦ 18タイプどれにでも変更できる ポケモン公式サイト ポケモンたちが宝石のように光り輝く「テラスタル」 https://www.pokemon.co.jp/ex/sv/ja/features/220803_06/
ポケモン対戦: 例(こちらが素早さ が上で、かつテラスタルがお互い 残っている場合) 2パターンのテラスタルの み考察する 1. ゴースト 2. フェアリー
自分はゴーストにテラスで きるとする
ポケモン対戦: 例(こちらが素早さ が上で、かつテラスタルがお互い 残っている場合) 自分\相手 ゴーストテラス (確率0.45) フェアリー テラス (確率0.45)
テラスしない (確率0.1) ゴースト テラス ? ? ? テラス しない ? ? せいなるつるぎ\ ふいうち 見積もった確率を元に 相手のテラスに対する混 合戦略を求めます
1vs1 の解析で既にパンクしそう
ポケモン対戦 • 【悲報】ゲーム理論的な解析解を求めるのは不可能
ポケモン対戦 • 【悲報】ゲーム理論的な解析解を求めるのはほぼ不可能 • 解析できたとしても、1vs1の対面を突き詰めることしかできない
ポケモン対戦 • 【悲報】ゲーム理論的な解析解を求めるのはほぼ不可能 • 解析できたとしても、1vs1の対面を突き詰めることしかできない • 他にも解析したい場面↓ ◦ 3匹の選出順番 ◦
テラスタルタイミング ◦ 交代 ◦ etc
ポケモン対戦 • 【悲報】ゲーム理論的な解析解を求めるのはほぼ不可能 • 解析できたとしても、1vs1の対面を突き詰めることしかできない • 他にも解析したい場面↓ ◦ 3匹の選出順番 ◦
テラスタルタイミング ◦ 交代 ◦ etc → データを集めて立ち向かう
対戦を記録して振り返りたい → 動画を撮ろう AVerMedia 2Plus を使っています avermedia 公式サイト https://www.avermedia.co.jp/product-detail/GC513
None
…
動画を見返すよりも 効率よく振り返りたい 勝った試合だけは 何度も見ます
Poke Battle 📹 Logger
Poke Battle Logger の概要
Poke Battle Logger の概要 • 動画から対戦の統計を取り出す動画解析バッチ ◦ 6vs6 の見せ合いでどんなポケモンを出したか ◦
実際に選んだ 3匹はなんだったのか ◦ 先発は誰だったのか ◦ どのポケモン同士が対面したのか ◦ どのポケモンで相手のポケモンを倒した(倒された)のか
Poke Battle Logger の概要 • 動画から対戦の統計を取り出す動画解析バッチ ◦ 6vs6 の見せ合いでどんなポケモンを出したか ◦
実際に選んだ 3匹はなんだったのか ◦ 先発は誰だったのか ◦ どのポケモン同士が対面したのか ◦ どのポケモンで相手のポケモンを倒した(倒された)のか • それらを集計・表示する web application の開発
アジェンダ • ポケモンのランクマッチについて • Poke_Battle_Logger: なぜ対戦動画を解析したいのか • Poke_Battle_Logger を構成するコンポーネント •
Web App の紹介 • 得られたデータからの分析結果 ◦ 勝敗率 ◦ HOME の Stats とどれくらい差があるのか • 今後の展望
Poke Battle Logger のコンポーネント 1. フレーム抽出 2. 6vs6 の画面からのポケモン識別 3.
対戦中の画面からのポケモン名識別
Poke Battle Logger: フレーム抽出 • どのフレームに着目するか、を決めてそれを抽出する処理 ◦ ポケモンの選出画面 ◦ 対戦中の画面
◦ 勝ち負け・ランクが表示されている画面 ◦ etc
Poke Battle Logger: フレーム抽出 • どのフレームに着目するか、を決めてそれを抽出する処理 ◦ ポケモンの選出画面 ◦ 対戦中の画面
◦ 勝ち負け・ランクが表示されている画面 ◦ etc • 「選出画面は ”Standing By” をテンプレートマッチングできれば取 れる」「対戦画面は “Lv.50”をテンプレートで...」などを取りたい画面 に対して、必要なテンプレートを地道に整備
Poke Battle Logger の概要 • まず必要なもの • どのフレームに着目するか、を決めてそれを抽出する処理 ◦ ポケモンの選出画面
◦ 対戦中の画面 ◦ 勝ち負け・ランクが表示されている画面 ◦ etc • 「選出画面は ”Standing By” をテンプレートマッチングできれば取れる」「対戦画面 は “Lv.50”をテンプレートで...」などを取りたい画面に対して地道に整備する
Poke Battle Logger: 6vs6 の画面からのポケモン識別
Poke Battle Logger: 6vs6 の画面からのポケモン識別
Poke Battle Logger: 6vs6 の画面からのポケモン識別 Template Matching Fine-tuned Swin Transformer
🤗
Poke Battle Logger: 6vs6 の画面からのポケモン識別 Template Matching Fine-tuned Swin Transformer
🤗 Microsoft が開発した Transformer を画像系へ応用したモデルの一つ 細かいウィンドウに区切った後に Transformer に通し、それをマージする 今回は事前に集めたポケモン画像(400枚)を使ってこれを fine-tuning した Swin Transformer
Poke Battle Logger: 6vs6 の画面からのポケモン識別 Fine-tuned Swin Transformer 🤗 Template
Matching
実際に選んだ 3匹はなんだったのか
実際に選んだ 3匹はなんだったのか
実際に選んだ 3匹はなんだったのか
実際に選んだ 3匹はなんだったのか OCR (Tesseract) for 7 lang
実際に選んだ 3匹はなんだったのか Orthworm,ミミズズ,Ferdeter,Schlurm, 꿈트렁,拖拖蚓,拖拖蚓 OCR (Tesseract) for 7 lang
実際に選んだ 3匹はなんだったのか 英語のOCRは日本語よりも簡単なので 自分は英語を選択してプレイしています OCR (Tesseract) for 7 lang
None
アジェンダ • ポケモンのランクマッチについて • Poke_Battle_Logger: なぜ対戦動画を解析したいのか • Poke_Battle_Logger を構成するコンポーネント •
Web App の紹介 • 得られたデータからの分析結果 ◦ 勝敗率 ◦ HOME の Stats とどれくらい差があるのか • 今後の展望
None
None
None
None
None
None
None
技術スタックなど • FastAPI + NextJS + ChakraUI • ユーザ認証: Auth0
• DB: MySQL • 動画読み込みと諸々の関数: OpenCV
アジェンダ • ポケモンのランクマッチについて • Poke_Battle_Logger: なぜ対戦動画を解析したいのか • Poke_Battle_Logger を構成するコンポーネント •
Web App の紹介 • 得られたデータからの分析結果 ◦ 勝敗率 ◦ HOME の Stats とどれくらい差があるのか • 今後の展望
勝敗率 先発率 勝率 採用率 選出率 シーズン6 (5月)
勝敗率 先発率 負け率 遭遇率 選出率 シーズン6 (5月)
HOMEとの 遭遇率比較 (5月)
HOMEとの 遭遇率比較 (5月)
アジェンダ • ポケモンのランクマッチについて • Poke_Battle_Logger: なぜ対戦動画を解析したいのか • Poke_Battle_Logger を構成するコンポーネント •
Web App の紹介 • 得られたデータからの分析結果 ◦ 勝敗率 ◦ HOME の Stats とどれくらい差があるのか • 今後の展望
今後の展望(1/4) • 技の読み取り ◦ 英語ロムなら出来るが、この機能を実装すると日本語ロムが地 獄になる(OCR精度の問題) ◦ しかし一番やりたいことでもある。なぜならこれをやらないとこの ゲームの解析はいつまで経っても進捗しないから...
今後の展望(2/4) • 似ている試合」の検索 ◦ ポケモンをベクトルで表現できれば、ある試合をベクトルで表現 できて vector search ができる ▪
パーティ・3体の並び・行動順などから、ポケモンを word・並 びを sentence に見立てて item2vec が学習できる ◦ ポケ徹のパーティ情報とかを抽出して学習したいが、スクレイピ ングしたくない...ので、自分でたくさん対戦してデータをためる (現在の保有試合数: 400くらい)
今後の展望(3/4) • 対戦中のスコア表示: (将棋みたいなやつ) ◦ とりあえず特徴量を使って計算するアプローチから始めたい。ど んな特徴量が勝敗に寄与するのか? ◦ 現在得られているデータから何かしらの勝率を推測できるか
今後の展望(4/4) • 対戦中のスコア表示: (将棋みたいなやつ) ◦ とりあえず特徴量を使って計算するアプローチから始めたい。ど んな特徴量が勝敗に寄与するのか? ◦ 現在得られているデータから何かしらの勝率を推測できるか 友人内での
private alpha テストが終わったらアプリケーションをイン ターネットに放流したいと思っています 見かけたら「おっやっとるな」と思っていただけると嬉しいです Thank You For Your Attention!
引用元出典 • 画像 ◦ いらすとや 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