作者 | Fengwen、BBuf
欢迎Star、试用One-YOLOv5:
https://github.com/Oneflow-Inc/one-yolov5
1
结构项目预览
2
安装
- git clone https://github.com/Oneflow-Inc/one-yolov5 # clone
- cd one-yolov5
- pip install -r requirements.txt # install
带权重训练
$ python path/to/train.py --data coco.yaml --weights yolov5s --img 640
2. 不带权重训练
$ python path/to/train.py --data coco.yaml --weights '' --cfg yolov5s.yaml --img 640
$ python train.py --data coco.yaml --weights yolov5s --device 0
$ python -m oneflow.distributed.launch --nproc_per_node 2 train.py --batch 64 --data coco.yaml --weights yolov5s --device 0,1
注意:
--nproc_per_node 指定要使用多少GPU。举个例子:在上面多GPU训练指令中它是2。
--batch 是总批量大小。它将平均分配给每个GPU。在上面的示例中,每GPU是64/2=32。
--cfg : 指定一个包含所有评估参数的配置文件。
上面的代码默认使用GPU 0…(N-1)。使用特定的GPU?可以通过简单在 --device 后跟指定GPU来实现。「案例」,在下面的代码中,我们将使用GPU 2,3。
$ python -m oneflow.distributed.launch --nproc_per_node 2 train.py --batch 64 --data coco.yaml --cfg yolov5s.yaml --weights '' --device 2,3
如果你的训练进程中断了,你可以这样恢复先前的训练进程。
- # 多卡训练.
- python -m oneflow.distributed.launch --nproc_per_node 2 train.py --resume
你也可以通过 --resume 参数指定要恢复的模型路径。
- # 记得把 /path/to/your/checkpoint/path 替换为你要恢复训练的模型权重路径
- --resume /path/to/your/checkpoint/path
SyncBatchNorm可以提高多gpu训练的准确性,但会显著降低训练速度。它仅适用于多GPU DistributedDataParallel 训练。建议最好在每个GPU上的样本数量较小(样本数量<=8)时使用。
要使用SyncBatchNorm,只需将添加 --sync-bn 参数选项,具体「案例」如下: