环境搭建
本人使用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