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...

相关推荐
梨落秋霜7 小时前
Python入门篇【文件处理】
android·java·python
Java 码农7 小时前
RabbitMQ集群部署方案及配置指南03
java·python·rabbitmq
张登杰踩8 小时前
VIA标注格式转Labelme标注格式
python
Learner9 小时前
Python数据类型(四):字典
python
奇舞精选9 小时前
Claude Code 配置 Figma MCP 实战指南
ai编程·claude
HashTang9 小时前
【AI 编程实战】第 7 篇:登录流程设计 - 多场景、多步骤的优雅实现
前端·uni-app·ai编程
odoo中国9 小时前
Odoo 19 模块结构概述
开发语言·python·module·odoo·核心组件·py文件按
Jelena157795857929 小时前
Java爬虫api接口测试
python
踩坑记录10 小时前
leetcode hot100 3.无重复字符的最长子串 medium 滑动窗口(双指针)
python·leetcode
wenzhangli712 小时前
2025软件行业寒冬突围:破解AI编程冲击与项目制困局,一拖三闭环方案成破局关键
人工智能·ai编程