记录使用YOLOv5n-cls模型进行分类任务训练
ccssu opened this issue · 2 comments
ccssu commented
ccssu commented
原因定位
下面图片 均来自 wandb 日志: https://wandb.ai/wearmheart/test_debug_classify_loss?workspace=user-wearmheart
结论; 从日志分析可能是计算精度造成的精度不够。
- loss log
ccssu commented
- 机器 a100
- 跑了两次90个epochs的完整训练 , 采用同样的参数配置,发现两次的训练是精度是一致的,都没有达到
ultralytics/yolov5
官方给的 YOLOv5n-cls 训练精度, 无法训到目标精度是同步的版本问题。one-yolov5同步的是 ultralytics/yolov5中 v7.0 版本,ultralytics/yolov5
给的 是 v6.0的训练精度值 。
后端 | top1_acc | top5_acc | 可视化日志 |
---|---|---|---|
目标 | 0.64 | 0.854 | |
PyTorch | 0.631 | 0.847 | https://wandb.ai/wearmheart/torch-YOLOv5_v_1_2_0_train/runs/2p814s15/overview |
OneFlow | 0.635 | 0.847 | https://wandb.ai/wearmheart/One-YOLOv5_v_1_2_0_train/runs/k42lcu6t/overview?workspace=user-wearmheart |
OneFlow-PyTorch | 0.004 | 0.000 |
注意
- 验证方式 均是通过训练 的 best.xx 模型使用 指令
python classify/val.py --data ../datasets/imagenet --img 224 --weights path/to/best.xx
ultralytics/yolov5
启动指令
python -m torch.distributed.run --nproc_per_node 4 \
classify/train.py \
--model ~/one-yolov5/runs/yolov5n.pt \
--data ../datasets/imagenet \
--img 224 \
--batch 256 \
--epochs 90 \
--project torch-YOLOv5_v_1_2_0_train \
--pretrained False \
--name yolov5n-default --lr0 0.1 --optimizer SGD \
--device 0,1,2,4
YOLOv5 🚀 v7.0-116-g5c91dae Python-3.8.11 torch-1.13.0+cu117 CUDA:0 (NVIDIA A100-PCIE-40GB, 40389MiB)
Class Images top1_acc top5_acc
all 50000 0.631 0.847
one-yolov5
启动指令
python -m oneflow.distributed.launch --nproc_per_node 4 \
classify/train.py \
--model runs/yolov5n.pt \
--data ../datasets/imagenet \
--img 224 \
--batch 256 \
--epochs 90 \
--project One-YOLOv5_v_1_2_0_train \
--pretrained False \
--name yolov5n-default \
--multi_tensor_optimizer \
--name yolov5n-default --lr0 0.1 --optimizer SGD \
--device 0,1,2,3
YOLOv5 🚀 v1.2.0-40-gdf5c3be Python-3.8.11 oneflow-0.9.1.dev20230226+cu117 CUDA:0 (NVIDIA A100-PCIE-40GB, 40389MiB)
Class Images top1_acc top5_acc
all 50000 0.635 0.847