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

Kaggle Carvanaコンペでの取り組み

Bf71b646607bbe6916ccefc6548ebedd?s=47 lyakaap
November 17, 2017

Kaggle Carvanaコンペでの取り組み

Kaggle Tokyo Meetup #3 で発表させて頂いた時の資料です。内容はKaggleのCarvana Image Masking Challengeでの取り組みについてです。
※一部画像にぼかしを入れてあります。ご了承ください。

Bf71b646607bbe6916ccefc6548ebedd?s=128

lyakaap

November 17, 2017
Tweet

Transcript

  1. Carvana 3rd Place Solution @lyakaap

  2. ΞδΣϯμ š ⾃⼰紹介 š コンペ概要 š ⾃分の⼿法の紹介 š 他の上位者の解法 š

    振り返って 1
  3. ࣗݾ঺հ š ⻑野⾼専 → 筑波⼤に編⼊(現在B4) š コンピュータービジョン系の研究室所属 š like :

    寿司、ラーメン、⿇雀 2
  4. Carvanaίϯϖͷ֓ཁ š 正式名称:Carvana Image Masking Challenge š ⾞画像の背景切り抜きの精度を競う 3

  5. Carvanaίϯϖͷ֓ཁ š ⾊々な⾞の16視点画像 š 背景はほぼ均⼀ š 評価指標はDice係数 : !|#∩%| #

    &|%| š train: 約5000枚, test: 約100000枚 4 16 view 教師データ
  6. Ϟσϧͷબ୒ɾߏங š セグメンテーション系のコンペではとりあえず U-Net1 š Dilated Convolutionも結構いい感じ š そこでU-NetとDilated Convolutionを組み合わせた

    5 1U-Net: Convolutional Networks for Biomedical Image Segmentation [Olaf Ronneberger, et al. 2015]
  7. U-Net š U字型で左右対称 š 全結合層を持たない š スキップ結合を持つ 6

  8. Dilated Convolutionͱ͸ š 間隔を空けて畳み込むConvolution š Dilation rate(膨張率)に応じてスキップする幅が変わる (膨張率=1で通常のConvolution) š パラメーター数を増やさずに受容野を広げることが出来る

    7
  9. Dilated Convolutionͷੵ૚ š Multi-Scale Context Aggregation by Dilated Convolutions [Fisher

    Yu, et al. 2015] š 様々な膨張率のDilated Convolutionを積層させることを提案 8 Conv
  10. U-NetͷͲͷҐஔʹ഑ஔ͢Δ͔ š “Bottleneck” (図中⾚枠)の部分を置き換える 9

  11. 10 U-Net + Dilated Convolution

  12. ਫ਼౓ݕূ(U-Net + DC) š Bottle Neckの部分を変えたものを3パターン実験(層数は全て同⼀) š 全て通常のConvolutionを使ったバージョン š Dilated

    Convolutionを積層させたバージョン š Dilated Convolutionを並列に適⽤させたバージョン 11 ௨ৗόʔδϣϯ ੵ૚όʔδϣϯ ฒྻόʔδϣϯ 0.9905 0.9918 0.9916 input: 256x256px
  13. Pseudo Labeling š 半教師付き学習の⼀種 š テストデータを疑似の訓練データとして使う⽅法 š 正則化の効果 12

  14. Pseudo Labeling ͷղઆਤ 13 訓練済み モデル Test Data ༧ଌ Pseudo

    Labeled Data Train Data モデル ܇࿅ 1 2
  15. Pseudo LabelingͷޮՌ š スコア及び汎化性能の向上に⼤きく貢献 (Private LB:34 → 6位) š Pseudo

    Labelの正確さはスコアに影響 š Pseudo Labelをどんどん良いものにチェンジ š ここまで精度に効いた理由 š テストデータの量が多い š 精度が出やすいタスクだった 14 Public LB Private LB Pseudo Label ͳ͠ 0.99703 0.99687 Pseudo Label ͋Γ 0.99717 0.99719
  16. Ξϯαϯϒϧ š 5fold @1536 x 1024px + 6fold @1920 x

    1280px š fold間で変えたもの: š 各種seed(initializer, データの更新の順番) š Pseudo Labelのサンプリングレート š TTA(Test Time Augmentation) š 訓練時に使⽤した⽔平⽅向の反転のみ 15
  17. ςετը૾ʹର͢Δ༧ଌͷධՁ š 予測の精度が低いテスト画像を特定 š 正解が分からないのにどうやって精度が低いか判断する? š 異なるモデル間での予測結果のばらつきを⾒る 16

  18. ςετը૾ʹର͢Δ༧ଌͷධՁ 17 ⼀番安定してる ⼀番ばらついてる

  19. ޙॲཧ š CRF(条件付き確率場)でマスクの後処理 š 予測が難しいデータ※にのみ適⽤ 18 ※ばらつきが⼤きかったテスト画像上位100枚を「難しいデータ」とした 後処理後 未処理の予測結果 είΞ͸ѱԽɾɾɾ

  20. ͳ্ͥख͘ߦ͔ͳ͔͔ͬͨ 19 š CRFがアグレッシブすぎる š そもそも予測マスクが酷いことに なっているケースはごく少数 後処理の前後で変わらなかった部分 後処理により背景とみなされた部分 後処理により⾞とみなされた部分

  21. ݁ہɾɾɾ š コンペ終了までに適切な後処理の⽅法が浮かばず š ⽴ちはだかる0.9973の壁 20

  22. ࠷ऴείΞ 21 ※ 0.000001の差:画像⼀枚あたり2.5ピクセル (画像⼀枚で全3682560ピクセル)

  23. ଞͷ্Ґऀͷղ๏ʢ5th place, @Kyleʣ š ⾊々な解像度で学習させたモデルでのアンサンブル š 1280x1280, 1600x1280, 1918x1280, and

    2010x1340 22 š 後処理:予測マスクの⾞領域を検出→⾞領域内を修正 š 「修正するorしない」を⾞領域の境界からの距離で判断
  24. ଞͷ্Ґऀͷղ๏ʢ11th place, @JandJʣ 23 š 3ステップで学習 š Stage 1:層数の浅いシンプルなU-Netで雑に予測 š

    Stage 2: Stage 1の予測結果を使って境界付近を 256x256のパッチに切り抜く š Stage 3: より深いU-NetでパッチごとにRefine
  25. ൓ল఺ š 予測精度の低いPseudo labelデータを学習に含めてしまった š CVで別視点・同⼀⾞種の画像を別foldに分割してしまった š 締め切り20分前に予測結果を提出しようとしたら間に合わなかった 24

  26. ·ͱΊ š Carvanaコンペは⼆値分類のセグメンテーションのコンペ š U-NetとDilated Convolutionを組み合わせた š 後処理が上⼿く⾏かず š Pseudo

    Labeling・アンサンブルでスコア向上 25 Ϟσϧͷίʔυஔ͖৔ : https://github.com/lyakaap/Kaggle-Carvana-3rd-Place-Solution
  27. 26 おまけ

  28. ઃఆ͍Ζ͍Ζ š Optimizer: RMSprop (learning rate=0.0002) š Batchsize: 1 (物理的に1が限界だった)

    š Data Augmentation: ⽔平⽅向の反転のみ š Loss Function: dice loss1 + binary cross entropy 27 1 dice loss = 1.0 – ダイス係数
  29. ଞʹࢼͨ͜͠ͱ š Model: Tiramisu (U-Net + Dense Net), Normal U-Net

    š Upsampling: Pixel Shuffler, Transposed Convolution š Regularization: Batch Normalization/Renormalization, Dropout, Weight Decay š Activation: ELU, LeakyReLU, PReLU, RReLU š Optimizer: momentumSGD, Adadelta, Adam š Data Augmentation: Rotate, Shift, HSV Shift 28