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
Kaggle_スコアアップセミナー_DFL-Bundesliga_Data_Shootout編...
Search
株式会社フィックスターズ
May 16, 2023
Technology
1
820
Kaggle_スコアアップセミナー_DFL-Bundesliga_Data_Shootout編/Kaggle_fixstars_corporation_20230509
2023年5月9日に開催した、「Kaggle スコアアップセミナー DFL Bundesliga Data Shootout 編」の当日資料です。
株式会社フィックスターズ
May 16, 2023
Tweet
Share
More Decks by 株式会社フィックスターズ
See All by 株式会社フィックスターズ
コンピュータービジョンセミナー5 / 3次元復元アルゴリズム Multi-View Stereo の CUDA高速化
fixstars
0
140
実践的!FPGA開発セミナーvol.21 / FPGA_seminar_21_fixstars_corporation_20230426
fixstars
0
1.1k
量子コンピュータ時代のプログラミングセミナー / 20230413_Amplify_seminar_shift_optimization
fixstars
0
770
実践的!FPGA開発セミナーvol.18 / FPGA_seminar_18_fixstars_corporation_20230125
fixstars
0
630
実践的!FPGA開発セミナーvol.19 / FPGA_seminar_19_fixstars_corporation_20230222
fixstars
0
560
実践的!FPGA開発セミナーvol.20 / FPGA_seminar_20_fixstars_corporation_20230329
fixstars
0
600
量子コンピュータ時代のプログラミングセミナー / 20230316_Amplify_seminar _route_planning_optimization
fixstars
0
710
量子コンピュータ時代のプログラミングセミナー / 20230216_Amplify_seminar _production_planning_optimization
fixstars
0
530
CPU/GPU高速化セミナー 浮動小数点から文字列への高速変換の論文を読んでみた / cpugpu acceleration seminar 20230201
fixstars
3
1.2k
Other Decks in Technology
See All in Technology
Amazon_CloudWatch_ログ異常検出_導入ガイド
tsujiba
4
1.7k
大規模データ基盤チームのオンプレTiDB運用への挑戦 / dpu-tidb
cyberagentdevelopers
PRO
1
110
いまさらのStorybook
ikumatadokoro
0
160
生成AIの強みと弱みを理解して、生成AIがもたらすパワーをプロダクトの価値へ繋げるために実践したこと / advance-ai-generating
cyberagentdevelopers
PRO
1
200
AI長期記憶システム構築のための LLMマルチエージェントの取り組み / Awarefy-LLM-Multi-Agent
iktakahiro
0
170
Commitment vs Harrisonism - Keynote for Scrum Niseko 2024
miholovesq
6
1.3k
新卒1年目が挑む!生成AI × マルチエージェントで実現する次世代オンボーディング / operation-ai-onboarding
cyberagentdevelopers
PRO
1
180
IaC運用を楽にするためにCDK Pipelinesを導入したけど、思い通りにいかなかった話
smt7174
1
120
Gradle: The Build System That Loves To Hate You
aurimas
2
160
ガチ勢によるPipeCD運用大全〜滑らかなCI/CDを添えて〜 / ai-pipecd-encyclopedia
cyberagentdevelopers
PRO
3
230
Product Engineer Night #6プロダクトエンジニアを育む仕組み・施策
hacomono
PRO
1
500
新卒1年目が向き合う生成AI事業の開発を加速させる技術選定 / ai-web-launcher
cyberagentdevelopers
PRO
7
1.6k
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
327
21k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.2k
Scaling GitHub
holman
458
140k
Code Reviewing Like a Champion
maltzj
519
39k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.7k
Six Lessons from altMBA
skipperchong
26
3.5k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
107
49k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Practical Orchestrator
shlominoach
186
10k
Typedesign – Prime Four
hannesfritz
39
2.4k
Transcript
Copyright© Fixstars Group Kaggleスコアアップセミナー 画像系コンペ DFL – Bundesliga Data Shootout
編
Copyright© Fixstars Group 本セミナーの位置づけ • Kaggle コンペで金メダルの獲得、Kaggle Competition Master の称号獲得
• もともと機械学習の専門家の少なかったエンジニアチームによる、 継続的な Kaggle への取り組み • Kaggle スコアアップセミナー ⚫ 参加したコンペの概要と解法の紹介や、Kaggleに参加してみたい方向けに 複数回の情報発信を企画中 • 今回のセミナー • 画像系コンペティション「DFL – Budesliga Data Shootout」の概要と解法と、 ブログでは書ききれなかった理由と具体的な手段についての解説 • 対象者 • 画像処理と機械学習・深層学習を扱っている方 • 今後 Kaggle に挑戦し、スコアを上げていきたいと考えている方 2
Copyright© Fixstars Group 発表・資料作成者紹介 冨田 明彦 (発表) ソリューションカンパニー 営業企画 2008年に入社。金融、医療業界に
おいて、ソフトウェア高速化業務に 携わる。その後、新規事業企画、 半導体業界の事業を担当し、現職。 3 飯塚 康太 (発表) ソリューション第二事業部 シニアエンジニア 2019年入社。車載向けの深層学習 アプリケーション、特に物体検出・ トラッキングの開発を担当している。 Kaggle Competitions Master 水野 孝祐 (資料作成) ソリューション第二事業部 リードエンジニア 2016年に入社。ディープラーニング を用いた自動車向けの画像認識 アルゴリズム開発に携わる。 Kaggle Competitions Master
Copyright© Fixstars Group 本日のAgenda • フィックスターズのご紹介 • DFLコンペ6位解法紹介 • コンペの概要
• 解法の概要 • 改善手法の詳細 • Q&A / 告知 4
Copyright© Fixstars Group フィックスターズの ご紹介 5
Copyright© Fixstars Group フィックスターズの強み コンピュータの性能を最大限に引き出す、ソフトウェア高速化のエキスパート集団 ハードウェアの知見 アルゴリズム実装力 各産業・研究分野の知見 6 目的の製品に最適なハードウェアを見抜き、
その性能をフル活用するソフトウェアを開 発します。 ハードウェアの特徴と製品要求仕様に合わ せて、アルゴリズムを改良して高速化を実 現します。 開発したい製品に使える技術を見抜き、実 際に動作する実装までトータルにサポート します。
Copyright© Fixstars Group サービス概要 お客様専任のエンジニアが直接ヒアリングを行い、高速化を実現するために乗り越えるべき 課題や問題を明確にしていきます。 高速化のワークフロー コンサルティング 先行技術調査 性能評価・ボトルネックの特定
高速化 アルゴリズムの改良・開発 ハードウェアへの最適化 レポート作成 サポート レポートやコードへのQ&A 実製品への組込み支援 7 高速化したコード オリジナルソースコードのご提供 お客様
Copyright© Fixstars Group サービス提供分野 8 半導体 自動車 産業機器 生命科学 金融
• NAND型フラッシュメモリ向け ファームウェア開発 • 次世代AIチップの開発環境基盤 • 自動運転の高性能化、実用化 • 次世代パーソナルモビリティの 研究開発 • Smart Factory実現への支援 • マシンビジョンシステムの高速化 • ゲノム解析の高速化 • 医用画像処理の高速化 • AI画像診断システムの研究開発 • デリバティブシステムの高速化 • HFT(アルゴリズムトレード)の高速化
Copyright© Fixstars Group サービス領域 様々な領域でソフトウェア高速化サービスを提供しています。大量データの高速処理は、 お客様の製品競争力の源泉となっています。 9 組込み高速化 画像処理・ アルゴリズム開発
分散並列システム開発 GPU向け高速化 FPGAを活用した システム開発 量子コンピューティング AI・深層学習 自動車向け ソフトウェア開発 フラッシュメモリ向け ファームウェア開発
Copyright© Fixstars Group AI・深層学習向け技術支援 AIを使うためのハードウェア選定や、高速な計算を実現する ソフトウェア開発技術で、お客様の製品開発を支援します。 お客様の課題 推論精度を維持したまま計算時間を 短縮したい 組込みデバイス向けにAIモデルを
軽量化したい ご支援内容 AIモデル設計 データの前処理・後処理 推論精度の改善 分散処理による学習高速化 モデル圧縮・推論の高速化 学習計算を高速化して研究開発を 効率化したい 精度と計算時間を両立するAIモデルを 開発したい 10
Copyright© Fixstars Group AIを用いた乳房超音波検査リアルタイム解析システム 慶應義塾大学医学部外科学(一般・消化器)教室様 11 1 超音波検査装置が描出する動画を リアルタイム処理できる高速なAIを開発 2
検査しながらAIによる診断補助が実現 できる 3 見落としを減らし、早期の乳がんの発見と 治療が可能になる 高確率でがん 生命科学 分野 サービス領域 AI・深層学習向け技術支援 高確率で良性腫瘍 子会社のSmart Opinion社で、乳がんの超音波 画像に対し、精密検査の要否を高速かつ高精度に 判別するAIを開発(現在認可申請中)
Copyright© Fixstars Group DFLコンペ 6位解法紹介 12
Copyright© Fixstars Group DFLコンペ6位解法紹介 • 本発表では弊社チームで参加したKaggleコンペ DFL - Bundesliga Data
Shootout の6位解 法を紹介します • 弊社techブログやKaggle discussionにも解法を投稿していますが、単なる手法の説明だけ でなく各手法を採用するに至った背景や理由についても合わせて解説します ◦ tech blog: https://proc-cpuinfo.fixstars.com/2023/02/kaggle-dfl2022/ ◦ Kaggle discussion: https://www.kaggle.com/competitions/dfl-bundesliga-data-shootout/discussion/360872 13
Copyright© Fixstars Group アウトライン • コンペ概要 • 解法概要 • 改善手法の詳細
14
Copyright© Fixstars Group コンペ概要 15
Copyright© Fixstars Group コンペ概要 • DFL - Bundesliga Data Shootout
◦ URL: https://www.kaggle.com/competitions/dfl-bundesliga-data-shootout • タスク ◦ サッカーの試合を撮影した動画が与えられ、その中から特定のアクションが発生したタイミ ングおよび種別(プレイ、スローイン、チャレンジの3種類のいずれか)を識別 • タイムライン (日本時間) ◦ 2022/06/30: コンペ開始 ◦ 2022/10/14: 提出締め切り (最終スコア算出用に2022シーズンのデータ収集&教示開始) ◦ 2022/12/21: コンペ終了 (新しいデータでの最終スコア算出およびLB更新完了) 16
Copyright© Fixstars Group 識別対象 • アクションが発生したタイミング ◦ 動画の先頭を基準とした秒数 • アクションの種別
◦ プレイ ▪ パスまたはクロス(フリーキックやコーナーキックも含む)等、チーム内でボールをやり 取りするアクション ◦ スローイン ▪ ボールがゲームエリア外に出た後に手でボールを投げてプレイを再開するアクション ◦ チャレンジ ▪ 両チームのプレイヤーがボールを自分の制御下に置こうとする(ボールに対する競り合 い、ファウル等)アクション 17
Copyright© Fixstars Group データセット • 与えられたデータセット ◦ train ▪ フルゲーム4試合分の8動画
(1動画約60分, 25fps, 1920x1080) ▪ ハーフゲーム4試合分の4動画 (1動画約60分, 25fps, 1920x1080) ◦ test ▪ 提出動作確認用の32動画 (1動画30秒, 25fps, 1920x1080) ◦ clips ▪ 10試合から短い区間を抽出された200動画 (1動画30秒, 25fps, 1920x1080) ◦ train.csv ▪ train動画に対応するアノテーションデータ • Leaderboard用データセット ◦ Public ▪ フルゲーム1試合分の2動画 ▪ ハーフゲーム4試合分の4動画 (trainのハーフゲームとペアになる動画) ◦ Private ▪ Publicと同等規模の動画 (詳細不明) 18 train.csvの内容例
Copyright© Fixstars Group 評価方法 • Kaggleのサーバ上でPrivateデータセットに対して推論を実行 ◦ 推論は9時間以内に完了させる必要がある ◦ テストデータは6
[動画] x 60 [分/動画] x 60 [秒/分] 25 [fps] = 540,000フレームなので、 540,000 / (9 x 60 x 60) = 16.67 fps以上で推論を実行できる必要がある • 精度評価指標 ◦ Average Precisionベースの指標 ▪ ①: アクション毎に閾値毎のAPを計算 ▪ ②: ①の各閾値での結果を平均 ▪ ③: ②の各アクションでの結果を平均 19
Copyright© Fixstars Group 解法概要 20
Copyright© Fixstars Group ベースライン手法 • 多クラスの画像識別問題として解く方法 (titoさんの手法) ◦ 入力動画の各フレームをそれぞれ4クラス(背景+ターゲット3クラス)のいずれかに識別 するタスクとして学習・推論を実行
◦ 推論時の後処理で時間方向にNMSを適用し、一定期間内の予測を1つに抑制 ◦ モデルはEfficientNet B5を使用 ◦ 学習・推論フレームワークとしてPyTorchおよびtimmを使用 21 t-2 t-1 t t+1 t+2 入力フレーム 参考Notebook https://www.kaggle.com/code/its7171/dfl-benchmark-training https://www.kaggle.com/code/its7171/dfl-benchmark-inference 識別結果 bg bg play bg bg NMS結果 各フレームの識別 時間方向にNMS適用 bg play play play bg
Copyright© Fixstars Group 弊社チームの6位解法 • 時系列方向の情報を加味して多クラスの画像識別問題として解く方法 ◦ 基本的な学習・推論パイプラインはベースライン手法と同様 ◦ 時系列情報を活用するために時間方向に隣接するフレームを結合して処理させる2.5次
元CNNアプローチを採用 ◦ 画像コンペでよく利用される一般的な精度改善トリックを適用 (詳細後述) 22 Kaggle Discussionへの投稿 https://www.kaggle.com/competitions/dfl-bundesliga-data- shootout/discussion/360872 t-2 t-1 t t+1 t+2 2.5次元フレーム 識別結果 bg bg play bg bg NMS結果 各2.5次元フレームの識別 時間方向にNMS適用 bg play play play bg t-2 t-1 t t+1 t+2 入力フレーム 各フレームをグレイスケール変換& 前後フレームを結合
Copyright© Fixstars Group Validation戦略 • ① フルゲーム1試合分をvalデータとして抽出し、残りをtrainデータとする ◦ trainに含む試合のバリエーションを増やしたい (ハーフゲームは可能な限りtrainに含
めたい) ◦ trainとvalそれぞれに同じ試合を含めない ◦ データがあまり多くない場合、train:valの比率は4:1 or 5:1ぐらいが経験的に良い ▪ 今回の分割方法ではtrain:val=5:1になる • ② Cross validationを実施する場合は①の要領で各foldを生成する ◦ 今回のデータにはフルゲーム4試合分が存在したので4 foldまで生成可能 • ③ Local ValスコアとPublic LBスコアの相関が無ければ分割方法を見直す 23
Copyright© Fixstars Group 0 0.1 0.2 0.3 0.4 0.5 0.6
0.7 0.8 0.9 1 2 3 4 5 6 7 8 9 10 11 12 13 14 実験ID スコアの推移 Val AP Public LB Private LB Gold line Silver line Bronze line 実験毎のスコア推移 • Local ValスコアとPublic LBスコアがほぼほぼ相関していたので分割方法を 見直す必要はありませんでした 24 Hold-out validation Cross validation
Copyright© Fixstars Group 改善手法の詳細 25
Copyright© Fixstars Group 改善手法の詳細 • ここからは今回のコンペで適用した各改善手法の詳細について説明していき ます • 基本的にはコンペ開催中に試した時系列順に説明しますが、必ずしもこの順 番で試すのがベストというわけではございませんので、もしご参考いただけ
る場合は各自のコンペに応じて調整してください • また紹介する手法は最終的に採用されたものに絞って説明します。これ以外 にも様々な実験を実施していますが詳細は割愛させていただきます 26
Copyright© Fixstars Group 改善手法の全体像 • 今回の最終解法に採用された手法および各実験結果は以下の通りです 27 実験ID description model
Val AP Public LB Private LB 1titoさんのベースラインモデル b5_ap 0.215 0.249 0.243753 2+ Test time augmentation b5_ap 0.228 0.255 0.247892 3+ ラベルエラーの修正 b5_ap 0.242 0.283 0.296506 4+ 前後1フレーム飛ばしの2.5次元画像を使用 b5_ap 0.312 0.425 0.452767 5+ 入力画像の解像度を960×540に変更、2フレームごとに推論 b5_ap 0.554 0.563 0.619431 6+ loss関数を4クラスBinary cross entropy lossに変更 b5_ap 0.609 0.618 0.664371 7+ カスタムデータローダー b5_ap 0.625 0.634 0.674229 8+ データ拡張の追加 b5_ap 0.7 0.703 0.725812 9+ b5モデルをb0モデルに軽量化、4-foldのモデルアンサンブル b0_ap (4-fold) 0.669 0.72 0.744911 10+ 2フレームごとに推論した際に飛ばしたフレームの予測を線形補間で生成 b0_ap (4-fold) 0.686 0.74 0.755787 11+ 入力画像の解像度を1280×720に変更、3-foldのモデルアンサンブル b0_ap (3-fold) 0.722 0.772 0.798407 12+ Mixupデータ拡張追加 b0_ap (3-fold) 0.747 0.761 0.799769 13+ 3つのb0モデルの内、1つをb1モデルに置き換え b0_ap (2-fold), b1_ap (1-fold) 0.751 0.768 0.802568 14 + 3つのフル学習b0モデル (各モデルは前後1フレーム、2フレーム、3フレーム飛ばしの2.5次元画像を使用) b0_ap (full-fit, time_stride=1, 2, 3) 0.753 0.782 0.803753
Copyright© Fixstars Group ID1: titoさんのベースラインモデル • 既に説明した通り、今回はtitoさんの手法をベースラインとして採用しました ◦ 特に理由が無ければ評価の高い公開Notebookから始めるのが確実です ◦
もし自分でベースラインを作成する場合にはそのタスクで実績のあるシンプルなモデ ルから始めるのがオススメです • スコア ◦ val: 0.215 (baseline) ◦ Public LB: 0.249 (baseline) • 参考Notebook ◦ https://www.kaggle.com/code/its7171/dfl-benchmark-training ◦ https://www.kaggle.com/code/its7171/dfl-benchmark-inference 28
Copyright© Fixstars Group ID2: Test time augmentation • 左右flipを適用 ◦
画像系コンペではmulti-scaleやクロップの拡張もよく適用されますが、処理時間の関 係でバリエーションを増やせないため今回は適用していません ◦ 推論時間が増えてしまうため本来はコンペの最終盤で適用すればよいと思います。た だしTTAは必ず入れたい処理のため、TTAを入れた場合に処理時間制約を満たせること を都度確認しておくことが重要です • スコア ◦ val: 0.215 (baseline) → 0.228 ◦ Public LB: 0.249 (baseline) → 0.255 29
Copyright© Fixstars Group ID3: ラベルエラーの修正 • 与えられた正解データから学習用のラベルを生成する際に意図しない変換が 行われていたため修正しました ◦ たとえKaggle
Grandmasterが作成したNotebookであっても間違いは起こり得るので、 内容を鵜呑みにせず実際に自分の頭で処理内容を理解することが重要です • スコア ◦ val: 0.228 → 0.242 ◦ Public LB: 0.255 → 0.283 • 修正の詳細は以下参照 ◦ https://www.kaggle.com/code/kmizunoster/dfl-benchmark-training-fix-label-error 30
Copyright© Fixstars Group ID4: 時系列情報の活用 • 時系列情報を活用するために時間方向に隣接するフレームを結合して処理させる2.5次元 CNNアプローチを採用 ◦ ベースラインモデルで学習する中でtrainデータに対しても十分に学習出来ていない傾向(つまり未学
習の状態)が見えたため、入力するデータに工夫をする必要性を感じました ◦ 時系列方向の情報を加える方法はいくつか考えられますが、学習・パイプラインをそのまま活用可 能かつシンプルな本手法をまずは採用しました • スコア ◦ val: 0.242 → 0.312 ◦ Public LB: 0.283 → 0.425 31
Copyright© Fixstars Group ID5: 入力画像の高解像度化 (1回目) • ベースラインが456 x 456のところ、960
x 540に上げました ◦ これまでの経験上、許容される範囲内で可能な限り解像度を上げると良い結果が得ら れることが多いです • 解像度を上げたことで推論時間が間に合わなくなったため、1フレーム飛ば して推論する変更も同時に適用しています • スコア ◦ val: 0.312 → 0.554 ◦ Public LB: 0.425 → 0.563 32
Copyright© Fixstars Group ID6: loss関数の修正 • ベースラインではSoftmax cross entropyを使用していましたが、4クラス のbinary
cross entropyに変更しました ◦ loss関数は解きたい問題や評価指標に応じて適切なものを選択することで精度が大きく 変わります ◦ 今回の評価指標では、最初に各クラス独立にスコアを算出した上で最後に平均を取っ ているため、クラス間でスコアを調整するSoftmaxは合っていないと考えました ◦ 今回は4クラスのままにしましたが、背景クラスは前景クラスが全て0である場合と等 価なので、3クラスにすることも可能です • スコア ◦ val: 0.554 → 0.609 ◦ Public LB: 0.609 → 0.618 33
Copyright© Fixstars Group ID7: カスタムデータローダの実装 • 推論時間が足りなくなってきたため、 CPUでの前処理とGPUでの推論処理を パイプラインで処理させることで高速化を実施しました ◦
Kaggle上のGPU NotebookではCPUを2コアまで使用可能 • 本作業の目的は高速化でしたが精度にもプラスの影響がありました。従来の 推論処理では動画から静止画に切り出す際に画質が劣化していましたが、フ ァイルに吐き出さずに処理できるようにしたため精度劣化を抑制できました • スコア ◦ val: 0.609 → 0.625 ◦ Public LB: 0.618 → 0.634 34 改善前 前処理 推論 前処理 推論 前処理 推論 前処理 前処理 前処理 推論 推論 改善後 コア0 コア0 コア1
Copyright© Fixstars Group ID8: データ拡張の改善 • ベースラインはImageNet用のデータ拡張を流用していたため、今回のデータセットに応じ た調整を行いました ◦ 修正前:
RandomResizedCropAndInterpolation, RandomHorizontalFlip, ColorJitter(brightness, contrast) ▪ スケールのrangeが広すぎるため、拡張後の画像にボールの領域が入らないことがありました ◦ 修正後: RandomAffine or RandomPerspective, RandomHorizontalFlip, ColorJitter(brightness, contrast) ▪ スケール以外の画像変形の要素を加えるため、RandomAffineとRandomPerspectiveに変更 ▪ 拡張後の画像を見ながらちょうど良いスケールを設定 • スコア ◦ val: 0.625 → 0.7 ◦ Public LB: 0.634 → 0.703 35
Copyright© Fixstars Group ID9: モデルの軽量化 + モデルアンサンブル • ベースラインのEfficientNet-b5からb0に変更しました ◦
これまでの学習で過学習の傾向も見えていたため、モデルの表現力を落として過学習 を抑制したいという目的もありました • 変更した結果、処理時間に余裕が生まれたためfold-wiseのアンサンブル処理 を追加しています • スコア ◦ val (4-fold): 0.669 ◦ Public LB: 0.703 → 0.72 36 EfficientNet-b0 (fold 0) 入力画像 EfficientNet-b0 (fold 1) EfficientNet-b0 (fold 2) EfficientNet-b0 (fold 3) 平均 予測
Copyright© Fixstars Group ID10: 線形補間処理の追加 • 1フレーム飛ばしで生成した予測について、飛ばしたフレームの予測を隣接 フレームの結果から線形補間する処理を追加しました • スコア
◦ val (4-fold): 0.669 → 0.686 ◦ Public LB: 0.72 → 0.74 37
Copyright© Fixstars Group ID11: 入力画像の高解像度化 (2回目) • さらに精度を上げるため解像度を960 x 540から1280
x 720に変更 • 4-foldのアンサンブルでは推論時間が間に合わなかったため、3-foldのアン サンブルに変更 • スコア ◦ val (3-fold): 0.722 ◦ Public LB: 0.74 → 0.772 38
Copyright© Fixstars Group ID12: Mixupの追加 • Mixupを追加しました ◦ timmであればオプションで簡単にON/OFF可能 •
これまでの改善と異なり、valは向上した一方でPublic LBは劣化しましたが、 localのスコアを信頼してMixupを最終解法でも採用しています • スコア ◦ val (3-fold): 0.722 → 0.747 ◦ Public LB: 0.772 → 0.761 39
Copyright© Fixstars Group ID13: 一部モデルの変更 • 処理時間にやや余裕があったため3-foldのモデルの内、1つをEfficientNet- b1に変更 • スコア
◦ val (3-fold): 0.747 → 0.751 ◦ Public LB: 0.761 → 0.768 40
Copyright© Fixstars Group ID14: 全学習データを用いて再学習 • これまでのbestの設定で全データ学習を行いました • 全データを使用して学習することでfold-wiseのアンサンブルが出来なくなったた め、時系列方向のtime_strideを変更した3モデルを用意しアンサンブルを実行し
ています ◦ time_strideを大きくすることで長期的な 特徴を獲得し、challenge等の難しい アクションの精度向上が狙い • スコア ◦ val (3-fold): 0.751 → 0.753 ◦ 各time_strideで3-foldで学習した モデルを使用して算出 ◦ Public LB: 0.768 → 0.782 41 t-2 t-1 t t+1 t+2 time_stride=1 t-2 t-1 t t+1 t+2 入力フレーム t-2 t-1 t t+1 t+2 time_stride=2 t-2 t-1 t t+1 t+2 入力フレーム t-2 t-1 t t+1 t+2 time_stride=3 t-2 t-1 t t+1 t+2 入力フレーム
Copyright© Fixstars Group 改善毎のスコア推移まとめ • val APの高い2モデルを最終提出 42 実験ID description
model Val AP Public LB Private LB 1titoさんのベースラインモデル b5_ap 0.215 0.249 0.243753 2+ Test time augmentation b5_ap 0.228 0.255 0.247892 3+ ラベルエラーの修正 b5_ap 0.242 0.283 0.296506 4+ 前後1フレーム飛ばしの2.5次元画像を使用 b5_ap 0.312 0.425 0.452767 5+ 入力画像の解像度を960×540に変更、2フレームごとに推論 b5_ap 0.554 0.563 0.619431 6+ loss関数を4クラスBinary cross entropy lossに変更 b5_ap 0.609 0.618 0.664371 7+ カスタムデータローダー b5_ap 0.625 0.634 0.674229 8+ データ拡張の追加 b5_ap 0.7 0.703 0.725812 9+ b5モデルをb0モデルに軽量化、4-foldのモデルアンサンブル b0_ap (4-fold) 0.669 0.72 0.744911 10+ 2フレームごとに推論した際に飛ばしたフレームの予測を線形補間で生成 b0_ap (4-fold) 0.686 0.74 0.755787 11+ 入力画像の解像度を1280×720に変更、3-foldのモデルアンサンブル b0_ap (3-fold) 0.722 0.772 0.798407 12+ Mixupデータ拡張追加 b0_ap (3-fold) 0.747 0.761 0.799769 13+ 3つのb0モデルの内、1つをb1モデルに置き換え b0_ap (2-fold), b1_ap (1-fold) 0.751 0.768 0.802568 14 + 3つのフル学習b0モデル (各モデルは前後1フレーム、2フレーム、3フレーム飛ばしの2.5次元画像を使用) b0_ap (full-fit, time_stride=1, 2, 3) 0.753 0.782 0.803753
Copyright© Fixstars Group コンペを通じて得た 知見共有 43
Copyright© Fixstars Group コンペを通じて得た知見 • Kaggleで過去にあまり開催されていない種類のタスクは金メダルを狙うチャンス ◦ 定番のタスク(Image classification, Semantic
segmentation, Object detection等)におい ては過去の知見が大量に存在し、ある程度手法が確立されているため、いかに効率よく大量 に実験を回し続けるかが勝負のカギになると思われます ◦ 一方で今回のコンペでは過去の知見があまり無く、単純な試行錯誤ではスコアを伸ばすのは 難しい状況だったと思われます。逆に言うと弊社チームのようなワンアイデアでも金メダル に直結するスコアを出せることが分かりました • (既に言い古されていることではありますが) Localの検証がやはり大事 ◦ 今回の改善作業を進める中で早期にLocal環境とPublic LBでスコアの相関を取れたので、と てもスムーズに改善作業を進めることができました 44
Copyright© Fixstars Group まとめ • Kaggle DFLコンペで6位を獲得した解法を紹介しました • 最終解法に至るまでの各実験で取り入れた改善手法について具体的な手法と 採用理由についても解説しました
• 今後画像系コンペに参戦される方のスコアアップの参考になれば幸いです 45
Copyright© Fixstars Group Thank you! お問い合わせ窓口 :
[email protected]
46