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
900
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
87
機械学習を用いたポケモン対戦選出予測
fufufukakaka
1
890
Poke_Battle_Loggerの紹介
fufufukakaka
0
310
Cookpad TechConf2022 / Machine-Learning-At-Cookpad-Mart
fufufukakaka
1
3.2k
20221116_MLOps勉強会_クックパッドマートにおける推薦タスクとMLOps
fufufukakaka
2
1.8k
RedshiftML in Cookpad
fufufukakaka
2
6.6k
Other Decks in Research
See All in Research
[依頼講演] 適応的実験計画法に基づく効率的無線システム設計
k_sato
0
220
Weekly AI Agents News! 10月号 プロダクト/ニュースのアーカイブ
masatoto
1
180
ベイズ的方法に基づく統計的因果推論の基礎
holyshun
0
710
論文読み会 KDD2024 | Relevance meets Diversity: A User-Centric Framework for Knowledge Exploration through Recommendations
cocomoff
0
140
言語と数理の交差点:テキストの埋め込みと構造のモデル化 (IBIS 2024 チュートリアル)
yukiar
4
1k
クロスセクター効果研究会 熊本都市交通リノベーション~「車1割削減、渋滞半減、公共交通2倍」の実現へ~
trafficbrain
0
340
文書画像のデータ化における VLM活用 / Use of VLM in document image data conversion
sansan_randd
2
410
QGISハンズオン事に質問のあったProjectのGeoPackageへの保存方法についての、補足の資料です。
wata909
0
110
Leveraging LLMs for Unsupervised Dense Retriever Ranking (SIGIR 2024)
kampersanda
2
280
Weekly AI Agents News! 11月号 プロダクト/ニュースのアーカイブ
masatoto
0
260
TransformerによるBEV Perception
hf149
1
630
博士学位論文予備審査 / Scaling Telemetry Workloads in Cloud Applications: Techniques for Instrumentation, Storage, and Mining
yuukit
1
1.6k
Featured
See All Featured
Fireside Chat
paigeccino
34
3.1k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
500
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
30
2.1k
Site-Speed That Sticks
csswizardry
2
270
Side Projects
sachag
452
42k
Navigating Team Friction
lara
183
15k
Code Reviewing Like a Champion
maltzj
521
39k
Git: the NoSQL Database
bkeepers
PRO
427
64k
KATA
mclloyd
29
14k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.1k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
Building an army of robots
kneath
302
45k
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