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

銅_アルゴコンペ_202201_signate subaru eyesight

銅_アルゴコンペ_202201_signate subaru eyesight

2022/1/31 signate subaru eyesight competition

suguuuuuすぐー

February 15, 2022
Tweet

More Decks by suguuuuuすぐー

Other Decks in Research

Transcript

  1. このコンペ活動について(ワイ周辺でメンバ集めた机の下活動) • スタート: – 2021/5月~ メンバ3人 ⇒ 2021/7月 メンバ6人 ⇒

    2021/2 メンバ3人 • 実績: – Signate:銅メダル1枚、Probspace:銀メダル1枚、Kaggle:まだ0枚!!! • 備考: – コンペって必要あるの?とかはAppendix参照してね。 Phase1 : ~2021/7 Phase2:~2021/12 Phase3 : ~2022/3 目的: 有名なNetを構築し、提出までの フローを学ぶ 成果物: Tensorflow2でベースネット構築 周辺ライブラリの調査 提出フォーマットへの変換 目的: いくつかのNetを構築し、性能改 善のための施策を学ぶ kaggleを調査し、性能改善のた めの施策を学ぶ 成果物: ・複数のNet構築 ・アンサンブルなどのテクニック取得 目的: 効率的な検討・開発を行い、 メダル圏内に入り込む 成果物: ・kubeflowによる自動学習環境 の構築 ほぼ素人たちが、雰囲気ゆるゆるな感じで、半年くらいでコンペ上位を目指す活動です。 いまここ
  2. 機械学習コンペとは?? • 過去の画像系コンペたち・・・ – RSNA-MICCAI Brain Tumor Radiogenomic Classification |

    Kaggle • MRIの画像から神経膠芽腫の遺伝的サブタイプを分類 – NFL Health & Safety - Helmet Assignment | Kaggle • NFL動画から誰のヘルメットが強い衝撃を受けたか予測 – Nishika - ケーブルコネクタの種類判別 • ケーブルが写った画像から、どのUSBのタイプ(typeC?など)が写っているかを予測 目的:特定のタスクに関して、ある期間内でアルゴリズムを開発し、 テストデータに対して良い精度を出す!! 神経膠芽腫の 遺伝的サブタイプ分類 誰のヘルメットが 強い衝撃を受けたか予測 どのUSBのタイプ(typeCなど) が写っているか予測
  3. 補足:機械学習コンペってどういう風に進めるの??? • Public Leaderboard(Public LB) – 実施期間中、テストデータの一部で評価された暫定順位表 • Private Leaderboard(Private

    LB) – それ以外のデータで評価された順位表。すべてのデータで評価するので順位が入れ替わる!! 実施期間中は、”Public Leaderboard”に表示される順位を見ながら着手 最終順位はPrivate Leaderboardで確定 Privateで最終順位が変わる可能性! Publicを過信せず、汎化性能が必要 Public Leaderboard(実施期間中見れる順位) Private Leaderboard(最終確定の順位)
  4. 本コンペの難しかったポイントは2つ ①そもそも実装が大変・・・ ②例外処理への対応が必須 • どういう時に必要? • 水滴、ワイパー、逆光のシーンが存在 • その結果、、、 •

    先行車が撮れない&ステレオデプスがぐちゃぐ ちゃなことがある! • なぜ大変?? • 今回はチュートリアルがない • さらに複数の処理を介したアルゴリズムの 実装が必要 • その結果、、、 • 参加者に対して、提出率がかなり低い • 提出率14%(151/1051人) • 参考:クラス分類の課題 • 提出率59%(465/783人) ワイパーシーン:NとN+1フレーム目の画像 水滴シーン:画像と距離画像
  5. メダル圏内の共通アプローチ概要 先行車速度 2. 先行車 距離認識 3. 速度推定 1. 車検出 右画像

    基本的には、3つの処理ブロックの組み合わせで速度推定! 精度の違いが生まれたのは2点、①いかに時系列ノイズ対応するか、②速度推定を賢く行うか 処理部1 車両検出 処理部2 前方車の距離取得 処理部3 速度推定 視差 画像 先行車 矩形情報 先行車 距離 取り出し 矩形 位置 自車 速度 v0 [km/h] v[km/h] t[h] 0[h] x軸
  6. 車両検出: • 銅メダル(ワイ 47位) – 基本:YOLOv5 • ※以前の別のコンペのモノを流 用し、3時間で適用できた。 –

    例外処理: • 右目が死んでるときは左目の 検出結果を補正して利用 – 備考:Augmentationを調整 • Mosaic:off • 平行移動系:off • 銀メダル(18位) – 基本: YOLOv5 – 例外処理:未記載 • 金メダル(7位) – 基本:yolo v5 – 例外処理: • 前フレームのbboxと最も オーバラップの大きいbboxを 抽出 • オーバーラップが一定以下な ら前フレームのbboxを採用 基本的にはみんなYoloV5。サイッキョYoloV5! ワイは1回の学習で99.5%の精度で先行車検出できたので、ここは差別化要因にならずと判断。 例外が発生するシーン:雨、ワイパー#動画です。 基本的なシーン:#動画です
  7. 前方車の距離取得: • 銅メダル(ワイ 47位) – 基本: • 矩形内の距離の中央値を利用 • その後、EMAで補正処理

    – 例外処理: • 前フレームの距離と5m以上差 があった場合、前フレームの値を 利用 • 連続してミスすることに対応する ために、1フレームおきに例外処 理を適応 • 銀メダル(18位) – 基本: • 矩形内の距離画像の0、 150以下の値を削除 • 四分位偏差の範囲を取り 出して平均 – 例外処理: • 距離変化量の制限をかけて ノイズを除去 • 金メダル(7位) – 基本: • 矩形内の距離画像の0、200以 下の値を削除し、外れ値を除い て平均 • 前フレームまでの先行車の距離 で補正(外れ値除去, exponential smoothing) – 例外処理: • 詳細未記載 フレーム間のばらつきを抑える方法で上位と差分あり。 ワイは、中央値を利用しているだけだが、上位は矩形内で平均をとっている 対応位置の矩形 取り出し
  8. 速度推定: • 銅メダル(ワイ 47位) – 基本: • 等速直線運動を仮定し、前フ レー情報を利用し算出 •

    ガタつくので、EMA処理にて smoothing – 例外処理: • 前の速度と10km/h以上差が あった場合、前フレームの値を利 用 • 銀メダル(18位) – 基本: • 4フレーム前の距離と現フ レームの距離の変化量で速 度を算出 • 1フレーム前の予測速度と 平均 – 例外処理: • 速度変化量の制限をかけて ノイズを除去 • 金メダル(7位) – 基本: • 距離とその差分、自車速度をイン プットとして、LSTMにいれ、相対 速度 – ランダムに30フレーム以上の区間を取 得 • 相対速度を±30km/hに制限 • 自車速度に相対速度を加え、先 行車の速度 • 先行車の速度を0以上に制限 – 例外処理: • 詳細未記載 速度推定の方法で差分あり。ここで大きく差がついた感。 銀メダルとは利用するフレーム量、金メダルとはLSTMの利用で差がついた v0 [km/h] t[h] 0[h] ルール ベース v0 [km/h] t[h] 0[h]
  9. まとめ、構築したライブラリ、所感 • まとめ: – ちゃーーーんと、アルゴを組んで、一つ一つのノイズを取り除くのって重要よね! • 以前のKaggleコンペの時の1位の人もそんな感じで美しいアルゴでした。 – Kaggle NFLコンペ紹介(優勝ポエムを添えて)

    - Qiita • 構築したライブラリ – YoloV5への変換コード (YoloV5は以前のコンペで作成済み) – 多変量LSTM – EMA処理 – カルマンフィルタ(未組み込み) • 所感 – 実装実質2日のわりにコスパがよかった – LSTMは使ったことなかったので、データ成形のイメージが沸かず&調査するのもあきらめてしまった。。。 – 途中、SchyさんがLSTMで軽く試してもらったからやればよかった・・・ • 戦績 – 今のところ、Signateで銅1、probspaceで銀1の戦績。コンペ初めて半年だとボチボチかな。。。
  10. EOF

  11. コンペなんて意味あるの?数%精度向上目指すだけじゃん・・・ “引き出しの広さ”と”スピード感”こそ、Kaggle人材の魅力 • Kaggleをやっている人たちに対して、「0.001ポイント程度の小さい精度を争っても意味がないので は?」と批判をする人がいますが、実務においてわずかな精度を追求することを目的としてKagglerを集 めているわけではありません。 • Kagglerの魅力は、幅広い機械学習問題への取り組み経験から得られる引き出しの広さと、限られた 時間で高いレベルのアウトプットを生み出せるスピード感にあります。 •

    また実務では、限られた時間の中でクイックに分析結果を出して次の業務の方向性を決める必要があ ります。分析アウトプットを出すまでの圧倒的なスピードが、Kagglerの大きな武器であり、非常に高速な PDCAサイクルを回すことが可能です。 第1回:なぜDeNAは「Kaggler」を集めているのか? - ZDNet Japan 会社での開発は、いろんなステークホルダーに確認しながら進めなくてはいけないのでマジで遅い 実力をつけるには、結果を短期間で出さなきゃいけない。つまりコンペだ!
  12. 会社(俺がやってた仕事)でのDNN開発と、コンペの違い(ワイ視点、弊社全体ではない) • 会社でのDNN開発:下図でいう青色のところがメイン – ニーズに合わせて、データセットの構築から入る ←ここに、ほぼほぼ工数がかかる – ぶっちゃけ、クライテリア次第でデータセットの構築でおおよその性能が満たせる – R&Dとかからベースをもらってくることが多いので、大きな変更が入れづらい。。。

    – エッジ前提のため、演算規模を度外視して性能を上げるための工夫は知らなくていい。。。 • Kaggle等コンペ:下図でいう緑色のところがメイン – データセットが固定されてるため、開発の部分がメイン – 回帰問題で解くのか、などの課題に対してのアプローチを検討できる。 会社では、環境構築&データセット構築の作業がメインな感じがする コンペは、データセットが固定されてるためネットワーク、データセットの工夫がメイン DNNワークフロー概要:会社では青メイン、コンペでは緑メイン 会社での DNN開発 ここがメイン コンペでの DNN開発 ここがメイン