jay-mahadeokar / pynetbuilder

pyNetBuilder is a modular pytonic interface with builtin modules for generating popular caffe prototxt network file definitions.
BSD 2-Clause "Simplified" License
328 stars 140 forks source link

bottleneck resnet18 acc is low, only 58.21% top1 and 81.30% top 5 acc. #16

Open KevinYuk opened 7 years ago

KevinYuk commented 7 years ago
  1. My solver is: test_iter: 500 test_interval: 6000 base_lr: 0.05 display: 30 max_iter: 1500000 lr_policy: "multistep" gamma: 0.1 momentum: 0.9 weight_decay: 5e-05 snapshot: 6000 solver_mode: CPU stepvalue: 150000 stepvalue: 300000 stepvalue: 600000 stepvalue: 800000

  2. train_val.prototxt is generated by the "python app/imagenet/build_resnet.py -m bottleneck -b 2 2 2 2 -n 64 --no-fc_layers".

  3. Data layer is something like: transform_param { mirror: true crop_size: 224 mean_file: "/xxxxxxx/imagenet/lmdb/imagenet_mean.binaryproto" } data_param { source: "/xxxxxxx/imagenet/lmdb/ilsvrc12_train_lmdb" batch_size: 100 backend: LMDB prefetch: 2 }

Is there anyone know why?

Thanks a lot.

JokaHD commented 5 years ago

@KevinYuk, have you solved this problem? I also trained resnet18+SSD but my situation is worse. My detection_eval is only 0.4. I check the detection_out and found that there are 200 box predicted for each image, the score of these boxes are all about 0.99. Have you checked your detection output? My training batch size is 20, iter_size is 2, model input size is 320, base_lr starts from 0.005, after training 200k iteration, the output is still the same.

KevinYuk commented 5 years ago

@a26908456 Yes. I have tuned it to 64.1 mAP. My training batch size is 32, testing batch size is 1, model input size is 300, base_lr starts from 0.001. BTW, I just use normal reset18, and don't use bottleneck resnet18.

By using the same method with changing input model size to 320 and using MS coco dataset to pretrain, could increase mAP to 72.3.

Below is my solver, please refer it: rain_net: "xxx/train.prototxt" test_net: "xxx/test.prototxt"

test_iter: 4952 test_interval: 10000 base_lr: 0.001 display: 10 max_iter: 120000 lr_policy: "multistep" gamma: 0.1 momentum: 0.9 weight_decay: 0.0005 snapshot: 10000 snapshot_prefix: "" solver_mode: CPU device_id: 0 debug_info: false snapshot_after_train: true test_initialization: false average_loss: 10 stepvalue: 80000 stepvalue: 100000 stepvalue: 120000 iter_size: 1 type: "SGD" eval_type: "detection" ap_version: "11point"

JokaHD commented 5 years ago

@KevinYuk, thanks a lot! I tried another training with these hyper-parameter, but the false positive boxes are still 200 per image after 25k iteration ( detection eval = 0.38 ). Maybe there is something wrong with my .mdb file or other settings. I'll check them again. Thanks for your reply!

Yizhouw21 commented 5 years ago

Hi @KevinYuk, Thanks for sharing! I have also tried to tune SSD+ResNet18 on VOC2007 trainval, but I only get 0.41mAP@0.5IoU on VOC2007 test. I am wondering from which layers in ResNet are you collecting feature maps for the detection head? (I am using the feature map suggested in the DSSD paper from conv3_x, conv_5x, as well as the extra conv layers added after the backbone ResNet-18 network)

KelvinHuang666 commented 4 years ago

can U tell me how to create prototxt and give me pre-train model to train my own dataset???