YOLOv10的环境搭建及训练过程
0 引言
既YOLOv9发布后,清华团队也在2024.05.23发布了YOLOv10,秉承着以以测试为主的心态进行了环境搭建(其中有部分坑),并进行了模型效果测试。
论文:YOLOv10: Real-Time End-to-End Object Detection
github仓库地址:https://github.com/THU-MIG/yolov10?tab=readme-ov-file
1 环境搭建
1.1 在官方仓库的给定的使用python=3.9版本,则使用conda创建对应虚拟环境。
conda create -n yolov10 python=3.9
1.2 切换到对应虚拟环境
conda activate yolov10
1.3 在指定目录下克隆yolov10官方仓库代码
git clone https://github.com/THU-MIG/yolov10.git
1.4 进入对应本地yolov10目录下安装对应依赖项
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
1.5 安装对应的包
pip install -e .
2 中间遇到的问题
2.1 问题1:无法使用对应的cuda
由于直接安装的依赖项是cpu版本的torch,需重新安装对应版本的torch
以cuda12.1的版本为例,安装torch 2.3.0的命令如下
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
2.2 问题2:训练时提示AttributeError: partially initialized module ‘charset_normalizer’ has no attribute ‘md__mypyc’ (most likely due to a circular import)
更新charset-normalizer模块即可
pip install --force-reinstall charset-normalizer==3.1.0
2.3 关于模型训练时,会下载yolov8n.pt的原因
团队成员在5月29日给出了回复,说是为了检查amp而已,但在python端口下载可能会比较慢,建议直接复制网址通过网络下载并将该文件放在项目路径下,即可完成该过程。
3 模型训练及测试效果
yolov10的模型训练和调用与yolov8相似,本地自建了一个1000来张的红外车辆检测数据集(私有),其数据集的结构如下:
对车辆进行简单的分类和对其中轮胎区域进行检测,则data.yaml的内容如下所示:
path: D:\yolov10\data\img_data # dataset root dir
train: train\images # train images
val: val\images # val images
test: test\images # test images (optional)
# Classes
nc: 3 # number of classes
names:
0: car
1: truck
2: tire
官网仓库下载预训练权重yolov10s.pt文件到目录,使用如下命令对数据集进行训练
yolo detect train data=data/data.yaml model=yolov10s.pt epochs=100 batch=16 imgsz=640 device=0
过程中使用RTX4090,其训练速度相对较快,仅在11分钟不到的时间,即可完成训练,其对应的检测结果如下图
所示。
3 结论
针对yolov10的目标检测,对比次新的yolov9而言,其精度提升并未太明显,但从边缘端的部署情况来看,其效果相值得期待。