主要内容如下:
1、Visdrone2019数据集介绍
2、下载、制作YOLO格式训练集
3、模型训练、验证及预测
服务器:NVIDIA TITAN RTX 24G
运行环境:Python=3.8(要求>=3.8),torch1.12.0+cu113(要求>=1.8)
原始数据集百度AI stduio下载链接:https://aistudio.baidu.com/datasetdetail/115729
Visdrone-YOLO格式数据集下载链接:https://aistudio.baidu.com/datasetdetail/295374
ultralytics官网:https://github.com/ultralytics/ultralytics
ultralytics版本:8.3.38
注意事项:ultralytics版本8.1.45开始,启用cache=True跑Visdrone2019精度会严重降低,8.1.44及之前正常!!!
🌹🌹🌹—>关于cache=True掉点问题,急需大佬指导,🌹🌹🌹
往期内容:
【超详细】跑通YOLOv8之深度学习环境配置1-Anaconda安装
【超详细】跑通YOLOv8之深度学习环境配置2-CUDA安装
【超详细】跑通YOLOv8之深度学习环境配置3-YOLOv8安装
【超详细】基于YOLOv8的PCB缺陷检测
【超详细】基于YOLOv8改进1-Drone-YOLO复现
【超详细】基于YOLOv8训练无人机视角Visdrone2019数据集
1 数据集介绍
1.1 简介
VisDrone数据集是由天津大学等团队开源的一个大型无人机视角的数据集,官方提供的数据中训练集是6471、验证集是548、测试集1610张。数据集共提供了以下12个类,分别是:‘忽略区域’, ‘pedestrian’, ‘people’, ‘bicycle’, ‘car’, ‘van’,‘truck’, ‘tricycle’, ‘awning-tricycle’, ‘bus’, ‘motor’, ‘others’,其中忽略区域、others是非有效目标区域,本项目中予以忽略;
1.2 数据集介绍和YOLO训练集制作
详情见文章1和2:https://blog.youkuaiyun.com/weixin_45679938/article/details/142439297
数据标签分布如下:
2 YOLOv5/8/9/10/11s模型训练及精度验证
2.1 模型训练
在ultralytics-main目录新建一个train.py脚本,内容如下:
注意:以下训练不使用cache=True,训练轮数为100epoch,不同的YOLO训练只需要修改预训练权重位置即可!!!
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
from ultralytics import YOLO
# Load a model
# model = YOLO("yolov8s.yaml") # build a new model from scratch
model = YOLO("yolov8s.pt") # load a pretrained model (recommended for training)
# Use the model
model.train(data="/home/ubuntu/work/ct/datasets/visdrone2019/VisDrone.yaml", imgsz=640, epochs=100, workers=4, batch=8, close_mosaic=10)
metrics = model.val() # evaluate model performance on the validation set
2.2 验证集和测试集精度验证
在ultralytics-main目录新建一个val.py脚本,内容如下:
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
from ultralytics import YOLO
# Load a model
model = YOLO('weights/visdrone_v8/weights/best.pt') # 加载训练好的权重
metrics = model.val(split='test') # split='val'即为验证集精度验证,'test'为测试集
2.2.1 YOLOv11s结果如下:
2.2.2 YOLOv10s结果如下:
2.2.3 YOLOv9s结果如下:
2.2.4 YOLOv8s结果如下:
2.2.5 YOLOv5s结果如下:
2.2.6 YOLOv3-tiny结果如下:
2.3 模型预测
在ultralytics-main目录新建一个predict.py脚本,内容如下:
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
from ultralytics import YOLO
# Load a model
model = YOLO("weights/visdrone_v8/weights/best.pt") # load model
model.predict(source=r"visdrone2019/VisDrone2019-DET-test-dev/images/0000006_01111_d_0000003.jpg", save=True, save_conf=True, save_txt=True, name='output')
结果可视化如下:
结论
由上可知,除YOLOv3-tiny之外,最新U版代码Visdrone2019数据集YOLOv5~11s模型训练100轮,mAP50都能取到0.4+的结果,继续训练仍有提示空间。后续再补上YOLOv6s和YOLOv7-tiny的结果。
另外,关于最后10轮关闭mosaic数据增强精度降低问题:
其他补充
YOLOv6s:
环境要求:与YOLOv8一致即可!
注意:将tools/train.py移动到主文件夹!
训练命令:
cd /home/ubuntu/work/ct/yolov6_7/YOLOv6-main
base:
nohup python train.py --img-size 640 --batch 8 --epochs 100 --workers 4 --conf configs/yolov6s_finetune.py --data /home/ubuntu/work/ct/datasets/visdrone2019/VisDrone_v6.yaml --fuse_ab --device 1 > my_v6s.log 2>&1 &
mbla:
nohup python train.py --img-size 640 --batch 8 --epochs 100 --workers 4 --conf configs/mbla/yolov6s_mbla_finetune.py --data /home/ubuntu/work/ct/datasets/visdrone2019/VisDrone_v6.yaml --fuse_ab --device 1 > my_mbla.log 2>&1 &
YOLOv6s-mbla:
YOLOv7-tiny:
环境要求:单独装YOLOv7,numpy 小于 1.24.3,protobuf 小于 4.23.2,否则报错!
训练命令:
nohup python train.py --workers 4 --device 0 --epochs 300 --batch-size 8 --data /home/ubuntu/work/ct/datasets/visdrone2019/VisDrone_v6.yaml --img 640 640 --cfg cfg/training/yolov7-tiny.yaml --weights 'yolov7-tiny.pt' --name yolov7-custom --hyp data/hyp.scratch.custom.yaml > my_v7.log 2>&1 &