hualin95 / Deeplab-v3plus

A higher performance pytorch implementation of DeepLab V3 Plus(DeepLab v3+)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Fail to reproduce the reported result.

minghchen opened this issue · comments

Nice work! I test on 2 GPU: 1080 ti with 4 batch on each. It should be the same as 4 GPU with 2 batch on each, because of sync_bn.
1
I achieve 75.8% miou at stage1, and 76.8% at stage2, which is lower than 79%.
I try the newest code with following cmd, as voc2012_train.sh doesn't fit the updated code.

python3 tools/train_voc.py \
                           --gpu "1,2" \
                           --dataset 'voc2012_aug' \
                           --checkpoint_dir "./log/voc_aug_ba=8_wd=4e-5_iter_max=30k/" \
                           --freeze_bn False \
                           --weight_decay 4e-5 \
                           --lr 0.007 \
                           --output_stride 16 \
                           --iter_max 30000 \
                           --batch_size_per_gpu 4
python3 tools/train_voc.py \
                           --gpu "1,2" \
                           --dataset 'voc2012_aug' \
                           --checkpoint_dir "./log/voc_aug_ba=8_wd=4e-5_iter_max=30k_stage2/" \
                           --freeze_bn True \
                           --pretrained_ckpt_file "./resnet101_16_iamgenet_pre-True_ckpt_file-None_loss_weight_file-None_batch_size-8_base_size-513_crop_size-513_split-train_lr-0.007_iter_max-30000final.pth" \
                           --weight_decay 4e-5 \
                           --lr 0.001 \
                           --output_stride 8 \
                           --iter_max 30000 \
                           --batch_size_per_gpu 4

I only rewrite a part of code associated with checkpoint_dir to load checkpoint correctly.
So, what's wrong with my setting? I will appreciate any advice.

find batch size needs 16. I will test batch size=16 later.

find batch size needs 16. I will test batch size=16 later.

I use batch size =16 on 4 GPU (4 batch on each), but can only achieve 73.82% on miou. Have you produced the reported result?

Nice work! I test on 2 GPU: 1080 ti with 4 batch on each. It should be the same as 4 GPU with 2 batch on each, because of sync_bn.
1
I achieve 75.8% miou at stage1, and 76.8% at stage2, which is lower than 79%.
I try the newest code with following cmd, as voc2012_train.sh doesn't fit the updated code.

python3 tools/train_voc.py \
                           --gpu "1,2" \
                           --dataset 'voc2012_aug' \
                           --checkpoint_dir "./log/voc_aug_ba=8_wd=4e-5_iter_max=30k/" \
                           --freeze_bn False \
                           --weight_decay 4e-5 \
                           --lr 0.007 \
                           --output_stride 16 \
                           --iter_max 30000 \
                           --batch_size_per_gpu 4
python3 tools/train_voc.py \
                           --gpu "1,2" \
                           --dataset 'voc2012_aug' \
                           --checkpoint_dir "./log/voc_aug_ba=8_wd=4e-5_iter_max=30k_stage2/" \
                           --freeze_bn True \
                           --pretrained_ckpt_file "./resnet101_16_iamgenet_pre-True_ckpt_file-None_loss_weight_file-None_batch_size-8_base_size-513_crop_size-513_split-train_lr-0.007_iter_max-30000final.pth" \
                           --weight_decay 4e-5 \
                           --lr 0.001 \
                           --output_stride 8 \
                           --iter_max 30000 \
                           --batch_size_per_gpu 4

I only rewrite a part of code associated with checkpoint_dir to load checkpoint correctly.
So, what's wrong with my setting? I will appreciate any advice.

May I ask what are stage1 and stage2 refer to? I didn't see those phases on the paper or the implementation.

You should run train.py directly rather than voc2012_train.sh that is just a example.

@gasvn

May I ask what are stage1 and stage2 refer to? I didn't see those phases on the paper or the implementation.

Deeplabv3+ uses the same Training Protocol as deeplabv3.
In the deeplabv3 paper, it says:
Since large batch size is required to train batch normalization parame- ters, we employ output stride = 16 and compute the batch normalization statistics with a batch size of 16. The batch normalization parameters are trained with decay = 0.9997. After training on the trainaug set with 30K iterations and ini- tial learning rate = 0.007, we then freeze batch normalization parameters, employ output stride = 8, and train on the official PASCAL VOC 2012 trainval set for another 30K iterations and smaller base learning rate = 0.001.

find batch size needs 16. I will test batch size=16 later.

when i use batchsize=6 or8,and get error out of memory. so i use batch=4; the device is 4 GPU1080ti; so how to get large batch size train? if use small batch size ,the syn-BN is not necessary , how do you think this ?

commented

@futurebelongtoML sorry to disturb you , I just want to know have you run test.py successfully? I run this code but keep meeting this error:
ImportError: cannot import name 'cfg'

and I got nothing in the Results and Preweights directory, do you know how to solve this? Hope for your apply!