yolov8学习Day1
第一章 win11 + cpu + yolov8 跑通及训练
第二章 训练 COCO128 数据集
前言
Ultralytics YOLOv8是一款尖端、最先进的(SOTA)型号,它建立在以前YOLO版本的成功基础上,并引入了新的功能和改进,以进一步提高性能和灵活性。YOLOv8设计快速、准确且易于使用,是广泛的目标检测和跟踪、实例分割、图像分类和姿态估计任务的绝佳选择。
一、win11 + cpu + yolov8 跑通及训练
- Pip在PyTorch>=1.8的Python>=3.8环境中安装ultralytics包,包括所有要求。
- 创建虚拟环境
创建:
查看:conda create -n yolov8 python=3.11
conda env list
- 使用git下载yolov8源码,也可以直接在官网下载
进入:git clone https://github.com/ultralytics/ultralytics
- 下载权重进入(yolov8n.pt)∶(下载请求被拒绝,记得科学上网)
https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n.pt
- PyCharm中打开项目ultralytics
- 切换虚拟环境:使用刚刚conda创建的yolov8虚拟环境,查看新建的yolov8环境可以通过输入查看
在pycharm中配置ananconda的虚拟环境conda env list
- 安装requirements.txt的依赖,在pycharm的Terminal中安装依赖(记得一定要在当前项目的路径下不然找不到requirements.txt)
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
- 运行推理,在文件根目录下随便建个py文件。浅浅写个目标检测。
推理的结果from ultralytics import YOLO import cv2 # 加载预训练模型 model = YOLO("yolov8n.pt", task='detect') # model = YOLO("yolov8n.pt") task参数也可以不填写,它会根据模型去识别相应任务类别 # 检测图片 results = model("./ultralytics/assets/bus.jpg") res = results[0].plot() cv2.imshow("YOLOv8 Inference", res) cv2.waitKey(0)
二、训练 COCO128 数据集
coco128数据集下载
在YOLO中自带的coco128.yaml文件:
1)可选的用于自动下载的下载命令/URL,
2)指向培训图像目录的路径(或指向带有培训图像列表的*.txt文件的路径),
3)与验证图像相同,
4)类数,
5)类名列表:
# download command/URL (optional)
download: https://github.com/ultralytics/yolov5/releases/download/v1.0/coco128.zip
# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/]
train: ../coco128/images/train2017/
val: ../coco128/images/train2017/
# number of classes
nc: 80
# class names
names: ['person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light',
'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow',
'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee',
'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard',
'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple',
'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch',
'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard',
'cell phone', 'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors',
'teddy bear', 'hair drier', 'toothbrush']
没有找到coco128.yaml文件,直接创建一个新文件命名为coco128.yaml再在文件添加如上内容即可。
训练过程
源码的参数可以归类为四部分:
- yolo【启动命令】
- task【是[detect、segment、classification]中的一个。如果没有显式传递,YOLOv8将尝试从模型
类型中猜测TASK】 - mode 【(必选) 是[train, val, predict, export]中的一个】
- args【(可选) 是任意数量的自定义arg=value对,如imgsz=64 输入图像大小,epochs=10,训练10轮】
每一个mode都有固定而不同的args(参数),yolov8支持你可以输入所有参数,但是代码会根据mode来自动选择使用特定的参数。以下是不同mode的参数详解(同时附上官网链接):
train
val
predict
export
在Terminal中输入
yolo train model = yolov8n.pt data = coco128.yaml epochs = 10 imgsz = 64
训练过程为
验证
Terminal上输入
yolo val model = yolov8n.pt data = coco128.yaml
验证过程
导出模型
Terminal上输入
yolo mode=export model=yolov8n.pt format=torchscript
导出结果
可以netron网站上进行查看模型具体操作过程