voc0712.py 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. _base_ = [
  2. '../_base_/models/faster-rcnn_r50_fpn.py',
  3. '../_base_/schedules/schedule_1x.py',
  4. '../_base_/default_runtime.py',
  5. # '../_base_/datasets/dsdl.py'
  6. ]
  7. # model setting
  8. model = dict(roi_head=dict(bbox_head=dict(num_classes=20)))
  9. # dsdl dataset settings
  10. # please visit our platform [OpenDataLab](https://opendatalab.com/)
  11. # to downloaded dsdl dataset.
  12. dataset_type = 'DSDLDetDataset'
  13. data_root_07 = 'data/VOC07-det'
  14. data_root_12 = 'data/VOC12-det'
  15. img_prefix = 'original'
  16. train_ann = 'dsdl/set-train/train.yaml'
  17. val_ann = 'dsdl/set-val/val.yaml'
  18. test_ann = 'dsdl/set-test/test.yaml'
  19. backend_args = None
  20. train_pipeline = [
  21. dict(type='LoadImageFromFile', backend_args=backend_args),
  22. dict(type='LoadAnnotations', with_bbox=True),
  23. dict(type='Resize', scale=(1000, 600), keep_ratio=True),
  24. dict(type='RandomFlip', prob=0.5),
  25. dict(type='PackDetInputs')
  26. ]
  27. test_pipeline = [
  28. dict(type='LoadImageFromFile', backend_args=backend_args),
  29. dict(type='Resize', scale=(1000, 600), keep_ratio=True),
  30. # If you don't have a gt annotation, delete the pipeline
  31. dict(type='LoadAnnotations', with_bbox=True),
  32. dict(
  33. type='PackDetInputs',
  34. meta_keys=('img_id', 'img_path', 'ori_shape', 'img_shape',
  35. 'scale_factor', 'instances'))
  36. ]
  37. specific_key_path = dict(ignore_flag='./objects/*/difficult', )
  38. train_dataloader = dict(
  39. dataset=dict(
  40. type='RepeatDataset',
  41. times=3,
  42. dataset=dict(
  43. type='ConcatDataset',
  44. datasets=[
  45. dict(
  46. type=dataset_type,
  47. specific_key_path=specific_key_path,
  48. data_root=data_root_07,
  49. ann_file=train_ann,
  50. data_prefix=dict(img_path=img_prefix),
  51. filter_cfg=dict(
  52. filter_empty_gt=True, min_size=32, bbox_min_size=32),
  53. pipeline=train_pipeline),
  54. dict(
  55. type=dataset_type,
  56. specific_key_path=specific_key_path,
  57. data_root=data_root_07,
  58. ann_file=val_ann,
  59. data_prefix=dict(img_path=img_prefix),
  60. filter_cfg=dict(
  61. filter_empty_gt=True, min_size=32, bbox_min_size=32),
  62. pipeline=train_pipeline),
  63. dict(
  64. type=dataset_type,
  65. specific_key_path=specific_key_path,
  66. data_root=data_root_12,
  67. ann_file=train_ann,
  68. data_prefix=dict(img_path=img_prefix),
  69. filter_cfg=dict(
  70. filter_empty_gt=True, min_size=32, bbox_min_size=32),
  71. pipeline=train_pipeline),
  72. dict(
  73. type=dataset_type,
  74. specific_key_path=specific_key_path,
  75. data_root=data_root_12,
  76. ann_file=val_ann,
  77. data_prefix=dict(img_path=img_prefix),
  78. filter_cfg=dict(
  79. filter_empty_gt=True, min_size=32, bbox_min_size=32),
  80. pipeline=train_pipeline),
  81. ])))
  82. val_dataloader = dict(
  83. dataset=dict(
  84. type=dataset_type,
  85. specific_key_path=specific_key_path,
  86. data_root=data_root_07,
  87. ann_file=test_ann,
  88. test_mode=True,
  89. pipeline=test_pipeline))
  90. test_dataloader = val_dataloader
  91. val_evaluator = dict(type='CocoMetric', metric='bbox')
  92. # val_evaluator = dict(type='VOCMetric', metric='mAP', eval_mode='11points')
  93. test_evaluator = val_evaluator
  94. # training schedule, voc dataset is repeated 3 times, in
  95. # `_base_/datasets/voc0712.py`, so the actual epoch = 4 * 3 = 12
  96. max_epochs = 4
  97. train_cfg = dict(
  98. type='EpochBasedTrainLoop', max_epochs=max_epochs, val_interval=1)
  99. val_cfg = dict(type='ValLoop')
  100. test_cfg = dict(type='TestLoop')
  101. # learning rate
  102. param_scheduler = [
  103. dict(
  104. type='MultiStepLR',
  105. begin=0,
  106. end=max_epochs,
  107. by_epoch=True,
  108. milestones=[3],
  109. gamma=0.1)
  110. ]
  111. # optimizer
  112. optim_wrapper = dict(
  113. type='OptimWrapper',
  114. optimizer=dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0001))
  115. # Default setting for scaling LR automatically
  116. # - `enable` means enable scaling LR automatically
  117. # or not by default.
  118. # - `base_batch_size` = (8 GPUs) x (2 samples per GPU).
  119. auto_scale_lr = dict(enable=False, base_batch_size=16)