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

金_kaggle_hubmap_202307_instance-segmenataion

 金_kaggle_hubmap_202307_instance-segmenataion

めでたくkaggle masterになりました。
grandmasterに向けてガンバリマス。

コンペリンク:https://www.kaggle.com/competitions/hubmap-hacking-the-human-vasculature/overview

解法リンク:https://www.kaggle.com/competitions/hubmap-hacking-the-human-vasculature/discussion/428301

suguuuuuすぐー

August 04, 2023
Tweet

More Decks by suguuuuuすぐー

Other Decks in Research

Transcript

  1. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation DATE

    1/xx サマリ:概要に解法リンク • 参加コンペ: – HuBMAP - Hacking the Human Vasculature – 概要は右参照 • 順位: – 10位/1064チーム(ゴールド) • アプローチ概要: – YoloV7 Instance Seg 5foldと、疑似ラベルによるデータ水増し • チームについて: – 社内勉強会メンバを収集。 • Sugupoko submi割合 87/127投稿!貢献割合はでかいと思う。。。 • 所感: – 全体: • 専門ラベル、素人ラベル、未ラベル全てをどう使うかがポイントなコンペに感じた。 • LBとPBが相関していたので提出に迷いはなかった。(privateはそんな良くな かったけど。。) • 疑似ラベルを付与して良いものを選定するという、過去のコンペのソリューション を参考にしたおかげで性能が出たと思う。 • 20230803時点で公開されてる上位のソリューションは基本的に疑似ラベル あるので、思想は同じと思う。 – マインド面: • モチベーションコントロールが難しかった・・・ • 途中から性能が上がらずモチベーション低下・・・ • まだまだモチベーションコントロールと実験量が3流だな、、、と反省。 コンペ 概要 細胞のインスタンスセグメンテーションを実施(血管、糸球体、分からない) 血管の検出結果だけがスコアリングされる。 ①専門家ラベラーデータ、②素人ラベラーのデータ、③ラベル無しが配布 結果
  2. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation DATE

    2/xx コンペ概要 ★コンテストの目的 この競争の目的は、毛細血管、細動脈、細静脈などの微小血管構造のインスタンスをセグメント化することです。健康なヒト 腎臓組織のスライドから 2D PAS 染色された組織像画像でトレーニングされたモデルを作成します。 微小血管構造のセグメンテーションを自動化するあなたの助けは、血管が人間の組織にどのように配置されているかについての研 究者の理解を改善するでしょう。 ★文脈 あなたの体の臓器や組織の適切な機能は、あなたの細胞の相互作用、空間組織化、および特殊化に依存します—それらの37 兆個すべて。非常に多くの細胞があるため、それらの機能と関係を決定することは途方もない仕事です。 細胞をマッピングするための現在の取り組みには、人体の血液血管系を主要なナビゲーションシステムとして使用する血管系共 通座標フレームワーク(VCCF)が含まれます。VCCFは、全身レベルから単一細胞レベルまで、すべてのスケールレベルを横断し、毛 細血管構造をアドレスとして使用して細胞の位置を特定する独自の方法を提供します。しかし、研究者が微小血管系について 知っていることのギャップは、VCCFのギャップにつながります。微小血管系の配置を自動的にセグメント化できれば、研究者は実世 界の組織データを使用して、それらのギャップを埋め、血管系をマッピングし始めることができます。 コンペティションホストのHuman BioMolecular Atlas Program(HuBMAP)は、人体の健康な細胞をマッピングするためのオープンで グローバルなプラットフォームを開発したいと考えています。HuBMAPの研究者は、最新の分子生物学および細胞生物学技術を 使用して、細胞が体全体で互いに持っている接続を研究しています。 微小血管系に関してはまだ多くの未知数がありますが、機械学習の洞察により、研究者は利用可能な組織データを使用して、 これらの小さな血管が体全体にどのように配置されているかについての理解を深めることができます。最終的には、細胞間の関係 が私たちの健康にどのように影響するかを特定する血管共通座標フレームワーク(VCCF)とヒューマンリファレンスアトラス(HRA)の構 築への道を開くのに役立ちます。
  3. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation DATE

    3/xx データセットの作り • 「Dataset」と「WSI」という2つの概念が存在 – Datasetとは? • 専門家のラベラー(ちょっと)と、素人ラベラー(ちょっとより多い)、未ラベル(たくさん)の3種類に分けられる。 • 専門家のラベラーのラベルはちゃんとしてるが、素人ラベラーのデータはミスが多く含まれている – WSIとは? • 被験者ごとの病理サンプルのことで、画像全体のこと。下記のようなものです。 • これが512x512に分割された状態で配布されます。(なので穴抜けとかも存在) 専門家ラベラーのデータセット Dataset1のWSI1のデータ 素人ラベラーのデータセット Dataset2のWSI2のデータ
  4. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation DATE

    4/xx コンペの裏設定ポイント(個人の予測) • ポイント:リーダーボードに依存しない汎化性能をどこまで出せるか。 – 理由①: • データセットが少ない & 専門ラベラー・素人ラベラーがいるので品質がバラバラ & 未ラベルデータが大量 – 理由②: • パブリックのリーダーボードでは学習データに含まれるWSIのみだが、プライベートでは未知のWSIのデータが 評価データ 汎化性能を意識しないと、最終スコアが著しく落ちるようにコンペが設計されてた(可能性が高い) 未ラベルデータ 素人ラベルデータ 専門家ラベルデータ WSI番号
  5. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation DATE

    5/xx WSIごとのデータセットの画像特徴量分布(TSNE) wsi2? wsi1 wsi4 wsi3 ラベル付きデータは◦で囲んだ部分。未ラベルの配布データはそれより広いので、疑似ラベルの付与は必須 と分析できる。(ちなみに、評価データはどこに分布するか分からない) WSI番号 参考: https://www.kaggle.c om/competitions/hub map-hacking-the- human- vasculature/discussio n/417267
  6. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation DATE

    6/xx Hubmap 2023 10th place solutions by sugupoko Training flow Pretrain Yolov7seg Dataset : ds2 only1fold 、100epoch Yolov7seg Predictions ds2&ds3 Pseudo Label ds2&ds3 Train Yolov7seg Dataset : ds1 5fold、100epoch Pretrain Yolov7seg Dataset: pseudo ds2&ds3 only1fold 、100epoch weight Train Yolov7seg Dataset : ds1 5fold 、100epoch Inference flow weight YoloV7 Fold0,1,4 Post Processing Get Largest mask with connected component From @fnands notebook A quick YOLOv7 Baseline | Kaggle Several parameters are changed. Mainly resolution(512=>640) From @fnands notebook A Quick YOLOv7 Baseline [Inference] | Kaggle Revise the NMS code. Make it utilize the mask of the fold selected by NMS. And, add post processing. Only the largest masks were retained. Resolution 640 Conf_th = 0.001 Iou_th = 0.55 LB0.359、PB:0.418 LB0.517、PB:0.549 weight Pickup data w/ predicted conf Conf at instance >0.5 Average conf per tile > 0.6 Sample Result Over detect!!!! Remove dilate 全体像
  7. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation DATE

    7/xx Hubmap 2023 10th place solutions by sugupoko Training flow Pretrain Yolov7seg Dataset : ds2 only1fold 、100epoch Yolov7seg Predictions ds2&ds3 Pseudo Label ds2&ds3 Train Yolov7seg Dataset : ds1 5fold、100epoch Pretrain Yolov7seg Dataset: pseudo ds2&ds3 only1fold 、100epoch weight Train Yolov7seg Dataset : ds1 5fold 、100epoch Inference flow weight YoloV7 Fold0,1,4 Post Processing Get Largest mask with connected component From @fnands notebook A quick YOLOv7 Baseline | Kaggle Several parameters are changed. Mainly resolution(512=>640) From @fnands notebook A Quick YOLOv7 Baseline [Inference] | Kaggle Revise the NMS code. Make it utilize the mask of the fold selected by NMS. And, add post processing. Only the largest masks were retained. Resolution 640 Conf_th = 0.001 Iou_th = 0.55 LB0.359、PB:0.418 LB0.517、PB:0.549 weight Pickup data w/ predicted conf Conf at instance >0.5 Average conf per tile > 0.6 Sample Result Over detect!!!! Remove dilate 独自ポイント: ①ドメインをなるべく広げる事前学習&②専門家が付けたラベルに寄せる ②専門家が付けたラベルに寄せるの部分 Discussionにて、素人ラベラーのデータを混ぜるとセグメン テーションの精度が低下することが分かっていたので、疑似ラ ベル付与ミスのない専門家のみのデータでFinetuning ①ドメインをなるべく広げる事前学習の部分 画像のドメインが違うことはEDAで分かっていたので、未 ラベル画像すべてを使うように疑似ラベルを利用。 推論のConfidenceが高いもの&画像全体のインスタン スの平均が高い画像のみを選定
  8. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation DATE

    8/xx Hubmap 2023 10th place solutions by sugupoko Training flow Pretrain Yolov7seg Dataset : ds2 only1fold 、100epoch Yolov7seg Predictions ds2&ds3 Pseudo Label ds2&ds3 Train Yolov7seg Dataset : ds1 5fold、100epoch Pretrain Yolov7seg Dataset: pseudo ds2&ds3 only1fold 、100epoch weight Train Yolov7seg Dataset : ds1 5fold 、100epoch Inference flow weight YoloV7 Fold0,1,4 Post Processing Get Largest mask with connected component From @fnands notebook A quick YOLOv7 Baseline | Kaggle Several parameters are changed. Mainly resolution(512=>640) From @fnands notebook A Quick YOLOv7 Baseline [Inference] | Kaggle Revise the NMS code. Make it utilize the mask of the fold selected by NMS. And, add post processing. Only the largest masks were retained. Resolution 640 Conf_th = 0.001 Iou_th = 0.55 LB0.359、PB:0.418 LB0.517、PB:0.549 weight Pickup data w/ predicted conf Conf at instance >0.5 Average conf per tile > 0.6 Sample Result Over detect!!!! Remove dilate コンペに合わせた調整:①Yoloの入力解像度を変更②推論時のパラメータを変更 ①解像度の変更 YoloのSegmentation headが入力解像度に対して1/4になるので、 入力をなるべく大きくするように変更。 配布データは512x512だが、640x640に上げて学習。 事前学習モデルがあるので、ネットワークの変更はできなかった。。。 ②推論時パラメータの変更 LBを見ながら、閾値を調整。 未知のデータに対してはConfが低く、過検出の方が良い結果になる コトが分かる。
  9. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation DATE

    9/xx その他 • うまくいかなかったこと – 疑似ラベル付与を2週行う – Yolov8(学習と推論) – NMS⇒WSF(WBFのインスタンスセグメンテーション)への変更 • 💥 Sartorius: TTA with Weighted Segments Fusion | Kaggle • うまく実装できなかったこと – tileを結合して再生成したデータで学習 • やれなかったこと – stain toolで水増し – 外部データを使った学習 • 提出できなかった最高性能のモデル – 入力解像度を800まで上げたモデル • 小さい認識結果の影響度が高かったのかも。
  10. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation DATE

    10/xx 参考にした関連コンペ • Wheat detection(物体検出):Global Wheat Detection | Kaggle – 疑似ラベル付与などを参考にした • Global Wheat Detection | Kaggle • 細胞検出コンペ(インスタンスセグ):Sartorius - Cell Instance Segmentation – 疑似ラベルと最後のファインチューニングの思想を参考にした • https://acro-engineer.hatenablog.com/entry/2022/02/02/120000
  11. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation DATE

    11/xx 他の上位陣との共通する重要ポイント (分かりやすいまとめから引用:Kaggle HuBMAP2023 上位解法まとめと復習 (zenn.dev)) • まずは何といってものこのコンペで重要だったことは以下の点だと思います。 1. Dalation の使用の有無 2. どの Dataset を信じるか • 1 の問題が Public LB でだけなぜか絶大に有効だったため、多くの人が罠にはまったのではないかと思います。いわゆる shake で すね。 • その理由も議論されていて、それに対して各が独自の分析をして結論を導いたようですがその分析の甘さなどが勝敗を分けたように 感じます。全体を通して、dilation はそこまで有効ではなかったようでした。 • 有効だったシーンは Detection は画像の端での漏れがあったりするため、タイルでの繋がりを保管するために効いているとCVを可 視化比較した時点思いましたが皆さんはどのような理由でしたか? • 2 については、 1 を引き起こす説明付けにもなったりしたため、特に重要だったと思います。 • 上位陣は、Dataset:2 の不確かさを正しく見極める分析を行なっているように感じます。そのため、解法にも Dataset:2 を Dataset:1 で学習したモデルの推論と比較したり、Pseudo Labaling(擬似ラベル)で付け直すなどの処理が現れています。 • 全体的には、Public:Private どちらも有効な Clean Data(Dataset) を見つけることで、Dilation の有無に関わらず、安定 して高いスコアを出すようなモデリングができるかが勝敗を握っていました。
  12. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation DATE

    12/xx ソリューション一覧 • 7位 – HuBMAP - Hacking the Human Vasculature | Kaggle • 9位 – HuBMAP - Hacking the Human Vasculature | Kaggle • 12位 – HuBMAP - Hacking the Human Vasculature | Kaggle • 19位 – HuBMAP - Hacking the Human Vasculature | Kaggle • 30位 – HuBMAP - Hacking the Human Vasculature | Kaggle • 55位 – HuBMAP - Hacking the Human Vasculature | Kaggle
  13. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation DATE

    14/xx やることリスト • やり残し – ラベルの修正(変にインスタンスが分割されてる部分がある)コンペ理解(結局血管だけでいいんだっけ?) • 血管のみでした。 – 推論時に半tileずらしで推論(画面端の高精度化) – stain tool?で水増し。(色?HSV水増しの調整) • もしくはStyle transfer (https://github.com/bethgelab/stylize-datasets) – 2段回認識(どうしてもインスタンスの認識ミスが出る。。。) • Mask-rcnnの形。検出、セグのところをアンサンブル – MultilabelStratifiedKFold with 5 folds (https://github.com/trent-b/iterative-stratification) – Domain generalization – セルの大きさに対する性能の可視化⇒解像度問題 • Sugupoko – 済:2週疑似ラベル付与。 • 失敗・・・ – 済:yolov7、ds2でpretrain。Ds1で本学習 – 済:Dataset3に疑似ラベル付けて学習(疑似ラベルはyolov8xでつけてもいいかも) • How:疑似ラベル付与⇒タイル内の平均Confidenceが0.6以上のタイルのみ学習に利用 – 済:tileを結合して再生成したデータで学習 • Leakしないようにしなきゃいけない・・・(火山の時と同じような感じでやってみたが、ラベル付与ミスしてるっぽい。) – 済Yoloの解像度を上げて提出 – 済yoloのアンサンブルを修正 – 済: WBFの理解と適応 – 済: Yolov7のパラメータ理解 – 済: Yolov7のTTA修正 • Flipは性能低下 – 済:アンサンブル – 済: Dataset2のラベル修正。ラベル抜けがあるっぽい?(疑似ラベルで修正?) • kfuji – Unet – Yolov8(学習と推論) • Hatakee – mmdetection
  14. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation DATE

    23/xx baseline V0 精度:0. 330 ① train ds1&ds2 (5fold)
  15. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation DATE

    24/xx レシピ_exp01 V1 精度:0.437 ① Pretrain ds2(only fold0) ② Finetuning ds1 w/ ① (5fold) Sartorius - Cell Instance Segmentation | Kaggle Kaggle Wheatコンペからの学び 〜 物体検出コンペで当たり前に行われている(っぽい)こと - オットセイの経営日誌 (hatenablog.com)
  16. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation DATE

    25/xx レシピ_exp05 V1 精度:0.462 ① Pretrain ds2 (only fold0) ② Finetuning ds1 w/ ① (5fold) ③ Pseudo label to ds3 – Ds3 : Pickup tile w/ average confidence >0.6、 bbox conf >0.4 ④ Finetuning ① w/ ③ & ds1(5fold) Sartorius - Cell Instance Segmentation | Kaggle Kaggle Wheatコンペからの学び 〜 物体検出コンペで当たり前に行われている(っぽい)こと - オットセイの経営日誌 (hatenablog.com) V3精度:0.494 ① Pretrain ds2 (only fold0) ② Finetuning ds1 w/ ① (5fold) ③ Pseudo label to ds3、ds2 – Pickup tile w/ average confidence >0.4Ds2: Pickup tile w/ average confidence >0.5, bbox conf > 0.5 ④ Finetuning ① w/ ③ data (only fold0) ⑤ Finetuning ④ w/ ds1 (5fold) V2 精度:0.442 ① Pretrain ds2 (only fold0) ② Finetuning ds1 w/ ① (5fold) ③ Pseudo label to ds3, ds2 – Ds3 : Pickup tile w/ average confidence >0.6、 bbox conf >0.4 – Ds2: Pickup tile w/ average confidence >0.5, bbox conf > 0.5 ④ Finetuning ① w/ ③ & ds1 (5fold) epoch: 84 metrics/mAP_0.5(M): 0.67136 epoch: 79.0 metrics/mAP_0.5(M): 0.6343 epoch: 83 metrics/mAP_0.5(M): 0.60875 epoch: 94.0 metrics/mAP_0.5(M): 0.62476 epoch: 67 metrics/mAP_0.5(M): 0.66475 average: 0.640784 V1 ①終了:model(fold0) ②開始:model(fold0)➡終了:model(fold0~4) ③開始:model(fold0~4)➡ds3疑似 ④開始:model(fold0)➡終了:model(fold0~4) V3 ①終了:model(fold0) ②開始:model(fold0)➡終了:model(fold0~4) ③開始:model(fold0~4) ➡ds3、ds2疑似 ④開始:model(fold0)➡model(fold0) ⑤提出:model(fold0)➡終了: model(fold0~4)
  17. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation DATE

    26/xx レシピ_exp05 続き V4精度:0.482 ① Pretrain ds2 (only fold0) ② Finetuning ds1 w/ ① (5fold) ③ Pseudo label to ds3、ds2 – Pickup tile w/ average confidence >0.4 – Ds2: Pickup tile w/ average confidence >0.5, bbox conf > 0.5 ④ Finetuning ① w/ ③ data (only fold0) ⑤ Finetuning ④ w/ ds1 (5fold) ⑥ Pseudo label to ds3、ds2 – Pickup tile w/ average confidence >0.4 – Ds2: Pickup tile w/ average confidence >0.5, bbox conf > 0.5 ⑦ Finetuning ① w/ ⑥ data (only fold0) ⑧ Finetuning ⑦ w/ ds1 (5fold) epoch: 70.0 metrics/mAP_0.5(M): 0.66804 epoch: 82 metrics/mAP_0.5(M): 0.6507 epoch: 99 metrics/mAP_0.5(M): 0.60357 epoch: 92 metrics/mAP_0.5(M): 0.63009 epoch: 67.0 metrics/mAP_0.5(M): 0.69634 average: 0.649748
  18. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation DATE

    27/xx Satorius : Sartorius - Cell Instance Segmentation | Kaggle 512x512 512x512 masked 512x512 in bbox masked 512x512 Semantic segmentation 背景ノイズ除去? instance segmentation 絞り込んだ後でinstance化