# 走行動画自己教師あり学習実験
# 現状の課題
- **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)