Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kaggle NFL3コンペ振り返り

tatematsu
May 30, 2023
260

Kaggle NFL3コンペ振り返り

社内の技術共有会での発表資料です。
Kaggleの"1st and Future PlayerContactDetection"コンペティションにて、参加したチームが5位でした。
コンペ概要や上位陣の解法、我々の解法などご紹介します。

tatematsu

May 30, 2023
Tweet

Transcript

  1. AI 3 3 3 自己紹介 • 氏名 ◦ 立松 郁也

    • 経歴 ◦ 2017年3月 大学院入学 ▪ ナーススケジューリング問題の研究 ◦ 2019年4月 電機メーカー入社 ▪ 需要予測モデル開発 ▪ 最適在庫の分析 ◦ 2021年3月 GO株式会社入社(旧:株式会社Mobility Technologies) ▪ 次世代AIドラレコサービス『DRIVE CHART』の分析業務 • SNS ◦ twitter : https://twitter.com/monnu0621 ◦ Kaggle : https://www.kaggle.com/fuumin621
  2. AI 7 7 7 コンペ概要| コンペの目的 NFLのプレイ動画やセンサーデータから、プレイヤー間の接触を検知することが目的 • NFLのプレイ動画やトラッキングデータ等が提供される •

    参加者は2人のプレイヤー同士またはプレイヤーとグランドの接触有無を予測 https://www.kaggle.com/code/robikscube/nfl-player-contact-detection-getting-started
  3. AI 8 8 8 コンペ概要| 提供データ プレイ動画、トラッキングデータ、ヘルメットBBOX等がデータとして提供 • プレイ動画 ◦

    各プレイ毎に3種類の動画が存在(sideline,endzone,all_view) ◦ 解像度 720x1280 ,59.94fps • プレイヤー毎のトラッキングデータ ◦ player毎の位置座標、速度、加速度等 • ヘルメットのBBOX (sidelineとendzoneのみ) ◦ 前回コンペ(NFL2)の課題がヘルメットBBOXの検出だった ◦ 今回のデータに対する、前回の上位モデルによる推論結果のBBOXが提供された • 正解ラベル ◦ 2player間 または player対grounndの接触有無
  4. AI 9 9 9 コンペ概要| 公開notebookの解法 大きく分けてテーブルのみのGBDTと動画を使った2.5DCNNの2種類の解法が公開された • テーブルデータのみのGBDT (LB

    :0.650) ◦ プレイヤー間の距離、速度等による特徴量 ◦ ヘルメットのBBOXを使った特徴量 ◦ 動画データは未使用 • 動画による2.5DCNN (LB : 0.667) ◦ 各プレイヤーのヘルメットBBOX付近の画像をcrop ◦ 前後13フレームの画像をgray scale化して2.5DCNNへ入力 ◦ プレイヤー間の距離が2以下のデータのみを対象とすることでデータ削減 ◦ 一部テーブル特徴も使い、MLP通した後2.5DCNNとconcat
  5. AI 11 11 11 自チームの解法 | サマリ ニューラルネットワークとGBDTによる2 stage pipelineを採用

    2 stage pipeline • Stage 1 : ニューラルネットワーク (CNN, RNN, MLP) • Stage 2 : GBDT (LightGBM, XGBoost) Stage 1 • CNN Backbone (resnet, efficientnet and resnext系) • CNN+RNN によるend to endのモデル • 複数のフレームをまとめて予測 Stage 2 • CNNの予測値やトラッキングデータ等を特徴量としたGBDT
  6. AI 13 13 13 自チームの解法 | 1st stage入力データ • 入力画像(右図参照)

    ◦ gray scale化し、対象playerのBBOX付近をcrop ◦ 前後のフレーム2枚 + BBOXの合計3ch • テーブル特徴 ◦ distance,speed等の10個の特徴量を選定 • augment ◦ 一般的なaugment(flip,shift scale rotate等) ◦ ランダムな画像のドロップ ▪ ランダムに画像を黒画像に変更 ▪ 過学習抑制 + BBOXの欠損対策 ◦ ランダムな特徴量のドロップ ▪ ランダムにfeatureの値 を0にする ▪ 過学習抑制 https://www.kaggle.com/competitions/nfl-player-contact-detection/discussion/392290
  7. AI 14 14 14 自チームの解法 | 2nd stage概要 CNNの予測値やトラッキングデータ等から特徴量を作成しGBDTに入力 公開notebookと同じく、distance<=2に限定することで学習、推論を高速化

    • モデル ◦ Light GBMとXgboostの2つを採用 • データ ◦ distance <= 2のみ対象 ◦ player 1と2を交換することで学習データを多様化 • 特徴量 ◦ 1st stageのCNN予測値 ◦ tracking特徴(distance,speed) ◦ ヘルメットBBOXに関する特徴 ◦ 上記特徴の集約 or shift系の特徴など
  8. AI 16 16 16 自チームの解法 | その他 アンサンブル • foward

    selection ◦ cv最高のモデルからはじめて、他のモデルをブレンドしていき、cv改善しなく なるまで繰り返すという手法 ◦ 様々なbackbone、シーケンス長で学習した後、この手法で選定 Tips • PyTurboJPEGによる読み込み ◦ フレーム分割したjpegの読み込みはPyTurboJPEGを使用 ◦ opencvより1.5倍ほど高速 • lru_cacheによる推論の高速化 ◦ このコンペでは同じフレーム画像を複数回読み込む必要がある ◦ lru_cacheを使い、一度読み込んだ画像はcacheしておくことで効率化
  9. AI 18 18 18 上位陣の解法 | 1st place solution •

    3rd stage pipelineを採用 ◦ xgbで簡単なnegative sampleをフィルタ ◦ 3d CNNでcontactを予測 ◦ xgbで後処理 • CNNパート ◦ モデルは3D CNN(resnet50-irCSN)を採用 ◦ player同士 とplayer対groundを別々でモデル学習 ◦ 動画(endzone + sideline)とトラッキングデータを入力 3rd stage pipelineを採用。解法のメインは3d -cnn
  10. AI 19 19 19 上位陣の解法 | 1st place solution •

    対象playerの頭を黒 or 白の円でマスク ◦ 白 or 黒でチームを色分け • trackingデータは鳥瞰図で画像化 ◦ 対象の2playerを大きい円、その他playerを小さい円で描画し画像化 ◦ 鳥瞰図の形で画像化し、動画のフレームと合わせてchannel方向にstack 3rd stage pipelineを採用。解法のメインは3d -cnn https://www.kaggle.com/competitions/nfl-player-contact-detection/discussion/391635
  11. AI 20 20 20 上位陣の解法 | 2nd Place Solution 2nd

    stage pipelineを採用。2.5D + 3DCNNで予測した後、LightGBMで後処理 • 2nd stage pipelineを採用 ◦ 2.5D + 3DのCNN ◦ LightGBMによる後処理 • CNN ◦ モデルは2.5D+3DCNNを採用 ◦ sidelineとendzoneのフレームを連結 ◦ BBOX領域のmaskをchunnel方向に stack,対象player以外も濃さ変えて入力 ◦ distanceの生値を0-255に正規化して 1chunnel分使って画像のように入力 https://www.kaggle.com/competitions/nfl-player-contact-detection/discussion/391740
  12. AI 21 上位陣の解法 | まとめ • 上位陣でもチームによってアプローチが異なっていたが、推論時間をいかに削るかは共通したポ イントのようだった。 ◦ xgbで候補削って3dCNN(1st)

    ◦ 2.5D CNN + 3DCNNの組み合わせ(2nd) ◦ 2DCNN + LSTMで複数フレームを一括予測(5th) • 1位,2位の解法をみると、テーブル特徴と画像を併用する際、テーブル特徴を何かしら工夫して 画像化するというテクニックが共通していた • 今回効いた手法(TSM,前後フレームのstack等)は、実務でも応用できそうなので、ぜひ試してみ たい