voc07.py 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. _base_ = [
  2. '../_base_/models/faster-rcnn_r50_fpn.py', '../_base_/default_runtime.py'
  3. ]
  4. # model setting
  5. model = dict(roi_head=dict(bbox_head=dict(num_classes=20)))
  6. # dsdl dataset settings
  7. # please visit our platform [OpenDataLab](https://opendatalab.com/)
  8. # to downloaded dsdl dataset.
  9. dataset_type = 'DSDLDetDataset'
  10. data_root = 'data/VOC07-det'
  11. img_prefix = 'original'
  12. train_ann = 'dsdl/set-train/train.yaml'
  13. val_ann = 'dsdl/set-test/test.yaml'
  14. specific_key_path = dict(ignore_flag='./objects/*/difficult')
  15. backend_args = None
  16. train_pipeline = [
  17. dict(type='LoadImageFromFile', backend_args=backend_args),
  18. dict(type='LoadAnnotations', with_bbox=True),
  19. dict(type='Resize', scale=(1000, 600), keep_ratio=True),
  20. dict(type='RandomFlip', prob=0.5),
  21. dict(type='PackDetInputs')
  22. ]
  23. test_pipeline = [
  24. dict(type='LoadImageFromFile', backend_args=backend_args),
  25. dict(type='Resize', scale=(1000, 600), keep_ratio=True),
  26. # avoid bboxes being resized
  27. dict(type='LoadAnnotations', with_bbox=True),
  28. dict(
  29. type='PackDetInputs',
  30. meta_keys=('img_id', 'img_path', 'ori_shape', 'img_shape',
  31. 'scale_factor', 'instances'))
  32. ]
  33. train_dataloader = dict(
  34. dataset=dict(
  35. type=dataset_type,
  36. specific_key_path=specific_key_path,
  37. data_root=data_root,
  38. ann_file=train_ann,
  39. data_prefix=dict(img_path=img_prefix),
  40. filter_cfg=dict(filter_empty_gt=True, min_size=32, bbox_min_size=32),
  41. pipeline=train_pipeline))
  42. val_dataloader = dict(
  43. dataset=dict(
  44. type=dataset_type,
  45. specific_key_path=specific_key_path,
  46. data_root=data_root,
  47. ann_file=val_ann,
  48. data_prefix=dict(img_path=img_prefix),
  49. test_mode=True,
  50. pipeline=test_pipeline))
  51. test_dataloader = val_dataloader
  52. # Pascal VOC2007 uses `11points` as default evaluate mode, while PASCAL
  53. # VOC2012 defaults to use 'area'.
  54. val_evaluator = dict(type='VOCMetric', metric='mAP', eval_mode='11points')
  55. # val_evaluator = dict(type='CocoMetric', metric='bbox')
  56. test_evaluator = val_evaluator
  57. # training schedule, voc dataset is repeated 3 times, in
  58. # `_base_/datasets/voc0712.py`, so the actual epoch = 4 * 3 = 12
  59. max_epochs = 12
  60. train_cfg = dict(
  61. type='EpochBasedTrainLoop', max_epochs=max_epochs, val_interval=3)
  62. val_cfg = dict(type='ValLoop')
  63. test_cfg = dict(type='TestLoop')
  64. # learning rate
  65. param_scheduler = [
  66. dict(
  67. type='MultiStepLR',
  68. begin=0,
  69. end=max_epochs,
  70. by_epoch=True,
  71. milestones=[9],
  72. gamma=0.1)
  73. ]
  74. # optimizer
  75. optim_wrapper = dict(
  76. type='OptimWrapper',
  77. optimizer=dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0001))
  78. # Default setting for scaling LR automatically
  79. # - `enable` means enable scaling LR automatically
  80. # or not by default.
  81. # - `base_batch_size` = (8 GPUs) x (2 samples per GPU).
  82. auto_scale_lr = dict(enable=False, base_batch_size=16)