Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
NLF 9th place solution
Search
yuki
March 29, 2023
Technology
880
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
NLF 9th place solution
yuki
March 29, 2023
More Decks by yuki
See All by yuki
Claude Code の 地味に知られてなさそうな機能 7選
yururoi
0
8
yukiCup 2023 Summer 開催報告
yururoi
0
2.3k
ChatGPTでAutoML作ってみたかった
yururoi
0
1k
鳥蛙コンペ - Team Exodia
yururoi
3
800
Other Decks in Technology
See All in Technology
GopherCon @シアトル に行ってきました
logica0419
0
290
AI時代のアウトプット――変わったこと、変わらないこと / Devsumi 2026 Kansai #devsumi
jnchito
0
580
あなたの知らないバージョン命名規則
sat
PRO
2
770
ハッカソンで入賞した話 @ Findy LT
asari194617
0
1.5k
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
5k
アクセスキーが漏れた日にやるべきこと- 無効化の先にある本当の対応
kazzpapa3
0
330
Kiro Crew で始める マルチエージェント開発
miu_crescent
PRO
0
180
VLMで2.3万枚のPyCon JP写真を検索!
terapyon
1
540
Oracle AI Databaseデータベース・サービス: BaseDB/ExaDB-Dの可用性
oracle4engineer
PRO
1
910
500名弱規模の組織のPythonプロジェクト(dbt) をどう管理するか?
hiracky16
0
140
電話に出る Python のログの話
shinnosuke_kishida
0
270
OpenID for Verifiable Credentials 実装から見えた相互運用性確保までの道のり(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
280
Featured
See All Featured
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
67
57k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
820
A Soul's Torment
seathinner
6
3.5k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.4k
A designer walks into a library…
pauljervisheath
211
24k
We Have a Design System, Now What?
morganepeng
55
8.3k
Writing Fast Ruby
sferik
630
63k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
250
sira's awesome portfolio website redesign presentation
elsirapls
0
340
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.9k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
360
Transcript
NFL コンペ 9th place solution
誰? 名前:yuki Twitter:@yuki93753711 趣味:kaggle バイク ステッカー配り 2
コンペ概要 NFLの試合の中で起こったプレイヤー同士の衝突、とプレイヤーと地面の衝突を予測する • 提供されていたデータ • 動画 • Endzone(ゴール側からの動画) • Sideline(サード側からの動画)
• All29(全体を俯瞰する動画) • ヘルメットのbboxデータ • Endzone、Sidelineはヘルメットのbboxを提供 • 昨年のwinner solutionで作ったデータ • Trackingデータ • 座標 • スピード • 加速度 • など • 評価指標 • Matthews Correlation Coefficient 3 Endzone All29
結果 チームで9位。ゴールドメダル獲得🎉 4
ソリューション (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徴量 (多くの特徴量を作ったが、効いたのは少なかった)
ソリューション(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
スコア推移 GBDT 特徴量エンジニアリングすれば するほど精度あがるので楽しい NN NNのnotebookが公開されて、 順位を落としたので着手 アンサンブル この頃から本当にやることがなくなる。 アンサンブル試すも精度改善は僅か
t-1からt+1を予測 極意本を読みマルチタスクを思い出す bbox channel追加 これを思いついた時は「天才か?」 と思ったけどみんなやってた YOLO ちょっと上のチーム名がちらつきYOLOを試す LGBM 2nd stage この頃時間を考慮したモデルを作れていないこと に課題を感じていたた。 LGBMにshift特徴量を使用
効かなかったものなど • 2.5DCNN • 多くのチームが採用していた。自分はうまく扱いきれず、2DCNNとほとんど精度が変わらず、 2.5DCNNは学習データ作成に時間がかかるため早々に切り捨てた • Tracking座標のマッピングデータ • プレイヤーの位置関係が重要ではと考えたが、これ単体では精度出なかった
• All29 • 人の検出などもうまくできず、使える形にできなかった。(他のチームもうまく活用できてなかった) • P2PとP2Gでモデルを分けた • ひょっとしたら効果あったかもしれないが、2モデルを作るのが大変で途中でやめた • 大きな画像、大きなモデル • 画像は128*128で十分だった • モデルもefficientnet-b0で十分だった • 1st stageで精度あがるが2nd stageでは精度よくなないということが続き苦しんだ • NNのテーブルデータは特徴量エンジニアリング頑張っても精度改善できなかった • PMIPで特徴量の寄与を確認して半分くらい削った 8
その他 • 高速化のために学習時画像は全部メモリに乗せた。推論時もメモリに乗る限り乗せた • Submit時にバグが混入することが度々ありデバッグに時間をとられた • CV改善してなくてもたまにsubmit • 学習notebookをほとんど修正なしでsubmitできるように修正 •
Localで作成したtestと推論時のtestが一致することを確認 • 最初からチーム組んでワイワイやりたかった! • ソロゴールドがかかっていたのでぎりぎりまでチーム組まなかった • 残り1週間でチームマージできることは意外と少ない。いくらチームメンバーからよい手法を教えてもらっても、モデルの構造を大きく変え るような実験を残り1週間でやるのは大変。アンサンブル+αぐらいが限界。アンサンブルのために急いで推論notebook高速化した • 過去のNFLコンペのソリューションあまり読まなかった。読めばよかった • みんなTSM使っててコンペ終わって「何それ?」ってなった 9