見出し画像

サッカーのトラッキングデータからシーン抽出をしてみる

はじめに

はじめまして。東京大学運動会ア式蹴球部(以下ア式)、テクニカルスタッフ4年の木下慶悟と申します。

ア式はフィジカルユニット、広報ユニット、強化ユニットなど複数のユニットで構成される組織であり、そのうちの1つが私の所属するテクニカルユニットであります。テクニカルユニットがどのような活動をしているのかというと、一言で言えば「分析」です。所謂「サッカーアナリスト」でしょうか。試合を見て対戦相手の戦い方を掘り下げるだけでなく、データを駆使して自チームのパフォーマンスを改善することにも取り組んでいます。また活動の舞台は大学の領域に留まらず、海外のプロサッカークラブと提携し共同で分析を行うことなどもしております。その詳しい内容については、興味のある方はこちらからぜひチェックしてみてください。

今回の記事ですが、この度ア式はnoteマガジンを開設し、テクニカルスタッフを中心に各々の視点でサッカーを深く掘り下げる連載を始めることが決まりました

記事の内容は「サッカー」という大枠がある以外はほぼ自由で、活動紹介に留まらずソフトやデータの有効な活用法、コーチとして現場を指揮して直面したケーススタディ、サッカーに関する独自の研究活動、海外のネクストブレイク選手、Jリーグのマッチレビューなどのテーマが挙げられるかもしれません。

私がその第1号、7月号として執筆させていただきますが、普段は「きのけい」というペンネームでレアル・マドリーなどの分析記事を執筆しており、専門誌『footballista』に記事を寄稿させていただいております。よろしければTwitternoteでも発信しておりますので、ご一読いただけると嬉しいです。

さて前置きが長くなってしまいましたが、「サッカーのトラッキングデータからシーン抽出をしてみる」というタイトルで進めてみようと思います。タイトルだけではどんな内容か想像がつかないかもしれませんが、最後まで読んでいただけると嬉しいです。


===========================

サッカーのトラッキングデータからシーン抽出をしてみる

シーン抽出の意義

サッカーはピッチ上の22人が意思決定を行う複雑なスポーツであり、プレイヤーの1つの立ち位置のズレや判断の違いが全体の試合展開に大きな影響を及ぼす。こうした観点から、サッカーを「複雑系」という1つの学問によって解き明かそうという動きが見られる。

よく比較される類似のゲーム構造を持つものとしてはボードゲームのチェスや将棋が挙げられるが、参加するプレイヤー数の違いはもちろんのこと、攻撃する権利が交代制ではなくボールの状態(=どちらが保持しているか)に委ねられるほか、プレイヤーの意思決定が離散的ではなく連続的に行われる点にも違いがあり、これらの特徴がサッカーというスポーツをより複雑かつ面白いものにしていると思われる。

サッカーは複雑であるが故に不確実性が大きく、しかしデータを用いて客観的に(定量的に)チームの出力を評価・改善することができれば、不確実性を可能な限り小さくし、より試合の流れをコントロールすることができるようになるかもしれない。近年の技術進歩は、容易にデータを集めることを可能にしている。

一口にデータを用いてチームの出力を評価すると言っても、その粒度は様々である。「パス」という1つのイベントを例に挙げる。その1試合でパスが何本通ったか?非常に粗いデータである。これではほとんど何の役にも立たない、あるいは非常に大局的な試合状況の把握にしか活用できないだろう。そのパスが横パスだったのか?バックパスだったのか?縦パスだったのか?横パスでも自陣ビルドアップのシーンで相手のプレスの誘導に乗ってしまうパスだったのか?プレスを空転させる大きなサイドチェンジのパスだったのか?敵陣崩しのシーンで大外レーンから相手の守備ブロック内に侵入するパスだったのか?直後に味方のシュートに繋がる決定的なラストパスだったのか?

この例はほんの一部に過ぎず、アナリストが必要とするのはこうした「高次データ」であることがほとんどである。そうしたデータ算出のためには「シーン抽出」が必要となる。ビルドアップ、ネガティブトランジション、ハイプレス…といった着目したいシーンがあるからだ。注意したいのは、サッカーにおいてこうした定量的分析がすべてになることはおそらくなく、今後もアナリストの「眼」による定性的分析と組み合わせて活用されていくだろうということだ。ただ、それでも「シーン抽出」は分析の効率を劇的に向上させる。アナリストがシーズン半ばに「過去10試合分のビルドアップの課題を洗い出したい」と思ったとき、アナリストは実際に自分の眼でビルドアップのシーンを見返したいと思うはずだ。その際、10試合900分間試合を見て該当のシーンを1つ1つ探している時間的余裕は、おそらくないはずである。ビルドアップのシーンが自動抽出されていれば、分析にかかる時間は10分の1にも20分の1にもなり、そこにさらに「各プレイヤーのパッキングレート(パスやドリブルにより相手の守備ラインをどれほど越えることができたかを測る指標)の値」を自動算出できていれば、尚のこと良い、というわけである。

以上がシーン抽出の意義である。よって今回の記事では、上に挙げた例であるビルドアップのシーンを、トラッキングデータのみを用いて抽出してみようと思う。


トラッキングデータとは

おそらくサッカーにおけるトラッキングデータと言えば、一般にプレイヤーおよびボールの位置情報が格納されたデータのことを指す。ただしデータ構造はそのトラッキングシステムによって様々で、以前ア式が使用していたGPSデバイスではプレイヤーの座標が経緯度で表されていたため、Googleマップを用いて試合会場の経緯度を取得し、ピッチ上の座標に変換するという作業が前処理として必要だった。必要だったと言っても、プログラミングをすることによって自動化が可能である。以下、すべてPythonというプログラミング言語を用いて処理を行う。

今回使用するトラッキングデータは、サッカー映像分析プラットフォーム「bepro11」を展開するBepro Japan合同会社に提供いただいたサンプルデータで、25fps、すなわち1秒間に25回(その1回1回を「フレーム」と呼ぶ)ピッチ上の22人のプレーヤーとボールの「x座標」および「y座標」、そして「ボールの状態」が格納されている。x座標、y座標はピッチ上に4つ存在するコーナーのうちの1つを原点とし、ゴールライン・タッチラインを軸にとったもので、ボールの状態はインプレー(どちらのチームがボールを保持しているか、あるいはルーズボールか)かアウトオブプレーかを意味する。

生データ(一部)のデータ構造


前処理

データの前処理をする。まずは生データを区切り文字(改行、コロン、セミコロン、カンマ)に応じて分解し、Pythonのデータ分析ライブラリPandasのDataFrameに格納する。その際、座標は実際の試合映像のピッチ左手前を原点とし、タッチラインをx軸、ゴールラインをy軸と定義して座標変換を行う。

ピッチ上の座標
完成したPandasのDataFrame①
完成したPandasのDataFrame②

DataFrameの行は各フレームを表しており、列は先ほど挙げた各データを表している。


シーン抽出と可視化

実際にビルドアップのシーンを定義し、抽出する。もちろんこの定義の仕方はビルドアップのシーンとだけ言っても無数に存在するが、分析の目的や自チームのゲームモデルに合わせて自由に定義することができる

例えば、ピッチをx軸方向に3分割し、自陣側からゾーン1、ゾーン2、ゾーン3とする。ゾーン2におけるビルドアップを見返したいときには、自チームのフィールドプレイヤーのx座標代表値(平均値や中央値、あるいは個別のプレイヤーに着目してもよい)を算出し、それが35[m]以上70[m]未満(タッチラインの長さは105[m])、かつ「ボールの状態」が自チームの保持である、という条件を設定する。作成したDataFrameを参照して、この条件を満たすかどうかをフレームごとに判定していく連続して数秒(この秒数も恣意的に設定できる)以上条件を満たしていた場合にその一連のフレームをDataFrameからスライシングすることで、ビルドアップの1シーンのDataFrameが抽出される。DataFrame全体にそのアルゴリズムを適用すれば、すべてのビルドアップシーンを取得できる。

フレーム数と実際の試合時間を紐付け、その試合時間の映像を確認することによって抽出されたシーンを見返すことができる。さらにグラフ描画ライブラリmatplotlibを使って可視化まですれば、以下のようにアニメーションを作成することもできる。これは実際に抽出されたビルドアップの1シーンである。


言葉で説明するのは難しいことではないが、作業してみると定性的に見てビルドアップとは言えないシーンが抽出されたり、逆に本来抽出したいシーンが除外されてしまったりする場合が往々にしてある。映像と見比べながら試行錯誤を繰り返し、より条件分岐を細かくしたり恣意的に設定した数値を調節したりすることによって、抽出するアルゴリズムの精度を改善していく作業が求められる。非常に泥臭い作業だ。

ここでは簡単な例を紹介したが、例えば先に挙げたパッキングレートや、ライン間への縦パスの本数や割合、ボールを相手に奪われた後のカウンタープレスの成功率自チームの陣形の縦幅や横幅といった指標(データ)も、コーディングすることによってシーン抽出と同時に算出が可能である。既に述べている通り、何が自チームの出力を適切に評価する本質的なデータかということを考えることが重要である。

===========================


おわりに

初回から堅苦しい内容、かつソースコードと共に手法を完全公開!とまではできず申し訳ないところですが、我々テクニカルユニット、あるいはサッカーアナリストにとってシーン抽出がなぜ重要なのかという話の個人的見解と、実際の抽出の雰囲気を今回の記事でまとめてみました。

プロの現場でどれほどこういったプログラミングが活用されているのかはさておき、あくまで大学サッカー部というアマチュアでの取り組みの一例として、多くの方々に知っていただけると光栄です。


最後までお読みいただきありがとうございました!

東大ア式蹴球部テクニカルスタッフ4年 木下

よろしければサポートをお願いします!いただいたサポートは戦術ボードアプリTACTICAListaへと充てさせていただきます。