2.2 AntiUAV410
1、使用COCO数据格式对AntiUAV410进行训练
在/YOLOX/datasets/下新建文件夹/AntiUAV410/,为了与coco数据集格式一致,在/AntiUAV410/下创建四个文件夹annotations、test2017、train2017、val2017分别对应/data3/publicData/Anti-UAV410/Anti-UAV/下的四个文件夹
2、修改/YOLOX/yolox/data/datasets/coco_classes.py
该数据集只有一类,因此改为
COCO_CLASSES = (
"uav",
)
3、修改配置文件/YOLOX/exps/example/custom/yolox_s.py
self.data_dir = "datasets/AntiUAV410"
self.train_ann = "train.json"
self.val_ann = "val.json"
self.test_ann = "test.json"
self.num_classes = 1
self.max_epoch = 12
4、训练
注意事项:
(1)self.data_num_workers大于2会报错:RuntimeError: Trying to resize storage that is not resizable
(2)-o 和 --cache 用来加速,已验证
(3)--fp16 混合精度占用内存少,速度快。根据https://zhuanlan.zhihu.com/p/103685761,Volta 结构的GPU可以使用混合精度训练,我使用的RTX3090貌似不支持,实际测试发现不论是否启用耗时差异不大
(4)num_workers=2 的时候,在 /YOLOX/yolox/data/datasets/coco.py 中 id_ = self.ids[index] 会报错index超出范围,原因未知
(5)测试发现关闭 --fp16 后,num_workers=2不再报错
最终代码:
python -m yolox.tools.train -f ./exps/example/custom/yolox_s.py -d 4 -b 64 -o --cache