环境搭建
本人使用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
- train 代表验证的图片文件夹val 代表二次检验图片文件夹
在dataset下的labels
- train 代表验证的坐标x和y的信息val 代表二次检验的坐标x和y的信息
图片通过播放视频的时候分别截取5张,train 放3张,val放2张。
安装图像标记编辑工具 labelImg
安装
pip install labelImg
直接运行
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 文件
设置一下信息
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