YOLOv8是基于目标检测算法YOLOv5的改进版,它在YOLOv5的基础上进行了优化和改进,加入了一些新的特性和技术,如切片注意力机制、骨干网络的选择等。YOLOv8的目标检测速度非常快,可以达到实时检测的效果,并且在目标检测精度上也取得了不错的成绩。同时,YOLOv8的模型体积比较小,运行内存占用也很少,适合在嵌入式设备等资源受限的环境中应用。总的来说,YOLOv8是一种高效、快速、准确的目标检测算法,适合在多种场景中应用,包括智能家居、智能交通、安防监控等领域。
但是YOLOv8官方的项目应该在更新的过程中改了不少地方,Franpper跟着一些教程部署的时候遇到了很多问题,所以Franpper将自己部署的过程详细的记录下来希望可以帮到大家!
在开始之前Franpper希望大家可以将自己遇到的问题留在评论区里,大家互相帮助下!!!
目录
一、下载项目
1、项目地址
YOLOv8官方项目地址https://github.com/ultralytics/ultralytics
2、下载项目
Franpper给大家介绍两种方式来下载项目
1) 直接下载压缩文件
选择Code中的Download ZIP,如下图:
2) 通过HTTPS Clone项目
此种方式需要先下载git。具体步骤如下:
首先将下图中的命令复制
然后在自己的项目文件夹右键选择Git Bash Here
然后输入git clone + 刚才复制的命令,即:
git clone https://github.com/ultralytics/ultralytics.git
如下图:
那么好,可以看到项目已经被克隆下来了!
二、文件夹结构介绍
YOLOv8经过几次更新后,文件夹结构与以前有很多改动,下面Franpper先带领大家熟悉一下最新版本YOLOv8项目的文件夹结构
1、 训练验证文件
首先是肯定要用到的训练与推理文件,可以看到在下图中的yolo文件夹中,分别有classify、detect、pose、segment四个文件夹,分别对应了分类、目标检测、姿态检测与实例分割。同时每个功能下面都有训练与推理入口。如下图:
2、 配置文件
首先是datasets文件夹,其中为数据配置文件,存放着数据集源路径root、训练集、验证集、测试集地址,类别个数,类别名,下载地址等信息。
然后是models文件号,其中为网络模型配置文件。
最后是trackers文件夹,其中参数配置文件。
如下图:
三、配置环境
下面Franpper带领大家配置YOLOv8项目的环境。在官方的文档(README.zh-CN.md)中可以看到,YOLOv8需要3.8或以上的Python版本,而且项目需要的torch版本不低于1.8。
1、 创建环境
详细创建过程可以参考下面博文的第二条。深度学习环境配置(pytorch版本)----超级无敌详细版(有手就行)https://blog.csdn.net/weixin_58283091/article/details/127841182?spm=1001.2014.3001.5502
conda create -n ultralytics python=3.8
2、 激活环境
conda activate ultralytics
3、 安装依赖
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
4、 具体实现步骤
具体安装步骤如下图:
四、项目测试
1、 测试推理功能(以分割为例)
首相进入predict.py文件中,如果predict.py中有下图中框选的代码直接运行即可,如果没有的话,把下面给出的代码复制到predict.py中然后运行。
需要复制的代码:
from ultralytics.utils import ASSETS, DEFAULT_CFG, ops
def predict(cfg=DEFAULT_CFG, use_python=False):
"""Runs YOLO object detection on an image or video source."""
model = cfg.model or 'yolov8n-seg.pt'
source = cfg.source or ASSETS
args = dict(model=model, source=source)
if use_python:
from ultralytics import YOLO
YOLO(model)(**args)
else:
predictor = SegmentationPredictor(overrides=args)
predictor.predict_cli()
if __name__ == '__main__':
predict()
2、 测试训练功能(以分割为例)
首先进入train.py文件中,如果trian.py中有下图中框选的代码直接运行即可,如果没有的话,把下面给出的代码复制到train.py中然后运行。
需要复制的代码:
def train(cfg=DEFAULT_CFG, use_python=False):
"""Train a YOLO segmentation model based on passed arguments."""
model = cfg.model or 'yolov8n-seg.pt'
data = cfg.data or 'coco8-seg.yaml'
device = cfg.device if cfg.device is not None else ''
args = dict(model=model, data=data, device=device)
if use_python:
from ultralytics import YOLO
YOLO(model).train(**args)
else:
trainer = SegmentationTrainer(overrides=args)
trainer.train()
if __name__ == '__main__':
train()
运行之后,可以看到自动下载了coco8-seg数据集与yolov8n-seg.pt权重,并开始了训练
五、训练自己的数据集
测试了推理与训练功能都没有什么问题的话就可以开始训练自己的数据集啦!(Franpper默认大家的数据集已经准备好,并转换为CoCo格式了)
1、 按需下载权重
官方权重地址https://github.com/ultralytics/assets/releases
2、 修改配置文件
1) 创建数据配置文件
在datasets文件夹中创建自己的yaml文件,注意路径、类别要写对
2) 修改网络模型配置文件
将网络模型配置文件中的类别改为自己的实际类别数量
3) 修改训练参数配置文件
3、 开始训练
终于成功辣!!!训练结果保存在如图所示的路径
呦~~~~~~~~~