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

銀_202302_kaggle_NFL_Player_contact_detection

sugupoko
March 14, 2023

 銀_202302_kaggle_NFL_Player_contact_detection

1枚目の銀メダル。
解法はコチラ⇒
https://www.kaggle.com/competitions/nfl-player-contact-detection/discussion/391727

sugupokoは諦めない心を身に着けた!
#実験の効率化と、新しい視点を入れることを目指したい。

sugupoko

March 14, 2023
Tweet

More Decks by sugupoko

Other Decks in Technology

Transcript

  1. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation
    DATE
    1/xx
    サマリ:概要に解法リンク
    • 参加コンペ:
    – 1st and Future - Player Contact Detection | Kaggle
    • 概要:
    – NFLの動画から選手同士が接触している期間を検出
    • 入力:2視点の動画+メタ情報(ヘルメット位置、加速度など。)+選手同士のペア情報
    • 出力:フレームごとの接触判定結果
    • 順位:
    – 49位/936チーム(シルバー)
    • アプローチ概要:
    – ベース2.5D CNN(efficientnet b0 & b1)
    • ポイント:接触する瞬間部分のオーバーサンプリング
    • ポイント:2視点動画を使った2.5D+メタ情報を同時入力するDNN
    • ポイント:TSMモジュール差し込み
    • ポイント:マルチタスクラーニングで、前後フレームも予測させるようにプラス
    • ポイント:2モデルアンサンブル、TTA
    • チームについて:
    – 社内勉強会メンバを収集。(やったこと:リーディング、モデル作成、モデル性能改善)
    • 所感:
    – 全体:
    • 初めて諦めずにkaggleを最後までやり切ってみて、色々学ぶことがあった。諦めない心の成長をした気が
    する。
    • やってみたかった実験はあるが心が持たずやりきれなかった。。。
    – コンペでムズイと感じたところ:
    • ラベルの偏り:接触してる期間のデータが少ない。接触する瞬間をうまく見つけ出すのが難しい
    • 実装の工夫:サンプルが動作が遅く、学習推論共に高速化が必要。
    – その他:
    • チームでコンペはやっぱり難しい。
    – 同じ社内で誘った人と実施したが、情報共有の難しさや業務の忙しさなどからギャップが生じ
    てしまう、、、
    コンペ
    概要
    2視点の動画+メタ情報(ヘルメット位置、加速度など。)+選手同士のペア情報
    結果
    各選手同士が接触している期間を検出!

    View full-size slide

  2. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation
    DATE
    2/xx
    kaggle
    • 1位
    • 1st and Future - Player Contact Detection | Kaggle
    • 2位
    • 1st and Future - Player Contact Detection | Kaggle
    • 3位
    • 1st and Future - Player Contact Detection | Kaggle
    • 4位
    • 1st and Future - Player Contact Detection | Kaggle
    • 1st and Future - Player Contact Detection | Kaggle
    • 5位
    • 1st and Future - Player Contact Detection | Kaggle
    • 6位
    • 1st and Future - Player Contact Detection | Kaggle
    • 1st and Future - Player Contact Detection | Kaggle
    • 9位
    • 1st and Future - Player Contact Detection | Kaggle
    • 14位
    • 1st and Future - Player Contact Detection | Kaggle
    • 16位
    • 1st and Future - Player Contact Detection | Kaggle
    • 18位
    • 1st and Future - Player Contact Detection | Kaggle
    • 19位
    • 1st and Future - Player Contact Detection | Kaggle
    • 31位
    • 1st and Future - Player Contact Detection | Kaggle
    • 35位
    • 1st and Future - Player Contact Detection | Kaggle
    • 41位
    • 1st and Future - Player Contact Detection | Kaggle
    • 45位

    View full-size slide

  3. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation
    DATE
    3/xx
    上位陣に多かったアプローチ値はコチラ。
    • 2-stage型がほとんど(11/16 投稿が2stage型)
    • 認識結果・画像特徴量取り出し⇒LGBM, XGBで stacking
    • player & player、player & groundを分割しモデリング(4/16投稿)
    • データを見てみると傾向は違うように見える。が、player&Groundには、無意味なデータが多く含まれ
    ていたとのツイートもあり。
    • どのプレイヤー同士かを分かるようにヒントを与える(4/16投稿)
    • やり方としては、BBOXを画像化し同時入力、画像の頭塗りつぶし、画像に矩形表示など。
    • こういう場合、どのプレイヤーが対象なのかが画像だけだと分かりづらい。

    View full-size slide

  4. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation
    DATE
    4/xx
    Twitter (コンペ後のTwitterの方が良い情報が落ちてる。)
    • shinmura0さんはTwitterを使っています: 「NFLの感想を4つほど。 今回の一番の収穫は、1DCNN(UEMUさん
    に教えてもらった)。 平滑化の目的でXGB_predictionに、最初は移動平均を使っていたが、1DCNNの方が圧倒
    的だった。他のコンペでも使える汎用技術なので、動画系のみならず、使っていきたい。 (1/6)」 / Twitter
    • yukiさんはTwitterを使っています: 「自分の解法はざっくりこんな感じ YOLOで選手領域クロップ、2DCNNで選手
    画像に加えてヘルメットbboxのchannelを追加、マルチタスクで±1stepの衝突も一緒に予測、NNの出力をLGBM
    でshift特徴量を加え学習、最後に移動平均 細かな工夫などは他にもあるけどこれくらいやればPublic0.77くらいは
    行けてた」 / Twitter
    • K_matさんはTwitterを使っています: 「kmat CNNパートのみシェア。 2DCNNをプレイヤ周辺でそれぞれおこなってマスクっぽいのを予測させて、プレイ
    ヤー間の積をとって、インターセクションの最大値をとりました。交差領域からロスを発生させるので安定性◎ https://t.co/1g2bRyfeho」 / Twitter
    – ラベルは作ってない。お気持ちで学習させたらそれになった。
    • shinmura0さんはTwitterを使っています: 「psiチームの解法、これはマルチモーダルコンペに革命をもたらすのでは!? まさか、画像の1チャンネルをべ
    た塗り(2選手の距離などで)してCNNに入れるとか、思いつかない。 これは、鳥コンペ2(「音源」と「鳴いている場所」が与えられる)とかでも応用
    できるし、凄い。 https://t.co/DRHSxGhuSM」 / Twitter
    • arutema47さんはTwitterを使っています: 「Tracking結果を画像化してCNNに突っ込むのは思いつかなかった(混戦になるとどのヘルメットに着目し
    てるかわからないので有効そう) 僕はヘルメットにboxを追加するという力技でした.. https://t.co/yZPqea9O6R」 / Twitter
    • ★ ★ ★ ★くるぴーさんはTwitterを使っています: 「2stage(nn -> nnの推論値+lgbm/xgb) にしなかったのが敗因か… LGBMとNNを最後アン
    サンブルすりゃいいと思ってたんだけど、こっちが最近流行ってるのかな。2stageが強いのか、複数fold使っていることでcvが安定したのか、はたまたその
    両方だったのか…?」 / Twitter

    View full-size slide

  5. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation
    DATE
    5/xx
    Twitterピックアップ

    View full-size slide

  6. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation
    DATE
    6/xx
    ベースラインのネットワーク構成
    2.5D CNN
    With TSM
    concat
    -24~24,
    4frame skip
    -24~24,
    4frame skip
    Endzone
    view
    Sideline
    view
    13frame
    13frame
    MLP
    Meta
    18個
    sigmoid
    concat
    1040
    64
    FC
    Crop with tracking info
    #Cropsize = helmet w*5
    Resize to 128x128
    0 ~ 1
    FC
    sigmoid
    target Frame
    Contact or not
    13 frames
    Contact or not
    Crop with tracking info
    #Cropsize = helmet w*5
    Resize to 128x128
    入力データ:
    画像:1選手に着目し、時間方向含めて切り出し。2視点を同時利用。
    メタ情報 : 中心フレームとなるデータのメタ情報を利用。

    View full-size slide

  7. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation
    DATE
    7/xx
    •以下実験メモ

    View full-size slide

  8. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation
    DATE
    8/xx
    やること、やったこと
    • やること
    – 速度アップ系
    • データリダクション(間引きとか)
    • 推論コード高速化(ffmpegで画像化している部分を消したい)
    • 動画生成完了ごとに推論を実行させるようにする。
    – 抜本的に精度改善系
    • 事前学習モデル作成
    • ヒートマップ同時入力
    • LightGBM併用(メタを効率的に使うために。)
    • ポスト処理にて補正。
    – 確率とメタを入力⇒推定
    • 課題:時系列の検出境界部分を何とかしたい
    – 境界部分の正解ラベルを平均して滑らかに??
    • アイディア:キーポイントを利用する?
    • モデルの見直しをする。
    – ベース性能改善系
    • マルチヘッドで、ヒートマップを推論できるようにする
    • バックボーン変更
    – Resnet50、efficientnetb4, convnextv2以外
    • Imbalanced sampler
    • 3クラスにして学習( NoContact、地面、プレイヤー)。
    – 狙い:地面とプレイヤーの違いを意識させるため。
    • 時間方向の密度を増やす。
    • Matthews Correlation Coefficient
    – 1st and Future - Player Contact Detection | Kaggle
    – 実験
    • 画像のみで確認
    • LightGBMで実験
    – 仮説
    • プレイ開始時のプレイやの周辺密度で傾向が変わりそう。要傾向確認!
    – 密集している方がむずいのか、疎なほうがむずいのか。
    – ぶつかった後に地面にぶつかるとかどうなのだろう。
    • ラベルの作りが6フレームおきなので、中間フレームを埋めなきゃいけない。
    • やったこと
    – 速度アップ系
    • 事前切り出しでデータ生成⇒失敗
    • Numpyに書き換え⇒よさげ
    – 抜本的に精度改善系
    • G_flugで分ける。地面ぶつかりと、プレイヤー同士ブツカリをモデル分離⇒精
    度大改善(0.694)
    – ベース性能改善系
    • TSMの利用⇒効果あり +0.15(0.709)
    – https://www.kaggle.com/competitions/dfl-bundesliga-
    data-shootout/discussion/360236
    • 切り出すフレーム範囲の変更⇒validは微妙
    – 現状24frameの4飛ばし⇒12frameの2飛ばし
    • バックボーン変更⇒効果ありそう
    – Efficientnetb4>resnet50
    – 学習未集束:Convnext
    • 切り出し方変更⇒効果ありそう
    – ヘルメット周辺、メットサイズx10で切り出し
    • FOCAL LOSS⇒再実行してみる
    – LossがNanになった。。。
    • Imagenet 事前学習の利用
    – LossがNanになる・・・・
    – 実験
    • 画像抜きで、メタデータだけで学習⇒うんち
    • 片方の視点+メタで確認
    – 両方の視点ある方が良い。特性が異なる。
    • データの並び順を修正(bt* c * w* h入力に変更) (mmcv-15)
    – 効果無しっぽい。変化なし
    • 1フレームずつ±16フレームインプット (mmcv13)
    • ヒートマップ時系列6フレームおき(効果無し。)
    • オーグメンテーションが±6を修正。

    View full-size slide

  9. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation
    DATE
    9/xx
    P:まったくできない
    0.0_58190_002259-42030-46176_V24_H89.mp4 0.0_58205_000809-28103-52445_H35_V82.mp4
    0.0_58209_001445-38622-40621_H13_V30.mp4 0.0_58211_002891-39973-52411_H10_V30.mp4

    View full-size slide

  10. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation
    DATE
    10/xx
    P:まったくできない
    0.0_58218_003210-37095-38619_V74_H96.mp4 0.0_58219_000820-37778-47818_H56_V75.mp4
    0.0_58240_000086-38947-52536_V11_V13.mp4

    View full-size slide

  11. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation
    DATE
    11/xx
    V03-1の結果分析
    Game-playごとのMCC分布
    0.0_V90_H78_58537_003722-42443-43297.mp4

    View full-size slide

  12. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation
    DATE
    12/xx
    分布解析(コンタクトあるモノのみ)
    ①各game_play-player_idsにおける
    フレームの長さ
    ②各game_play-player_idsにおける
    コンタクトしているフレームの長さ
    ③各game_play-player_idsにおける
    コンタクト÷フレームの長さ
    考察・分かるコト:
    ・toGroundとtoPlayerで、 game_play-player_idsごとの見ているフレームの長さは違う。(①より)
    ・地面とぶつかる長さは長めが多い。一方、プレイヤーは短い (②より)
    ・長さは違うが、分布は似ているようにデータセットが作成されている(③より)
    #プレイヤーの方が多めに含まれているように見えるかも。

    View full-size slide

  13. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation
    DATE
    13/xx
    分布解析(全部あるモノのみ)
    ①各game_play-player_idsにおける
    フレームの長さ
    非コンタクト時の長さ

    View full-size slide

  14. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation
    DATE
    14/xx
    • Distanceが2<を取り出し
    – contact時の距離は99%が2以下なので。
    • 分かるコト
    – contact時は正規分布
    – 非contact時は増加

    View full-size slide

  15. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation
    DATE
    15/xx
    メタデータの相関確認
    Contact == 1 Contact == 0
    • distanceに対する相関の違いは?
    – どうやって比較すればいいんだろう・・・

    View full-size slide

  16. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation
    DATE
    16/xx

    View full-size slide

  17. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation
    DATE
    17/xx
    • game_play: プレイの一意のゲーム キーとプレイ ID の組み合わせ。
    • game_key: ゲームの ID コード。
    • play_id: プレイの ID コード。
    • nfl_player_id: プレイヤーの ID コード。
    • datetime: 10 Hz でのタイムスタンプ。
    • step: プレイ開始を基準としたプレイ内のタイムステップ。
    • position: プレーヤーのフットボールの位置。
    • team: プレーヤーのチーム。ホームまたはアウェイ。
    • jersey_number:選手の背番号
    • x_position:フィールドの長軸に沿ったプレーヤーの位置。下の図を参照してください。
    • y_position: フィールドの短軸に沿ったプレーヤーの位置。下の図を参照してください。
    • speed: 速度 (ヤード/秒)。
    • distance: 前の時点からの移動距離 (ヤード)。
    • orientation: プレイヤーの向き (度)。
    • direction: プレイヤーの動きの角度 (度)。
    • acceleration: ヤード/秒^2で表した合計加速度の大きさ。
    • sa: プレーヤーが動いている方向の符号付き加速度ヤード/秒^2。

    View full-size slide

  18. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation
    DATE
    18/xx
    CNN
    pool
    fc
    4ch

    View full-size slide

  19. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation
    DATE
    19/xx
    コンペ概要

    View full-size slide