# 評価コードの正しさ確認
# 略称
| 略称 | 正式名 |
| :--: | :--: |
| IN | ImageNet |
| bdd | BDD100k |
| city | CityScapes |
| bn | batch norm |
| bs | batch size |
| lr | learning rate |
| norm | normalize |
| CE | cross entropy |
# normalizeの値
どのデータセットの値でnormalizeの計算をするかを表す。
| 名前 | 平均(R, G, B) | 標準偏差(R, G, B) |
| :----: | :----: | :----: |
| IN(i) | 123.675, 116.28, 103.53 | 58.395, 57.12, 57.375 |
| IN(f) | 0.485, 0.456, 0.406 | 0.229, 0.224, 0.225 |
| IN(fail) | 103.53, 116.28, 123.675 | 1, 1, 1 |
| bdd(y) | 73.0, 83.0, 72.0 | 47.67, 48.49, 47.74 |
| bdd | 74.07416829, 74.24816955, 72.66530575 | 74.07416829, 74.24816955, 72.66530575 |
# Supervised
pre-dataset以外の条件はdownstream taskとしてssを学習する際の条件
## 自作コード
全て事前学習の重みはtorchvisionの公式重み
区切ってある上の方の値は論文の値
resize: lossを計算する際にモデルからの出力サイズを元のサイズに戻すかどうか(戻さない場合は、label画像を出力サイズに合わせて変更)
### BDD100k(Deeplab v1, FCN)
| pre-dataset | normalize | resize | bs | head | mIOU(val) | mIOU(train) |
| :-: | :-: | :-: | :-: | :-: | :-: | :-: |
| IN(文献値) | ? | ? | 16 | Deeplab v1 | 34.0 | - |
| - | - | - | - | - | - | - |
| IN | x | o | 16 | [Deeplab v1](https://wandb.ai/tomo/share_ss_results/runs/ortuwd0v?workspace=user-tomo) | 19.3 | 17.2 |
| IN | x | x | 16 | [Deeplab v1](https://wandb.ai/tomo/share_ss_results/runs/3ykm5qzs?workspace=user-tomo) | 25.3 | 20.3 |
| IN | x | o | 16 | [FCN32](https://wandb.ai/tomo/share_ss_results/runs/3h2dpqp5?workspace=user-tomo) | 35.3 | 26.5 |
| IN | x | o | 16 | [FCN32(convのみ)](https://wandb.ai/tomo/share_ss_results/runs/1vpwnsxs?workspace=user-tomo) | 26.7 | 20.1 |
| IN | x | x | 16 | [FCN32(convのみ)](https://wandb.ai/tomo/share_ss_results/runs/2vozrjuq/overview?workspace=user-tomo) | 26.6 | 20.1 |
| IN | bdd(y) | x | 16 | [FCN32(convのみ)](https://wandb.ai/tomo/share_ss_results/runs/1drz1xy4?workspace=user-tomo) | 27.2 | 20.2 |
| IN | IN(i) | x | 16 | [FCN32(convのみ)](https://wandb.ai/tomo/share_ss_results/runs/wzvej701?workspace=user-tomo) | 27.4 | 20.5 |
| IN | IN(i) | x | 16 | [Deeplab v1](https://wandb.ai/tomo/share_ss_results/runs/mf28vd5m?workspace=user-tomo) | 23.1 | 20.4 |
### CityScapes(Deeplab v1, FCN)
| pre-dataset | normalize | resize | bs | lr | head | mIOU(val) | mIOU(train) |
| :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |
| IN(文献値) | ? | ? | 8 | 0.01 | Deeplab v1 | 43.8 | - |
| - | - | - | - | - | - | - | - |
| IN | IN(i) | x | 16 | 0.02 | [FCN(convのみ)](https://wandb.ai/tomo/share_ss_results/runs/zli1hu0o?workspace=user-tomo) | 38.4 | 34.8 |
| IN | IN(i) | x | 8 | 0.02 | [FCN(convのみ)](https://wandb.ai/tomo/share_ss_results/runs/2abbl076?workspace=user-tomo) | 37.9 | 31.0 |
| IN | IN(i) | x | 8 | 0.01 | [FCN(convのみ)](https://wandb.ai/tomo/share_ss_results/runs/1y6rs9d5?workspace=user-tomo) | 37.0 | 30.4 |
| IN | IN(i) | x | 8 | 0.01 | [Deeplab v1](https://wandb.ai/tomo/share_ss_results/runs/1wcc18lz?workspace=user-tomo) | 33.5 | 30.5 |
## CRF test
Deeplab v1のCRFのハイパラが正しくない可能性があるため、探索した結果
### 手動
| pre-dataset | dataset | normalize | resize | head | bi_xy_std | bi_rgb_std | bi_w | pos_xy_std | pos_w | iter_max | mIOU(val) |
| :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |
| IN(文献値) | bdd100k | ? | ? | Deeplab v1 | ? | ? | ? | ? | ? | ? | 34.0 |
| IN(文献値) | CityScapes | ? | ? | Deeplab v1 | ? | ? | ? | ? | ? | ? | 43.8 |
| - | - | - | - | - | - | - | - | - | - | - |
| IN | bdd100k | IN(i) | x | [Deeplab v1](https://wandb.ai/tomo/share_ss_results/runs/mf28vd5m?workspace=user-tomo) | 140 | 5 | 5 | 3 | 3 | 10 | 23.1 |
| IN | bdd100k | IN(i) | x | Deeplab v1 | 121 | 5 | 4 | 3 | 3 | 10 | 24.0 |
| IN | bdd100k | IN(i) | x | Deeplab v1 | 30 | 3 | 4 | 3 | 3 | 10 | 26.4 |
| IN | CityScapes | IN(i) | x | [Deeplab v1](https://wandb.ai/tomo/share_ss_results/runs/1wcc18lz?workspace=user-tomo) | 140 | 5 | 5 | 3 | 3 | 10 | 33.5 |
| IN | CityScapes | IN(i) | x | [Deeplab v1](https://wandb.ai/tomo/share_ss_results/runs/1ihbfgzj?workspace=user-tomo) | 121 | 5 | 4 | 3 | 3 | 10 | 34.6 |
| IN | CityScapes | IN(i) | x | Deeplab v1 | 30 | 3 | 4 | 3 | 3 | 10 | 37.0 |
### Sweep
| dataset | head(train時) | | bi_xy_std | bi_rgb_std | bi_w | pos_xy_std | pos_w | iter_max | mIOU |
| :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |
| [bdd100k](https://wandb.ai/tomo/crf_sweeps/sweeps/1clhp0ja?workspace=user-tomo) | FCN (convのみ) | 探索範囲<br> 最大<br>最小 | [30,100,121,140]<br>30<br>140 | [3,5,6]<br>3<br>6 | [4,5]<br>4<br>5 | 3<br>3<br>3 | 3<br>3<br>3 | 10<br>10<br>10 | - <br> 26.42 <br> 23.03 |
| [bdd100k](https://wandb.ai/tomo/crf_sweeps/sweeps/czny9b5z?workspace=user-tomo) | Deeplab v1 | 探索範囲<br> 最大<br>最小 | [30,100,121,140]<br>30<br>140 | [3,5,6]<br>3<br>6 | [4,5]<br>4<br>5 | 3<br>3<br>3 | 3<br>3<br>3 | 10<br>10<br>10 | - <br> 26.38 <br> 23.13 |
| [bdd100k](https://wandb.ai/tomo/crf_sweeps/sweeps/es7ndwnk?workspace=user-tomo) | Deeplab v1 | 探索範囲<br> 最大<br>最小 | [10,20,30,40,50]<br>10<br>50 | 3<br>3<br>3 | [3,4,5,6]<br>3<br>6 | 3<br>3<br>3 | 3<br>3<br>3 | 10<br>10<br>10 | - <br> 27.53 <br> 24.64 |
| [CityScapes](https://wandb.ai/tomo/crf_sweeps/sweeps/b71gl74i?workspace=user-tomo) | FCN (convのみ) | 探索範囲<br> 最大<br>最小 | [30,100,121,140]<br>30<br>140 | [3,5,6]<br>3<br>6 | [4,5]<br>4<br>5 | 3<br>3<br>3 | 3<br>3<br>3 | 10<br>10<br>10 | - <br> 37.02 <br> 33.21 |
| [CityScapes](https://wandb.ai/tomo/crf_sweeps/sweeps/94nc9cbq?workspace=user-tomo) | FCN (convのみ) | 探索範囲<br> 最大<br>最小 | [10,20,30,40,50]<br>10<br>50 | 3<br>3<br>3 | [3,4,5,6]<br>3,4<br>6 | 3<br>3<br>3 | 3<br>3<br>3 | 10<br>10<br>10 | - <br> 37.79 <br> 35.35 |
## [detectron2](https://github.com/facebookresearch/detectron2)(Deeplab v3)
### CityScapes
| pre-dataset | normalize | lr | bs | iters | flip | mIOU |
| :-: | :-: | :-: | :-: | :-: | :-: | :-: |
| IN(文献値) | ? | 0.01 | 8 | 40k | ? | 59.9 |
| - | - | - | - | - | - | - |
| IN | IN(i) | 0.02 | 16 | 60k | o | 62.5 |
| IN | IN(fail) | 0.01 | 8 | 40k | x | 22.6 |
| IN | IN(fail) | 0.01 | 8 | 40k | o | 22.3 |
| IN | IN(i) | 0.01 | 8 | 40k | o | 61.1 |
| IN | IN(i) | 0.01 | 8 | 40k | x | 60.1 |
### BDD100k
評価時の画像サイズが学習時の画像サイズの倍数でないとモデルの構造上学習できない
また、論文から学習時の画像サイズを512x1024のサイズになるようにcropとresizeしていて、元画像のサイズは1280x720で倍数ではない。
その為、resizeの項目はこの問題に対処する方法についての違いを表す。
- resizeがo: 画像サイズを1024x2048に変更する
- resizeがx: 1280x720(元のサイズ)を512x1024になるようにcropする(足りない幅の部分はpadで敷き詰める)
| pre-dataset | norm | lr | bs | iters | resize | loss | mIOU |
| :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |
| IN(文献値) | (IN(f)) | 0.02 | 16 | 60k | (o) | CE | 52.4 |
| - | - | - | - | - | - | - | - |
| IN | IN(i) | 0.02 | 16 | 60k | x(1280x720) | CE | 30.6 |
| IN | bdd(y) | 0.02 | 16 | 60k | x(1280x720) | CE | 30.5 |
| IN | IN(i) | 0.02 | 16 | 60k | o(1024x2048) | CE | 50.9 |
| IN | bdd(y) | 0.02 | 16 | 60k | o(1024x2048) | CE | 49.6 |
| IN | IN(i) | 0.02 | 16 | 60k | o(1024x2048) | DeeplabCE | 50.71(1回目) |
| IN | IN(i) | 0.02 | 16 | 60k | o(1024x2048) | DeeplabCE | 51.18(2回目) |
| IN | IN(i) | 0.02 | 16 | 60k | o(2048x1024) | CE | 32.92 |
| IN | IN(i) | 0.02 | 16 | 60k | o(2048x1024 2048x1024\*) | CE | 45.37 |
\* 学習時も評価時も短辺の長さのデータ拡張の前に指定のサイズ(2048x1024)にリサイズして、さらに最後のクロップするサイズも(2048x1024)となるようにしたものを指す。
## [mmsegmentaion](https://github.com/open-mmlab/mmsegmentation)(Deeplab v3)
### BDD100k
| pre-dataset | norm | lr | bs | iters | FCN head | finetune | resize | loss | mIOU |
| :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |
| IN(文献値) | ? | 0.02 | 16 | 60k | ? | x | ? | CE | 52.4 |
| - | - | - | - | - | - | - | - | - |
| IN | IN(i) | 0.02 | 16 | 60k | o | o | o(1024x1820) | CE | 61.3 |
| IN | IN(i) | 0.02 | 16 | 60k | o | x | o(1024x1820) | CE | 53.7 |
| IN | IN(i) | 0.02 | 16 | 60k | x | x | o(1024x1820) | CE | 54.0 |
### CityScapes
| pre-dataset | normalize | lr | bs | iters | flip | fintune | mIOU |
| :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |
| IN(文献値) | ? | 0.01 | 8 | 40k | ? | x | 59.9 |
| - | - | - | - | - | - | - | - |
| IN | IN(i) | 0.01 | 8 | 40k | x | o | 79.9 |
| IN | IN(i) | 0.01 | 8 | 40k | x | x | 61.9 |
# FLowE
## detectron2(Deeplab v3)
### CityScapes, bdd100k
normlize, augともにcityscapesの評価時の学習する際の条件
| pre-dataset | backbone | OF | finetune | normalize | flip | mIOU(city) | mIOU(bdd) |
| :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: |
| bdd(文献値) | resnet50 | o | x | ? | ? | 56.6 | 49.8 |
| - | - | - | - | - | - | - |
| bdd | resnet50 | o | x | IN(fail) | x | 14.4 | - |
# 見解
- deeplab v1の方はこれ以上探索しても文献値との差(10%)は埋められそうにない
- Deeplab v3(detectron2)の方は少なくともCityScapesの方は一致したので、今後の評価ではこちらを使う。
# 注意点
この検討で得られた注意点は以下。
- 評価する際に使うNormalizeの値:IN(i)を使う。
- lr, bsの条件を論文と一致させる
- finetuneを行っているかどうか確認する
- augmentationを確認する。
- 今回の場合はラベルと画像を同じ範囲でクロップしなければいけなかったことに注意する。
- SSを学習する際のlossの種類も影響するかもしれない(微妙なところ)
- bdd100kをDeeplab v3を使って評価する際には評価時の画像サイズを512x1024の倍数にresizeする必要がある。
- これでも不十分な可能性はある。(2%低いため)