掘金 人工智能 07月23日 11:42
yolov8 视频识别动物实战
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文详细介绍了在mac m1电脑上搭建YOLOv8环境的步骤,包括设置Python 3.9虚拟环境、安装PyTorch及Ultralytics库。同时,文章重点阐述了如何利用labelImg工具对视频帧进行标注,创建自定义数据集和配置文件,并通过训练自定义模型来优化YOLOv8在特定物体识别上的表现。通过微调,可以解决模型将兔子误识别为狗或羊的问题,并成功实现对特定物体的精准检测,例如将蝴蝶正确识别为兔子,展示了YOLOv8强大的图像识别和模型定制能力。

💻 **环境搭建与基础配置:** 文章首先指导用户在mac m1电脑上完成YOLOv8的开发环境配置,包括使用Homebrew安装Python 3.9,创建并激活虚拟环境,以及安装PyTorch和Ultralytics库。通过`yolo --version`和`yolo detect predict`命令验证安装和基础识别功能,确保了后续操作的顺利进行。

🎥 **视频处理与初步识别:** 介绍了YOLOv8处理视频的能力,并使用自带的`yolov8s.pt`模型对视频进行预测。过程中提到了模型可能存在的识别偏差,如将兔子误识别为狗或羊,这为后续的模型微调提供了明确的动机和方向。

🗂️ **数据集准备与标注:** 详细说明了构建自定义训练数据集的流程,包括准备图像素材(从视频截取帧)、划分训练集和验证集,并在对应的`labels`文件夹中生成坐标信息。重点介绍了`labelImg`工具的使用方法,指导用户如何打开目录、选择YOLO模式、创建矩形框标注物体并命名,以及保存和处理下一张图像。

📝 **模型微调与训练:** 阐述了创建`code.yaml`配置文件来定义数据集路径、类别数量(`nc`)和类别名称(`names`)。随后,给出了训练自定义模型的命令,指定了预训练模型(`yolov8s.pt`)、数据配置文件、训练轮次(`epochs`)、图像尺寸(`imgsz`)、批量大小(`batch`)等关键参数,并指出训练过程可能耗时较长,最终会生成`best.pt`模型文件。

🚀 **微调模型应用与优化:** 演示了如何使用微调后的`best.pt`模型进行目标检测,并展示了训练成功的示例,即能够准确识别出兔子。同时,也提及了进一步优化的空间,例如将蝴蝶正确标记为蝴蝶,以提高模型的泛化能力和准确性。

环境搭建

本人使用mac m1电脑安装

设置虚拟环境

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

安装依赖库

pip install torch torchvision torchaudio

安装 YOLOv8

pip install ultralytics yolo --version # 查看版本

验证

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

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

看到正常使用模型运算

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

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

实现视频的微调

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

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

yolo detect predict model=yolov8s.pt source='./mov_bbb.mp4'  show=True save=True

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

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

准备素材和整理文件夹

在dataset下的images

在dataset下的labels

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

安装图像标记编辑工具 labelImg

安装

pip install labelImg

直接运行

labelImg

选择左边的工具栏

选择yolo模式

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

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

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

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

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

创建配置 code.yaml 文件

设置一下信息

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

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

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 这个就是上面生成的新模型

 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…

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

YOLOv8 环境搭建 模型微调 计算机视觉 目标检测
相关文章