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

Kaggle Carvanaコンペでの取り組み

lyakaap
November 17, 2017

Kaggle Carvanaコンペでの取り組み

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

lyakaap

November 17, 2017
Tweet

More Decks by lyakaap

Other Decks in Technology

Transcript

  1. Carvana 3rd Place Solution
    @lyakaap

    View full-size slide

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

    View full-size slide

  3. ࣗݾ঺հ
    š ⻑野⾼専 → 筑波⼤に編⼊(現在B4)
    š コンピュータービジョン系の研究室所属
    š like : 寿司、ラーメン、⿇雀
    2

    View full-size slide

  4. Carvanaίϯϖͷ֓ཁ
    š 正式名称:Carvana Image Masking Challenge
    š ⾞画像の背景切り抜きの精度を競う
    3

    View full-size slide

  5. Carvanaίϯϖͷ֓ཁ
    š ⾊々な⾞の16視点画像
    š 背景はほぼ均⼀
    š 評価指標はDice係数 :
    !|#∩%|
    # &|%|
    š train: 約5000枚, test: 約100000枚
    4
    16 view
    教師データ

    View full-size slide

  6. Ϟσϧͷબ୒ɾߏங
    š セグメンテーション系のコンペではとりあえず U-Net1
    š Dilated Convolutionも結構いい感じ
    š そこでU-NetとDilated Convolutionを組み合わせた
    5
    1U-Net: Convolutional Networks for Biomedical Image Segmentation [Olaf Ronneberger, et al. 2015]

    View full-size slide

  7. U-Net
    š U字型で左右対称
    š 全結合層を持たない
    š スキップ結合を持つ
    6

    View full-size slide

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

    View full-size slide

  9. Dilated Convolutionͷੵ૚
    š Multi-Scale Context Aggregation by Dilated Convolutions [Fisher Yu, et al. 2015]
    š 様々な膨張率のDilated Convolutionを積層させることを提案
    8
    Conv

    View full-size slide

  10. U-NetͷͲͷҐஔʹ഑ஔ͢Δ͔
    š “Bottleneck” (図中⾚枠)の部分を置き換える
    9

    View full-size slide

  11. 10
    U-Net + Dilated Convolution

    View full-size slide

  12. ਫ਼౓ݕূ(U-Net + DC)
    š Bottle Neckの部分を変えたものを3パターン実験(層数は全て同⼀)
    š 全て通常のConvolutionを使ったバージョン
    š Dilated Convolutionを積層させたバージョン
    š Dilated Convolutionを並列に適⽤させたバージョン
    11
    ௨ৗόʔδϣϯ ੵ૚όʔδϣϯ ฒྻόʔδϣϯ
    0.9905 0.9918 0.9916
    input: 256x256px

    View full-size slide

  13. Pseudo Labeling
    š 半教師付き学習の⼀種
    š テストデータを疑似の訓練データとして使う⽅法
    š 正則化の効果
    12

    View full-size slide

  14. Pseudo Labeling ͷղઆਤ
    13
    訓練済み
    モデル
    Test Data
    ༧ଌ
    Pseudo Labeled Data
    Train Data
    モデル
    ܇࿅
    1 2

    View full-size slide

  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

    View full-size slide

  16. Ξϯαϯϒϧ
    š 5fold @1536 x 1024px + 6fold @1920 x 1280px
    š fold間で変えたもの:
    š 各種seed(initializer, データの更新の順番)
    š Pseudo Labelのサンプリングレート
    š TTA(Test Time Augmentation)
    š 訓練時に使⽤した⽔平⽅向の反転のみ
    15

    View full-size slide

  17. ςετը૾ʹର͢Δ༧ଌͷධՁ
    š 予測の精度が低いテスト画像を特定
    š 正解が分からないのにどうやって精度が低いか判断する?
    š 異なるモデル間での予測結果のばらつきを⾒る
    16

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  23. ଞͷ্Ґऀͷղ๏ʢ5th place, @Kyleʣ
    š ⾊々な解像度で学習させたモデルでのアンサンブル
    š 1280x1280, 1600x1280, 1918x1280, and 2010x1340
    22
    š 後処理:予測マスクの⾞領域を検出→⾞領域内を修正
    š 「修正するorしない」を⾞領域の境界からの距離で判断

    View full-size slide

  24. ଞͷ্Ґऀͷղ๏ʢ11th place, @JandJʣ
    23
    š 3ステップで学習
    š Stage 1:層数の浅いシンプルなU-Netで雑に予測
    š Stage 2: Stage 1の予測結果を使って境界付近を
    256x256のパッチに切り抜く
    š Stage 3: より深いU-NetでパッチごとにRefine

    View full-size slide

  25. ൓ল఺
    š 予測精度の低いPseudo labelデータを学習に含めてしまった
    š CVで別視点・同⼀⾞種の画像を別foldに分割してしまった
    š 締め切り20分前に予測結果を提出しようとしたら間に合わなかった
    24

    View full-size slide

  26. ·ͱΊ
    š Carvanaコンペは⼆値分類のセグメンテーションのコンペ
    š U-NetとDilated Convolutionを組み合わせた
    š 後処理が上⼿く⾏かず
    š Pseudo Labeling・アンサンブルでスコア向上
    25
    Ϟσϧͷίʔυஔ͖৔ :
    https://github.com/lyakaap/Kaggle-Carvana-3rd-Place-Solution

    View full-size slide

  27. ઃఆ͍Ζ͍Ζ
    š Optimizer: RMSprop (learning rate=0.0002)
    š Batchsize: 1 (物理的に1が限界だった)
    š Data Augmentation: ⽔平⽅向の反転のみ
    š Loss Function: dice loss1 + binary cross entropy
    27
    1 dice loss = 1.0 – ダイス係数

    View full-size slide

  28. ଞʹࢼͨ͜͠ͱ
    š 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

    View full-size slide