一、前言
最近学了一些yolov8的使用方法,参加机器人大赛中先进视觉赛的校赛,时间仓促并且是新手,拿了个校三,记录一下入门使用方法(本文重点介绍yolov8相关的使用,对于其他工具的详细安装请查询其他文章)
github代码官网:https://github.com/ultralytics/ultralytics
文档官网:https://docs.ultralytics.com
b站参考视频:安装+预测+数据集+训练
二、入门篇
1、安装
(1)前提:
下载miniconda或者anaconda,创建一个ultralytics新环境,新建项目并使用该环境,在环境中根据自己电脑的配置(有无cuda)下载pytorch
(2)方法一:
一行命令安装即用,但不能修改源码
pip install ultralytics
(3)方法二(推荐):
在github代码官网(见前言)下载源码到新项目,切换到新环境,运行下面命令
pip install -e .
将当前目录(即该项目)以可编辑模式(对源码的修改会立即反应到环境)安装到该环境
2、使用yolov8预测
(1)命令行方式
yolo predict model=yolov8n.pt source=ultralytics/assets/bus.jpg
第一次运行时,会在根目录的model路径寻找yolov8n.pt,在该目录自动下载,也可以自己手动下载后放到项目中
source为需要预测的图片路径,conf为输出置信度阈值,iou为输出两个边界框重叠程度阈值
其他参数可以在文档官网:https://docs.ultralytics.com/modes/predict/
(2)python代码方式
from ultralytics import YOLO
yolo = YOLO("yolov8n.pt.pt", task="detect")
# 图片或视频,conf越小iou越大框越多
result = yolo(source="ultralytics/assets/zidane.jpg", save=True, conf=0.5)
# 屏幕
# result = yolo(source="screen")
# 摄像头
# result = yolo(source=0)
结果对象中目标框信息
# boxes信息
result_npy = result[0].boxes.xywh.cpu().numpy()
其他参数见文档:https://docs.ultralytics.com/modes/predict/#working-with-results
3、数据集
(1)目录格式
以官方coco128数据集为例
该数据集下载方式:文件/ultralytics/cfg/datasets/coco128.yaml中最下方链接
|——根目录
|——datasets
|——coco128
|——images
|——train2017
|——val2017
|——labels
|——train2017
|——val2017
|——yaml
coco128使用自己的数据包名,train2017和val2017分别为训练集和验证集的包名,可以加个test测试集;images中放图片,labels中放标签,一个图片对应一个标签文件,并且文件名要相同;yaml中写该数据集的配置,按照/ultralytics/cfg/datasets/coco128.yaml中格式编写
(2)数据集获取
方法一:
开源数据集:https://universe.roboflow.com/roboflow-100
方法二:
给自己的数据集打标签:https://www.makesense.ai
4、模型训练
(1)方法一:
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100
data为数据集的yaml文件,model为初始训练权重,epochs为训练轮数
其他参数见文档:https://docs.ultralytics.com/modes/train/#train-settings
(2)方法二:
复制一份配置文件,执行以下命令,得到default_copy.yaml
yolo copy -cfg
修改复制的yaml中的训练参数,如model、data、epochs,然后使用以下命令开始训练
yolo cfg=default_copy.yaml
三、遇到过的问题
问题:
项目在新路径重新运行,但代码中的相对路径全都使用的旧路径
原因:
源码中每次运行都会在~/AppData/Roaming/Ultralytics文件夹寻找settings.yaml文件(里面有个datasets_dir指定数据的绝对路径),如果没有就用目前运行环境创建,如果存在就直接使用
解决:
方法一:删除~/AppData/Roaming/Ultralytics文件夹下的settings.yaml,但每次更换目录后都要删除再训练
方法二:修改源码,注释ultralytics/utils/__init__.py文件中第954行,让每次运行都重新保存settings.yaml
# if not self.file.exists():
self.save()