# 走行動画自己教師あり学習実験 # 現状の課題 - **FlowEでのmIOU精度再現ができていない、、、** - BYOLでのmIOU精度の再現(BYOLない論文、FLowE論文内文献値)はできている。 - **BYOLをpixel baseに拡張したもののmIOU精度の再現ができてない** - 本当に再現できていないのかの判断すらできない。 - そのほかのpixel baseの自己教師あり学習を再現していく - 再現した上でそこに動画に対応したりする拡張を加えていく <!-- # 評価コードの正しさの確認 --> # 現状の結果 ()の記載がなければ自前で学習 ## FLowE ### CityScapes, BDD100k, UrbanCity(Deeplab v3) | pre-dataset | pixel base | affine aug | upsample | batchnorm | lossの数 | optims | lr | batch size | GPUs | epochs | mIOU(city) | mIOU(bdd) | mIOU(urban) | | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | | BDD100k(文献値) | o | o | o | (2d) | (1) | Lars | 0.1 | 1024 | 64 | 110 | 56.6 | 49.8 | - | | UrbanCity(文献値) | o | o | o | (2d) | (1) | Lars | 0.1 | 1024 | 64 | 80 | 63.7 | - | 61.7 | | UrbanCity(文献値) | o | x | (x) | (2d) | (1) | Lars | 0.1 | 1024 | 64 | 8 | - | - | 40.1 | | UrbanCity(文献値) | o | o | o | (2d) | (1) | Lars | 0.1 | 1024 | 64 | 8 | - | - | 45.9 | | - | - | - | - | - | - | - | - | - | - | - | - | - | - | | BDD100k | o | x | x | 2d | 1 | Adam | 0.1 | 1024 | 64 | 11 | 9.99 | - | - | | BDD100k | o | x | x | 2d | 1 | Adam | 0.05 | 1024 | 64 | 11 | 10.2 | - | - | | BDD100k | o | x | x | 2d | 2 | Adam | 0.1 | 1024 | 64 | 11 | 13.2 | - | - | | BDD100k | o | x | x | 1d | 1 | Adam | 0.1 | 1024 | 64 | 11 | 10.2 | - | - | | BDD100k | o | x | x | 1d | 1 | Adam | 0.4 | 1024 | 64 | 11 | 5.55 | - | - | | BDD100k | o | x | x | 2d | 1 | Adam | 0.4 | 1024 | 64 | 11 | 11.7 | - | - | | BDD100k | o | x | x | 2d | 1 | Adam | 3e-4 | 1024 | 64 | 11 | 15.9 | - | - | | BDD100k | o | o | x | 2d | 1 | Adam | 0.1 | 1024 | 64 | 11 | 11.6 | - | - | | BDD100k | o | o | o | 2d | 1 | Adam | 0.1 | 1024 | 64 | 11 | 8.06 | - | - | <!-- | ImageNet(文献値) | (o) | (o) | (o) | - | - | (Lars) | (0.1) | (1024) | (64) | - | - | - | 52.4 | 57.7 | --> ## BYOL ### CityScapes, bdd100k(Deeplab v3) | pre-dataset | momentum_base key | lr_schedule | optims | lr | batch size | GPUs | epochs | mIOU(city) | mIOU(bdd) | | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | | ImageNet(文献値) | τ_{base} := 0.99, τ := 1 - (1 - τ_{base})・(cos(π/K) + 1)/2 | warmup+cosine decay + linear scale | Lars(SGD) | 0.2 | 4096 | 512(TPU) | 1000 | 59.8 | 52.4 | | - | - | - | - | - | - | - | - | - | - | | ImageNet(公式重み) | τ_{base} := 0.99, τ := 1 - (1 - τ_{base})・(cos(π/K) + 1)/2 | warmup+cosine decay + linear scale | Lars(SGD) | 0.2 | 4096 | 512(TPU) | 1000 | 59.9 | - | | ImageNet | τ_{base} := 0.99のみ | - | Adam | 0.2 | 4096 | 64 | 1000 | 57.1 | - | ## PixPro ### mIOU+AP mIoUはCityscapesのsemantic segmentationの評価 ただし、mIoU(bdd)だけはbdd100kでの評価 APはPascalVOC2007のobject detectionの評価(voc2012+voc2007で学習) mIoU\*, mIoU(bdd): Deeplab v3head使用+finetuneなし mIoU: FCN hed使用+fintuneあり(論文文献値) 上段2つは文献値 | pre-dataset | head sim | bs | epoch | GPUs | mIoU(bdd) | mIoU\* | mIoU | AP | AP50 | AP75 | | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | | ImageNet(文献値) | o | 1024(128\*8) | 100 | 8 | - | - | 76.8 | 58.8 | 83.0 | 66.5 | | ImageNet(文献値) | o | 1024(128\*8) | 400 | 8 | - | - | 77.2 | 60.2 | 83.8 | 67.7 | | - | - | - | - | - | - | - | - | - | - | | ImageNet(公式重み) | o | 1024(128\*8) | 100 | 8 | 45.84 | 58.59 | - | 58.9 | 83.3 | 66.1 | | ImageNet(公式重み) | o | 1024(128\*8) | 400 | 8 | 46.00 | 58.76 | - | 60.1 | 83.6 | 67.6 | | ImageNet | o | 1024(128\*8) | 100 | 8 | 44.42 | 57.92 | - | 58.6 | 83.1 | 65.9 | | ImageNet | o | 1024(128\*8) | 40** | 8 | - | 57.05 | - | - | - | - | | ImageNet | o | 1024(128\*8) | 10** | 8 | - | 54.10 | - | - | - | - | | ImageNet | o | 1024(128\*8) | 400 | 8 | 44.63 | 57.27 | - | 59.8 | 83.2 | 67.2 | | bdd100k | o | 1024(128\*8) | 100 | 8 | 36.67 | 49.32 | - | 45.5 | 72.8 | 48.0 | | bdd100k | o | 128(16\*8) | 100 | 8 | 36.57 | 48.32 | - | 44.6 | 71.6 | 46.9| | bdd100k | x | 1024(128\*8) | 100 | 8 | 33.40 | 44.47 | - | 42.3 | 69.7 | 43.8 | | ImageNet | x | 1024(128\*8) | 100 | 8 | | 58.60 | | | | | | ImageNet | o | 128(16\*8) | 100 | 8 | | 52.86 | | | | | | - | - | - | - | - | - | - | - | - | - | - | | ImageNet(mpirunの確認用) | o | 1024(128\*8) | 100 | 8 | 44.11 | 57.77 | - | 58.9 | 82.9 | 66.2 | | BDD100k(mpirunの確認用/flow) | o | 1024(128\*8) | 100 | 8 | | 49.28 | - | | | | <!-- | bdd100k(全画像) | 100 | 8 | - | - | - | - | - | --> \**40epochは100epoch学習の途中の40epoch目のチェックポイントを用いたもの ### mIOUのみ 100epochPixProの学習を行ったときの結果 mIoUはCityscapesのsemantic segmentationの評価 ただし、mIoU(bdd)だけはbdd100kでの評価 mIoU\*, mIoU(bdd): Deeplab v3head使用+finetuneなし <!-- mIoU: FCN hed使用+fintuneあり(論文文献値) --> #### 100epoch目 | pre-dataset | head sim | bs | GPUs | aug | loss | mIoU(bdd) | mIoU\* | | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | | ImageNet (公式重み) | o | 1024(128\*8) | 8 | PixPro | PixPro | 45.84 | 58.59 | - | | ImageNet | o | 1024(128\*8) | 8 | PixPro | PixPro | 44.42 | 57.92 | | ImageNet | x | 1024(128\*8) | 8 | PixPro | PixPro | | 58.60 | | ImageNet | o | 128(16\*8) | 8 | PixPro | PixPro | | 52.86 | | ImageNet | o | 128(16\*8) | 8 | FlowE (ablation) | PixPro | | | | ImageNet | o | 1024(128\*8) | 8 | PixPro | FlowE | | 52.44 | | ImageNet | o | 1024(128\*8) | 8 | PixPro | FlowE (grid sample) | | 44.70 | | bdd100k | o | 1024(128\*8) | 8 | PixPro | PixPro | 36.67 | 49.32 | | bdd100k | o | 128(16\*8) | 8 | PixPro | PixPro | 36.57 | 48.32 | | bdd100k | x | 1024(128\*8) | 8 | PixPro | PixPro | 33.40 | 44.47 | | bdd100k | o | 128(16\*8) | 8 | FlowE (ablation) | PixPro | | 18.36 | | bdd100k | o | 1024(128\*8) | 8 | PixPro | FlowE | | | | bdd100k | o | 128(16\*8) | 8 | SimCLR (512x1024) | PixPro | | 47.42 | | bdd100k | o | 128(16\*8) | 8 | FlowE (ablation) + 2frame | FlowE | | 19.08 | #### 40epoch目(100epoch中の途中経過としての10epoch目) | pre-dataset | head sim | bs | GPUs | aug | loss | mIoU(bdd) | mIoU\* | | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | | ImageNet | x | 1024(128\*8) | 8 | PixPro | PixPro | | 56.43 | | ImageNet | o | 128(16\*8) | 8 | PixPro | PixPro | | 52.10 | | ImageNet | o | 1024(128\*8) | 8 | PixPro | FlowE | | 49.70 | #### 10epoch目(100epoch中の途中経過としての10epoch目) | pre-dataset | head sim | bs | GPUs | aug | loss | mIoU(bdd) | mIoU\* | | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | | ImageNet | o | 1024(128\*8) | 8 | PixPro | PixPro | 41.89 | 54.10 | | ImageNet | x | 1024(128\*8) | 8 | PixPro | PixPro | 40.53 | 52.85 | | ImageNet | o | 128(16\*8) | 8 | PixPro | PixPro | 40.05 | 51.24 | | ImageNet | o | 128(16\*8) | 8 | FlowE (ablation) | PixPro | 1.86 | 10.22 (2回目:12.24) | | ImageNet | o | 1024(128\*8) | 8 | PixPro | FlowE (0.1) | 37.95 | 48.69 | | ImageNet | o | 1024(128\*8) | 8 | PixPro | FlowE (grid sample) | | 52.54 | | bdd100k | o | 1024(128\*8) | 8 | PixPro | PixPro | 29.95 | 36.69 | | bdd100k | o | 128(16\*8) | 8 | PixPro | PixPro | [ - ](https://wandb.ai/tomo/detectron2/runs/33t31o1d?workspace=user-tomo) | 43.72 | | bdd100k | x | 1024(128\*8) | 8 | PixPro | PixPro | - | 31.85 | | bdd100k | o | 128(16\*8) | 8 | FlowE (ablation) | PixPro | 7.75 | 14.72 | | bdd100k | o | 128(16\*8) | 8 | FlowE (ablation) + 2frame | FlowE | | 24.44 | | pre-dataset | epoch | head sim | bs | GPUs | aug | loss | mIoU(bdd) | mIoU\* | | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :-: | | bdd100k | 10 | o | 128(16\*8) | 8 | FlowE (ablation) + 2frame | FlowE | | 24.44 | | bdd100k | 100 | o | 128(16\*8) | 8 | FlowE (ablation) + 2frame | FlowE | | 19.08 | | bdd100k | 10 | x | 128(16\*8) | 8 | FlowE (ablation) + 2frame | FlowE | | 26.16 | | bdd100k | 100 | x | 128(16\*8) | 8 | FlowE (ablation) + 2frame | FlowE | | 19.14 | | bdd100k | 10 | o | 128(16\*8) | 8 | BYOL + 2frame | FlowE | | 33.04 | | bdd100k | 100 | o | 128(16\*8) | 8 | BYOL + 2frame | FlowE | | 43.66 | ### Ablation study #### 10epoch目のCityScapesのmIOU評価 | (54.10) | BDD100k | batch size 16 | flowe aug | flowe loss | no ppm head | | :-: | :-: | :-: | :-: | :-: | :-: | | ImageNet | x | 51.24 | 10.22 (12.24) | 48.69 | 52.85 | | BDD100k | 36.69 | 43.72 | 14.72 | | 31.85 | <!-- | flowe aug | | x | x | x | x | --> #### 100epoch目のCityScapesのmIOU評価 | (57.92) | BDD100k | batch size 16 | flowe aug | flowe loss | no ppm head | | :-: | :-: | :-: | :-: | :-: | :-: | | ImageNet | x | 52.86 | | 52.44 | 58.6 | | BDD100k | 49.32 | 48.32 | 18.36 | | 44.47 | <!-- | batch size 128 | | | | | | pixpro aug | | | | | | pixpro loss | | | | | | | ppm head | | | | | | --> #### 10epoch目のBDD100kのmIOU評価 | (41.89) | BDD100k | batch size 16 | flowe aug | flowe loss | no ppm head | | :-: | :-: | :-: | :-: | :-: | :-: | | ImageNet | x | 40.05 | 1.86 | 37.95 | 40.53 | | BDD100k | 29.95 | | 7.75 | | | [Pixproのみ](https://hackmd.io/@HhFQ5UMbQyW1Uxby14-rGg/rJ4rIO-K5) <!-- <table align="center"> <tr> <td><b></b></td> <td>BDD100k</td> <td> batch size 16 </td> <td> flowe aug </td> <td> flowe loss </td> <td> no ppm head </td> </tr> <tr> <td>ImageNet</td> <td>x</td> <td>52.86</td> <td>-</td> <td>52.44</td> <td>58.6</td> </tr> <tr> <td>bacth size 128</td> <td>-</td> <td>-</td> <td>-</td> <td>-</td> <td>-</td> </tr> <tr> <td>pixpro aug</td> <td>-</td> <td>-</td> <td>-</td> <td>-</td> <td>-</td> </tr> <tr> <td>pixpro loss</td> <td>-</td> <td>-</td> <td>-</td> <td>-</td> <td>-</td> </tr> <tr> <td>ppm head</td> <td>-</td> <td>-</td> <td>-</td> <td>-</td> <td>-</td> </tr> </table> --> ## DenseCL mIoUはCityScapeの評価 ただし、mIoU(voc),AP(voc)ともにPascalVOCでの評価(finetuneあり) mIoU\*: Deeplab v3head使用+finetuneなし mIoU: FCN head使用+fintuneあり | pre-dataset | epochs | GPUs | mIoU\* | mIoU | mIoU(voc) | AP(voc) | AP50(voc) | AP75(voc) | | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | | ImageNet(文献値) | 200 | 8 | - | 75.7 | 69.4 | 58.7 | 82.8 | 65.2 | | COCO(文献値) | 800 | 8 | - | 75.6 | 67.5 | 56.7 | 81.7 | 63.0 | | - | - | - | - | - | - | - | - | - | | ImageNet(公式重み) | 200 | 8 | 58.18 | 75.3 | 69.0 | 58.5 | 82.7 | 65.1 | | COCO(公式重み) | 800 | 8 | 58.53 | 75.3 | 67.2 | 56.7 | 82.4 | 63.3 | | ImageNet | 200 | 4 | 58.21 | - | - | - | - | - | | COCO | 800 | 4 | 59.25 | 74.5 | 65.0 | 56.4 | 81.7 | 62.7 | ### 横田先生との話し合い(5/23) - PixProとの違いを埋めていくようにして見て、何がダメだったのかを突き止めていく - まずはBDD100kで学習 - BDD100kで学習+lossをFloweと同じにする - MIRUもだせばいい。今までの検討結果を伝えれば大丈夫。 ### 八嶋さんとの話し合い(5/31) - 改めて、見直すとPixProはかなりfloweと近いので、FlowEに寄せる方向でもいいのでは - 基本は、PPMとpositive pairの選び方が違うだけ - そのほか: - resnetモデルをそのまま使っている - augの種類 - optical flowがない ## 今後の方針 - MIRUのポスター原案 - PixProのBDD100kで学習など - <!-- ### 佐藤先生との話し合い(5/25) --> ## PixPro - dataset, batch size, augmentation, loss, head - dataset, augmentaion - 実はresnetモデル構造も少し違う - floweは入力サイズの1/8になる - pixproは入力サイズの1/32になる(resnet標準) - 違いの原因: - resnetのlayer3, 4のconv層のdilationとstrideが違う? - layer3の中のdownsample層がNoneになっている(flowe)