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
850
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
63
機械学習を用いたポケモン対戦選出予測
fufufukakaka
1
770
Poke_Battle_Loggerの紹介
fufufukakaka
0
290
Cookpad TechConf2022 / Machine-Learning-At-Cookpad-Mart
fufufukakaka
1
3.1k
20221116_MLOps勉強会_クックパッドマートにおける推薦タスクとMLOps
fufufukakaka
2
1.8k
RedshiftML in Cookpad
fufufukakaka
2
6k
Other Decks in Research
See All in Research
「並列化時代の乱数生成」
abap34
3
780
snlp2024_multiheadMoE
takase
0
410
SNLP2024:Planning Like Human: A Dual-process Framework for Dialogue Planning
yukizenimoto
1
310
The Fellowship of Trust in AI
tomzimmermann
0
130
20240719_第2回熊本の交通を語る会
trafficbrain
0
510
多様かつ継続的に変化する環境に適応する情報システム/thesis-defense-presentation
monochromegane
1
480
機械学習でヒトの行動を変える
hiromu1996
1
190
Embers of Autoregression: Understanding Large Language Models Through the Problem They are Trained to Solve
eumesy
PRO
6
1.1k
第60回名古屋CV・PRML勉強会:CVPR2024論文紹介(AM-RADIO)
naok615
0
240
Streaming CityJSON datasets
hugoledoux
0
150
データサイエンティストをめぐる環境の違い 2024年版〈一般ビジネスパーソン調査の国際比較〉
datascientistsociety
PRO
0
450
出生抑制策と少子化
morimasao16
0
430
Featured
See All Featured
What's in a price? How to price your products and services
michaelherold
243
12k
Docker and Python
trallard
40
3.1k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
Code Review Best Practice
trishagee
64
17k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
126
18k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Build The Right Thing And Hit Your Dates
maggiecrowley
32
2.4k
Faster Mobile Websites
deanohume
304
30k
Thoughts on Productivity
jonyablonski
67
4.3k
Designing for Performance
lara
604
68k
YesSQL, Process and Tooling at Scale
rocio
167
14k
StorybookのUI Testing Handbookを読んだ
zakiyama
26
5.2k
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