Skip to the content.

RSNA Breast Cancer Competitionを終えて。

コンペの概要

The goal of this competition is to identify breast cancer. You’ll train your model with screening mammograms obtained from regular screening.Your work improving the automation of detection in screening mammography may enable radiologists to be more accurate and efficient, improving the quality and safety of patient care. It could also help reduce costs and unnecessary medical procedures.

(この大会の目的は、乳がんを発見することです。定期検診で得られた検診用マンモグラフィーを使ってモデルをトレーニングします。検診用マンモグラフィーの検出の自動化を改善するあなたの仕事は、放射線技師がより正確で効率的になり、患者ケアの質と安全性を向上させることができるかもしれません。また、コストや不必要な医療処置の削減にもつながる可能性があります。)

公式サイトGoal of the Competitionより抜粋)

上記のように、本コンペは、マンモグラフィー画像から、乳がんかどうかのニクラス分類を行なうコンペティションである。マンモグラフィー検査は、定期健康診断でも行われるため、乳がんの患者は全体の約2%と、ターゲットの比率がとても偏っているのが特徴である。また、本コンペは、ノートブックコンペであり、推論時間(データの読み込みや前処理・後処理含む)に8時間という制限があった。加えて、元データがDICOMフォーマット(参考リンク:DICOMとは?)という、医療用画像のフォーマットであった。それらを処理するには一度pngやjpgフォーマットに変換する必要があるが、その変換には2時間超かかるので、かなり時間制限がタイトであった。その中でいかに多くのモデルやデータ加工の工夫を盛り込めるか、というのが鍵となった。

My Approaches

Overview

以前に参加した2つのコンペ(Amexコンペとsingle cellコンペ)は、テーブルデータコンペであり、モデルはGBDT(勾配ブースティング木)しか使ったことがなかったので、ディープラーニングの勉強をするために参加。コンペが始まってすぐ参加したので、3ヶ月間していた。初めは、discussion読みと、PyTorchの勉強や画像処理の基礎のインプットに努め、12月頃からコード読み書きに取り組んだ。最終的には、自分で学習させたモデルと公開モデルのアンサンブルでサブミットし、private スコアで銅メダル圏内にも入ったが、コンペの序盤にprivateで友人にノートブックを共有していたのがコンペ規約に反してしまい、リーダーボード及び、コンペ参加記録からも削除されてしまった(つまり、本コンペに参加していないことになった)。とても悔しくはあったが、DLについてほぼ知らない状態から、結果を残せるまでに成長できたので、よしとした。

Training Part

公開ノートブック1を参考に、Stratified-Kfoldを行ったTFrecords2を保存し、それを用いて、ハイパーパラメータを調整した上で、モデルを5foldsで学習させた3。Stratified-Kfoldでは、ターゲットの比率を各foldで揃えて学習させた。

Inference Part

Models

用いたモデルは次の三種類で、最終提出では、上からそれぞれ約15:15:70の割合でアンサンブルさせた。

Rejection Methods

また、複数モデルのアンサンブルの際に、ターゲットがとても偏っており、約98%が陰性であることを用いて、推論時間の大幅な高速化を行った。 これは、一つ目のモデルの推論結果で、各患者に対して、陽性の確率が出力されるが、以降のモデルでは、一つ目の予測の陽性確率が高いものから上位25%のみを推論することにし、下位75%については、ほとんど陰性で、全体のスコアに影響は与えないだろうとみなして、棄却することにした。 この工夫を行うと、例えば、各モデルが推論に20minかかるモデルを5つアンサンブルする場合では、100min->20+20*4*25%=40minに短縮できる。私の場合、上記の合計11のモデルの推論時間が、約540min->200minに大幅短縮でき、厳しい時間制約の中で多くのモデルをアンサンブルすることができた。

Test Time Augment

以下のような推論時のデータ拡張(Test Time Augment)も行ったが、最終的にはそれほどスコアに大きな効果は見られなかった。

Results

最終提出したノートブックのprivateスコアは、0.41であり、銅メダル圏内であった。 また、提出したノートブックの中で最高のprivateスコアは0.43であり、(小数点第3位以下の値によっては)銀メダル圏内に入る可能性もあるスコアだった。しかし、コンペから除外されたので、当然メダルは取れなかった。

My Experiments

最終的なsubmitには反映されなかった試行錯誤を記しておく。

Yolov5を用いたcrop&flip

画像の左右(胸の付け根と先の向き)が混ざっており、lateralityのみでは画像の左右を反転できなかったので、このノートブックで左右を揃えようとした。が、モデルの推論を行う時間がネックだったところ、のちに出た公開ノートブックにOpenCVを用いたcrop&flipを行えるものが出たので、そちらを採用。

確率->予測の後処理

ラベルが1の画像であっても、その画像からはがんを検知し得ない画像があったことが考えられたので(他の画像に映っているガンから、その患者が癌と診断された場合など)、各画像に対して出力された確率値から、各患者と左右に対する予測を作る際に、出力確率の平均だけでなく、最大値と平均値の平均値も用いてみたが、スコアが下がったので、採用しなかった。なお、本コンペのMetricはprobabilistic F1 scoreであり、普通のF1-valueが閾値で0か1に直さねばならなかったところ、確率値の出力に対してF1-valueを定義したものになっている。が、結局閾値を定めて0,1に丸めた方がスコアが出るので、皆そうしていた。

viewごとモデル

view5ごとに画像の向きが異なっており、がんの現れ方なども異なる(ドメインシフトが起こっている)可能性があったので、viewごとのモデルも作ったが、精度が出なかったので、利用しなかった。

auxilillary loss

メタデータを画像分類に生かす一つの方法がであり、このノートブックを参考に、コンペの序盤は用いていたが、思ったほどスコアが伸びないことと、コンペの時間的にConvNextV2&SE-ResNeXt50のパイプラインに組み込めなかったので、見送り。

GBDT

DLモデルで抽出した画像の特徴量とメタデータをGBDTで回帰するアイデアもあったが、実装しきれなかった。

外部データ

外部データが豊富であったので、これらを有効活用したかったが、ドメインシフトが怖かったのと計算リソース的に断念。だが、優勝者は利用していたらしい。

Learn from Winners

mr.robot’s 1st place solution

概要

cancerdetectman’s 2nd place solution

概要

感想

Aux lossやviewごとモデルなど、自分が試してはみたが、有効性を確認できなかった手法がいくつかあったので、自分の検証方法が間違っていたと反省。きちんとCVできる環境を整えるのが一番難しいのだろうなと感じた。データセット・モデル・訓練コード・推論コード、、、と、実験で変える部分がすべての工程に渡るので、汎用的なCVコードを書くのはとても難しいが、重要。また、ターゲットの偏ったタスクでは、ターゲットの偏りを考慮して、バッチごとの学習を安定させることが重要だと感じた。単にアップサンプリングorダウンサンプリングを行うことしか知らなかったので、勉強になった。あと、毎度感じるが、優勝者ともなると実験の数が半端ない。自分は、学生の身分を生かして多くの時間を割いたつもりだが、優勝者の実験数には到底及ばなかった。 外部データセットを用いたバックボーン学習は、自分はコンペの時間と実装の負担的に難しかったが、今度のコンペでは、時間を割いて実装してみたい。 <!–

H.B.M.F.’s 3rd Place Solution (Part of data processing and Image-level model)

Racers’ 5th place solution

Remek team’s ⭐️ Remek & Andrij - #9 solution ⭐️

Slow Start’s 10th Place Solution –>


  1. 公開ノートブック:RSNA ConvNextV2 Training Tensorflow TPU 

  2. 自作データセット:rsna-preprocessing-tfrecords-garudakai-stkfoldrsna_convnext_5models_stkfold 

  3. 自作ノートブック:RSNA ConvNextV2 Training Tensorflow TPU 

  4. 公開ノートブック:Blending SE-ResNeXt50 and ConvNextV2 

  5. マンモグラフィー画像のviewには、胸を挟む向きによって、上下で撮るか、斜めで撮るかの二種類あり、それらごとでモデルを学習させる、ということ。