content: # model settings
  model = dict(
      type='BMN',
      temporal_dim=100,
      boundary_ratio=0.5,
      num_samples=32,
      num_samples_per_bin=3,
      feat_dim=400,
      soft_nms_alpha=0.4,
      soft_nms_low_threshold=0.5,
      soft_nms_high_threshold=0.9,
      post_process_top_k=100)
  # model training and testing settings
  train_cfg = None
  test_cfg = dict(average_clips='score')
  # dataset settings
  dataset_type = 'ActivityNetDataset'
  data_root = 'data/ActivityNet/activitynet_feature_cuhk/csv_mean_100/'
  data_root_val = 'data/ActivityNet/activitynet_feature_cuhk/csv_mean_100/'
  ann_file_train = 'data/ActivityNet/anet_anno_train.json'
  ann_file_val = 'data/ActivityNet/anet_anno_val.json'
  ann_file_test = 'data/ActivityNet/anet_anno_val.json'
  
  test_pipeline = [
      dict(type='LoadLocalizationFeature'),
      dict(
          type='Collect',
          keys=['raw_feature'],
          meta_name='video_meta',
          meta_keys=[
              'video_name', 'duration_second', 'duration_frame', 'annotations',
              'feature_frame'
          ]),
      dict(type='ToTensor', keys=['raw_feature']),
  ]
  train_pipeline = [
      dict(type='LoadLocalizationFeature'),
      dict(type='GenerateLocalizationLabels'),
      dict(
          type='Collect',
          keys=['raw_feature', 'gt_bbox'],
          meta_name='video_meta',
          meta_keys=['video_name']),
      dict(type='ToTensor', keys=['raw_feature', 'gt_bbox']),
      dict(
          type='ToDataContainer',
          fields=[dict(key='gt_bbox', stack=False, cpu_only=True)])
  ]
  val_pipeline = [
      dict(type='LoadLocalizationFeature'),
      dict(type='GenerateLocalizationLabels'),
      dict(
          type='Collect',
          keys=['raw_feature', 'gt_bbox'],
          meta_name='video_meta',
          meta_keys=[
              'video_name', 'duration_second', 'duration_frame', 'annotations',
              'feature_frame'
          ]),
      dict(type='ToTensor', keys=['raw_feature', 'gt_bbox']),
      dict(
          type='ToDataContainer',
          fields=[dict(key='gt_bbox', stack=False, cpu_only=True)])
  ]
  data = dict(
      videos_per_gpu=8,
      workers_per_gpu=8,
      train_dataloader=dict(drop_last=True),
      val_dataloader=dict(videos_per_gpu=1),
      test_dataloader=dict(videos_per_gpu=1),
      test=dict(
          type=dataset_type,
          ann_file=ann_file_test,
          pipeline=test_pipeline,
          data_prefix=data_root_val),
      val=dict(
          type=dataset_type,
          ann_file=ann_file_val,
          pipeline=val_pipeline,
          data_prefix=data_root_val),
      train=dict(
          type=dataset_type,
          ann_file=ann_file_train,
          pipeline=train_pipeline,
          data_prefix=data_root))
  
  # optimizer
  optimizer = dict(
      type='Adam', lr=0.001, weight_decay=0.0001)  # this lr is used for 2 gpus
  optimizer_config = dict(grad_clip=None)
  # learning policy
  lr_config = dict(policy='step', step=7)
  
  total_epochs = 9
  checkpoint_config = dict(interval=1)
  evaluation = dict(interval=1, metrics=['AR@AN'])
  log_config = dict(interval=50, hooks=[dict(type='TextLoggerHook')])
  # runtime settings
  dist_params = dict(backend='nccl')
  log_level = 'INFO'
  work_dir = './work_dirs/bmn_400x100_2x8_9e_activitynet_feature/'
  load_from = None
  resume_from = None
  workflow = [('train', 1)]
  output_config = dict(out=f'{work_dir}/results.json', output_format='json')
  