yolov8 视频识别动物实战

环境搭建

本人使用mac m1电脑安装

设置虚拟环境

sh 复制代码
brew install python@3.9 # 只能使用3.9的python
python3.9 -m venv yolo8_env # 使用3.9 创建
source yolo8_env/bin/activate # 激活
python -V  # 查看版本

安装依赖库

sh 复制代码
pip install torch torchvision torchaudio

安装 YOLOv8

sh 复制代码
pip install ultralytics 
yolo --version # 查看版本

验证

这里会自动拉取官方的模型yolov8s.pt,同时识别图片里面的人物和汽车是否识别

sh 复制代码
yolo detect predict model=yolov8s.pt source='https://ultralytics.com/images/bus.jpg'

看到正常使用模型运算

输出的文件 runs/detect/predict/bus.jpg

这里看到人和车都被识别出来了

实现视频的微调

yolov8不仅能处理图片,视频也是杠杠的(其实视频也是一张张图片动态识别而已)

这是用自带yolov8s.pt的模型检查

sh 复制代码
yolo detect predict model=yolov8s.pt source='./mov_bbb.mp4'  show=True save=True

输出识别有问题,有时候把兔子识别成dog,有时候识别成sheep,我们来调教一下吧

微调目前主要是通过图片做坐标标记来实现的。

准备素材和整理文件夹

在dataset下的images

  • train 代表验证的图片文件夹
  • val 代表二次检验图片文件夹

在dataset下的labels

  • train 代表验证的坐标x和y的信息
  • val 代表二次检验的坐标x和y的信息

图片通过播放视频的时候分别截取5张,train 放3张,val放2张。

安装图像标记编辑工具 labelImg

安装

js 复制代码
pip install labelImg

直接运行

js 复制代码
labelImg

选择左边的工具栏

  • open Dir 选择上面的./dataset/images/train文件夹,作为输入路径
  • change save Dir 选择上面的./dataset/labels/train文件夹,作为输出路径

选择yolo模式

开始标记 ,点击左边的createRect box,

选中动物的范围,然后输入标记名称为 rabbit

每次标记完后,点击ok,再点击save,然后再点击 next image,快速编辑下一张

相同的操作 处理 ./dataset/images/val 和 ./dataset/labels/val

  • open Dir 选择上面的./dataset/images/val文件夹,作为输入文件夹
  • change save Dir 选择上面的./dataset/labels/val文件夹,作为输出文件夹

处理完最后再 labels下面的 train和val都会生成对应的坐标信息

创建配置 code.yaml 文件

设置一下信息

yaml 复制代码
path: ./dataset  # 相对于你运行脚本的位置
train: images/train # 训练的图片地址
val: images/val # 训练的图片地址2
nc: 1
names: ['rabbit']

训练命令(根据图片+标记训练)

sh 复制代码
yolo detect train \
  model=yolov8s.pt \
  data=code.yaml \
  epochs=100 \
  imgsz=640 \
  batch=16 \
  project=code_project2 \
  name=exp2

这时候就要考验你的硬件能力了,我是漫长的等待

结束后最重要的是 这个模型文件 code_project2/exp2/weights/best.pt

我们这时候就可以使用上面这个微调过的新模型进行识别

运行命令

code_project2/exp2/weights/best.pt 这个就是上面生成的新模型

sh 复制代码
 yolo detect predict \
  model=code_project2/exp2/weights/best.pt \
  source=./mov_bbb.mp4 \
  conf=0.25 \
  save=True

最后输出结果

rabbit , nice ~

当然还有优化的空间,蝴蝶也被标记成rabbit ,可以继续使用labelImg标记 butterfly

参考代码

github.com/mjsong07/yo...

相关推荐
张益达Yida17 分钟前
我把 0.6B 大模型塞进安卓手机:596 秒到 10 秒
ai编程
卡提西亚1 小时前
FastAPI基础入门
python·fastapi
fanruitian1 小时前
python 机器学习 ML LinearRegression KNN KMeans
python·机器学习·kmeans
鱼宵1 小时前
取集合第一个元素,Java 为什么要写三种写法?
java·windows·python·java21
小虎AI生活1 小时前
腾讯 Buddy One 架构解读:跨应用 Agent 底座怎么打通办公协同
aigc·ai编程
卷无止境1 小时前
给AI装上一双眼睛:快速构建代码验证器的思路与落地方案
后端·python
维克兜率天2 小时前
【维克】指数调整:哪些股票会被“强制买入“?
人工智能·python·算法
come112342 小时前
Codex 下不同场景 模式选择
python
神也畏惧菠萝2 小时前
Day08 Python流程控制从入门到上瘾:if/match/while/for四件套,从B站登录一路打到猜数字游戏
python·算法·数据存储·for·while·if·ifelse
ZhengEnCi3 小时前
Agent 如何进行工具调用:从一次 Function Calling 到生产级工具编排的完整链路
llm·agent·ai编程