一、前置部分

  1. git clone https://github.com/EvanfanBao/Adversarial_DA_Exp.git
  2. 进入datasets目录 删除掉我的两个软链接(rm Cityscapes; rm SYNTHIA)
  3. 创建自己的软链接。命令行下 ln -s <你的cityscapes路径> Cityscapes, ln -s <你的SYNTHIA路径> SYNTHIA
  4. 去坚果云下载(https://www.jianguoyun.com/p/DdCQFSUQyLjaCRjllYUE)我上传的一个Deeplabresnet-pretrained.pth,这个是在imagenet上的预训练模型。给deeplabv2用的(可以提高性能)。v3+没有这个这个预训练模型,那么我也就不用。

    二、具体训练

表格2 (done)

image.png
针对这个表格。

  • 对于Oracle的内容。采用在Cityscapes上训练。并且有两种,multi和非multi。//此处multi就是一个中间输出一个网络最终输出。

训练方法。

  • cityscapes oracle single + deeplabv2 (在训 —> 训练完成在cityscapes验证集上mIoU为0.6852)

    1. python3 tools/train_source.py --gpu "0" --dataset 'cityscapes' --checkpoint_dir "/nfs/byf/log/city_oracle_sv2" --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --num_classes 19 --multi "False"

    //gpu 请自己选择。方式为 “0” ,或者 “0,1,2,3”这样。
    //dataset这里选择使用cityscapes
    //checkpoint_dir 选择自己的log目录,一般是直接在当前目录下创建log目录(mkdir log命令),而后改为 “./log/city_oracle_single”
    //其他内容均为论文原本配置,没有修改。建议仔细参看论文学习并修改。无时间则不用改了。
    num_classes = 16的情况下进行验证结果
    —》我重新训练了num_classes 16的内容-因为后面是这样比较的-结果是mIoU16 0.708。表格中oracle就填写0.708即可。

  • cityscapes oracle multi + deeplabv2 (fr在训)

    python3 tools/train_source.py --gpu "0" --dataset 'cityscapes' --checkpoint_dir "/nfs/byf/log/city_oracle_mv2" --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --num_classes 19 --multi "True"
    

    同理,我重新训练了num_classes 16的情况。结果是mIoU16 0.715.表格中oracle就填写0.715

  • cityscpaes oracle single + deeplabv3+ (fr在训) (我尝试增加了random_crop 768x768-效果也一般最后结果为0.662)

    python3 tools/train_source.py --gpu "0" --dataset 'cityscapes' --checkpoint_dir "/nfs/byf/log/city_oracle_sv3" --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --num_classes 19 --multi "False" --backbone "deeplabv3_plus" --batch_size_per_gpu 2
    
  • cityscapes oracle multi + deeplabv3+ (因为没有参考-这部分没有做)

    python3 tools/train_source.py --gpu "0" --dataset 'cityscapes' --checkpoint_dir "/nfs/byf/log/city_oracle_mv3" --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --num_classes 19 --multi "False" --backbone "deeplabv3_plus"
    

    完成以上部分后,在cityscapes上的oracle部分即可完成。最优mIoU会在train_log.txt文件中显示。

  • Synthia数据集上的预训练。(主要是为了提升性能-并且和后面的进行比较)

在synthia上的预训练方法和cityscapes比较相同。
下面给出训练脚本

  • synthia single + v2 (已完成训练-在synthia验证集上最佳的mIoU13为0.6514124795373774, 在mIoU16为0.640)

    python3 tools/train_source.py --gpu "0" --dataset 'synthia' --checkpoint_dir "/nfs/byf/log/synthia_pretrained_sv2" --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --num_classes 16 --multi "False"
    

    注意num_classes 为16—要仔细检查输出log

  • synthia multi + v2 (在训 —> 完成训练-在synthia验证集上最佳的mIoU13为0.647,mIoU16为0.638,算是正常,效果好的应该是迁移的时候)

    python3 tools/train_source.py --gpu "0" --dataset 'synthia' --checkpoint_dir "/nfs/byf/log/synthia_pretrained_mv2" --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --num_classes 16 --multi "True"
    
  • synthia single + v3p (在训,这台机子速度非常慢-需要换 —> 机子已换-在训 —> 已完成训练—在synthia验证集上最佳的mIoU13 为0.6512954039688034, 最佳的mIoU16为0.638)

    // 对于v3p的模型-我们还需要将它调到更优-没时间就算了。

    python3 tools/train_source.py --gpu "0" --dataset 'synthia' --checkpoint_dir "/nfs/byf/log/synthia_pretrained_sv3" --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --num_classes 16 --multi "False" --backbone "deeplabv3_plus" --batch_size_per_gpu 2
    
  • synthia multi + v3p (没做)

    python3 tools/train_source.py --gpu "0" --dataset 'synthia' --checkpoint_dir "/nfs/byf/log/synthia_pretrained_sv3" --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --num_classes 16 --multi "False" --backbone "deeplabv3_plus"
    
  • 有了synthia的预训练模型-接下来进行synthiacityscapes域适配

我们要填掉表格中Adapt一列。

  • synthia single + v2 (完成了一次无预训练模型的适配-mIoU有0.35左右-之后还要再重新实验) (重新在训了 —> 基本完成训练,验证集上最佳mIoU13=0.423,最佳mIoU16=0.364, 训练后期出现程序中断—-可能存在潜在问题) !注意-适当增加 —round_num 和 epoch_each_round.

—round_num 5 —epoch_each_round 10 (完成—结果见表格1的内容0.341 -> 0.353, 0.394->0.411)

  python3 tools/solve_synthia_adv.py --gpu "0" --dataset "cityscapes" --checkpoint_dir "/nfs/byf/log/synthia_city_v2_single"  --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --backbone 'deeplabv2_multi' --num_classes 16 --multi False --pretrained_ckpt_file "/nfs/byf/log/synthia_pretrained_sv2"
  • synthia multi + v2 (正在训练--训练完成-0.360, 0.414, 性能大于v2-single的)

    python3 tools/solve_synthia_adv.py --gpu "0" --dataset "cityscapes" --checkpoint_dir "/nfs/byf/log/synthia_city_v2_multi"  --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --backbone 'deeplabv2_multi' --num_classes 16 --multi True --pretrained_ckpt_file "/nfs/byf/log/synthia_pretrained_mv2"
    

    image.png

  • synthia single + v3 (正在训练 —》完成 — 结果见表格1的内容, 0.370, 0.428)

    python3 tools/solve_synthia_adv.py --gpu "0" --dataset "cityscapes" --checkpoint_dir "/nfs/byf/log/synthia_city_v3_single"  --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --backbone 'deeplabv3_plus' --num_classes 16 --multi False --pretrained_ckpt_file "/nfs/byf/log/synthia_pretrained_sv3" --batch_size_per_gpu 2
    
  • synthia multi + v3 (没有做)

    python3 tools/solve_synthia_adv.py --gpu "0" --dataset "cityscapes" --checkpoint_dir "/nfs/byf/log/synthia_city_v3_multi"  --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --backbone 'deeplabv3_plus' --num_classes 16 --multi False --pretrained_ckpt_file "/nfs/byf/log/synthia_pretrained_sv3"
    

    上面所写的一些参数是多余的-是train source 的参数-我没有删掉。与DA相关的参数见下图。这里的lambda-seg是在multi下中间输出结果的比率。lambda-adv-target1是对最终结果的输出的比率。lambda-adv-target2是对中间结果的比率—用于对抗loss-训练分割网络。learning-rate-D是判别器的学习率。以上这些内容全部采用默认的值。
    可以修改的值:epoch_each_round, round_num。这个可以增加训练次数。
    //可能存在一些小问题
    image.pngimage.png
    这样以上表格就填写完毕了。
    针对deeplabv3+的multi部分,可以选择从表格中去除,或者用普通的性能填写。考虑到学术诚信,这里还是去掉吧,没做实验的不乱写。

表格1 (done)

image.png
针对第这个表格,我们需要完成以下训练。
由于前面的问题,这里的全部采用single方式,主要是为了体现我们advnet的性能,以及(潜在的) Deeplabv3+导致的性能提升。
对于source only。前面已经完成了在synthia上的预训练。这里我们要做的就是加载模型,并验证。

对于advsegnet,我们前面也已经完成了迁移模型。只要加载模型并验证即可

mIoU和mIoU13都会有所显示(这里我不能确定计算是否准确-直接用的源代码的)。
所有内容都会输出。此表格填写完毕。

此时,我们其实还缺少一个与SOTA(或者baseline)的比较。这里我原来没在report中加,考虑到性能应该不会特别强。我们就不写了。

  • 验证第一行—deeplabv2 + source only的, 即synthia预训练 + 直接在cityscapes上验证

    python3 tools/evaluate.py --gpu "0" --checkpoint_dir "/nfs/byf/log/synthia_pretrained_sv2/eval" --source_dataset 'synthia' --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --num_classes 16 --multi "False" --pretrained_ckpt_file "/nfs/byf/log/synthia_pretrained_sv2/synthiabest.pth"
    

    注意:checkpoint_dir为验证日志保存目录。这里与原来的预训练目录存放一致,再增加’/eval’。pretrained_ckpt_file 目录为模型目录。evaluate.py 文件就是用于验证模型的性能的。这两个目录尽量严格按照我上面的要求来。代码中存在一些目录路径的拼接,如果不这样做,可能会发生意想不到的错误
    结果如下image.png
    43.75 19.4 75.79 6.44 0.19 26.25 8.58 11.88 79.02 81.13 57.59 21.41 50.55 14.0 20.80 28.23
    miou16 - 0.341
    miou32 - 0.394

  • 验证第二行-deeplabv3_plus + source only的

    python3 tools/evaluate.py --gpu "0" --checkpoint_dir "/nfs/byf/log/synthia_pretrained_sv3/eval" --source_dataset 'synthia' --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --num_classes 16 --multi "False" --pretrained_ckpt_file "/nfs/byf/log/synthia_pretrained_sv3/synthiabest.pth" --backbone "deeplabv3_plus"
    

    image.png
    55.34 21.37 74.77 5.32 0.08 24.06 12.73 13.48 74.03 71.91 51.9 16.94 53.73 23.78 9.95 22.51
    miou16 - 0.332
    miou13 - 0.386

  • 验证第三行

    python3 tools/evaluate.py --gpu "0" --checkpoint_dir "/nfs/byf/log/synthia_city_v2_single/eval" --source_dataset 'synthia' --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --num_classes 16 --multi "False" --pretrained_ckpt_file "/nfs/byf/log/synthia_city_v2_single/synthia2cityscapesbest.pth " --backbone "deeplabv2_multi"
    

    image.png
    有一说一。对于v2是有提升。0.341 -> 0.353, 0.394->0.411。
    image.png
    53.12 24.04 64.85 4.65 0.16 25.9 13.55 10.57 75.96 76.32 52.75 18.28 63.63 31.15 15.97 34.66
    miou16 - 0.353
    miou13 - 0.411

  • 验证第四行

    python3 tools/evaluate.py --gpu "0" --checkpoint_dir "/nfs/byf/log/synthia_city_v3_single/eval" --source_dataset 'synthia' --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --num_classes 16 --multi "False" --pretrained_ckpt_file "/nfs/byf/log/synthia_city_v3_single/synthia2cityscapesbest.pth " --backbone "deeplabv3_plus"
    

    image.png
    有一说一,v3经过域适配后性能提升更大。0.332 -> 0.370, 0.386 -> 0.428。那就有话可说了。
    image.png
    62.17 23.44 76.84 10.08 0.25 25.74 14.88 15.5 75.45 73.4 53.12 18.58 66.22 27.43 19.12 29.87
    miou16 0.370
    miou13 0.428

表格3 (done)

image.png
这里就是image.png。这里针对到是single的,因此只需要修改lambda_adv_target1即可。///我们这里backbonev3+
训练脚本

  • 0.001 — 这个是前面已经训练过-不用再训-因为默认是0.001 — 最优的0.370, 0.428

    python3 tools/solve_synthia_adv.py --gpu "0" --dataset "cityscapes" --checkpoint_dir "/nfs/byf/log/synthia_city_v3_sensitivy01"  --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --backbone 'deeplabv3_plus' --num_classes 16 --multi False --lambda-adv-target1 0.001 --pretrained_ckpt_file "/nfs/byf/log/synthia_pretrained_sv3" --batch_size_per_gpu 2
    

    不断的修改—lambda-adv-target1 的值即可。

  • 0.0005 (在训练) 0.383, 0.445

    python3 tools/solve_synthia_adv.py --gpu "0" --dataset "cityscapes" --checkpoint_dir "/nfs/byf/log/synthia_city_v3_sensitivy05"  --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --backbone 'deeplabv3_plus' --num_classes 16 --multi False --lambda-adv-target1 0.0005 --pretrained_ckpt_file "/nfs/byf/log/synthia_pretrained_sv3" --batch_size_per_gpu 2
    
  • 0.002 (在训练) 0.382, 0.443

    python3 tools/solve_synthia_adv.py --gpu "0" --dataset "cityscapes" --checkpoint_dir "/nfs/byf/log/synthia_city_v3_sensitivy02"  --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --backbone 'deeplabv3_plus' --num_classes 16 --multi False --lambda-adv-target1 0.002 --pretrained_ckpt_file "/nfs/byf/log/synthia_pretrained_sv3" --batch_size_per_gpu 2
    
  • 0.004 (在训练) 0.383, 0.445

    python3 tools/solve_synthia_adv.py --gpu "0" --dataset "cityscapes" --checkpoint_dir "/nfs/byf/log/synthia_city_v3_sensitivy04"  --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --backbone 'deeplabv3_plus' --num_classes 16 --multi False --lambda-adv-target1 0.004 --pretrained_ckpt_file "/nfs/byf/log/synthia_pretrained_sv3" --batch_size_per_gpu 2
    

表格4 (cut)

image.png
类似的
也是采用的single、backbone是v3+

python3 tools/solve_synthia_adv.py --gpu "0" --dataset "cityscapes" --checkpoint_dir "/nfs/byf/log/synthia_city_v3_sensitivy"  --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --backbone 'deeplabv3_plus' --num_classes 16 --multi False --lambda-seg 0.1 --pretrained_ckpt_file "/nfs/byf/log/synthia_pretrained_sv3"  --batch_size_per_gpu 2

按表格调整—lambda-seg参数即可。

  • 0.5 (在训练)

    python3 tools/solve_synthia_adv.py --gpu "0" --dataset "cityscapes" --checkpoint_dir "/nfs/byf/log/synthia_city_v3_sensitivy_seg05"  --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --backbone 'deeplabv3_plus' --num_classes 16 --multi False --lambda-seg 0.5 --pretrained_ckpt_file "/nfs/byf/log/synthia_pretrained_sv3"  --batch_size_per_gpu 2
    
  • 0.2

    python3 tools/solve_synthia_adv.py --gpu "0" --dataset "cityscapes" --checkpoint_dir "/nfs/byf/log/synthia_city_v3_sensitivy_seg02"  --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --backbone 'deeplabv3_plus' --num_classes 16 --multi False --lambda-seg 0.2 --pretrained_ckpt_file "/nfs/byf/log/synthia_pretrained_sv3"  --batch_size_per_gpu 2
    
  • 0.1 — 这个前面已经训练过,不用在训,因为默认是0.1

    python3 tools/solve_synthia_adv.py --gpu "0" --dataset "cityscapes" --checkpoint_dir "/nfs/byf/log/synthia_city_v3_sensitivy_seg01"  --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --backbone 'deeplabv3_plus' --num_classes 16 --multi False --lambda-seg 0.1 --pretrained_ckpt_file "/nfs/byf/log/synthia_pretrained_sv3"  --batch_size_per_gpu 2
    
  • 0.05

    python3 tools/solve_synthia_adv.py --gpu "0" --dataset "cityscapes" --checkpoint_dir "/nfs/byf/log/synthia_city_v3_sensitivy_seg005"  --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --backbone 'deeplabv3_plus' --num_classes 16 --multi False --lambda-seg 0.05 --pretrained_ckpt_file "/nfs/byf/log/synthia_pretrained_sv3"  --batch_size_per_gpu 2
    

    上面内容都可以直接得到。查看log日志。

    表格5 (done)

    image.png
    全部采用single的方式,然后v2和v3都要有。这部分表格的内容-结果不会特别好,因为每个城市毕竟太少了,我将他们合在一组-然后验证,估计结果不会太好。
    //可以尝试再加一个。
    首先是在group0 (cityscapes另外10组)上预训练。用的是toos/train_source.py 代码。
    然后是对抗迁移到group1。用的是tools/adv_da.py代码。
    这个代码是我之前改的。整合了synthia到cityscapes和group0到group1的迁移。

  • group0 预训练 single + v2 (在训 —> 完成训练。在90个样本的测试集上mIoU为0.6854)

    python3 tools/train_source.py --gpu "1" --dataset 'group0' --checkpoint_dir "/nfs/byf/log/group0_pretrained_sv2" --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --num_classes 19 --multi "False"
    
  • group0 预训练 single v3 (在训 —> 完成训练。 在90个样本的测试集上mIoU为0.6834)

    python3 tools/train_source.py --gpu "0,1" --dataset 'group0' --checkpoint_dir "/nfs/byf/log/group0_pretrained_sv3" --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --num_classes 19 --multi "False" --backbone "deeplabv3_plus" --batch_size_per_gpu 2
    
  • group1 域适配到 group0 single v2 (在训)

    python3 tools/solve_group_adv.py --gpu "0" --dataset "group0" --checkpoint_dir "/nfs/byf/log/group0_group1_sv2"  --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --backbone 'deeplabv2_multi' --num_classes 19 --multi False --pretrained_ckpt_file "/nfs/byf/log/group0_pretrained_sv2" --round_num 5 --epoch_each_round 10 --source_dataset group0
    
  • group1 域适配到 group0 single v3+ (在训)

    python3 tools/solve_group_adv.py --gpu "0" --dataset "group0" --checkpoint_dir "/nfs/byf/log/group0_group1_sv3"  --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --backbone 'deeplabv3_plus' --num_classes 19 --multi False --pretrained_ckpt_file "/nfs/byf/log/group0_pretrained_sv3" --batch_size_per_gpu 2 --round_num 5 --epoch_each_round 10 --source_dataset group0
    

训练完以上城市后-在放到不同城市里面验证输出即可。由于每个城市数据非常少,因此结果不会很好。

!!!考虑到实在是城市太少。上表可能废弃。
因为我的val数据每个城市只有10张图片。非常的少。
//经过我的实验-发现完全无法计算-直接NAN了-遂放弃🥶。

表格仍采用如下方式。
image.png
从而验证代码也与前面相同。这里不用计算mIoU16和mIou13 直接使用的是mIoU19,因为cityscapes本身就有19类。num_classes设置为19

  • 第2行验证

    python3 tools/evaluate.py --gpu "0" --checkpoint_dir "/nfs/byf/log/group0_pretrained_sv3/eval" --source_dataset 'group0' --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --num_classes 19 --multi "False" --pretrained_ckpt_file "/nfs/byf/log/group0_pretrained_sv3/group0best.pth" --dataset "group1" --backbone "deeplabv3_plus"
    

    image.png
    96.33 73.57 87.82 41.05 47.13 45.05 46.52 49.96 87.83 56.25 92.61 63.78 41.69 91.08 81.21 72.42 33.36 71.06 46.96
    0.650

  • 第1行验证

    python3 tools/evaluate.py --gpu "0" --checkpoint_dir "/nfs/byf/log/group0_pretrained_sv2/eval" --source_dataset 'group0' --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --num_classes 19 --multi "False" --pretrained_ckpt_file "/nfs/byf/log/group0_pretrained_sv2/group0best.pth" --dataset "group1" --backbone "deeplabv2_multi"
    

    image.png
    95.79 70.93 87.59 40.45 46.18 46.02 48.84 51.63 87.44 55.0 90.49 67.25 44.92 90.7 45.22 78.95 36.5 76.65 55.98
    0.640

  • 第4行验证

    python3 tools/evaluate.py --gpu "0" --checkpoint_dir "/nfs/byf/log/group0_group1_sv3/eval" --source_dataset 'group0' --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --num_classes 19 --multi "False" --pretrained_ckpt_file "/nfs/byf/log/group0_group1_sv3/group02group0best.pth" --dataset "group1" --backbone "deeplabv3_plus"
    

    image.png同样对抗适配hurt了performance。
    95.49 70.66 85.83 35.75 42.81 39.56 37.3 40.93 86.44 57.41 90.11 61.65 33.02 89.26 62.18 71.11 24.85 68.84 51.27
    0.602

  • 第3行验证

    python3 tools/evaluate.py --gpu "0" --checkpoint_dir "/nfs/byf/log/group0_group1_sv2/eval" --source_dataset 'group0' --iter_max 200000 --iter_stop 80000 --freeze_bn False --weight_decay 5e-4 --lr 2.5e-4 --crop_size "1280,720" --num_classes 19 --multi "False" --pretrained_ckpt_file "/nfs/byf/log/group0_group1_sv2/group02group0best.pth" --dataset "group1" --backbone "deeplabv2_multi"
    

    image.png感觉这部分反而hurt了performance。
    94.92 66.17 86.0 41.98 42.15 39.5 41.15 43.84 85.67 53.21 88.78 65.08 34.99 88.73 37.63 58.83 29.39 79.54 53.65
    0.595
    image.png
    new table

三、结果展示

image.png

image.png
就按这个来吧。

v3 single的域适配的图。synthia到cityscapes的迁移
image.png原图image.pnggt
image.png结果

image.png原图
image.pnggt
image.png结果。

image.png
image.png
image.png

image.png

image.png
image.png

/////上面已经上我专门调的好的啦。
再搞个v3的before adaptation的-更差一些(synthia_pretrained_sv3)—就能体现我们的效果啦。//虽然基本差别不大。
image.png
image.png
image.png
image.png
确实是有进步的。

下面给出v2的相关内容。single。synthia -> cityscapes
同样是上面的结果。
image.png
image.png
image.png
image.png
其实可以看出来的是。deeplabv3+和deeplabv2之间分割的miou结果虽然类似。但视觉结果还是有一些差距的。

下面是deeplabv2的域迁移的结果。synthia->cityscapes
image.png
image.png
image.png
image.png

///////上面已经可以完成了大部分内容-

最后展示一下deeplabv2直接在synthia上的结果—用来丰富内容-展示下模型的能力。single
image.png
image.png
image.png

image.png
image.png
image.png

image.png
image.png

image.png

再展示下deeplabv3+直接在synthia上的结果。 ///以上全都是single的
image.png
image.png
image.png