|
|
@@ -90,69 +90,16 @@ python train.py --cuda -d coco --root path/to/COCO -v yolov1 -bs 16 --max_epoch
|
|
|
|
|
|
由于我的计算资源有限,我不得不在训练期间将batch size设置为16甚至更小。我发现,对于*-Nano或*-Tiny这样的小模型,它们的性能似乎对batch size不太敏感,比如我复制的YOLOv5-N和S,它们甚至比官方的YOLOv5-N和S略强。然而,对于*-Large这样的大模型,其性能明显低于官方的性能,这似乎表明大模型对batch size更敏感。
|
|
|
|
|
|
-我提供了启用DDP训练的bash文件`train_ddp.sh`,我希望有人可以使用更多的显卡和更大的batch size来训练我实现的大模型,如YOLOv5-L、YOLOX以及YOLOv7-L。如果使用更大的batch size所训练出来的性能更高,如果能将训练的模型分享给我,我会很感激的。
|
|
|
-
|
|
|
-* 新设计的 YOLOv1~v2:
|
|
|
-
|
|
|
-| Model | Backbone | Scale | Epoch | AP<sup>val<br>0.5:0.95 | AP<sup>val<br>0.5 | FLOPs<br><sup>(G) | Params<br><sup>(M) | Weight |
|
|
|
-|---------------|--------------------|-------|-------|------------------------|-------------------|-------------------|--------------------|--------|
|
|
|
-| YOLOv1 | ResNet-18 | 640 | 150 | 27.9 | 47.5 | 37.8 | 21.3 | [ckpt](https://github.com/yjh0410/PyTorch_YOLO_Tutorial/releases/download/yolo_tutorial_ckpt/yolov1_coco.pth) |
|
|
|
-| YOLOv2 | DarkNet-19 | 640 | 150 | 32.7 | 50.9 | 53.9 | 30.9 | [ckpt](https://github.com/yjh0410/PyTorch_YOLO_Tutorial/releases/download/yolo_tutorial_ckpt/yolov2_coco.pth) |
|
|
|
-
|
|
|
-* YOLOv3:
|
|
|
-
|
|
|
-| Model | Backbone | Scale | Epoch | AP<sup>val<br>0.5:0.95 | AP<sup>val<br>0.5 | FLOPs<br><sup>(G) | Params<br><sup>(M) | Weight |
|
|
|
-|---------------|--------------------|-------|-------|------------------------|-------------------|-------------------|--------------------|--------|
|
|
|
-| YOLOv3-Tiny | DarkNet-Tiny | 640 | 250 | | | 7.0 | 2.3 | |
|
|
|
-| YOLOv3 | DarkNet-53 | 640 | 250 | 42.9 | 63.5 | 167.4 | 54.9 | [ckpt](https://github.com/yjh0410/PyTorch_YOLO_Tutorial/releases/download/yolo_tutorial_ckpt/yolov3_coco.pth) |
|
|
|
-
|
|
|
-* YOLOv4:
|
|
|
-
|
|
|
-| Model | Backbone | Scale | Epoch | AP<sup>val<br>0.5:0.95 | AP<sup>val<br>0.5 | FLOPs<br><sup>(G) | Params<br><sup>(M) | Weight |
|
|
|
-|---------------|--------------------|-------|-------|------------------------|-------------------|-------------------|--------------------|--------|
|
|
|
-| YOLOv4-Tiny | CSPDarkNet-Tiny | 640 | 250 | 31.0 | 49.1 | 8.1 | 2.9 | [ckpt](https://github.com/yjh0410/PyTorch_YOLO_Tutorial/releases/download/yolo_tutorial_ckpt/yolov4_t_coco.pth) |
|
|
|
-| YOLOv4 | CSPDarkNet-53 | 640 | 250 | 46.6 | 65.8 | 162.7 | 61.5 | [ckpt](https://github.com/yjh0410/PyTorch_YOLO_Tutorial/releases/download/yolo_tutorial_ckpt/yolov4_coco.pth) |
|
|
|
-
|
|
|
-* YOLOv5:
|
|
|
-
|
|
|
-| Model | Backbone | Scale | Epoch | AP<sup>val<br>0.5:0.95 | AP<sup>val<br>0.5 | FLOPs<br><sup>(G) | Params<br><sup>(M) | Weight |
|
|
|
-|---------------|--------------------|-------|-------|------------------------|-------------------|-------------------|--------------------|--------|
|
|
|
-| YOLOv5-N | CSPDarkNet-N | 640 | 250 | 29.8 | 47.1 | 7.7 | 2.4 | [ckpt](https://github.com/yjh0410/PyTorch_YOLO_Tutorial/releases/download/yolo_tutorial_ckpt/yolov5_n_coco.pth) |
|
|
|
-| YOLOv5-S | CSPDarkNet-S | 640 | 250 | 37.8 | 56.5 | 27.1 | 9.0 | [ckpt](https://github.com/yjh0410/PyTorch_YOLO_Tutorial/releases/download/yolo_tutorial_ckpt/yolov5_s_coco.pth) |
|
|
|
-| YOLOv5-M | CSPDarkNet-M | 640 | 250 | 43.5 | 62.5 | 74.3 | 25.4 | [ckpt](https://github.com/yjh0410/PyTorch_YOLO_Tutorial/releases/download/yolo_tutorial_ckpt/yolov5_m_coco.pth) |
|
|
|
-| YOLOv5-L | CSPDarkNet-L | 640 | 250 | 46.7 | 65.5 | 155.6 | 54.2 | [ckpt](https://github.com/yjh0410/PyTorch_YOLO_Tutorial/releases/download/yolo_tutorial_ckpt/yolov5_l_coco.pth) |
|
|
|
-
|
|
|
-* YOLOX:
|
|
|
-
|
|
|
-| Model | Backbone | Scale | Epoch | AP<sup>val<br>0.5:0.95 | AP<sup>val<br>0.5 | FLOPs<br><sup>(G) | Params<br><sup>(M) | Weight |
|
|
|
-|---------------|--------------------|-------|-------|------------------------|-------------------|-------------------|--------------------|--------|
|
|
|
-| YOLOX-N | CSPDarkNet-N | 640 | 300 | 31.1 | 49.5 | 7.5 | 2.3 | [ckpt](https://github.com/yjh0410/PyTorch_YOLO_Tutorial/releases/download/yolo_tutorial_ckpt/yolox_n_coco.pth) |
|
|
|
-| YOLOX-S | CSPDarkNet-S | 640 | 300 | | | 27.1 | 9.0 | |
|
|
|
-| YOLOX-M | CSPDarkNet-M | 640 | 300 | | | 74.3 | 25.4 | |
|
|
|
-| YOLOX-L | CSPDarkNet-L | 640 | 300 | | | 155.4 | 54.2 | |
|
|
|
-<!-- | YOLOX-L | CSPDarkNet-L | 640 | 300 | 46.6 | 66.1 | 155.4 | 54.2 | [ckpt](https://github.com/yjh0410/PyTorch_YOLO_Tutorial/releases/download/yolo_tutorial_ckpt/yolox_coco.pth) | -->
|
|
|
-
|
|
|
-* YOLOv7:
|
|
|
-
|
|
|
-| Model | Backbone | Scale | Epoch | AP<sup>val<br>0.5:0.95 | AP<sup>val<br>0.5 | FLOPs<br><sup>(G) | Params<br><sup>(M) | Weight |
|
|
|
-|---------------|--------------------|-------|-------|------------------------|-------------------|-------------------|--------------------|--------|
|
|
|
-| YOLOv7-T | ELANNet-Tiny | 640 | 300 | 38.0 | 56.8 | 22.6 | 7.9 | [ckpt](https://github.com/yjh0410/PyTorch_YOLO_Tutorial/releases/download/yolo_tutorial_ckpt/yolov7_tiny_coco.pth) |
|
|
|
-| YOLOv7-L | ELANNet-Large | 640 | 300 | | | 144.6 | 44.0 | |
|
|
|
-
|
|
|
-- *所有的模型都使用了ImageNet预训练权重(IP),所有的FLOPs都是在COCO-val数据集上以640x640或1280x1280的输入尺寸来测试的。FPS指标是在一张3090型号的GPU上以batch size=1的输入来测试的,请注意,测速的内容包括模型前向推理、后处理以及NMS操作。*
|
|
|
-
|
|
|
-- *我们实现的YOLOv5的检测头是**解耦检测头**,所以FLOPs和参数量要高于官方的.*
|
|
|
-
|
|
|
-- *受限于我贫瘠的计算资源,更多的YOLO检测器被放弃训练了,包括YOLOv7-Huge、YOLOv8-Small~Large。如果您对他们感兴趣,并使用本项目的代码训练了他们,我很真诚地希望您能分享训练好的权重文件,那将会令我感激不尽。*
|
|
|
+我提供了启用DDP训练的bash文件`train_multi_gpus.sh`,我希望有人可以使用更多的显卡和更大的batch size来训练我实现的大模型,如YOLOv5-L、YOLOX以及YOLOv7-L。如果使用更大的batch size所训练出来的性能更高,如果能将训练的模型分享给我,我会很感激的。
|
|
|
|
|
|
|
|
|
## 训练
|
|
|
### 使用单个GPU来训练
|
|
|
```Shell
|
|
|
-sh train.sh
|
|
|
+sh train_single_gpu.sh
|
|
|
```
|
|
|
|
|
|
-使用者可以根据自己的情况来调整`train.sh`文件中的配置,以便在自己的本地上顺利训练模型。
|
|
|
+使用者可以根据自己的情况来调整`train_single_gpu.sh`文件中的配置,以便在自己的本地上顺利训练模型。
|
|
|
|
|
|
如果使用者想查看训练时所使用的数据,可以在训练命令中输入`--vsi_tgt`参数,例如:
|
|
|
```Shell
|
|
|
@@ -161,10 +108,10 @@ python train.py --cuda -d coco --root path/to/coco -v yolov1 --vis_tgt
|
|
|
|
|
|
### 使用多个GPU来训练
|
|
|
```Shell
|
|
|
-sh train_ddp.sh
|
|
|
+sh train_multi_gpus.sh
|
|
|
```
|
|
|
|
|
|
-使用者可以根据自己的情况来调整`train_ddp.sh`文件中的配置,以便在自己的本地上顺利训练模型。
|
|
|
+使用者可以根据自己的情况来调整`train_multi_gpus.sh`文件中的配置,以便在自己的本地上顺利训练模型。
|
|
|
|
|
|
**当训练突然中断时**, 使用者可以在训练命令中传入`--resume`参数,并指定最新保存的权重文件(默认为`None`),以便继续训练。例如:
|
|
|
|