Swin Transformer目标检测4——训练自己数据集

Posted by Beyonderwei on 2022-03-23
Words 387 and Reading Time 1 Minutes
Viewed Times

一、修改工程

    1. 设置类别:修改 configs/base/models/mask_rcnn_swin_fpn.py 中 num_classes 为自己数据集的类别(有两处需要修改)
    1. 配置权重信息:修改 configs/base/default_runtime.py 中的 interval,loadfrom

      • interval:dict(interval=1) # 表示多少个 epoch 验证一次,然后保存一次权重信息
      • loadfrom:表示加载哪一个训练好的权重,可以直接写绝对路径如: load_from = r"E:\workspace\Python\Pytorch\Swin-Transformer-Object-Detection\mask_rcnn_swin_tiny_patch4_window7.pth"
    1. 修改训练尺寸大小:如果显存够的话可以不改(基本都运行不起来),文件位置为:configs/swin/mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_3x_coco.py

      • 修改所有的 img_scale 为 :img_scale = [(224, 224)] 或者 img_scale = [(256, 256)] 或者 480,512等。
      • 同时 configs/base/datasets/coco_instance.py 中的 img_scale 也要改成 img_scale = [(224, 224)] 或者其他值
    1. 配置数据集路径:configs/base/datasets/coco_instance.py 文件的最上面指定了数据集的路径,因此在项目下新建 data/coco目录,下面四个子目录 annotations和test2017,train2017,val2017。
    1. 修改该文件下的 train val test 的路径为自己新建的路径:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
train=dict(
type=dataset_type,
ann_file=data_root + 'annotations/instances_train2017.json',
img_prefix=data_root + 'train2017/',
pipeline=train_pipeline),
val=dict(
type=dataset_type,
ann_file=data_root + 'annotations/instances_val2017.json',
img_prefix=data_root + 'val2017/',
pipeline=test_pipeline),
test=dict(
type=dataset_type,
ann_file=data_root + 'annotations/instances_test2017.json',
img_prefix=data_root + 'test2017/',
pipeline=test_pipeline))
    1. 修改 batch size 和 线程数:根据自己的显存和CPU来设置
1
2
samples_per_gpu=2,  # batch size
workers_per_gpu=2, # 每个GPU对应线程数 可以大一些
    1. 修改分类数组:mmdet/datasets/coco.py

      • CLASSES中填写自己的分类:CLASSES = ('person', 'bicycle', 'car')

五、开始训练

执行:python tools/train.py configs\swin\mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_3x_coco.py


本文为作者原创文章,未经作者允许不得转载。

...

...

00:00
00:00