faster-rcnn_r50-caffe-c4_ms-18k_voc0712.py 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. _base_ = [
  2. '../_base_/models/faster-rcnn_r50-caffe-c4.py',
  3. '../_base_/schedules/schedule_1x.py', '../_base_/datasets/voc0712.py',
  4. '../_base_/default_runtime.py'
  5. ]
  6. model = dict(roi_head=dict(bbox_head=dict(num_classes=20)))
  7. # dataset settings
  8. train_pipeline = [
  9. dict(type='LoadImageFromFile', backend_args={{_base_.backend_args}}),
  10. dict(type='LoadAnnotations', with_bbox=True),
  11. dict(
  12. type='RandomChoiceResize',
  13. scales=[(1333, 480), (1333, 512), (1333, 544), (1333, 576),
  14. (1333, 608), (1333, 640), (1333, 672), (1333, 704),
  15. (1333, 736), (1333, 768), (1333, 800)],
  16. keep_ratio=True),
  17. dict(type='RandomFlip', prob=0.5),
  18. dict(type='PackDetInputs')
  19. ]
  20. test_pipeline = [
  21. dict(type='LoadImageFromFile', backend_args={{_base_.backend_args}}),
  22. dict(type='Resize', scale=(1333, 800), keep_ratio=True),
  23. # avoid bboxes being resized
  24. dict(type='LoadAnnotations', with_bbox=True),
  25. dict(
  26. type='PackDetInputs',
  27. meta_keys=('img_id', 'img_path', 'ori_shape', 'img_shape',
  28. 'scale_factor'))
  29. ]
  30. train_dataloader = dict(
  31. sampler=dict(type='InfiniteSampler', shuffle=True),
  32. dataset=dict(
  33. _delete_=True,
  34. type='ConcatDataset',
  35. datasets=[
  36. dict(
  37. type='VOCDataset',
  38. data_root={{_base_.data_root}},
  39. ann_file='VOC2007/ImageSets/Main/trainval.txt',
  40. data_prefix=dict(sub_data_root='VOC2007/'),
  41. filter_cfg=dict(filter_empty_gt=True, min_size=32),
  42. pipeline=train_pipeline,
  43. backend_args={{_base_.backend_args}}),
  44. dict(
  45. type='VOCDataset',
  46. data_root={{_base_.data_root}},
  47. ann_file='VOC2012/ImageSets/Main/trainval.txt',
  48. data_prefix=dict(sub_data_root='VOC2012/'),
  49. filter_cfg=dict(filter_empty_gt=True, min_size=32),
  50. pipeline=train_pipeline,
  51. backend_args={{_base_.backend_args}})
  52. ]))
  53. val_dataloader = dict(dataset=dict(pipeline=test_pipeline))
  54. test_dataloader = val_dataloader
  55. # training schedule for 18k
  56. max_iter = 18000
  57. train_cfg = dict(
  58. _delete_=True,
  59. type='IterBasedTrainLoop',
  60. max_iters=max_iter,
  61. val_interval=3000)
  62. # learning rate
  63. param_scheduler = [
  64. dict(
  65. type='LinearLR', start_factor=0.001, by_epoch=False, begin=0, end=100),
  66. dict(
  67. type='MultiStepLR',
  68. begin=0,
  69. end=max_iter,
  70. by_epoch=False,
  71. milestones=[12000, 16000],
  72. gamma=0.1)
  73. ]
  74. # optimizer
  75. optim_wrapper = dict(
  76. type='OptimWrapper',
  77. optimizer=dict(type='SGD', lr=0.02, momentum=0.9, weight_decay=0.0001))
  78. default_hooks = dict(checkpoint=dict(by_epoch=False, interval=3000))
  79. log_processor = dict(by_epoch=False)