Featured image of post YOLOv8初体验

YOLOv8初体验

受人所托,搞一搞实时目标检测,于是了解到了YOLOv8

运行环境

  1. Python>=3.8
  2. PyTorch>=1.8

推荐使用anaconda创建虚拟环境,并安装依赖包

1
2
# Install all packages together using conda
conda install -c pytorch -c nvidia -c conda-forge pytorch torchvision pytorch-cuda=11.8 ultralytics 

其实项目库里有requirements.txt也可以

1
pip install -r requirements.txt

运行

命令行

进入你的文件夹中,激活用anaconda创建的虚拟环境,我这里的环境名字叫yolov8,然后执行

1
yolo predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg'  

其中source地址可换成本地图片地址,model也可更换,这里的yolov8n.pt是官方给出的最快速最轻量的模型,但相应的准确率就不是最高了。
img
结果保存在\runs\detect\predict下
img

python代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
from ultralytics import YOLO

# 加载模型
model = YOLO("yolov8n.yaml")  # 从头开始构建新模型
model = YOLO("yolov8n.pt")  # 加载预训练模型(建议用于训练)

# 使用模型
model.train(data="coco128.yaml", epochs=3)  # 训练模型
metrics = model.val()  # 在验证集上评估模型性能
results = model("https://ultralytics.com/images/bus.jpg")  # 对图像进行预测
success = model.export(format="onnx")  # 将模型导出为 ONNX 格式

以上就是最为基础的用法,反正是挺简单的。

实时检测

但朋友的要求是从摄像头获取输入,并实时检测,于是配合OpenCV有了以下代码:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
import cv2
from ultralytics import YOLO
import numpy as np

model = YOLO("yolov8n.pt")

cap = cv2.VideoCapture(0)

while cap.isOpened():
    ret, frame = cap.read()

    results = model.track(frame, persist=True)
    frame_ = results[0].plot()

    cv2.imshow('YOLO',frame_)

    if cv2.waitKey(10) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

(自己测试,我就不放视频了😉)
(不想写了,就这样吧)

Licensed under CC BY-NC-SA 4.0