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

金_kaggle_hubmap_202307_instance-segmenataion

sugupoko
August 04, 2023

 金_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

sugupoko

August 04, 2023
Tweet

More Decks by sugupoko

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流だな、、、と反省。
    コンペ
    概要
    細胞のインスタンスセグメンテーションを実施(血管、糸球体、分からない)
    血管の検出結果だけがスコアリングされる。
    ①専門家ラベラーデータ、②素人ラベラーのデータ、③ラベル無しが配布
    結果

    View full-size slide

  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)の構
    築への道を開くのに役立ちます。

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  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

    View full-size slide

  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
    全体像

    View full-size slide

  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が高いもの&画像全体のインスタン
    スの平均が高い画像のみを選定

    View full-size slide

  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が低く、過検出の方が良い結果になる
    コトが分かる。

    View full-size slide

  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まで上げたモデル
    • 小さい認識結果の影響度が高かったのかも。

    View full-size slide

  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

    View full-size slide

  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 の有無に関わらず、安定
    して高いスコアを出すようなモデリングができるかが勝敗を握っていました。

    View full-size slide

  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

    View full-size slide

  13. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation
    DATE
    13/xx
    検討中のメモ

    View full-size slide

  14. 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

    View full-size slide

  15. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation
    DATE
    15/xx
    Dataset1 wsi1

    View full-size slide

  16. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation
    DATE
    16/xx
    Dataset1 wsi2

    View full-size slide

  17. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation
    DATE
    17/xx
    Dataset2 wsi1

    View full-size slide

  18. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation
    DATE
    18/xx
    Dataset2 wsi2

    View full-size slide

  19. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation
    DATE
    19/xx
    Dataset2 wsi3

    View full-size slide

  20. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation
    DATE
    20/xx
    Dataset2 wsi4

    View full-size slide

  21. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation
    DATE
    21/xx
    Wsi1,2
    • ds1 • ds2 • all

    View full-size slide

  22. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation
    DATE
    22/xx
    Weighted Segments Fusion
    1model

    View full-size slide

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

    View full-size slide

  24. 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)

    View full-size slide

  25. 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)

    View full-size slide

  26. 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

    View full-size slide

  27. 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化

    View full-size slide

  28. Platform Technology Division Copyright 2020 Sony Semiconductor Solutions Corporation
    DATE
    28/xx
    EoF

    View full-size slide