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

相关推荐
野生的码农5 小时前
放过自己,降低预期,及时行乐
android·ai编程
程序员陆业聪5 小时前
裸奔的 AI 助手和装备齐全的 AI 助手,根本不是同一个东西
ai编程
sg_knight5 小时前
设计模式实战:模板方法模式(Template Method)
python·设计模式·模板方法模式
FreakStudio5 小时前
ESP32居然能当 DNS 服务器用?内含NCSI欺骗和DNS劫持实现
python·单片机·嵌入式·面向对象·并行计算·电子diy
乐观勇敢坚强的老彭6 小时前
2026全国青少年信息素养大赛考纲
python·数学建模
YMWM_6 小时前
【问题】thor上的cubLas
linux·python·thor
wefly20176 小时前
免安装!m3u8live.cn在线 M3U8 播放器,小白也能快速上手
java·开发语言·python·json·php·m3u8·m3u8在线转换
2401_873544926 小时前
使用Python进行PDF文件的处理与操作
jvm·数据库·python
程序员小远7 小时前
软件测试常见Bug清单
自动化测试·软件测试·python·功能测试·测试工具·测试用例·bug