尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

基于YOLOv8与PyTorch的花卉识别实战:从环境配置到结果展示

基于YOLOv8与PyTorch的花卉识别实战:从环境配置到结果展示 你有没有遇到过这种情况毕设题目是“基于深度学习的图像识别”打开知乎、B站、CSDN 搜了一圈教程倒是不少但要么是纯理论看得人昏昏欲睡要么是代码跑起来各种报错要么是数据集不知道去哪里下载最后一周的时间全耗在环境配置上。如果你正打算用 YOLOv8 PyTorch 做花卉图像识别或者你只是想找一个能快速跑通、能写进毕业论文、能演示给老师看的深度学习项目那么这篇文章就是为你准备的。先说结论花卉识别不是深度学习里最复杂的方向但它是一个性价比极高的“练手 毕设”项目。它既包含了图像分类任务的核心流程又能通过 YOLOv8 的检测能力把“识别出是什么花”升级成“定位到花在哪、识别出花的类别和置信度”。这种既有原理又有实战、既经典又够新潮的选题放在毕业论文里比单纯做一个 MNIST 手写数字识别要体面得多也比那些动辄需要几十万张数据集的工业项目更适合学生环境。这篇文章不会讲太多虚的我会从一个真正要跑通项目的角度带你拆解整个流程YOLOv8 到底解决了什么问题、PyTorch 环境怎么配才不会踩坑、数据集应该长什么样、训练代码怎么写、训练完怎么验证效果、以及论文和答辩里最需要的损失曲线和效果展示怎么生成。文章末尾还附带可直接使用的数据集组织方式和后续改进方向。1. 为什么是 YOLOv8 PyTorch 而不是其他方案先把这个问题说清楚因为它的答案就是你论文里“选题依据”部分的素材。1.1 YOLOv8 解决了什么问题如果你对计算机视觉有一些了解应该知道目标检测领域过去的主流方案主要有两条技术路线一类是两阶段检测器代表是 Faster R-CNN另一类是单阶段检测器代表是 YOLO 系列。两阶段检测器的思路是先提取候选区域再对候选区域进行分类和回归特点是准确率高但速度慢单阶段检测器把“找出目标位置”和“识别目标类别”放在同一个步骤里完成特点是速度快、结构简洁。YOLOv8 是 Ultralytics 公司在 2023 年初发布的 YOLO 系列最新版本。它在网络结构上做了几个重要改动第一主干网络仍然是 CSPDarknet 结构但内部的 C2f 模块替代了之前的 C3 模块。C2f 模块借鉴了更丰富的梯度流设计把不同层的特征更好地融合起来让模型在保持轻量化的同时拥有更强的特征表达能力。第二采用 Anchor-Free 检测头。之前的 YOLOv5 还在使用基于锚框Anchor Box的检测方式需要预先设计一组先验框的尺寸和比例。YOLOv8 直接预测目标中心点到边界框四条边的距离省去了聚类生成 Anchor 的步骤也减少了很多调参的麻烦。第三分类分支和回归分支解耦。YOLOv8 在检测头部分将分类和回归任务拆分为两个独立分支避免了这两个任务因目标不同而互相干扰训练更稳定。这些改动的直接结果是YOLOv8 在 COCO 数据集上mAP 指标高于同量级的 YOLOv5 模型推理速度却几乎没有下降。对于花卉识别这个任务来说最大的感受就是——“我用一个普通笔记本的 GPU 就能训练出效果还不错的模型而且推理一张图片只需要几十毫秒”。1.2 为什么选择 PyTorchPyTorch 在学术界的统治地位已经不需要过多讨论了。如果你的毕业设计需要写代码、做实验、画曲线、写论文PyTorch 生态能帮你节省大量时间。HuggingFace 上有大量预训练模型Ultralytics 官方对 YOLOv8 的 PyTorch 支持也是第一优先级的。你不需要自己去实现 YOLOv8 的网络结构直接调用ultralytics这个 pip 包就能训练和推理。另外如果你是计算机相关专业的学生PyTorch 的调试体验比 TensorFlow 1.x 时代的静态图机制友好太多。你可以随时print中间张量的形状可以断点调试这对于理解模型原理极其有帮助。1.3 这个组合适合什么样的读者在校本科生或研究生毕业设计题目是图像识别、目标检测相关方向。刚入门深度学习想在 1 到 2 周内跑通第一个像样的视觉项目。需要做课程设计 / 实训项目希望模型效果能拿得出手。对前沿目标检测算法感兴趣想从 YOLOv5 过渡到 YOLOv8 的开发者。一句话总结YOLOv8 PyTorch 的最大价值不是让你从零造轮子而是让你站在巨人的肩膀上把有限的精力花在数据准备、模型训练和结果分析上这些恰恰才是论文里真正加分的地方。2. 核心概念从图片分类到目标检测在写代码之前我建议你先花 30 分钟把下面几个概念搞清楚。不是因为要考试而是因为这些概念直接决定了你怎么理解训练日志、怎么调参数、怎么向老师解释你的工作。2.1 图像分类与目标检测的边界图像分类回答的问题是这张图片里最主要的物体是什么目标检测回答的问题是这张图片里有哪些物体它们分别在哪里是什么类别举一个花卉场景的例子。如果一张图片里同时有玫瑰和向日葵图像分类模型可能会给出一个最高置信度的类别比如“玫瑰”。但目标检测模型会输出两个边界框一个框住玫瑰类别置信度 0.92另一个框住向日葵类别置信度 0.87。这就是两者本质的区别。你做的花卉识别项目如果把题目定位为“花卉检测与识别”那 YOLOv8 就是最合适的选择。如果你的题目只做“单一花卉图片分类”那用 ResNet 或 EfficientNet 也可以但展示效果远不如检测模型直观。2.2 标注数据与标注格式YOLO 系列采用的标注格式是txt文本文件每一行代表一个目标格式如下class_id x_center y_center width height注意这里的x_center、y_center、width、height都是归一化到 0 到 1 之间的相对值不是像素坐标。比如一张 640x640 的图片中某个花朵边界框的中心点在像素坐标 (320, 320)宽 160 像素高 200 像素那么标注内容就是0 0.5 0.5 0.25 0.3125这种格式理解起来很简单但第一次接触的同学经常忘记归一化导致训练时 loss 为 NaN 或者模型完全不收敛。后面我会在数据集准备部分再强调一次。2.3 YOLOv8 训练时的关键指标训练过程中你会看到很多指标最容易让新手困惑的是这几个box_loss边界框回归损失衡量预测框和真实框的位置差距。cls_loss分类损失衡量类别预测是否正确。dfl_lossDistribution Focal LossYOLOv8 中用于优化边界框质量估计的损失。precision精确率预测为正类的样本中实际是正类的比例。recall召回率实际是正类的样本中被成功预测为正类的比例。mAP50IoU 阈值为 0.5 时的平均准确率。mAP50-95IoU 阈值从 0.5 到 0.95 取多个档位的平均准确率这个指标更严苛也更能反映模型整体性能。在你论文的实验结果表里一般需要列出 precision、recall、mAP50、mAP50-95 这几个值。3. 环境准备从零搭建 PyTorch YOLOv8 开发环境很多同学在这个环节就崩溃了。其实环境配置是有套路的只要按照顺序走大部分问题都可以避免。3.1 硬件要求先看硬件不要一上来就安装最新版 PyTorch结果发现显卡驱动不支持。最低配置CPU 也能跑但一只花的训练时间可能是 GPU 的 20 到 50 倍新手不建议。推荐配置任意支持 CUDA 的 NVIDIA 显卡显存 4GB 以上。像 GTX 1660 Ti 这类显存 6GB 的显卡训练 YOLOv8n 或 YOLOv8s 模型完全够用。显存不足的替代方案使用 Google Colab 或百度飞桨 AI Studio 的免费 GPU 环境。Colab 的免费 GPU 跑 YOLOv8n 没问题。如果你的电脑是 AMD 显卡或者根本没有独立显卡也有办法用 CPU 跑一两个 epoch 验证代码流程真正训练的时候再切换到云 GPU 环境。3.2 安装 PyTorchPyTorch 的安装是新手最容易踩坑的地方关键问题在于 CUDA 版本。这里给出一个稳定可靠的流程。第一步查看你的显卡驱动支持的 CUDA 版本。在命令行输入nvidia-smi输出结果的右上角会有CUDA Version: 12.x之类的信息。注意这个数字表示你的驱动支持的最高 CUDA 版本不是你已经安装的 CUDA 版本。PyTorch 的 CUDA 依赖是打包在安装包里的不需要单独安装完整的 CUDA Toolkit。第二步去 PyTorch 官网选择对应的安装命令。如果你看到的驱动版本是 CUDA 11.8那么安装命令可以这样写pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118如果驱动版本更新比如支持的 CUDA 版本是 12.x则可以使用pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121这里要特别提醒一个问题国内网络环境下从 PyTorch 官网下载安装包经常非常慢如果你用的是手机热点还会更慢。解决办法是使用国内镜像源比如阿里云或清华源。但要注意PyTorch 官方源中的 CUDA 版本 wheel 包不一定能通过普通镜像源直接下载到正确版本。更稳妥的办法是先用官网命令下载如果速度实在太慢改成用以下命令方式其中-i后面的镜像源可以解决这个问题pip install torch torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple不过这个方式默认安装的是 CPU 版本还是 GPU 版本取决于 PyPI 源中的默认 wheel 包通常 PyPI 默认的torch包是带 CUDA 支持的 Linux 和 Windows 版本但具体请以实际安装日志为准。安装完成后一定要验证 GPU 是否可用这是最直接的检查方式。打开 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训练)如果输出True说明 GPU 版本安装成功。如果输出False不要急着重新安装先检查一下你安装的是不是 CPU 版本的 PyTorch。可以用pip list | findstr torch查看。3.3 安装 Ultralytics 和辅助库Ultralytics 是 YOLOv8 的官方库安装非常简单pip install ultralytics这个库会自动依赖 OpenCV、NumPy、Matplotlib 等常用库。另外建议再安装一个labelimg用于手动标注数据pip install labelimg4. 数据集准备与标注决定项目成败的第一环很多同学喜欢一上来就写代码训练但说实话在目标检测项目里数据集的准备工作决定了你训练结果的 70%。与其在模型结构上花力气调参不如先把数据整理好。4.1 数据集从哪里来花卉识别是一个比较成熟的方向有几个常用的公开数据集Oxford 102 Flowers包含 102 类英国常见花卉每类 40 到 258 张图片是比较经典的数据集。17 Category Flower Dataset包含 17 类花卉每类 80 张图片规模较小适合快速跑通流程。Kaggle 上的 Flower Recognition 数据集包含 5 类花卉雏菊、蒲公英、玫瑰、向日葵、郁金香每类约 800 张图片规模适中适合做入门项目。如果你不想下载现成数据集也可以通过网络爬虫自己收集图片。这里要提醒一下自行爬取的图片必须注意版权和学术规范用于学习研究没问题但如果要公开或商用需要更谨慎。4.2 数据集目录结构无论你从哪个来源获取数据最终都需要把它整理成 YOLO 格式的目录结构。以我的经验最清晰的目录组织方式如下flower-dataset/ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ └── labels/ ├── train/ ├── val/ └── test/每个images目录下的图片文件在labels对应目录下都有一个同名的txt文件。这个txt文件里面写的就是该图片中所有目标的类别和边界框坐标。4.3 数据标注工具如果你的数据集需要自己标注推荐使用 LabelImg。它是一个非常经典的图形化标注工具操作方式很简单打开 LabelImg点击 “Open Dir” 选择图片目录。点击 “Change Save Dir” 选择标签保存目录。使用W键创建矩形框框住花朵。输入类别名称保存。切换下一条图片。关键一步在 LabelImg 中点击左侧栏的 “PascalVOC” 按钮把它切换为 “YOLO” 格式。否则默认保存的是 XML 文件YOLOv8 无法直接使用。4.4 数据划分与配置文件训练集、验证集、测试集的比例一般建议 7:2:1 或 8:1:1。如果数据量较小比如每类只有几十张可以适当提高验证集比例让模型的效果评估更可靠。接着需要创建一个 YAML 配置文件告诉 YOLOv8 数据在哪里、有多少个类别。下面是本文示例数据集的配置# 文件路径flower-dataset/dataset.yaml path: E:/flower-dataset # 数据集根目录建议写绝对路径 train: images/train val: images/val test: images/test nc: 5 names: 0: daisy 1: dandelion 2: rose 3: sunflower 4: tulipnc表示类别数量names中的编号必须和标注 txt 文件中的class_id一致否则训练时类别会错乱。5. 训练1 小时跑通 YOLOv8 花卉识别模型环境准备好了数据集也整理好了接下来就是你最关心的一步——训练模型。5.1 最小训练代码如果你的数据量不大比如每类几百张图片那么使用 YOLOv8n 这个轻量级模型就足够了。它在保证不错精度的同时训练速度最快对显存的要求也最低。创建一个 Python 文件运行以下代码# 文件路径train_yolov8_flower.py from ultralytics import YOLO # 加载 YOLOv8n 预训练权重使用 COCO 数据集上的预训练参数可以加速收敛 model YOLO(yolov8n.pt) results model.train( dataE:/flower-dataset/dataset.yaml, epochs50, imgsz640, batch16, device0, # 使用 GPU 0如果没有 GPU 就改成 cpu workers4, lr00.01, nameflower_yolov8n, patience10, # 验证集指标连续 10 轮不提升就提前停止 )这段代码中每个参数都是有讲究的epochs50对于小数据集50 轮已经够模型学习到较好的特征。如果你时间紧张可以先跑 20 轮看趋势。imgsz640YOLOv8 默认输入尺寸是 640x640。如果你的花朵在图片中占比较大可以尝试 960 甚至 1280但训练时间会显著增加。batch16一个批次处理 16 张图片。如果你的显存只有 4GB建议降到 8如果显存不足时报错CUDA out of memory就继续降低到 4 或 2。device0表示使用第 0 块 GPU。只有一张显卡时就用 0。patience10这个参数非常实用如果模型在验证集上的指标连续 10 轮都没有提升训练会自动停止避免浪费时间。5.2 从头训练还是微调接着上一个问题model YOLO(yolov8n.pt)这行代码会自动下载 COCO 数据集上的预训练权重然后基于这个权重在你的花卉数据集上继续训练。这叫做微调Fine-tuning是深度学习里最推荐、最省资源的做法尤其适合数据集规模不大的场景。有些同学追求“从零开始”觉得用预训练权重是“作弊”。其实不是。在迁移学习里预训练模型已经学会了很多通用视觉特征比如边缘、纹理、形状、颜色分布等这些特征对花卉识别完全适用。你在新数据集上训练本质上是在微调这些通用特征让它们更适应花卉任务的特殊性。这种做法能显著缩短训练时间并且在小数据集上取得更稳定的效果。那什么时候需要从头训练只有当你的数据集规模非常大比如几十万张且与你当前任务的数据分布差异极大时才需要。对于绝大多数毕设场景直接微调就好。5.3 训练过程中的输出怎么看训练过程中终端会持续输出类似下面的日志Epoch(1/50) box_loss: 1.224 cls_loss: 1.856 dfl_loss: 1.345 precision: 0.25 recall: 0.11 mAP50: 0.153 mAP50-95: 0.08: 100%|█| 15/15 [00:1200:00, 1.2it/]新手不需要过度关注每一步的数值波动只需要观察一个趋势随着 epoch 增加box_loss、cls_loss、dfl_loss是否在下降mAP50是否在上升。如果这些核心指标没有明显变化说明模型没有在学习需要检查数据集和标注是否有问题。训练结束后Ultralytics 会自动在runs/detect/flower_yolov8n/目录下生成以下文件weights/best.pt验证集上效果最好的权重文件。weights/last.pt最后一轮训练的权重文件。results.png损失曲线和 mAP 曲线图。confusion_matrix.png混淆矩阵图。val_batch0_pred.jpg验证集图片的预测结果可视化。args.yaml当前训练的完整参数配置。其中results.png和confusion_matrix.png是论文里最常用的两张图。6. 模型推理与效果验证训练完之后自然要测试一下模型能不能真正完成“看花识花”的任务。这一步的代码非常简单几乎没有坑。6.1 单张图片推理# 文件路径inference_single.py from ultralytics import YOLO # 加载训练好的权重 model YOLO(runs/detect/flower_yolov8n/weights/best.pt) # 对单张图片进行推理 results model.predict( sourceE:/test_images/rose_test.jpg, saveTrue, conf0.25, # 置信度阈值低于该阈值的预测框会被过滤掉 line_width2, ) # 查看检测结果 for r in results: boxes r.boxes for box in boxes: class_id int(box.cls[0]) confidence float(box.conf[0]) xyxy box.xyxy[0].tolist() print(f类别ID: {class_id}, 置信度: {confidence:.4f}, 边界框: {xyxy})6.2 批量推理测试文件夹如果你有一整个测试集文件夹可以这样写# 文件路径inference_directory.py from ultralytics import YOLO model YOLO(runs/detect/flower_yolov8n/weights/best.pt) results model.predict( sourceE:/flower-dataset/images/test, saveTrue, conf0.25, save_txtTrue, # 同时输出检测结果的 txt 标注 save_confTrue, # 在 txt 标注中保存置信度 )运行完成后程序会自动创建一个runs/detect/predict目录里面是每张测试图片的标注可视化结果。这就是你在答辩时可以展示的“模型效果演示”素材。6.3 模型验证指标评估如果你想在验证集上评估模型的整体性能可以执行from ultralytics import YOLO model YOLO(runs/detect/flower_yolov8n/weights/best.pt) metrics model.val() print(fmAP50: {metrics.box.map50}) print(fmAP50-95: {metrics.box.map}) print(fprecision: {metrics.box.mp}) print(frecall: {metrics.box.mr})6.4 画损失函数曲线图很多时候Ultralytics 自动生成的results.png已经能满足需求。但如果你需要单独绘制某一条损失曲线放进论文或者需要对曲线做定制化美化那么可以使用results.csv文件重新绘制。训练结束后在runs/detect/flower_yolov8n/目录下会有一个results.csv文件里面记录了每一轮的损失和指标数据。下面这段代码读取该文件并绘制训练损失曲线# 文件路径plot_loss_curve.py import pandas as pd import matplotlib.pyplot as plt # 读取训练日志 df pd.read_csv(runs/detect/flower_yolov8n/results.csv) # 去掉列名首尾空格 df.columns df.columns.str.strip() epochs df[epoch] plt.figure(figsize(10, 6)) # 训练损失 plt.plot(epochs, df[train/box_loss], labelbox_loss) plt.plot(epochs, df[train/cls_loss], labelcls_loss) plt.plot(epochs, df[train/dfl_loss], labeldfl_loss) plt.xlabel(Epoch) plt.ylabel(Loss) plt.title(Training Loss Curve) plt.legend() plt.grid(True) plt.savefig(flower_loss_curve.png, dpi300) plt.show()这张图可以直接用在论文的“实验结果与分析”章节比直接截图results.png更专业。7. 常见问题与排查思路在带项目的一年多时间里我发现学生的报错问题几乎都是相似的下面几个。这里整理成一份排错表你可以直接收藏备用。问题现象可能原因排查方式解决方案CUDA out of memory显存不足batch 设置过大查看显卡显存占用减小 batch 到 4 或 2使用 YOLOv8n 而不是 YOLOv8s降低 imgsz 到 480安装 PyTorch 后torch.cuda.is_available()返回 False安装的是 CPU 版本运行pip list | findstr torch查看 torch 版本信息卸载后重新安装对应 CUDA 版本的 PyTorch训练时 loss 为 NaN学习率过高或标注坐标越界检查 lr0 参数、检查 txt 标注中是否有大于 1 的坐标将 lr0 降到 0.001重新检查标注文件归一化训练过程中 mAP 一直很低数据量太小或标注框不准确可视化检查验证集标注增加数据量重新用 LabelImg 修正标注框FileNotFoundError: train.txt数据集路径配置错误检查 dataset.yaml 中的路径是否存在使用绝对路径确保目录拼接正确AttributeError: NoneType object has no attribute shape图片文件损坏或格式不支持检查图片文件是否可正常打开删除损坏图片或转换图片格式为 JPG/PNG验证集预测结果中一张图都没有类别数量配置错误查看训练日志中nc值检查 dataset.yaml 中 names 和 nc 是否与标注一致手机热点安装 PyTorch 太慢网络原因导致下载中断或速度极低观察 pip 下载进度切换到国内镜像源或使用 Colab 等云环境训练8. 最佳实践与工程建议这一部分的内容不是“锦上添花”而是让你的项目真正达到毕业设计或者实际项目水准的关键。8.1 数据集质量比模型结构更重要我见过很多同学把大量时间花在尝试各种 YOLOv8 改进版本上结果反而忽略了数据集。实际上对于花卉识别这种任务数据集的质量直接决定了模型的天花板。具体来说每类花卉的图片数量尽量均衡避免类别不平衡导致某些类识别效果差。图片要覆盖不同光照、不同角度、不同背景不要全是同一种拍摄姿势。标注框要贴紧花朵主体不要出现大面积留白也不要只框住花朵的一半。定期做标注质量检查。可以随机从训练集中抽 50 张图把标注可视化出来人工核对。8.2 增量训练是扩展类别的常用手段很多同学训练完 5 类花卉之后想再加几类怎么办你不需要从头再训练所有类别。利用 YOLOv8 的增量训练能力把新的花卉图片加入数据集然后基于已有的best.pt权重继续训练即可。代码和之前完全一样唯一需要注意的就是更新dataset.yaml中的nc和names。from ultralytics import YOLO # 基于已有权重继续训练而不是重新下载预训练权重 model YOLO(runs/detect/flower_yolov8n/weights/best.pt) # 使用更新后的数据集配置文件可以保留旧类别追加新类别 model.train( dataE:/flower-dataset/dataset_v2.yaml, epochs30, imgsz640, batch16, )增量训练最要注意的问题是如果新增类别后原有类别的标注和数量没有变化模型一般能保持原有效果并学会新类别但如果你同时调整了旧类别的标注最好让训练轮数适当增加一些让模型有机会重新适配。8.3 日志记录与实验管理做实验时强烈建议每次训练都设置不同的name参数比如flower_yolov8n_exp1、flower_yolov8n_exp2。Ultralytics 会在runs/detect/下为每个name创建独立目录这样你可以很方便地对比不同实验的结果不会互相覆盖。如果你做的是毕设项目建议在实验记录表中记录以下字段实验编号、模型大小、输入尺寸、epochs、batch size、学习率、mAP50、mAP50-95、训练耗时、显存占用。论文里的对比实验表就靠这些数据填充。8.4 关于模型部署的提醒如果你的项目要求把训练好的模型集成到一个可视化 Demo 或 Web 服务里推荐使用 Flask 或 FastAPI 搭建一个简单的 HTTP 服务前端页面允许用户上传图片后端调用 YOLOv8 模型推理并返回标注结果。这个架构在毕设里属于加分项而且代码量并不大。但要注意在部署阶段模型的推理速度通常受 CPU 还是 GPU 影响很大。如果你的服务器没有 GPU超轻量级的 YOLOv8n 在 CPU 上推理一张 640x640 图片大约需要 200 到 800 毫秒具体时间取决于 CPU 性能。如果这个速度不够可以考虑将输入尺寸降到 320或者使用 ONNX Runtime 加速。9. 总结与后续学习方向这篇文章没有把你当成深度学习的初学者对待因为我相信你的目标不是“照着敲完代码就结束”而是真正理解这个项目从头到尾发生了什么事情。到这里你已经掌握了以下关键能力理解 YOLOv8 相比之前版本的核心改进和为什么适合花卉识别任务。能够从零搭建 PyTorch Ultralytics 环境并解决最常见的 CUDA 和网络问题。会整理 YOLO 格式的数据集会自己标注数据会写 dataset.yaml。能够跑通训练代码看懂训练日志中的损失和指标。会对训练好的模型进行推理和验证并生成论文中需要的损失曲线图。知道训练过程中的常见坑在哪里以及如何快速排查。作为后续的进阶方向你可以思考以下几个问题当你把数据集扩大到 50 类甚至 100 类花卉时模型结构应该换成 YOLOv8s 还是 YOLOv8m当你需要识别图片中非常小的花朵时是不是应该调整输入尺寸或使用多尺度训练如果你想在手机上运行这个模型应该如何导出为 ONNX 或者 TensorRT 格式这些都是值得深入探索的方向。不过现在先不要想那么远。打开你的命令行把数据集准备好先跑通一个 20 轮的训练看看那张results.png里损失曲线下降的趋势。当你第一次看到终端里跳出mAP50: 0.87的时候你对深度学习的信心和兴趣会超过任何一篇博客能带给你的东西。
返回列表