yolov8是ultralytics公司于2023年1月开源的anchor-free的最新目标检测算法框架。
封装在ultralytics这个库中:https://github.com/ultralytics/ultralytics
它具有以下优点:
1,性能速度领先:借鉴了之前许多YOLO版本的trick,达到了领先的性能和极致的速度。
2,多种任务支持:支持图片分类,目标检测, 实例分割,目标追踪,关键点检测 这些最常用的CV任务。
3,完整的落地工具链: 提供从数据准备,到模型训练,模型评估,到模型导出部署 整个工业落地应用非常完整的工具。
4,强大的灵活性:ultralytics主打以python库的形式使用,方便定制化改进算法或者用于其它CV项目中。
我感觉ultralytics的使用体验,非常像xgboost/lightgbm/catboost这些库,使用简单,功能强大。
完全不懂原理的小白,简单粗暴把数据喂进去,就能够做出非常好的效果。
下面我们主要演示yolov8中的预训练模型的使用方法。
公众号后台回复关键词:yolov8,获取本文notebook源代码和B站视频讲解。
〇,环境准备
#!pip install -U ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple
#!pip install torchkeras -i https://pypi.tuna.tsinghua.edu.cn/simple
#!pip install 'lap>=0.4' -i https://pypi.tuna.tsinghua.edu.cn/simple
import ultralytics
print(ultralytics.__version__)
from PIL import Image
from torchkeras.data import get_example_image
import torch
img = get_example_image('park.jpg')
img.save('park.jpg')
一,图片分类
from ultralytics import YOLO
model = YOLO('yolov8n-cls.pt')
#save保存预测可视化, save_txt保存预测
preds = model.predict(source='park.jpg',save_txt=True,save=True)
#查看预测结果
from PIL import Image
Image.open(model.predictor.save_dir/'park.jpg')
二,目标检测
from ultralytics import YOLO
model = YOLO('yolov8n.pt')
#save保存预测可视化, save_txt保存预测
preds = model.predict(source='park.jpg',save_txt=True,save=True)
#查看预测结果
from PIL import Image
Image.open(model.predictor.save_dir/'park.jpg')
#摄像头作为输入
model.predict(source=0, show=True)
三,目标追踪
目标追踪使用的是目标检测模型,输出中可以给视频中的每个对象分配一个id。常用于给视频中某类物体出现的个数进行计数。
from ultralytics import YOLO
model = YOLO('yolov8n.pt')
from ultralytics.yolo.utils import set_logging
set_logging(verbose=False)
#视频作为输入
preds = model.track(
source='乒乓球.mp4',
save=True,
show=True
)
for p in preds[::20]:
print(p.boxes.id)
四,实例分割
from ultralytics import YOLO
model = YOLO('yolov8s-seg.pt')
#save保存预测可视化, save_txt保存预测
preds = model.predict(source='park.jpg',save_txt=True,save=True)
#查看预测结果
from PIL import Image
Image.open(model.predictor.save_dir/'park.jpg')
#摄像头作为输入
preds = model.predict(source=0, show=True)
五,关键点检测
from ultralytics import YOLO
model = YOLO('yolov8s-pose.pt')
#save保存预测可视化, save_txt保存预测
preds = model.predict(source='park.jpg',save_txt=True,save=True)
from PIL import Image
Image.open(model.predictor.save_dir/'park.jpg')
#摄像头进行预测
preds = model.predict(source=0,show=True)