CenterNet训练自己的数据

准备数据

  1. pascal voc格式数据转coco格式

    参考: https://blog.csdn.net/weixin_41765699/article/details/100124689

  2. 1
    2
    3
    4

    3. 在```path/src/lib/datasets/datasets```下新建```gaodian.py```,内容参照```coco.py```改,改成自己需求的样子

    1. 修改类名为```Gaodian

    1. 14行

      1
      2
      3
      4
      5
      6

      3. 改均值和方差,参考 https://blog.csdn.net/weixin_41765699/article/details/100118660

      4. 修改数据和图片的路径,```data_dir```到数据集名称文件夹,```img_dir```放图片的位置

      5. 修改标签文件```json```文件,我改了如下,这样train和val都读2036的文件

      else:
        self.annot_path = os.path.join(
          self.data_dir, 'annotations', 
          '2036.json')
      
      1
      2

      6. 修改```path/src/lib/datasets/dataset_factory.py
      1
      2
      3
      4
      5
      6
      7
      dataset_factory = {
      'coco': COCO,
      'pascal': PascalVOC,
      'kitti': KITTI,
      'coco_hp': COCOHP,
      'gaodian': Gaodian
      }
  1. 修改
    1
    2
       
    将默认的数据集名称修改为```gaodian
1
2
self.parser.add_argument('--dataset', default='gaodian',
help='coco | kitti | coco_hp | pascal')
将默认数据集的均值方差修改
1
2
3
4
5
def init(self, args=''):
default_dataset_info = {
'ctdet': {'default_resolution': [512, 512], 'num_classes': 80,
'mean': [0.408, 0.447, 0.470], 'std': [0.289, 0.274, 0.278],
'dataset': 'coco'},
  1. 修改

    1
     

    elif num_classes == 80 or dataset == 'coco':
      self.names = coco_class_name
    elif num_classes == 3 or dataset == 'gaodian':
        self.names = gaodian_class_name
    elif num_classes == 20 or dataset == 'pascal':
    
    1
     

    gaodian_class_name = [

    'person', 'vehicle', 'none-motor']
    
    1
    2
       
    #### 训练

python main.py ctdet –arch dlav0_34 –exp_id coco_dla_1x –batch_size 64 –master_batch 16 –lr 5e-4 –gpus 0,1,2,3 –num_workers 16
`