一、关于yolov5的10个问题

1. YOLOv5 的核心架构由哪几个主要部分组成?

YOLOv5 的架构就像一个 “流水线工厂”,主要由 4 个部分 组成:

  1. 输入端 (Input)
    1)作用:接收原始图片,并进行预处理(比如调整图片大小、归一化像素值)。
    2)类比:就像工厂的 “原材料入口”,先把食材(图片)洗干净、切好,方便后续加工。

  2. 骨干网络 (Backbone)
    1)作用:负责提取图片中的关键特征(比如边缘、纹理、形状)。
    2)类比:这是工厂的 “核心加工车间”,使用 CSPDarknet53 结构,像人的眼睛一样,把图片里的重要信息(比如 “这是一个圆形”、“这有四条腿”)都提取出来。

  3. 颈部网络 (Neck)
    1)作用:融合不同尺度的特征信息。
    2)类比:这是 “信息整合车间”,使用 FPN(特征金字塔)+ PAN(路径聚合)结构。它把刚才提取的 “大特征”(比如大象的身体)和 “小特征”(比如蚂蚁的触须)混合在一起,让模型既能看到大目标,也能看到小目标。

  4. 检测头 (Head)
    1)作用:输出最终的检测结果(物体在哪里、是什么物体、置信度有多高)。
    2)类比:这是 “最终质检和包装车间”,它把整合好的信息拿过来,在图上画框框(边界框),并贴上标签(比如 “猫”、“狗”)。


2. YOLOv5 是如何进行目标检测的,它的检测流程是怎样的?

YOLOv5 的检测流程非常快,是 “一眼看全图” 的模式,具体步骤如下:

  1. 图片输入与缩放:不管你输入的图片是大是小,YOLOv5 会先把它缩放到一个固定尺寸(比如 640x640 像素)。

  2. 网格划分 (Grid)
    1)YOLOv5 会把这张图片在逻辑上划分成 S x S 个小格子(比如 20x20)。
    2)关键点:如果一个物体的中心落在了某个格子里,就由这个格子负责预测这个物体。

  3. 特征提取与融合:图片经过 Backbone 和 Neck,提取并融合特征。

  4. 预测 (Head)

    • 每个格子会预测几个 “候选框”(锚框),并对每个框预测三件事:
      1)边界框 (Bounding Box):框的位置(x, y, w, h)。
      2)置信度 (Confidence):这个框里 “有物体” 的概率。
      3)类别概率 (Class Probability):如果有物体,它是 “猫” 还是 “狗” 的概率。

  5. 非极大值抑制 (NMS)
    这是最后一步 “去重”。因为可能有好几个格子都框住了同一个物体,NMS 会把重复的框去掉,只保留最准的那一个。

总结:YOLOv5 把图片分成格子,每个格子负责预测自己区域内的东西,最后筛选出最优结果。


3. 在 YOLOv5 中,如何准备自己的数据集进行训练?

要让 YOLOv5 认识你想检测的东西(比如 “外卖餐盒”),你需要教它,这就是 “数据集”。步骤如下:

  1. 第一步:收集图片 (Data Collection)
    你需要拍很多张包含目标的照片(比如 1000 张不同角度、不同光线的外卖餐盒)。

  2. 第二步:标注图片 (Labeling) —— 最累但最重要的一步
    1)你需要使用标注工具(比如 LabelImgLabelmeCVAT)。
    2)操作:打开图片,用鼠标在你的目标(餐盒)上画一个矩形框,然后给它起个名字(类别名,比如 "food_box")。
    3)输出:标注完成后,每张图片会生成一个对应的 .txt 文件,里面记录了框的坐标和类别。

  3. 第三步:数据集划分 (Split)

    • 把你的图片和标注文件分成三个文件夹:
      1)train (训练集):约 70% 的图片,用来让模型学习。
      2)val (验证集):约 20% 的图片,用来在训练过程中检查模型学得怎么样。
      3)test (测试集):约 10% 的图片,用来最后考试,看模型到底行不行。

  4. 第四步:配置文件 (Config)

    • 你需要写一个 .yaml 文件,告诉 YOLOv5:
      1)你的图片文件夹在哪里。
      2)你要检测的物体有几个类别(nc: 1)。
      3)类别名字叫什么(names: ['food_box'])。

准备好这些,就可以开始训练了!


4. 怎样调整 YOLOv5 的超参数来优化检测效果?

“超参数” 就是你在训练前需要手动设置的 “旋钮”,用来控制模型的学习过程。最关键的几个旋钮如下:

  1. 学习率 (Learning Rate, lr)
    (1)作用:控制模型学习的 “步子大小”。
    (2)调整

    • 技巧:YOLOv5 有自动学习率衰减(Cosine LR),通常默认的就不错,如果你觉得训练不动,可以稍微调大一点点初始 lr。

    • 太小会导致模型 “学太慢”,像蜗牛爬,很久都学不会。

    • 太大会导致模型 “学疯了”,来回震荡,不收敛。

  2. 批次大小 (Batch Size)
    (1)作用:控制模型一次看几张图片。
    (2)调整

    • 技巧:在显存不爆的前提下,尽量设大一点(比如 16 或 32)。

    • 越大,训练越稳定,但也越吃显存(GPU 内存)。

  3. 迭代次数 (Epochs)
    1)作用:模型把整个数据集完整看多少遍。
    2)调整:通常设 100-300 轮。如果看到验证集损失(val loss)不再下降了,就可以提前停止。

  4. 输入图片尺寸 (Img Size)
    1)作用:图片分辨率。
    2)调整

    • 设得小(如 320):速度飞快,但可能看不清小东西。

    • 设得大(如 1280):小目标检测更准,但速度变慢。

  5. 数据增强 (Augmentation)
    YOLOv5 自带很强的数据增强(Mosaic、MixUp)。如果你的数据集很少,千万不要关掉它们;如果你的数据很多且模型过拟合了,可以适当调低增强的概率。


5. YOLOv5 中的损失函数是如何计算的,有什么作用?

损失函数 (Loss Function) 就是模型的 “考试成绩单”。

模型每预测一次,我们就计算一下 “它预测的框和真实的框差了多少”,这个差值就是 Loss。Loss 越小,说明模型考得越好。

YOLOv5 的 Loss 由 3 部分 组成:

  1. 边框位置损失 (Box Loss)
    1)计算:使用 GIoU(Generalized Intersection over Union)。
    2)作用:衡量 “模型画的框” 和 “人工标注的真实框” 离得有多远,重叠得够不够多。

  2. 置信度损失 (Objectness Loss)
    1)计算:二元交叉熵。
    2)作用:衡量模型 “有没有把握”。如果这个格子里有物体,置信度要接近 1;如果没物体,置信度要接近 0。

  3. 分类损失 (Class Loss)
    1)计算:二元交叉熵。
    2)作用:衡量模型 “认不认得”。如果框里是猫,模型预测 “猫” 的概率要最高。

总损失 = 边框损失 + 置信度损失 + 分类损失

模型通过反向传播,根据这个总损失来调整内部的参数,一点点变得更聪明。


6. 如何评估 YOLOv5 模型的性能,有哪些常用的评估指标?

训练完了,怎么知道模型好不好用?我们需要用以下几个指标来打分:

  1. 精确率 (Precision)
    1)含义:“查准率”。
    2)解释:模型说 “我找到 100 个餐盒”,其中真的有多少个是餐盒?
    3)场景:如果你不想误报(比如把一个纸团当成餐盒),就要看这个指标。

  2. 召回率 (Recall)
    1)含义:“查全率”。
    2)解释:图片里实际上有 100 个餐盒,模型找到了多少个?
    3)场景:如果你不想漏检(比如必须把所有餐盒都找出来),就要看这个指标。

  3. AP (Average Precision)
    1)含义:平均精度。
    2)解释:它是 Precision 和 Recall 综合起来的一个分数。

  4. mAP (mean Average Precision)
    1)含义:各类别 AP 的平均值。
    2)解释:如果你检测 20 个类别的物体,mAP 就是这 20 个类别的平均分。
    3)行业标准:通常说的 mAP@0.5,意思是当 IoU(交并比)大于 0.5 时就算检测正确。这是最常用的评估指标。


7. 怎样在 YOLOv5 中处理小目标检测的问题?

小目标(比如远处的一只鸟,或者图片里的一个螺丝)一直是检测难题,因为它们像素少,特征不明显。YOLOv5 可以通过以下方法优化:

  1. 提高输入分辨率 (--img-size)
    把 640 改成 1280 或更高。图片变大了,小目标在图上也就变大了,特征更清楚。

  2. 多尺度训练 (Multi-scale Training)
    YOLOv5 默认开启了这个功能。它会在训练时随机改变图片大小,强迫模型学习如何看清不同大小的物体。

  3. 调整锚框 (Anchors)
    YOLOv5 会根据你的数据集自动聚类生成锚框。如果你的目标特别小,可以手动把默认的锚框尺寸改小一点,或者重新运行聚类命令。

  4. 使用更多的检测层 (P3, P4, P5)
    1)YOLOv5 的 Head 输出 3 个不同尺度的特征图。
    2)P2 层(如果有的话):专门用来检测最小的目标(浅层特征,分辨率高)。
    3)你可以修改配置文件,让模型输出更小的特征层。

  5. 数据增强 (Tiling)
    把一张大图切成好几张小图来训练和推理,这样小目标在小图里就变成了 “大目标”。

  6. 关注损失函数
    有时候小目标在总 Loss 里占比太小,模型不重视。可以适当增加小目标 Loss 的权重。


8. YOLOv5 中的多尺度训练是如何实现的,有什么好处?

实现原理:在 YOLOv5 训练过程中,并不是每一轮都用同样大小的图片。

  • 它会设定一个范围(比如 320 到 640)。

  • 每隔一定的迭代次数(比如 10 个 batch),它就会随机在这个范围内选一个新的尺寸(比如 416、512),把图片 resize 成这个尺寸再喂给模型。

好处

  1. 鲁棒性强:模型不会只认 “特定大小” 的物体。比如它既认得镜头前的大狗,也认得远处的小狗。

  2. 泛化能力好:在实际应用中,用户拍的照片有远有近,多尺度训练能让模型适应各种真实场景。


9. 如何将训练好的 YOLOv5 模型部署到实际应用场景中?

训练好的模型是一个 .pt 文件(PyTorch 格式),要把它放到手机、摄像头或服务器上跑,需要以下几步:

  1. 第一步:模型导出 (Export)
    (1)你需要把 .pt 转换成不同格式,以适应不同的设备:

    • OpenVINO:英特尔 CPU 专用。

    • NCNN / MNN:手机端(安卓 /iOS)专用,轻量级。

    • TensorRT:英伟达 GPU 专用,速度最快(用于服务器)。

    • ONNX:通用格式,大多数平台都支持。

  2. 第二步:选择部署平台
    1)云端 / 服务器:如果是视频监控分析,建议用 TensorRT 加速,通过 Python 或 C++ 调用。
    2)边缘设备 (树莓派 / Jetson Nano):如果是放在外卖柜上,建议用 ONNX Runtime 或 TensorRT Lite。
    3)手机 APP:如果是做手机扫码,导出成 NCNN 或 TFLite,集成到 Android/iOS 代码里。

  3. 第三步:编写推理代码
    写一段简单的代码:读取摄像头画面 -> 喂给模型 -> 拿到框框 -> 画在屏幕上显示。


10. YOLOv5 相比之前的 YOLO 版本有哪些改进之处?

YOLOv5 并不是官方 YOLOv4 的直系后代(它是 Ultralytics 公司用 PyTorch 重写的),但它非常受欢迎,因为它做了以下关键改进:

  1. 工程化极强,极易上手
    1)YOLOv3/v4:用 Darknet 框架写的,配置复杂,编译麻烦,新手很容易劝退。
    2)YOLOv5:用 PyTorch 写的,代码结构清晰,pip install 就能用,文档友好。

  2. 灵活的模型缩放 (Scalability)
    1)YOLOv5 提供了 s, m, l, x 四个版本(小、中、大、超大)。
    2)你要速度快,就用 YOLOv5s;你要精度高,就用 YOLOv5x。不用改网络结构,直接换配置文件就行。

  3. 强大的数据增强 (Data Augmentation):引入了 Mosaic(四张图拼在一起)和 MixUp(两张图混合)增强,极大地丰富了数据集,即使你图片少也能训得不错。

  4. 更优秀的 Backbone 和 Neck
    1)使用了 CSP (Cross Stage Partial) 结构,让特征提取更高效,计算量更小。
    2)使用了 PANet 加强特征融合,比 YOLOv3 的 FPN 更能打。

  5. 自动锚框聚类 (Auto Anchors):你只要把数据集准备好,YOLOv5 会自动分析你的目标大小,帮你生成最合适的锚框,非常贴心。

总结:YOLOv5 不是在理论上有惊天动地的突破,而是在工程化体验上做到了极致,让 “目标检测” 从一个博士课题变成了普通人也能玩的工具。
 

二、YOLOv5 训练结果图全解析
 


图 1:混淆矩阵(Confusion Matrix)

对应问题:问题 6(模型性能评估 & 常用指标)、问题 2(检测结果判断)

这张图是模型在验证集上的「对错统计表」,是评估分类准确性的核心工具,和你之前学的精确率、召回率直接相关。

  1. 坐标轴规则
    1)横轴True:人工标注的真实类别(标准答案)
    2)纵轴Predicted:模型预测的类别(模型的答案)
    3)最右侧 / 最下侧的background:代表「背景」,对应漏检(把目标当成背景)和误检(把背景当成目标)
    4)颜色越深、数值越接近 1,代表该情况的占比越高

  2. 核心解读
    1)对角线的数值:模型预测正确的比例。比如pw类对角线数值 1.00,代表所有真实是 pw 的目标,模型 100% 预测正确;stactr类也接近 1,表现极佳。
    2)非对角线的数值:模型认错 / 漏检的情况。比如right类,真实是 right 的目标,模型仅 40% 预测正确,42% 认错成了 left,还有 20% 漏检成了背景,说明leftright是模型最容易混淆的短板类别。

  3. 知识点关联:这张图直接帮你定位模型的缺陷,对应问题 3 的数据集优化(补充混淆类别的样本)、问题 4 的超参数调整(给短板类别增加损失权重)。

     


图 2:F1-Confidence Curve(F1 分数 - 置信度曲线)

对应问题:问题 6(评估指标)、问题 2(检测流程的置信度 & NMS 环节)、问题 4(推理超参数优化)、问题 9(模型部署)

F1 分数是精确率和召回率的调和平均数,是综合衡量模型「准不准」和「全不全」的核心指标,越接近 1 越好。

  1. 坐标轴规则
    1)横轴Confidence:置信度阈值(模型预测时,「我有多确定这个框里有目标」的最低标准,对应问题 2 里的置信度预测、问题 5 里的置信度损失)
    2)纵轴F1:对应阈值下的 F1 分数
    3)彩色细线:每个类别的单独曲线,最粗的蓝色线:所有类别的平均表现

  2. 核心解读:蓝色线标注all classes 0.91 at 0.490,意思是当你把推理时的置信度阈值设为 0.49 时,模型的综合 F1 分数最高,能达到 0.91,这是你部署模型时的最优通用阈值。同时能看到leftright的 F1 峰值远低于其他类别,和混淆矩阵的结论完全一致,再次印证这两个类是模型短板。

  3. 知识点关联:这张图直接决定你部署模型时的核心参数,对应问题 9 的落地应用;同时能帮你定位表现差的类别,反向优化数据集和训练超参数。


图 3:数据集统计分析图(labels.jpg)

对应问题:问题 3(自定义数据集准备)、问题 7(小目标检测优化)、问题 8(多尺度训练)、问题 10(YOLOv5 自动锚框改进)

这是你训练前数据集的「全貌体检报告」,是决定模型上限的核心,完全对应数据集准备的全流程知识点。

  1. 四个子图拆解
    1)左上角:类别样本数量柱状图。横轴是你的 11 个检测类别,纵轴是标注的样本数量。能看到st类样本最多(近 700 个),redgree类样本最少(仅 200 个左右),存在明显的样本不均衡问题。
    2)右上角:标注框形状分布。所有标注框叠加展示,能看到你的目标全是「高瘦的竖长方形」,宽极窄、高很长,是典型的长条状目标。
    3)左下角:目标中心点位置分布。x/y 是归一化的图片宽高,能看到目标中心点在整张图里分布均匀,没有集中在某个区域,数据集位置分布很健康。
    4)右下角:目标宽高分布。能看到目标宽度集中在 0.05-0.2 之间,高度集中在 0.2-0.5 之间,属于窄长型小目标

  2. 知识点关联
    1)样本不均衡对应问题 3 的数据集优化,需要给少样本类别补充数据;
    2)目标的宽高形状对应问题 10 里 YOLOv5 的自动锚框聚类改进,模型会根据这个形状生成适配的锚框;
    3)小目标属性对应问题 7 的小目标检测优化、问题 8 的多尺度训练(多尺度训练能帮模型更好适配小尺寸目标)。


图 4:数据集标注相关系数图(labels_correlogram.jpg)

对应问题:问题 3(自定义数据集准备 & 质量把控)

这是数据集标注的「深度质检图」,用来分析标注数据的分布合理性,排查标注错误。

  1. 核心规则:这是相关系数矩阵的可视化,四个变量分别是x(目标中心点 x 坐标)、y(目标中心点 y 坐标)、width(目标宽度)、height(目标高度)。
    1)对角线:每个变量的分布直方图,和上一张图的结论一致,x/y 分布均匀,宽高集中在窄长区间;
    2)非对角线:两个变量的相关性散点图,比如widthheight的散点图,能看到宽高呈明显正相关,符合长条目标的特点;x/y 和宽高无明显相关性,说明目标位置和大小无关,数据集分布健康,无明显标注错误。

  2. 知识点关联:这张图是问题 3 里数据集准备的最后一步质检,帮你排查异常标注、分布偏差,确保数据集质量,避免模型学错特征。


图 5:Precision-Confidence Curve(精确率 - 置信度曲线)

对应问题:问题 6(评估指标)、问题 9(模型部署)

精确率就是你之前学的「查准率」:模型说 “这是目标” 的结果里,到底有多少是真的目标,核心是不误检

  1. 核心解读:横轴是置信度阈值,纵轴是精确率。蓝色线标注all classes 1.00 at 0.877,意思是当置信度阈值设为 0.877 时,模型的整体精确率能达到 100%—— 这个阈值下,模型预测的所有目标全是对的,零误检。同时能看到right类的精确率曲线掉得极快,置信度到 0.6 时就跌到 0.2,说明这个类极易出现误检,和之前的结论一致。

  2. 知识点关联:这张图直接服务于落地部署:如果你的应用场景不能接受误检(比如工业质检、交通标志识别),就把置信度阈值设高,牺牲少量召回率,保证零误检。


图 6:Precision-Recall Curve(PR 曲线,精确率 - 召回率曲线)

对应问题:问题 6(模型性能评估核心指标)、问题 4(超参数优化)

这是 YOLOv5最核心的性能评估图,你之前学的 AP、mAP 指标,就是从这张图里计算出来的。

  1. 核心规则
    1)横轴Recall:召回率(查全率),所有真实目标里,模型找到了多少,核心是不漏检
    2)纵轴Precision:精确率(查准率);
    3)曲线越贴紧右上角,代表模型越好;曲线围起来的面积,就是该类别的AP 值;所有类别 AP 的平均值,就是mAP@0.5

  2. 核心解读:蓝色线标注all classes 0.932 mAP@0.5,说明你的模型整体 mAP@0.5 达到 0.932,属于非常优秀的水平。单类别表现:st(0.995)、pw(0.994)、ac(0.994) 表现接近完美;right类 AP 仅 0.532,是绝对的短板,PR 曲线几乎平直,说明召回率提升时,精确率直接暴跌,模型对这个类的特征学习严重不足。

  3. 知识点关联:mAP 是 YOLO 系列最核心的评估指标,对应问题 6 的知识点;同时这张图能帮你定位短板类别,反向优化数据集和训练超参数,对应问题 3、问题 4 的知识点。


图 7:Recall-Confidence Curve(召回率 - 置信度曲线)

对应问题:问题 6(评估指标)、问题 9(模型部署)

召回率就是你之前学的「查全率」:所有真实的目标里,模型能找到多少,核心是不漏检

  1. 核心解读:横轴是置信度阈值,纵轴是召回率。标注all classes 1.00 at 0.000,意思是当置信度阈值设为 0 时,模型召回率能达到 100%—— 所有目标都能被找到,但此时误检会非常多,模型会把所有疑似目标都报出来。随着置信度升高,召回率持续下降,因为模型会越来越 “谨慎”,只报自己非常确定的目标。同样,leftright的召回率掉得最快,表现最差。

  2. 知识点关联:这张图服务于特殊场景的部署:如果你的场景不能接受漏检(比如安防监控、违禁品检测),就把置信度阈值设低,牺牲少量精确率,保证高召回率。


图 8:训练过程损失 & 指标曲线(results.png)

对应问题:问题 4(超参数调整优化)、问题 5(损失函数计算)、问题 6(性能评估)

这是整个训练过程的完整日志图,能完整看到模型从 0 到收敛的全过程,判断模型是否训好、有没有过拟合、超参数是否合理。整张图分为两大模块,和你之前学的知识点完全对应:

第一部分:损失函数曲线(左侧 6 个图,对应问题 5)

YOLOv5 的损失函数分为 3 部分,和你之前学的完全一致,每个损失都有训练集(train)和验证集(val)的曲线:

  1. box_loss(边框位置损失):衡量模型画的框和真实框的重合度,曲线持续下降并平稳,说明模型不断学会把框画准;

  2. obj_loss(置信度损失):衡量模型判断 “框里有没有目标” 的能力,曲线持续下降收敛,说明模型学会了区分目标和背景;

  3. cls_loss(分类损失):衡量模型区分类别的能力,曲线持续下降收敛,说明模型学会了识别不同的目标。

关键结论:训练集和验证集的损失曲线同步下降,最终平稳,没有出现「训练集损失一直降,验证集损失先降后升」的情况,说明模型没有过拟合,训练过程非常健康,学习率、训练轮数、批次大小等超参数设置合理,对应问题 4 的超参数优化知识点。

第二部分:性能指标曲线(右侧 4 个图,对应问题 6)

  1. precision/recall:精确率、召回率,随训练轮数持续上升,最终分别稳定在 0.85+、0.9+;

  2. mAP_0.5:核心评估指标,最终稳定在 0.93 左右,和 PR 曲线的结果完全一致;

  3. mAP_0.5:0.95:更严格的评估指标(IoU 阈值从 0.5 到 0.95 取平均),最终稳定在 0.7 左右,对于窄长型小目标来说,这个成绩非常优秀。


图 9:验证集检测效果图(test_batch0_pred.jpg)

对应问题:问题 2(YOLOv5 目标检测流程)、问题 7(小目标检测)、问题 9(模型部署)

这是模型在验证集上的实际检测效果可视化,是最直观的结果展示,完美对应 YOLOv5 的完整检测流程。

  1. 核心解读:每张图里的框就是模型的预测结果,框上的文字是「类别 置信度」,比如st 0.9,就是模型预测这个目标是 st 类,置信度 90%。
    1)优秀表现:大部分目标都被准确框出,stslpw等类别的置信度都在 0.9 左右,远处的小目标也能被准确识别,对应问题 7 的小目标检测,你的模型小目标检测能力合格;
    2)现存问题:能看到leftright互相混淆、小目标重复检测、少量背景误检,和之前所有图的短板结论完全一致。

  2. 知识点关联:这张图完整还原了问题 2 里的检测流程:图片输入→特征提取→预测框输出→NMS 去重→最终结果展示;同时能帮你找到具体的错误案例,反向优化数据集,为后续问题 9 的模型落地部署做准备。
     


整体总结 & 优化建议

  1. 模型整体表现:你的 YOLOv5 模型训练非常健康,整体 mAP@0.5 达到 0.932,属于优秀水平,超参数设置合理,无过拟合问题,大部分类别检测效果极佳。

  2. 核心短板leftright两个类别是模型的最大缺陷,极易混淆、误检、漏检,其次是样本量较少的redgree类。

  3. 优化方向(对应之前的 10 个问题)
    1)对应问题 3:补充leftright类的样本,增加不同角度、光线、背景的标注数据,缓解样本不均衡;
    2)对应问题 4:给leftright类增加分类损失的权重,让模型更关注这两个类的学习;
    3)对应问题 7:针对窄长小目标,适当提高训练输入分辨率,开启更适配的多尺度训练;
    4)对应问题 9:通用场景部署用 0.49 的置信度阈值,零误检场景用 0.877 的阈值,零漏检场景用更低的阈值。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐