diff --git a/.gitignore b/.gitignore index 38fe8e6afc0c270fd27d62d8ba9106221de9d320..94f052b12456890b0055059f55415f0f1837d733 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ model/utils/build/ imgs/ *.png *.jpg +misc/ diff --git a/config.py b/config.py index 8c3c2e6275ebea428290dd379c3f9426d69e8b65..2b5da9949019bdef7d2ad9565e867d4624634806 100644 --- a/config.py +++ b/config.py @@ -42,6 +42,7 @@ class Config: use_adam = False use_chainer = False + use_drop = False # debug debug_file = '/tmp/debugf' diff --git a/model/faster_rcnn_vgg16.py b/model/faster_rcnn_vgg16.py index 73e5e81982b19a46959665276a538ef46ec56fb4..8695c709dfb88089267091237227e012b9e4063c 100644 --- a/model/faster_rcnn_vgg16.py +++ b/model/faster_rcnn_vgg16.py @@ -15,9 +15,14 @@ def decom_vgg16(pretrained=True): model = vgg16(pretrained) features = list(model.features)[:30] classifier = model.classifier - # classifier = list(classifier) - # del the last layer - del classifier._modules['6'] + + classifier = list(classifier) + # delete dropout + del classifier[6] + if not opt.use_drop: + del classifier[5] + del classifier[2] + classifier = nn.Sequential(*classifier) # free top3 conv for layer in features[:10]: diff --git a/train.py b/train.py index d7bf82b26418753e9c6b0bf7cb728c8f81f2cd5e..961923c911c30455d9548fbf8f58e214c77d5a3f 100644 --- a/train.py +++ b/train.py @@ -62,6 +62,7 @@ def train(**kwargs): trainer.load(opt.load_path) print('load pretrained model from %s' % opt.load_path) + trainer.optimizer = trainer.faster_rcnn.get_great_optimizer() trainer.vis.text(dataset.db.label_names, win='labels') best_map = 0 for epoch in range(opt.epoch): @@ -98,7 +99,7 @@ def train(**kwargs): trainer.vis.text(str(trainer.rpn_cm.value().tolist()), win='rpn_cm') # roi confusion matrix trainer.vis.img('roi_cm', at.totensor(trainer.roi_cm.conf, False).float()) - if best_map>0.6: + if best_map>0.6 and opt.test_num<5000: opt.test_num=10000 best_map = 0 eval_result = eval(test_dataloader, faster_rcnn, test_num=opt.test_num) @@ -106,9 +107,11 @@ def train(**kwargs): if eval_result['map'] > best_map: best_map = eval_result['map'] best_path = trainer.save(best_map=best_map) - else: + if epoch==8: trainer.load(best_path) trainer.faster_rcnn.scale_lr(opt.lr_decay) + if epoch ==0: + trainer.optimizer = trainer.faster_rcnn.get_optimizer() trainer.vis.plot('test_map', eval_result['map']) lr_ = trainer.faster_rcnn.optimizer.param_groups[0]['lr']