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

NLF 9th place solution

yuki
March 29, 2023

NLF 9th place solution

yuki

March 29, 2023
Tweet

More Decks by yuki

Other Decks in Technology

Transcript

  1. コンペ概要 NFLの試合の中で起こったプレイヤー同士の衝突、とプレイヤーと地面の衝突を予測する • 提供されていたデータ • 動画 • Endzone(ゴール側からの動画) • Sideline(サード側からの動画)

    • All29(全体を俯瞰する動画) • ヘルメットのbboxデータ • Endzone、Sidelineはヘルメットのbboxを提供 • 昨年のwinner solutionで作ったデータ • Trackingデータ • 座標 • スピード • 加速度 • など • 評価指標 • Matthews Correlation Coefficient 3 Endzone All29
  2. ソリューション (Overview) CV:0.791/Public:0.782/Private:0.775 5 ffmpeg YOLOv5 <Endzone> Efficientnet-b0 <Sideline> Efficientnet-b0

    MLP 2nd stage channel 0 channel 2 channel 1 YOLOでプレイヤー領域をクロップ。 CNNの入力はプレイヤー画像のほかに、衝突を検出するプレイヤーの ヘルメットbboxと、全プレイヤーのヘルメットbboxのチャネルを追加。 ffmepgを使って 動画を各フレームの画像に変換 Endzone画像、Sideline画像をそれぞれEfficientnet に入力し、中間ベクトルを取得。中間ベクトルはセンサー データと結合したあとMLPに入力し衝突を予測。 Endzone、SidelineのEfficientnetの重みは共有。 動画データ センサーデータ trackingデータ NN 入力したフレームの予測だけでなく、 前後のフレームも予測するように学習。 前後のフレームの予測値は2nd stageで活用。 予測値 Feature Engineering Feature Engineering Resources: RTX3090*1、 RTX3080*1 (VRAMは8GB程度しか使わなかった) NN 次のような特徴量を作成 ・プレイヤー間の距離、プレイヤー同士が同じチームか、 スピードの差分、プレイヤーが向いている方向がどのくらい 近いか、プレイヤーの最大スピード、これらのshift徴量 (多くの特徴量を作ったが、効いたのは少なかった)
  3. ソリューション(2nd stage) 6 LightGBM LightGBM LightGBM Moving Average seed値アンサンブル。(単純平均) 閾値が重要となるので、Seed値アンサンブルす

    ることによってfoldごとのばらつきを均す狙いがあ る。 移動平均で平滑化。 移動平均のWindowはプレイ ヤー同士の衝突と地面との衝突 それぞれで探索 センサーデータ Feature Engineering NN予測値 LightGBM Simple Average 次のような特徴量を作成 ・プレイヤー間の距離 ・プレイヤー同士が同じチームか ・スピードの差分 ・NNの予測値 ・プレイヤーのスピード ・これらの履歴特徴量 Submission.csv 1st stageのCNNが2DCNNで時間方向の情報を扱えていないので、 LightGBMにshift特徴量を含めることで、時間軸の情報を補っている。 1st stage CV:0.769 -> 2nd stage CV:0.791
  4. スコア推移 GBDT 特徴量エンジニアリングすれば するほど精度あがるので楽しい NN NNのnotebookが公開されて、 順位を落としたので着手 アンサンブル この頃から本当にやることがなくなる。 アンサンブル試すも精度改善は僅か

    t-1からt+1を予測 極意本を読みマルチタスクを思い出す bbox channel追加 これを思いついた時は「天才か?」 と思ったけどみんなやってた YOLO ちょっと上のチーム名がちらつきYOLOを試す LGBM 2nd stage この頃時間を考慮したモデルを作れていないこと に課題を感じていたた。 LGBMにshift特徴量を使用
  5. 効かなかったものなど • 2.5DCNN • 多くのチームが採用していた。自分はうまく扱いきれず、2DCNNとほとんど精度が変わらず、 2.5DCNNは学習データ作成に時間がかかるため早々に切り捨てた • Tracking座標のマッピングデータ • プレイヤーの位置関係が重要ではと考えたが、これ単体では精度出なかった

    • All29 • 人の検出などもうまくできず、使える形にできなかった。(他のチームもうまく活用できてなかった) • P2PとP2Gでモデルを分けた • ひょっとしたら効果あったかもしれないが、2モデルを作るのが大変で途中でやめた • 大きな画像、大きなモデル • 画像は128*128で十分だった • モデルもefficientnet-b0で十分だった • 1st stageで精度あがるが2nd stageでは精度よくなないということが続き苦しんだ • NNのテーブルデータは特徴量エンジニアリング頑張っても精度改善できなかった • PMIPで特徴量の寄与を確認して半分くらい削った 8
  6. その他 • 高速化のために学習時画像は全部メモリに乗せた。推論時もメモリに乗る限り乗せた • Submit時にバグが混入することが度々ありデバッグに時間をとられた • CV改善してなくてもたまにsubmit • 学習notebookをほとんど修正なしでsubmitできるように修正 •

    Localで作成したtestと推論時のtestが一致することを確認 • 最初からチーム組んでワイワイやりたかった! • ソロゴールドがかかっていたのでぎりぎりまでチーム組まなかった • 残り1週間でチームマージできることは意外と少ない。いくらチームメンバーからよい手法を教えてもらっても、モデルの構造を大きく変え るような実験を残り1週間でやるのは大変。アンサンブル+αぐらいが限界。アンサンブルのために急いで推論notebook高速化した • 過去のNFLコンペのソリューションあまり読まなかった。読めばよかった • みんなTSM使っててコンペ終わって「何それ?」ってなった 9