RT-DETR训练流程
RT-DETR训练流程
配置环境
先建一个rtdetr的环境,我使用的是python3.9
pip install -r requirements.txt
不用管下什么版本的torch,里面写的都有版本
numpy最好用1.23.0,或者等后面numpy报错了再重新装这个版本
数据集准备
数据集按照如下形式摆放,但主要还是按照annotations标注文件来,有可能里面标的图片不一定是这么摆放的
path/to/coco/
annotations/ # annotation json files
train2017/ # train images
val2017/ # val images
开始训练
单个cpu使用如下命令训练即可,但是开始之前建议先看看之后的参数部分
python tools/train.py -c configs/rtdetr/rtdetr_r50vd_6x_coco.yml
参数介绍
从文件位置从上到下来介绍,建议看完,或者善用搜索
configs/dataset/coco_detection.yml
# 这是修改数据集种类的位置,修改为你的数据集种类的数量+1,或者改成365,也适配coco
num_classes = 80
# 如果用的不是coco数据集填False
remap_mscoco_category: False
# 接着修改数据集路径
train_dataloader:
type: DataLoader
dataset:
type: CocoDetection
img_folder: # 这里是train数据集的图片位置
ann_file: # 这里是train数据集的标注文件
transforms:
type: Compose
ops: ~
shuffle: True
batch_size: 6
num_workers: 0
drop_last: True
val_dataloader:
type: DataLoader
dataset:
type: CocoDetection
img_folder: # 这里是val数据集的图片位置
ann_file: # 这里是val数据集的标注文件
transforms:
type: Compose
ops: ~
这个文件中的batch_size和num_workers好像是摆设,在这里调整了好像没用,最起码本人试了一下是这样,还是需要修改后文会讲到的dataloader文件,不放心的话可以二者保持一致。
configs/rtdetr/include/dataloader.yml
在这里修改bs和n_w,不放心的话也同时修改上文文件中的配置
configs/rtdetr/你使用的配置文件(这里拿r18举例)
# 输出文件位置,可以不用动,反正生成在根目录里面
output_dir: ./output/rtdetr_r18vd_6x_coco
# 不适用预训练权重
pretrained: False
# 不使用预训练权重的话可以直接去
# src/nn/backbone/presnet.py里面
# 如果不使用预训练权重就把这些注释了
# if pretrained:
# state = torch.hub.load_state_dict_from_url(donwload_url[depth])
# self.load_state_dict(state)
# print(f'Load PResNet{depth} state_dict')
src/core/yaml_config.py
# 注释掉原先的,添加下面一行,是要训练的epochs数量
# self.epoches = cfg.get('epoches', -1)
self.epoches = 300
src/data/transforms.py
# 在这文件的随便一行位置添加
# 如果出现过什么什么像素最大值超出之类的错误,加了这个就好了
# 如果不报错也可以不加
Image.MAX_IMAGE_PIXELS = 600000000
src/nn/backbone/presnet.py
配置文件里讲了