☰
YOLOv8+PyTorch花卉识别实战:从环境搭建到模型部署全流程
2026/11/3 5:02:49 网站建设 项目流程

YOLOv8和PyTorch已经成了高校毕设和深度学习入门里最常见的组合,很多同学卡在环境搭建、数据集整理和训练调试这几步。这篇文章就围绕一条完整可落地的实战链路展开:从YOLOv8的核心概念、PyTorch环境配置、数据集整理,到写真正能跑的训练和预测代码,最后给出常见报错排查和工程建议。无论你是准备毕业设计,还是想系统入门深度学习,这套流程都可以直接照着做。

1. 背景与核心概念

1.1 花卉图像识别到底在解决什么问题

花卉图像识别,本质上是让计算机从一张图片里判断“这朵花是什么品种”。它属于计算机视觉里的图像分类任务。更具体一点,我们希望模型输入一张RGB图片,输出一个类别标签,比如“玫瑰”“向日葵”“蒲公英”。

在深度学习普及之前,传统方法主要依赖人工设计的特征,比如颜色直方图、纹理特征、形状描述子,再配合SVM、决策树这类分类器。这种方法在背景简单、光照稳定的条件下效果还行,但一遇到复杂背景、遮挡、不同角度,特征就很难设计,准确率也上不去。

深度学习出现后,卷积神经网络可以自动从原始像素中提取多层特征。低层学到边缘、颜色,中层学到纹理、局部形状,高层学到语义级别的花朵结构。PyTorch提供了完整的自动求导和设备管理机制,让我们可以专注在模型结构和训练流程上,不用手动实现反向传播。

而YOLOv8在这个任务里扮演的角色更丰富:它不仅支持经典的目标检测,还原生支持图像分类。也就是说,你可以直接用YOLOv8的分类模型来完成“整张图属于哪个类别”的任务,也可以用检测模型同时定位出花朵位置并识别类别。对毕设来说,两种方案都可以做。

1.2 为什么要选YOLOv8+PyTorch

先看YOLOv8。YOLO系列从最初的You Only Look Once发展至今,已经迭代了很多个版本。YOLOv8是Ultralytics公司维护的新一代YOLO版本,它的特点有几个:

  • 代码封装度高,训练、验证、预测、导出模型全部通过极简API完成。
  • 支持检测、分类、分割、姿态估计多种任务,一个库全覆盖。
  • 内置了多种预训练权重,从轻量级的n到高精度的x,可以按算力选择。
  • 工程化程度高,训练日志、可视化、模型导出都做了内置支持。

再来看PyTorch。PyTorch是目前学术界和工业界使用最广泛的深度学习框架之一。它采用动态计算图机制,调试时非常直观。配合torchvision,可以很方便地下载经典数据集、使用预训练模型、做图像增强。大多数论文的开源代码都基于PyTorch,所以学它等于拿到了进入前沿领域的基础能力。

用YOLOv8+PyTorch做花卉识别,核心学习价值在于:你接触到的不是玩具项目,而是一套可以迁移到工业落地的技术栈。比如用YOLOv8训练自定义数据集、做数据增强、调整超参数、导出ONNX并部署,这些能力在后续学习和工作中都能直接复用。

1.3 分类任务和目标检测任务的区别

这里有一个必须搞清楚的概念。很多同学第一次做花卉识别,会纠结“我到底用YOLOv8检测还是分类”。

在YOLOv8里,这两者对应不同的模型:

  • yolov8n-cls.pt:分类模型,输入一张图,输出整个图片最可能的类别。适合“图片里只有一个主体目标”的情况,比如单朵花的照片。
  • yolov8n.pt:检测模型,输入一张图,输出多个边界框,每个框里有类别和置信度。适合“图片里有多个花朵,并且要定位每一朵”的情况。

如果你的数据集中每张图只有一朵花,图片主体就是花朵,那用分类模型就是一个简单高效的方案。如果你的数据集是有多朵花、场景复杂、需要框出每朵花的位置,那就需要检测模型,而且要准备边界框标注数据。

毕设选题时,分类模型工作量小,但技术含量容易被质疑;检测模型需要标注,工作量更大,但展示效果更直观。下面的实战部分,我会以分类任务为主线来做,因为它的数据准备最简单,也更适合入门。

2. 环境准备与版本说明

2.1 确认你的基础环境

在开始之前,先确认你的电脑有Python环境。YOLOv8基于PyTorch,而PyTorch要求Python 3.8以上版本。我用的是Python 3.10,这个版本兼容性比较好,推荐Windows和Linux用户都用3.9或3.10。

你需要准备以下工具:

工具用途
Python 3.9+运行环境
pipPython包管理工具
PyTorch深度学习框架
UltralyticsYOLOv8官方库
OpenCV-Python图像处理依赖
LabelImg(可选)检测任务标注工具

如果你的电脑有NVIDIA独立显卡,建议安装GPU版本的PyTorch,训练速度快非常多。如果没有独立显卡,CPU也可以跑通整个流程,只是训练时间长一些,小数据集一样能做。

这里有个很重要的点:不要blindly安装最新版PyTorch。你先确认显卡驱动支持的CUDA版本,再装对应的PyTorch。可以通过命令行查看:

nvidia-smi

如果显示CUDA Version: 12.1,说明你的驱动支持CUDA 12.1。然后去PyTorch官网选择对应的安装命令。如果你没有独立显卡,或者驱动版本未知,可以先装CPU版本保证流程跑通。

2.2 创建虚拟环境

强烈建议不要在全局Python环境里直接装深度学习库。项目之间的依赖可能会冲突,比如一个项目需要PyTorch 2.0,另一个需要1.13,混在一起非常痛苦。用conda或者Python自带的venv创建独立环境是更规范的做法。

以conda为例:

conda create -n flower_yolo python=3.10 -y conda activate flower_yolo

Windows用户如果没有安装conda,可以用Python自带的venv:

python -m venv flower_yolo_env flower_yolo_env\Scripts\activate

2.3 安装PyTorch和Ultralytics

激活环境后,安装PyTorch。以CUDA 11.8版本为例:

# CPU版本 pip install torch torchvision torchaudio # GPU版本,以CUDA 11.8为例 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

安装完成后,验证PyTorch是否可用:

python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"

如果GPU版本安装成功,torch.cuda.is_available()会返回True。如果是CPU版本,返回False,但也能正常跑。

接着安装Ultralytics和OpenCV:

pip install ultralytics opencv-python

安装完成后,验证YOLOv8是否引入成功:

python -c "from ultralytics import YOLO; print(YOLO.__module__)"

如果正常打印出模块路径,说明环境已经配置完成。

2.4 项目目录规划

为了后续方便管理,我建议你创建如下的目录结构:

flower_project/ ├── data/ │ ├── train/ │ │ ├── daisy/ │ │ ├── dandelion/ │ │ ├── rose/ │ │ ├── sunflower/ │ │ └── tulip/ │ └── val/ │ ├── daisy/ │ ├── dandelion/ │ ├── rose/ │ ├── sunflower/ │ └── tulip/ ├── train.py ├── predict.py └── requirements.txt

data/train和data/val下分别按类别创建子目录,每个子目录里放对应类别的图片。这种格式正是YOLOv8分类模型默认支持的数据格式,不需要额外生成标注文件。

3. 数据集准备与整理

3.1 花卉数据集的获取方式

数据集是深度学习项目里最影响结果的环节。做花卉识别,数据集来源主要有以下几种方式:

第一,使用公开数据集。网上有很多公开的花卉数据集,比如Oxford 102 Flowers、Flowers 5等。这类数据集已经做了类别划分,使用起来方便。但要注意检查数据集的许可协议,确保可以用于学习和论文实验。

第二,自己爬取或拍摄。你可以用手机拍摄身边的花卉,或者使用搜索引擎收集图片。这里要特别注意版权问题:如果用于个人学习和毕业设计,尽量使用免费可商用的图片源,并在论文中注明数据来源。

第三,使用现成的数据增强工具扩充数据。如果某类图片太少,可以用翻转、旋转、裁剪、颜色抖动等方式扩增。

我演示时用了一个五分类的花卉数据集,包含雏菊、蒲公英、玫瑰、向日葵、郁金香这五种常见花朵。你完全可以根据自己的实际情况替换成其他类别,比如牡丹、荷花、桃花等。

3.2 数据集的目录格式规范

YOLOv8分类模型要求的数据格式非常朴素,就是ImageNet风格的目录结构。以我的数据集为例:

data/ ├── train/ │ ├── daisy/ │ │ ├── daisy1.jpg │ │ ├── daisy2.jpg │ │ └── ... │ ├── dandelion/ │ ├── rose/ │ ├── sunflower/ │ └── tulip/ └── val/ ├── daisy/ ├── dandelion/ ├── rose/ ├── sunflower/ └── tulip/

注意两点:

第一,类别目录名就是模型输出的标签名。比如图片放在rose文件夹下,模型就会学习“这张图对应rose”。建议使用英文命名,避免中文路径在后续导出ONNX或部署时出现编码问题。

第二,训练集和验证集要严格分开。不能把同一张图片既放在训练集又放在验证集,否则验证结果会虚高,论文里会被质疑。

3.3 数据不足时的应对策略

很多同学的实际情况是:每一类只有几十张图片。数量少怎么办?最简单的办法是让YOLOv8在训练时自动做数据增强。

Ultralytics库内置了多种增强策略,包括随机翻转、色彩空间变换、马赛克增强等。你可以通过训练参数控制增强强度。另外也可以使用PIL或OpenCV脚本手动扩充:

# 文件路径:flower_project/augment.py import os from PIL import Image, ImageEnhance source_dir = "data/train/rose" target_dir = "data_train_aug/rose" os.makedirs(target_dir, exist_ok=True) for filename in os.listdir(source_dir): path = os.path.join(source_dir, filename) img = Image.open(path).convert("RGB") # 原图 img.save(os.path.join(target_dir, f"origin_{filename}")) # 水平翻转 img.transpose(Image.FLIP_LEFT_RIGHT).save( os.path.join(target_dir, f"flip_{filename}") ) # 提高亮度 bright = ImageEnhance.Brightness(img).enhance(1.3) bright.save(os.path.join(target_dir, f"bright_{filename}")) # 提高饱和度 color = ImageEnhance.Color(img).enhance(1.3) color.save(os.path.join(target_dir, f"color_{filename}"))

这里的问题是,简单复制图片可能让模型过拟合训练集。更稳妥的做法是把增强后的数据和原始数据混合,而不是只使用增强数据。同时要注意验证集不要做增强,保持原始图片分布。

3.4 样本数量的最低要求

在YOLOv8分类任务中,每个类别至少要有20到50张原始图片。如果算上数据增强,每类扩充到100到200张,训练效果会相对稳定。当然,图片数量越多、背景越多样,模型泛化能力越强。

如果你的样本实在太少,比如每类只有10张,建议优先考虑使用预训练模型进行迁移学习,然后冻结骨干网络,只训练最后的分类头。这样即使数据少也能得到一个可用的模型。YOLOv8默认加载的预训练权重已经在大规模数据集上学到了丰富的视觉特征,迁移到花卉分类上只需要少量调整。

4. YOLOv8核心原理拆解

4.1 YOLOv8的整体网络结构

YOLOv8的网络结构可以分成三个部分:Backbone、Neck和Head。

Backbone负责提取图像特征。YOLOv8沿用了CSPDarknet的设计思路,并引入了C2f模块。C2f模块会把特征图分成两部分,一部分直接传递,另一部分经过多个Bottleneck后合并。这种结构既能增强梯度的流动性,又能控制计算量。

Neck负责多尺度特征融合。YOLOv8使用特征金字塔结构,将不同分辨率的特征图融合起来。这样网络既能看到全局信息,又能关注到小目标的细节。对花朵识别任务来说,不同花的大小差异很大,多尺度融合能提升鲁棒性。

Head负责输出最终预测。YOLOv8采用的是Anchor-Free检测头,也就是不再依赖预设的锚框,而是直接预测目标的中心点和宽高。相比早期的Anchor-Based方法,这种设计简化了后处理流程,收敛也更快。

如果做分类任务,YOLOv8会把检测头替换成简单的线性分类层。整个流程变成:Backbone提取特征 -> 池化层压缩特征 -> 全连接层分类。这个架构非常轻量。

4.2 损失函数与训练机制

在分类任务中,YOLOv8使用的是交叉熵损失。它衡量的是预测概率分布和真实标签之间的差距。PyTorch和Ultralytics都内置了这个损失函数,我们不需要自己实现。

检测任务的损失函数更复杂一些,包含分类损失和回归损失两部分。分类损失负责判断目标类别是否正确,回归损失负责调整预测框的位置和大小。YOLOv8引入了DFL损失来细化边界框回归。

训练过程的核心是反向传播。前向传播时,数据通过网络得到预测结果;计算损失后,反向传播算法计算每个参数的梯度;优化器根据梯度更新参数。PyTorch的autograd机制自动完成了梯度计算,这也是PyTorch的最大优势之一。

4.3 训练关键参数解释

使用Ultralytics库训练时,有几个参数非常关键,直接决定训练效果:

参数含义建议值
model选择模型结构yolov8n-cls.pt
data数据集路径指向data目录
epochs训练轮数30~100
imgsz输入图片尺寸224或256
batch批次大小8~64
lr0初始学习率0.01左右
device训练设备0为第一张GPU,cpu为CPU

epochs不是越多越好。训练时间过长,模型会在测试集上表现变差,也就是过拟合。一般先跑50个epoch看趋势,如果验证集准确率不再提升,就可以提前停止。

batch的大小受显存限制。如果你是8GB显存的GPU,用batch=16和imgsz=224通常没问题。如果是CPU训练,建议batch=8并调小imgsz。

4.4 为什么要用预训练权重

预训练权重就是模型在大型数据集上预先训练好的参数。YOLOv8提供的yolov8n-cls.pt已经在ImageNet数据集上完成了训练。ImageNet包含上千万张图片、数千个类别,模型从中学会了通用的边缘、纹理、形状特征。

迁移学习的核心思路是:把大数据集上学到的通用知识迁移到我们的目标任务上。花卉识别虽然类别不同,但底层特征高度相关——都是自然图像,都包含花瓣、叶子、茎干等结构。所以我们不需要从零开始训练,只需要在预训练权重基础上微调。

用迁移学习有三个好处:

  • 训练更快,因为模型已经具备基础特征提取能力。
  • 需要的数据更少,小数据集也能有不错的效果。
  • 准确率通常更高,因为初始特征质量好。

5. 完整实战案例

5.1 创建项目结构和环境文件

首先创建项目目录。进入flower_project目录后,创建requirements.txt,写入需要固定的核心依赖:

torch>=1.13.0 torchvision>=0.14.0 ultralytics>=8.0.0 opencv-python>=4.7.0

然后安装依赖:

pip install -r requirements.txt

5.2 整理数据集

在data目录下准备好训练集和验证集。目录结构参考3.2节。这里特别提醒:验证集图片尽量从不同场景、不同角度、不同时间采集,和训练集保持分布一致性。

训练时,YOLOv8会自动从你的data目录识别类别。也就是说,data/train下的子目录数量就是类别数,子目录名称就是类别标签。创建好目录后,可以通过下面命令快速确认数量:

# 查看训练集每个类别的图片数量 find data/train -type f -name "*.jpg" | awk -F'/' '{print $3}' | sort | uniq -c

5.3 编写训练代码

在项目根目录下创建train.py:

# 文件路径:flower_project/train.py from ultralytics import YOLO if __name__ == "__main__": # 加载预训练分类模型 model = YOLO("yolov8n-cls.pt") # 开始训练 model.train( data="data", # 数据集根目录 epochs=50, # 训练轮数 imgsz=224, # 输入图片尺寸 batch=16, # 批次大小 device="0", # 使用GPU 0,CPU则改为"cpu" project="runs", # 结果保存目录 name="flower_cls", # 实验名称 lr0=0.01, # 初始学习率 patience=10, # 早停耐心值 seed=42, # 随机种子,保证可复现 )

这段代码里,YOLO("yolov8n-cls.pt")会先去下载预训练权重文件。如果你的网络环境下载慢,可以手动下载权重文件放到当前目录。model.train()里的参数就是训练的核心配置。

如果你使用的是CPU进行训练,把device改成"cpu"。同时建议把epochs调低一点,先用5轮测试流程是否通,再跑完整的50轮。

5.4 运行训练

打开命令行,激活虚拟环境,进入项目目录,执行:

python train.py

训练开始时,终端会打印模型结构、参数量、数据集类别信息。如果一切正常,你会看到类似下面的输出:

Ultralytics YOLOv8.0.x 🚀 Python-3.10.0 torch-2.0.0 CUDA:0 (NVIDIA GeForce GTX 1660Ti, 6144MiB) Class Images Instances all 50 50 daisy 10 10 dandelion 10 10 rose 10 10 sunflower 10 10 tulip 10 10

然后进入训练进度条界面,每个epoch会显示训练损失、验证准确率等信息。训练完成后,模型文件会保存在runs/flower_cls/weights/目录下。

5.5 编写预测代码

训练完成后,用训练好的模型进行单张图片预测。创建predict.py:

# 文件路径:flower_project/predict.py from ultralytics import YOLO if __name__ == "__main__": # 加载训练好的模型权重 model = YOLO("runs/flower_cls/weights/best.pt") # 预测单张图片 results = model.predict( source="test_images/rose1.jpg", # 图片路径 save=True, # 保存结果图片 project="runs", # 保存目录 name="predict", # 保存子目录 ) # 打印预测结果 for result in results: print(result.probs) # 每个类别的概率

这里source可以传入一张图片路径、一个视频文件路径,也可以传一个图片文件夹路径。save=True会让YOLOv8自动生成带预测标签的结果图。

5.6 验证模型在验证集上的准确率

除了训练过程中的日志外,还需要单独评估模型在验证集上的表现。YOLOv8的val()方法提供了这个功能:

# 文件路径:flower_project/val.py from ultralytics import YOLO model = YOLO("runs/flower_cls/weights/best.pt") metrics = model.val(data="data", split="val") print(f"Top-1 Accuracy: {metrics.top1:.4f}") print(f"Top-5 Accuracy: {metrics.top5:.4f}")

Top-1准确率表示模型预测的最可能类别正确;Top-5准确率表示真实类别在模型预测的前五个类别中。对于五分类问题,Top-1是更重要的指标。

5.7 结果说明与可视化

训练完成后,runs/flower_cls/目录下会生成多个文件:

  • weights/best.pt:验证集上表现最好的模型。
  • weights/last.pt:最后一个epoch的模型。
  • results.png:损失曲线和准确率曲线。
  • confusion_matrix.png:混淆矩阵。
  • args.yaml:本次训练的所有超参数配置。

建议打开results.png观察训练过程。正常情况下,训练损失和验证损失都应该呈下降趋势,验证准确率逐步上升。如果验证损失先降后升,说明模型过拟合,需要增加数据增强、减少epochs或降低模型复杂度。

5.8 完整测试流程演示

假设现在有一张新的向日葵图片test_images/sunflower_test.jpg,执行:

python predict.py

输出结果会展示每个类别的概率。比如:

tensor([0.0210, 0.0130, 0.0150, 0.9500, 0.0010])

这个输出顺序对应训练时data/train下的类别目录顺序:daisy,dandelion,rose,sunflower,tulip。所以第四个概率0.95表示模型认为这张图有95%的可能是向日葵。

需要注意的是,这个顺序是由数据集目录结构决定的。你可以通过打印model.names来查看:

print(model.names)

输出类似:

{0: 'daisy', 1: 'dandelion', 2: 'rose', 3: 'sunflower', 4: 'tulip'}

6. 常见问题与排查思路

6.1 torch.cuda.is_available()返回False

问题现象常见原因解决思路
torch.cuda.is_available()返回FalsePyTorch安装成了CPU版本卸载后重新安装GPU版本
GPU驱动版本过低更新NVIDIA显卡驱动
CUDA和PyTorch版本不匹配使用nvidia-smi查看CUDA版本后重新安装

6.2 训练时内存不足OOM

问题现象常见原因解决思路
训练报CUDA Out Of Memorybatch设置太大调低batch,比如从16降到8或4
imgsz设置太大将imgsz从224改到192
多个进程占用显存关闭其他占用显存的程序,或更换GPU

6.3 训练时download权重文件失败

问题现象常见原因解决思路
下载yolov8n-cls.pt超时网络原因手动下载后放到当前目录
下载报SSL错误部分网络环境限制配置代理或直接下载离线包

手动下载权重时,只需要把文件放到代码运行的同级目录下即可。下次运行YOLO("yolov8n-cls.pt")时,Ultralytics会优先读取本地文件。

6.4 数据集类别顺序混乱

问题现象常见原因解决思路
预测结果和实际类别对不上训练集和预测时类别目录顺序不一致打印model.names确认
数据目录下多了无关文件夹检查data/train下只有类别子目录

解决方法是统一数据目录结构,预测时也可以通过model.names映射到实际标签名。

6.5 训练准确率高但验证准确率很低

问题现象常见原因解决思路
训练集准确率接近100%,验证集只有60%过拟合增加数据增强、增加训练数据、减少epochs
验证集和训练集分布差异大重新划分数据集,保证来源一致

这种情况在深度学习项目里很常见。对策是增加Dropout、使用更强的数据增强、提前停止训练,或者换用更大的预训练模型再迁移学习。

7. 最佳实践与工程建议

7.1 数据集管理

数据集是毕设的核心资产,建议遵循以下规范:

  • 所有图片统一格式,建议JPG或PNG。
  • 统一图片命名规则,比如class_序号.jpg。
  • 划分训练/验证集时记录划分规则,论文中说明清楚。
  • 保留数据集原始来源信息,包括拍摄设备、采集时间、图片数量等。

对毕设来说,数据的可靠性甚至比模型结构更重要。答辩时评审老师很可能会问“你的数据集是怎么来的”“有多少张”“怎么划分的”,这些都要能清楚回答。

7.2 训练过程中的实验管理

深度学习实验很多,时间长了会分不清哪个模型用了什么参数。YOLOv8已经把每次实验结果单独保存到runs/flower_cls这样的目录下,但你自己还是要养成记录的习惯。

推荐记录以下信息:

  • 训练日期和数据集版本。
  • 模型结构(n、s、m、l、x)。
  • 超参数:epochs、batch、imgsz、lr0、优化器。
  • 验证集准确率。
  • 存在的问题和下一步计划。

这些内容是论文实验章节的重要素材,也是一个工程师的基本职业习惯。

7.3 模型导出与部署思路

如果你的毕设需要做手机App或网页演示,就需要把训练好的模型导出为其他格式。YOLOv8提供了一行代码导出功能:

from ultralytics import YOLO model = YOLO("runs/flower_cls/weights/best.pt") model.export(format="onnx")

导出ONNX后,你可以用ONNX Runtime在CPU上推理,也可以用TensorRT做GPU加速。如果想要在手机上部署,可以继续导出为NCNN或者TFLite格式。具体部署方案需要根据目标平台调整,但底层的模型训练流程是完全一致的。

7.4 毕设论文中如何写这个项目

基于YOLOv8的毕设,核心亮点要放在“你如何设计实验、优化结果、解决实际问题”上。论文中可以重点写:

  • 数据集的采集与清洗过程。
  • 迁移学习策略的选型依据。
  • 数据增强对模型鲁棒性的提升效果。
  • 不同模型结构、不同超参数的对比实验。
  • 模型在真实场景中的测试结果与分析。

不要只写“用了YOLOv8,准确率很高”,要展现你对整个训练链路有独立的思考。

7.5 安全与合规提示

使用公开数据集时,检查数据集的许可协议;使用网络爬取的图片时,注意版权风险,尽量选择免费可商用的图源。涉及个人身份的图片内容不要用于实验。在毕设论文中如实标注数据来源和版权信息,这是学术诚信的基本要求。

8. 总结与后续学习路线

这篇文章从概念到实战完整走了一遍基于YOLOv8+PyTorch的花卉图像识别流程。核心内容可以浓缩成四条:YOLOv8是什么、为什么能用来做分类、如何准备符合格式的数据集、怎么编写训练和预测代码并解决常见报错。

读完并跑通示例之后,下一步可以从这几个方向继续深入:

  • 把分类模型升级为检测模型,用标注框同时完成花朵定位和识别。
  • 尝试YOLOv8的不同规模结构(n、s、m、l、x),对比精度和速度的取舍。
  • 学习模型部署,将训练好的权重导出ONNX并集成到Web服务。
  • 研究数据增强策略,解决真实场景下光照、遮挡、复杂背景的干扰。

如果你正在准备毕业设计,建议先用自己的数据把流程跑通,再逐步增加对比实验和优化策略。所有代码都在你自己的环境下亲手运行过一遍,才能在答辩时对每个细节心中有数。把你采集好的花卉图片整理进data目录,设置好参数,跑第一个模型吧。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询