10分钟部署一个模型:YOLOV8从环境配置到模型部署优化

因为要给学弟学妹分享模型,把关键步骤记录下来,写一个博客作为备忘录,希望也能帮助到大家

目录

一、虚拟环境搭建

1.创建虚拟环境

2.激活虚拟环境

3.下载yolov8源码

4.配置运行环境

二、yolov8模型部署

1.在pycharm中部署虚拟环境

2.运行yolov8

3.训练yolov8

3.1 准备数据

3.2 模型训练

3.3 训练结果

三、yolov8模型优化

1.yolov8的网络结构

2.yolov8模型优化


一、虚拟环境搭建

1.创建虚拟环境

打开Anaconda Prompt进行虚拟环境搭建:

conda create -n yolov8 python=3.10

如图所示

这里我们使用python3.10

2.激活虚拟环境

activate yolov8

成功激活环境后,左侧base转化yolov8

3.下载yolov8源码

在GitHub上下载ultralytics提供的yolov8项目源码

网址如下:GitHub - ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch > ONNX > OpenVINO > CoreML > TFLite

下载后,博主的文件路径为:D:\MyDLdemo\ultralytics-main

4.配置运行环境

我们在Anaconda Prompt中继续配置yolov8运行所需的环境

首先跳转至yolov8项目的文件路径并运行文件夹内的requirements.txt配置文本

但是现在yolov8官方并不提供requirements.txt,所以需要我们自己手动创建

文本内容为:

# Ultralytics requirements
# Usage: pip install -r requirements.txt

# Base ----------------------------------------
matplotlib>=3.2.2
numpy>=1.22.2 # pinned by Snyk to avoid a vulnerability
opencv-python>=4.6.0
pillow>=7.1.2
pyyaml>=5.3.1
requests>=2.23.0
scipy>=1.4.1
# torch>=1.7.0
# torchvision>=0.8.1
tqdm>=4.64.0

# Logging -------------------------------------
# tensorboard>=2.13.0
# dvclive>=2.12.0
# clearml
# comet

# Plotting ------------------------------------
pandas>=1.1.4
seaborn>=0.11.0

# Export --------------------------------------
# coremltools>=6.0,<=6.2  # CoreML export
# onnx>=1.12.0  # ONNX export
# onnxsim>=0.4.1  # ONNX simplifier
# nvidia-pyindex  # TensorRT export
# nvidia-tensorrt  # TensorRT export
# scikit-learn==0.19.2  # CoreML quantization
# tensorflow>=2.4.1  # TF exports (-cpu, -aarch64, -macos)
# tflite-support
# tensorflowjs>=3.9.0  # TF.js export
# openvino-dev>=2023.0  # OpenVINO export

# Extras --------------------------------------
psutil  # system utilization
py-cpuinfo  # display CPU info
# thop>=0.1.1  # FLOPs computation
# ipython  # interactive notebook
# albumentations>=1.0.3  # training augmentations
# pycocotools>=2.0.6  # COCO mAP
# roboflow

创建完成后我们运行requirements.txt

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

如图所示:

同理下载其他配置文件

pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install yolo -i https://pypi.tuna.tsinghua.edu.cn/simple

二、yolov8模型部署

1.在pycharm中部署虚拟环境

如果显示找不到Conda文件就找到condabin\codna.bat文件

加载后即可选择conda的虚拟环境,我们选择yolov8

2.运行yolov8

虚拟环境配置好后去官网下载预训练模型

YOLOv8 -Ultralytics YOLO 文档

直接点击YOLOv8n/s/m/l/x即可下载预训练模型

创建运行yolov8模型权重的py文件

import cv2
from ultralytics import YOLO

# 加载yolo模型
model = YOLO(r'D:\MyDLdemo\ultralytics-main\yolov8n.pt')

#打开摄像头
cap = cv2.VideoCapture(0)

# 循环遍历视频帧
while cap.isOpened():
    success, frame = cap.read()
    results = model(frame, conf=0.6)
    annotated_frame = results[0].plot()
    if success:
        # 运行yolov8
        results = model(frame)
        # 限制
        results = model(frame,conf=0.6)
        # 把结果可视化
        annotated_frame = results[0].plot()

        # 框上显示
        cv2.imshow("YOLOv8 Inference", annotated_frame)

        # 按q退出
        if cv2.waitKey(1) & 0xFF == ord("q"):
            break
    else:
        # 如果到达视频结尾,则中断循环
        break

#
cap.release()
cv2.destroyAllWindows()

然后运行py文件即可使用yolov8模型

效果如下:

3.训练yolov8

3.1 准备数据

训练模型首先准备数据,通过labelimg对图像进行特征标注(用YOLO格式),也可以使用robflow平台进行数据标注

在D:\MyDLdemo\ultralytics-main下创建数据集文件夹datasets

然后按这个格式划分数据集:

test为测试集、train为训练集、valid为验证集,三者占比一般为:train:test:valid = 7:2:1

data.yaml文件包含了关于数据集的所有必要信息,比如训练集和验证集的路径、类别名称等,其内容如下:names为数据集的标记名称,nc为种类,test/train/val为对应的路径,以及backbone和head的网络结构

names:
- potato_health
- potato_lateblight
- potato_earlyblight
- corn_health
- corn_leafblight
- corn_rust
- rice_water_weevil
- leafhopper
- grubs
- mole_crickets
- person
nc: 11

test: ../test/images
train: ../train/images
val: ../valid/images

backbone:
  #[from, repeats, module, orgs]
  - [-1, 1, Conv, [64, 3, 2]] #0-P1/2
  - [-1, 1, Conv, [128, 3, 2]] #1-P2/4
  - [-1, 3, C2f, [128, True]]
  - [-1, 1, Conv, [256, 3, 2]] #3-P3/8
  - [-1, 6, C2f, [256, True]]
  - [-1, 1, Conv, [512, 3, 2]] #5-P4/16
  - [-1, 6, C2f, [512, True]]
  - [-1, 1, Conv, [1024, 3, 2]] #7-P5/32
  - [-1, 3, C2f, [1024, True]]

  - [-1, 1, SPPF, [1024, 5]] #9

head:
  - [-1, 1, nn.Upsample, [None, 2, 'nearest']]
  - [[-1, 6], 1, Concat, [1]]
  - [-1, 3, C2f, [512]]

  - [-1, 1, nn.Upsample, [ None, 2, 'nearest' ] ]
  - [[-1, 4], 1, Concat, [1]]
  - [-1, 3, C2f, [256]]

  - [-1, 1, Conv, [256, 3, 2]]
  - [[-1, 12], 1, Concat, [1]]
  - [-1, 3, C2f, [512]]

  - [-1, 1, Conv, [512, 3, 2]]
  - [[-1, 9], 1, Concat, [1]]
  - [-1, 3, C2f, [1024]]

  - [[15, 18, 21], 1, Detect, [nc]]

3.2 模型训练

准备进行训练,这里博主使用的是jupyter notebook,

首先查看电脑是否安装CUDA

!nvidia-smi

跳转到项目文件夹

cd "D:\MyDLdemo\ultralytics-main"

获取当前目录并打印

import os

HOME = os.getcwd()
print(HOME)

导入YOLO对象检测功能和在IPython环境中显示图像的功能

from ultralytics import YOLO

from IPython.display import display, Image
# 创建数据集文件夹(如果它不存在的话)  
%cd D:\MyDLdemo\ultralytics-main\datasets  

开始训练

%cd {HOME}
!yolo task=detect mode=train model=yolov8n.pt data=D:\MyDLdemo\ultralytics-main\datasets\data.yaml batch=16 epochs=3 imgsz=640 plots=True device=0

其中task是指定任务类型有检测(detect)、分割(segment)、分类(classify)等;

mode是指定操作模式有训练(train)、验证(val)以及测试(test)等;

model是指定使用的模型权重模型,这里我们使用yolov8n.pt的权重模型;

data是数据集配置文件的路径;batch为训练时的批量大小;epochs是训练的总轮次;

imgsz是输入图像的像素大小;plots是指定训练过程中生成显示图表;device是指定训练使用设备

这样就成功训练了

3.3 训练结果

当运行完训练结果时文件夹下会生成runs文件夹

在runs\detect\train文件夹内容具体如下

包含weights文件夹,其中含有yolov8模型训练中的最高/低的pt权重文件

训练数据的混淆矩阵,每次训练详细信息的csv文件以及部分图片的检测结果图片等

这时候就可以将ultralytics官方提供的预训练模型替换成自己训练后的best.pt了

三、yolov8模型优化

1.yolov8的网络结构

想要对模型进行修改就得先了解其网络结构

        YOLOv8目标检测算法于 2023 年由 Ultralytics 公司发布,具有高精度和快速推理速度。该模型网络结构可以分为输入端(Input)、骨干网络(Backbone)、颈部网络(Neck)和头部网络(Detect) 4 个部分。主干网络主要负责提取图像特征,可分为 3 部分:标准卷积(Conv)模块、C2f 模块、SPPF 模块。

        Conv 模块包括卷积层、批量归一化层和激活函数层。

        C2f 模块主要是参考 C3 模块和 ELAN 的思想进行设计,在一个维度上将输入特征图分成两部分,在减少计算量的同时丰富了梯度流信息,有助于提高模型非线性表示能力。

        SPPF 模块连接了主干网络和颈网络,通过不同的卷积核提取相关农作物对应病虫害特征后再融合不同尺度的特征信息。颈网络使用 PAN-FPN 结构,FPN 结构从上往下采样提取语义特征,提高模型多尺度检测精度,PAN结构从下往上采样提取丰富的位置信息,并与高分辨率特征图拼接,增强目标定位能力。检测网络以目标概率类别、置信度分数以及目标框位置作为最终的输出结果。

更加具体的了解可以去看万维探索的介绍:YOLOv8 架构详解:图示 + 代码 (vectorexplore.com)

2.yolov8模型优化

        充分了解过YOLOv8的网络结构后,就可以根据自己的任务去修改对应的结构已达到目标的效果,关于yolo的模型优化网络上的资源还是挺多的,大家根据自己的需求和目标去学习相关的方法就行

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值