Slide 1

Slide 1 text

AI 2023.05.25 立松 郁也 株式会社ディー・エヌ・エー + GO株式会社 Kaggle NFL3コンペ振り返り

Slide 2

Slide 2 text

AI 2 はじめに

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

AI 4 4 本日の内容 Kaggleの1st and Future-Player Contact Detectionコンペにチームで参加し5thでした 本日はコンペの概要や解法について共有したいと思います

Slide 5

Slide 5 text

AI 5 項目 01|コンペ概要 02|自チームの解法 03|上位陣の解法

Slide 6

Slide 6 text

AI 6 01 コンペ概要

Slide 7

Slide 7 text

AI 7 7 7 コンペ概要| コンペの目的 NFLのプレイ動画やセンサーデータから、プレイヤー間の接触を検知することが目的 ● NFLのプレイ動画やトラッキングデータ等が提供される ● 参加者は2人のプレイヤー同士またはプレイヤーとグランドの接触有無を予測 https://www.kaggle.com/code/robikscube/nfl-player-contact-detection-getting-started

Slide 8

Slide 8 text

AI 8 8 8 コンペ概要| 提供データ プレイ動画、トラッキングデータ、ヘルメットBBOX等がデータとして提供 ● プレイ動画 ○ 各プレイ毎に3種類の動画が存在(sideline,endzone,all_view) ○ 解像度 720x1280 ,59.94fps ● プレイヤー毎のトラッキングデータ ○ player毎の位置座標、速度、加速度等 ● ヘルメットのBBOX (sidelineとendzoneのみ) ○ 前回コンペ(NFL2)の課題がヘルメットBBOXの検出だった ○ 今回のデータに対する、前回の上位モデルによる推論結果のBBOXが提供された ● 正解ラベル ○ 2player間 または player対grounndの接触有無

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

AI 10 02 自チームの解法

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

AI 12 12 12 自チームの解法 | 1st stage概要 画像やトラッキング特徴をCNN、TSM、BiLSTMを通し、複数フレームをまとめて予測 公開された2.5DCNNと異なり、一度に複数フレーム予測することで学習、推論が高速化 https://www.kaggle.com/competitions/nfl-player-contact-detection/discussion/392290

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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系の特徴など

Slide 15

Slide 15 text

AI 15 15 15 自チームの解法 | 2nd stage 特徴重要度 GBDTの特徴重要度はCNNの予測値が最も寄与し、ついでdistanceやframe等が上位 https://www.kaggle.com/competitions/nfl-player-contact-detection/discussion/392290

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

AI 17 03 上位陣の解法

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

AI 21 上位陣の解法 | まとめ ● 上位陣でもチームによってアプローチが異なっていたが、推論時間をいかに削るかは共通したポ イントのようだった。 ○ xgbで候補削って3dCNN(1st) ○ 2.5D CNN + 3DCNNの組み合わせ(2nd) ○ 2DCNN + LSTMで複数フレームを一括予測(5th) ● 1位,2位の解法をみると、テーブル特徴と画像を併用する際、テーブル特徴を何かしら工夫して 画像化するというテクニックが共通していた ● 今回効いた手法(TSM,前後フレームのstack等)は、実務でも応用できそうなので、ぜひ試してみ たい