cascade-rpn_faster-rcnn_r50-caffe_fpn_1x_coco.py 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. _base_ = '../faster_rcnn/faster-rcnn_r50-caffe_fpn_1x_coco.py'
  2. rpn_weight = 0.7
  3. model = dict(
  4. rpn_head=dict(
  5. _delete_=True,
  6. type='CascadeRPNHead',
  7. num_stages=2,
  8. stages=[
  9. dict(
  10. type='StageCascadeRPNHead',
  11. in_channels=256,
  12. feat_channels=256,
  13. anchor_generator=dict(
  14. type='AnchorGenerator',
  15. scales=[8],
  16. ratios=[1.0],
  17. strides=[4, 8, 16, 32, 64]),
  18. adapt_cfg=dict(type='dilation', dilation=3),
  19. bridged_feature=True,
  20. with_cls=False,
  21. reg_decoded_bbox=True,
  22. bbox_coder=dict(
  23. type='DeltaXYWHBBoxCoder',
  24. target_means=(.0, .0, .0, .0),
  25. target_stds=(0.1, 0.1, 0.5, 0.5)),
  26. loss_bbox=dict(
  27. type='IoULoss', linear=True,
  28. loss_weight=10.0 * rpn_weight)),
  29. dict(
  30. type='StageCascadeRPNHead',
  31. in_channels=256,
  32. feat_channels=256,
  33. adapt_cfg=dict(type='offset'),
  34. bridged_feature=False,
  35. with_cls=True,
  36. reg_decoded_bbox=True,
  37. bbox_coder=dict(
  38. type='DeltaXYWHBBoxCoder',
  39. target_means=(.0, .0, .0, .0),
  40. target_stds=(0.05, 0.05, 0.1, 0.1)),
  41. loss_cls=dict(
  42. type='CrossEntropyLoss',
  43. use_sigmoid=True,
  44. loss_weight=1.0 * rpn_weight),
  45. loss_bbox=dict(
  46. type='IoULoss', linear=True,
  47. loss_weight=10.0 * rpn_weight))
  48. ]),
  49. roi_head=dict(
  50. bbox_head=dict(
  51. bbox_coder=dict(target_stds=[0.04, 0.04, 0.08, 0.08]),
  52. loss_cls=dict(
  53. type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.5),
  54. loss_bbox=dict(type='SmoothL1Loss', beta=1.0, loss_weight=1.0))),
  55. # model training and testing settings
  56. train_cfg=dict(
  57. rpn=[
  58. dict(
  59. assigner=dict(
  60. type='RegionAssigner', center_ratio=0.2, ignore_ratio=0.5),
  61. allowed_border=-1,
  62. pos_weight=-1,
  63. debug=False),
  64. dict(
  65. assigner=dict(
  66. type='MaxIoUAssigner',
  67. pos_iou_thr=0.7,
  68. neg_iou_thr=0.7,
  69. min_pos_iou=0.3,
  70. ignore_iof_thr=-1),
  71. sampler=dict(
  72. type='RandomSampler',
  73. num=256,
  74. pos_fraction=0.5,
  75. neg_pos_ub=-1,
  76. add_gt_as_proposals=False),
  77. allowed_border=-1,
  78. pos_weight=-1,
  79. debug=False)
  80. ],
  81. rpn_proposal=dict(max_per_img=300, nms=dict(iou_threshold=0.8)),
  82. rcnn=dict(
  83. assigner=dict(
  84. pos_iou_thr=0.65, neg_iou_thr=0.65, min_pos_iou=0.65),
  85. sampler=dict(type='RandomSampler', num=256))),
  86. test_cfg=dict(
  87. rpn=dict(max_per_img=300, nms=dict(iou_threshold=0.8)),
  88. rcnn=dict(score_thr=1e-3)))
  89. optim_wrapper = dict(clip_grad=dict(max_norm=35, norm_type=2))