ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

YOLOv8花卉识别实战:从环境搭建到模型训练全流程

YOLOv8花卉识别实战:从环境搭建到模型训练全流程 又到了每年毕业设计冲刺的阶段不少同学选定了“花卉图像识别”这个方向但一打开 YOLOv8 的官方仓库面对一大堆文件和命令行还是不知道该从哪里下手。本文就围绕YOLOv8 PyTorch这一套主流组合用一个完整的花卉识别实战项目带你从环境搭建、数据集准备、模型训练一直走到结果评估和常见报错排查。内容定位是“1 小时跑通”所以不会涉及太偏门的调参技巧而是把最稳妥、最常用、最容易复现的路径展示出来。无论你是刚接触深度学习、需要用 YOLOv8 来完成本科毕设还是已经在做图像识别方向的小项目这篇文章都能提供一个可以直接照着做的完整参考。文末会给出源码级示例、关键参数解释和训练注意事项建议配合本地环境一边看一边操作。1. YOLOv8 与花卉图像识别的基本概念1.1 什么是 YOLOv8YOLOv8 是 Ultralytics 团队在 2023 年初推出的目标检测模型系列属于 YOLOYou Only Look Once演进路线中的一个重要版本。它的前身包括 YOLOv5、YOLOv6、YOLOv7 等而 YOLOv8 在结构设计和工程易用性上做了大量打磨是目前学术界和工业界使用最广泛的目标检测工具之一。“目标检测”和“图像分类”是有区别的。图像分类只回答“这张图片里是什么”而目标检测不仅要回答“图片里有什么”还要把每个目标的位置用边界框圈出来。放到花卉识别场景中如果你只需要判断一张图片属于“玫瑰”还是“菊花”那用图像分类就能搞定但如果一张图中同时出现玫瑰、菊花、向日葵你又想知道每一朵花在画面中的位置就必须使用目标检测模型。YOLOv8 的优势恰恰在于它在保证检测精度的同时推理速度非常快适合在 CPU、GPU 甚至边缘设备上部署。1.2 YOLOv8 的核心版本特点YOLOv8 在结构上做了三个比较明显的改进第一主干网络采用了C2f 模块它在 C3 模块的基础上增加了更多分支和梯度流能够在保持轻量化的同时提升特征提取能力。第二颈部网络使用PAN-FPN 结构通过自顶向下和自底向上的路径融合不同尺度的特征图有利于同时检测大目标和小目标。对于花卉这种大小差异明显的目标这种多尺度融合是很有必要的。第三检测头从 Anchor-Based 改为Anchor-Free 的 Decoupled Head。之前的 YOLO 版本在训练时需要提前计算锚框而 YOLOv8 直接预测目标中心和宽高简化了训练流程也减少了很多后处理逻辑。除此之外YOLOv8 还提供了丰富的模型规格分别是nnano、ssmall、mmedium、llarge、xxlarge。如果只是做毕设yolov8s和yolov8m比较常用前者训练快、显存占用低后者精度更高、训练时间稍长。1.3 为什么用 PyTorch 作为深度学习框架PyTorch 是目前深度学习领域最主流的框架之一尤其适合研究和教学场景。它的动态图机制让调试变得直观你可以像写普通 Python 程序一样逐步查看张量的形状和数值。Ultralytics YOLOv8 官方仓库就是基于 PyTorch 实现的所以使用 PyTorch 环境与 YOLOv8 的兼容性最好这也是本文选择 PyTorch 的根本原因。另外PyTorch 生态非常成熟不管是数据加载、模型可视化、还是 TensorBoard 日志都有现成工具。即使你对深度学习底层原理还不熟悉也可以借助 PyTorch 快速完成数据集的封装和模型的训练流程。1.4 花卉识别任务的常见场景植物物种调查通过手机拍摄照片自动识别花卉品种。智能园林管理在园区监控画面中统计不同花卉的数量和位置。农业病虫害辅助结合花朵状态判断植物生长情况。科普教育开发一款“拍花识花”的小程序或 Web 应用。毕设题目如果是“基于深度学习的室外花卉图像识别系统”通常要求不仅能够识别单张图片还要支持批量预测、实时摄像头检测或 Web 上传检测。这些功能都可以基于 YOLOv8 训练出的权重文件实现。2. 环境准备与版本说明2.1 推荐环境清单在开始之前先把环境梳理清楚。本文示例以常见环境为例具体版本需要根据你的项目实际情况调整。依赖项推荐配置说明操作系统Windows 10/11 / Ubuntu 20.04 / Ubuntu 22.04本文以 Windows 为主Python3.8 - 3.11尽量使用 3.9 或 3.10PyTorch2.x 或 1.13 以上需要与 CUDA 版本匹配CUDA11.7 / 11.8 / 12.x由显卡驱动决定GPUNVIDIA 显卡显存 4GB 以上没有 GPU 也可以用 CPU 训练小数据集ultralytics8.0.x 及以上包含 YOLOv8 训练与推理接口如果你是学生机器上没有 NVIDIA 显卡CPU 训练小规模花卉数据集也可以完成只是训练速度会慢一些。建议先用 CPU 跑通整个流程再在有 GPU 的环境上做正式训练。2.2 安装 PyTorchPyTorch 的安装方式是整个环境准备中最容易出问题的环节。核心原则是先确认自己的 CUDA 环境再去官网选择对应的安装命令。在命令行输入nvidia-smi如果你能看到类似下面的输出说明显卡驱动正常并且可以看到支持的 CUDA 版本----------------------------------------------------------------------------- | NVIDIA-SMI 525.85.05 Driver Version: 525.85.05 CUDA Version: 12.0 | -----------------------------------------------------------------------------然后进入 PyTorch 官网pytorch.org选择对应的操作系统、包管理工具和 CUDA 版本复制安装命令。以 pip 和 CUDA 11.8 为例pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118需要注意的是这里安装的是 PyTorch 的预编译版本里面已经包含了 CUDA 运行库不需要单独安装完整 CUDA Toolkit。如果你使用 CPU 版本安装命令是pip install torch torchvision torchaudio安装完成后用下面这段 Python 代码验证是否可用import torch print(torch.__version__) print(torch.cuda.is_available()) print(torch.cuda.get_device_name(0) if torch.cuda.is_available() else CPU)如果torch.cuda.is_available()返回True说明 PyTorch 可以正常使用 GPU这是后续训练速度的关键。2.3 安装 ultralytics 库ultralytics 是 YOLOv8 的官方 Python 包安装非常简单pip install ultralytics这个命令会自动安装 opencv-python、numpy、matplotlib、pandas 等常用依赖。安装完成后可以在 Python 中查看版本import ultralytics print(ultralytics.__version__)2.4 准备标注工具和数据集训练 YOLOv8 需要的是 YOLO 格式的数据集也就是每张图片对应一个文本标注文件文本中每一行表示一个目标类别ID x_center y_center width height其中x_center、y_center、width、height都是相对于图片宽高的归一化数值取值范围在 0 到 1 之间。如果你需要手动标注自己的花卉图片推荐使用 LabelImg 或 Label Studio。LabelImg 可以输出 YOLO 格式的 txt 文件操作方式也不复杂画框、选择类别、保存。对于公开数据集比如 Oxford 102 Flower 等花卉数据集可以从网上下载后转换为 YOLO 格式。3. YOLOv8 网络架构与原理拆解3.1 整体架构YOLOv8 的网络可以分成三个部分Backbone主干网络负责从原始图片中提取特征。YOLOv8 使用带 C2f 模块的卷积网络逐层缩小特征图尺寸、增加通道数。Neck颈部网络负责融合不同尺度的特征。YOLOv8 使用 PAN-FPN将深层语义信息和浅层细节信息进行融合。Head检测头负责输出目标的类别和位置信息。YOLOv8 使用解耦检测头分别输出分类分支和回归分支。用一个简单的表来理解组成部分作用输出示例输入层接收图片并调整尺寸640×640×3Backbone提取多尺度特征80×80、40×40、20×20Neck融合特征每个尺度都有完整语义信息Head输出预测框和类别概率类别数 4 个坐标参数3.2 C2f 模块C2f 模块是 YOLOv8 中替代 C3 的核心模块。它借鉴了 ELAN 思路将输入特征图拆成多个分支经过多次卷积和拼接后再输出。这样的设计让梯度在反向传播时有更多路径训练时更容易收敛推理时也不会明显增加计算量。C2f 的一个直观理解是它把原来比较“直”的卷积路径变成了多条并行的小路径再通过拼接操作把信息融合起来。这种结构在深层次网络中表达能力更强训练过程的损失下降也更稳定。3.3 Anchor-Free 检测头传统 YOLO 使用锚框需要预设一组固定宽高比的候选框。YOLOv8 去掉了锚框让模型直接预测每个位置到目标中心点的偏移、目标宽度和高度。对于初学者而言这意味着训练数据不需要复杂锚框聚类代码也更简洁。Anchor-Free 的好处在于同一套模型结构可以适配更多目标形状。花卉的形态差异很大玫瑰花和向日葵的宽高比完全不同Anchor-Free 方案在这种场景下更有优势。3.4 训练阶段的损失函数YOLOv8 的分类损失使用 BCE Loss二元交叉熵回归损失使用 CIOU Loss 或 DFL Loss 的组合。其中 DFLDistribution Focal Loss用于学习边界框坐标的概率分布能让框回归更精准。训练时YOLOv8 会综合计算边界框损失和分类损失然后通过反向传播更新网络参数。过程可以用下面的流程表示输入一批图片前向传播得到预测结果。将预测结果与真实标注做匹配。计算分类损失和回归损失。反向传播更新权重。重复上述步骤直到损失下降趋于稳定。4. 完整实战YOLOv8 花卉识别模型训练4.1 创建项目结构为了便于管理和后续论文撰写建议先创建清晰的项目目录flower_yolov8/ ├── data/ │ ├── images/ │ │ ├── train/ │ │ └── val/ │ └── labels/ │ ├── train/ │ └── val/ ├── models/ │ └── flower.yaml ├── runs/ ├── train.py └── predict.py其中data/images/train存放训练图片data/images/val存放验证图片data/labels/train和data/labels/val存放对应的 YOLO 格式标注文件。models/flower.yaml是训练配置文件。runs目录用于保存训练日志和模型权重。4.2 准备数据集4.2.1 数据集来源如果你的毕设题目允许使用公开数据集可以直接下载 Oxford 102 Flower 数据集它包含 102 类花卉图片数量约 8000 多张非常适合做目标检测或分类训练。也可以使用 Kaggle 上的 Flower Detection 数据集这些数据集的标注格式可能不同需要转换成 YOLO 格式。如果要求自建数据集建议每类花卉准备 200 到 500 张图片图片分辨率不要太小尽量覆盖不同角度和光照条件。4.2.2 数据划分与标注格式转换将数据集分为训练集和验证集比例一般为 8:2 或 9:1。如果你的标注是 COCO 格式的 JSON 文件可以写一个 Python 脚本转换成 YOLO 格式。这里给出一个简单的 COCO 转 YOLO 核心代码按需调整路径import json import os def coco_to_yolo(coco_json_path, output_dir): with open(coco_json_path, r, encodingutf-8) as f: coco json.load(f) images {img[id]: img for img in coco[images]} categories {cat[id]: idx for idx, cat in enumerate(coco[categories])} os.makedirs(output_dir, exist_okTrue) for ann in coco[annotations]: img images[ann[image_id]] img_w, img_h img[width], img[height] bbox ann[bbox] # COCO格式: [x, y, width, height] x, y, w, h bbox x_center (x w / 2) / img_w y_center (y h / 2) / img_h w_norm w / img_w h_norm h / img_h cat_id ann[category_id] cls_id categories[cat_id] txt_name os.path.splitext(img[file_name])[0] .txt txt_path os.path.join(output_dir, txt_name) with open(txt_path, a, encodingutf-8) as f: f.write(f{cls_id} {x_center:.6f} {y_center:.6f} {w_norm:.6f} {h_norm:.6f}\n) coco_to_yolo(annotations/instances_train.json, data/labels/train) coco_to_yolo(annotations/instances_val.json, data/labels/val)需要注意categories的索引必须从 0 开始因为 YOLO 格式的类别 ID 从 0 开始。4.3 创建 YOLOv8 数据配置文件在models/flower.yaml中写入以下配置# 文件路径models/flower.yaml path: ./data # 数据集根目录 train: images/train # 训练图片相对路径 val: images/val # 验证图片相对路径 nc: 102 # 类别数这里以 Oxford 102 Flower 为例 names: [ rose, daisy, tulip, sunflower, # 这里按实际类别顺序写全所有名称 ]如果你的类别只有 10 类就把nc改成 10并在names列表中写 10 个名字。类别顺序必须与标注文件中的数字一一对应否则训练出来的模型会出现“名字和实际物体对不上”的问题。4.4 编写训练脚本新建train.py文件内容如下# 文件路径train.py from ultralytics import YOLO # 加载预训练模型s 表示 small 版本 model YOLO(yolov8s.pt) # 开始训练 model.train( datamodels/flower.yaml, epochs50, imgsz640, batch8, device0, # 0 表示第一张GPUCPU 则改为 cpu workers2, lr00.01, nameflower_experiment )重点参数解释如下data指定数据集配置文件路径。epochs训练轮数。数据集少时50 到 100 轮足够。imgsz输入网络的图片尺寸。640 是默认推荐值。batch批大小。显存不足时减小到 4 或 2。device指定训练设备。有 GPU 用0没有用cpu。workers数据加载线程数。Windows 下建议设置为 2 或 4太高容易出问题。lr0初始学习率默认 0.01如果损失震荡严重可以调小到 0.001。name训练实验名称日志和权重会保存在runs/detect/flower_experiment下。如果你不想写脚本也可以直接在命令行执行yolo detect train datamodels/flower.yaml modelyolov8s.pt epochs50 imgsz640 batch8 device04.5 运行训练并观察日志在项目根目录执行python train.py训练开始后控制台会持续输出每一轮的训练信息包括train_loss、val_loss、mAP50、mAP50-95等指标。对初学者来说重点关注两个值mAP50当预测框与真实框的 IoU 大于 0.5 时模型的平均检测精度。数值越高越好。mAP50-95在不同 IoU 阈值0.5 到 0.95下的平均精度这是更严格的评价指标。如果你的验证集 mAP50 在训练结束后能达到 0.7 以上说明模型已经具备较好的检测能力。4.6 训练结果文件说明训练完成后在runs/detect/flower_experiment目录下会生成以下内容文件/目录说明weights/best.pt验证集表现最好的模型权重weights/last.pt最后一轮的模型权重args.yaml本次训练的所有超参数记录results.csv每轮训练的详细指标confusion_matrix.png混淆矩阵图results.png损失曲线和指标曲线图val_batch0_pred.jpg验证集预测结果可视化图毕设论文中通常需要展示results.png和confusion_matrix.png这些文件可以直接使用。5. 模型推理与结果可视化5.1 单张图片推理训练完成后编写predict.py对图片进行检测# 文件路径predict.py from ultralytics import YOLO # 加载训练好的模型 model YOLO(runs/detect/flower_experiment/weights/best.pt) # 推理单张图片 results model.predict( sourcedata/images/val/xxx.jpg, conf0.25, saveTrue, projectruns/predict, nameflower_demo ) # 打印检测结果 for result in results: boxes result.boxes if boxes is not None: for box in boxes: cls_id int(box.cls[0]) conf float(box.conf[0]) xyxy box.xyxy[0].tolist() print(f类别ID: {cls_id}, 置信度: {conf:.3f}, 框: {xyxy})参数说明source输入图片路径也可以是文件夹或摄像头。conf置信度阈值低于该值的预测框会被过滤。save是否保存预测结果图片。5.2 批量推理文件夹如果需要跑完整个验证集或测试文件夹可以直接把source改成文件夹路径model.predict( sourcedata/images/val, conf0.25, saveTrue, projectruns/predict, nameval_batch )5.3 摄像头实时检测如果你的毕设项目要求实时检测可以使用摄像头作为输入源model.predict(source0, showTrue)其中source0表示默认摄像头。这个功能在答辩演示时效果不错但需要保证电脑摄像头驱动正常。5.4 导出为其他格式YOLOv8 支持将模型导出为 ONNX、TensorRT、OpenVINO 等格式方便部署到服务端或边缘设备yolo export modelruns/detect/flower_experiment/weights/best.pt formatonnx导出后的best.onnx可以用于后续的服务化部署也可以使用 ONNX Runtime 推理。6. 常见问题与排查思路6.1 PyTorch 安装慢或安装失败现象pip install torch一直卡住或者安装后import torch报错。原因网络原因导致下载超时或者安装的包版本与 Python 版本不匹配。解决思路使用国内镜像源安装例如阿里云或清华源。安装 CPU 版本先跑通流程再更换 GPU 版本。检查 Python 版本建议使用 3.9 或 3.10。国内镜像安装方式pip install torch torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple但注意使用镜像源默认安装的是 CPU 版本如果需要 CUDA 版本建议从 PyTorch 官网复制命令并加上--index-url参数。6.2 CUDA 不可用现象torch.cuda.is_available()返回False。原因显卡驱动太旧PyTorch 版本与 CUDA 版本不匹配安装了 CPU 版 PyTorch。解决思路执行nvidia-smi查看显卡支持的 CUDA 版本。卸载 PyTorch重新安装对应 CUDA 版本的预编译包。如果显卡是 AMD 或 Intel无法使用 CUDA只能使用 CPU 训练。6.3 显存不足现象训练时报CUDA out of memory。原因batch太大或输入图片尺寸太大。解决思路将batch从 16 减小到 8、4 或 2。将imgsz从 640 减小到 512 或 416。关闭其他占用显存的程序。使用device0时确保 PyTorch 真的在使用 GPU。6.4 训练时找不到标签文件现象训练日志中出现大量WARNING: corrupt image或No labels found。原因图片和标签文件没有放在正确的目录结构下标签文件名和图片名不一致。解决思路检查data/images/train下的图片名和data/labels/train下的 txt 文件名是否一致。检查flower.yaml中path、train、val的路径是否正确。手动打开一个 txt 文件确认内容不是空的。6.5 模型训练不收敛或 mAP 很低现象训练过程中损失不下降或者验证集 mAP 一直很低。原因数据集标注有问题类别数配置错误学习率过高数据量太少。解决思路可视化几张验证集预测图观察标注框是否准确。检查nc是否和实际类别数一致。降低初始学习率到 0.001 再试。增加数据增强比如随机翻转、旋转、亮度调整。6.6 推理结果没有检测框现象预测图片能正常输出但画面上没有任何框。原因置信度阈值太高目标太小模型没有充分训练。解决思路把conf从 0.25 降低到 0.1 或 0.05。检查输入图片是否包含目标。确认加载的权重是best.pt而不是last.pt。7. 最佳实践与工程建议7.1 统一类别 ID 管理在训练前把类别名称和 ID 的对应关系写到一个classes.txt文件里方便随时查对。比如0 rose 1 daisy 2 tulip 3 sunflower这样无论是标注、转换格式、还是后期推理时打印类别名都能保持一致避免“标签错位”这种隐蔽问题。7.2 固定随机种子为了让每次训练结果尽量可复现可以在训练脚本开头设置随机种子import random import numpy as np import torch random.seed(0) np.random.seed(0) torch.manual_seed(0) torch.cuda.manual_seed_all(0)注意即使固定随机种子GPU 训练时由于并行计算等原因结果仍可能有一点点浮动这属于正常现象。7.3 数据增强策略YOLOv8 默认自带一些数据增强例如 Mosaic、随机翻转、色彩抖动等。如果数据集比较小可以适当加强增强强度但不要过度否则模型会难以拟合真实图片特征。推荐的入门做法是直接用默认增强等模型 baseline 稳定后再逐步调整。在train.py中可以通过augment相关参数控制例如model.train( datamodels/flower.yaml, epochs50, imgsz640, batch8, device0, hsv_h0.015, hsv_s0.7, hsv_v0.4, degrees10, translate0.1, scale0.5, fliplr0.5, )这些参数分别控制色调、饱和度、亮度、旋转角度、平移比例、缩放比例和水片翻转概率初学者可以先用默认值不要急着全部改。7.4 训练日志与模型版本管理训练过程中的results.csv是非常宝贵的信息建议保留。每次实验都使用不同的name参数不要全部堆在一个目录下。这样后期写论文时可以清晰对比不同超参数、不同骨干网络的效果。对于权重文件建议定期备份best.pt因为它直接决定了后续推理效果。如果有多个实验版本可以在权重文件名上加上_epochs或_backbone后缀。7.5 数据安全与实验备份在任何需要删除或覆盖文件的环节都要先确认当前操作是否会影响原数据集标注。尤其是当你在处理标注文件时建议保留一份原始 COCO 或 VOC 格式的备份。如果项目时间紧张宁愿多保存几份数据也不要因为一个误操作导致整个数据集作废。7.6 显存与训练时间权衡模型规格显存占用训练速度推荐场景yolov8n低快快速验证、CPU 训练yolov8s中较快毕设项目首选yolov8m较高中对精度要求较高yolov8l高慢数据量大、GPU 较好yolov8x很高很慢竞赛或极致精度对于普通毕设yolov8s是性价比最高的选择如果训练集非常小也可以直接用yolov8n快速验证全流程。7.7 类别不均衡问题如果某些花卉类别图片特别多而另一些特别少模型会偏向样本多的类别。解决办法包括增加样本少类别的图片数量最直接有效。对样本少的类别做额外数据增强。调整损失函数中的类别权重。在 YOLOv8 中类别权重可以通过自定义 loss 或修改数据集分布实现但初学者优先考虑扩充数据。7.8 模型过拟合与欠拟合判断如果训练损失持续下降但验证集 mAP 不升反降大概率是过拟合。此时可以增加数据增强、增加训练数据、或者使用更大的模型。反之如果训练损失和验证损失都停留在较高位置说明模型容量不足或训练不充分需要增加训练轮数或换更大的模型。看results.png是判断过拟合和欠拟合最快的方式训练损失下降、验证损失也下降正常。训练损失下降、验证损失上升过拟合。两者都不下降学习率太高或数据集有问题。8. 基于模型做一个小型识别程序如果你希望毕设界面更完整可以基于 Flask 写一个简单的 Web 上传识别功能。后端调用训练好的 YOLOv8 模型前端上传图片页面返回检测结果和标注图片。这里给出一个最小示例。8.1 文件结构web_demo/ ├── app.py ├── templates/ │ └── index.html └── uploads/8.2 Flask 后端代码# 文件路径web_demo/app.py import os from flask import Flask, request, render_template, redirect, url_for from ultralytics import YOLO from PIL import Image app Flask(__name__) model YOLO(../runs/detect/flower_experiment/weights/best.pt) UPLOAD_FOLDER uploads os.makedirs(UPLOAD_FOLDER, exist_okTrue) app.route(/, methods[GET, POST]) def index(): if request.method POST: file request.files[image] if file: path os.path.join(UPLOAD_FOLDER, file.filename) file.save(path) results model.predict(sourcepath, conf0.25) annotated_path os.path.join(UPLOAD_FOLDER, annotated_ file.filename) annotated_img results[0].plot() Image.fromarray(annotated_img).save(annotated_path) return render_template(index.html, resultannotated_path) return render_template(index.html) if __name__ __main__: app.run(debugTrue, port5000)8.3 前端模板!-- 文件路径web_demo/templates/index.html -- !DOCTYPE html html langzh head meta charsetUTF-8 title花卉识别/title /head body h1YOLOv8 花卉识别系统/h1 form methodpost enctypemultipart/form-data input typefile nameimage acceptimage/* required button typesubmit上传识别/button /form {% if result %} h3识别结果/h3 img src{{ url_for(static, filename../uploads/ ~ result) }} stylemax-width: 600px; {% endif %} /body /html这个 Demo 只是最简单的演示生产环境还需要考虑文件大小限制、并发处理、模型加载优化等问题。不过对于毕设而言已经足够展示“完整系统”的雏形。9. 总结与后续学习建议本文从 YOLOv8 的基本概念出发梳理了环境搭建、数据集准备、模型训练、推理评估和常见排错的完整流程。核心要点可以归纳为下面几点YOLOv8 是一个 Anchor-Free 的检测模型适合同时完成目标定位和分类。PyTorch 是 YOLOv8 官方支持最好的框架环境搭建时要特别注意 CUDA 版本匹配。数据集格式必须严格遵循 YOLO 规范图片与标签文件名字一一对应。训练时优先关注mAP50和mAP50-95不要只看训练损失是否下降。best.pt是最终要使用的权重文件推理和部署都以它为准。遇到报错时先检查环境、再检查数据、最后检查代码这是最快的排查路径。如果你完成了今天的花卉识别模型下一步可以尝试做三件事第一把识别结果接入简单的 Web 服务或桌面程序形成一个小型系统这对毕设答辩非常加分。第二尝试替换骨干网络或调整输入尺寸观察 mAP 和推理速度的变化这个过程能帮助理解模型结构对性能的影响。第三在更大的数据集上训练或者使用 YOLOv8 提供的其他任务如实例分割、姿态估计看看同一套框架在不同任务上的表现。训练深度学习模型最重要的是先跑通一个最小闭环再逐步改进。这也是我做 CV 方向这么久以来最深的体会。第一次跑通 YOLOv8 时你可能发现很多环节靠的是“照着做”但随着你对数据格式、损失函数、模型结构的理解加深后续的调试会越来越顺手。如果这篇文章能帮你在毕设阶段节省一些时间那它的目的就达到了。
返回列表