YOLO目标检测实战入门:从零搭建环境到训练自定义模型
如果你刚接触目标检测或者尝试过一些教程但总卡在环境配置、数据准备、训练报错这些环节那么这篇文章就是为你准备的。很多教程默认你已经熟悉了深度学习的基础设施但现实是大部分开发者尤其是学生和刚转行的工程师往往在第一步就倒下了。你可能会遇到CUDA out of memory、No module named ultralytics、或者对着几百张图片不知道如何标注的困境。这篇文章不会假设你已经是一个深度学习专家。相反我们会从一个最实际的问题切入如何用最少的时间、最少的配置跑通一个属于自己的 YOLO 目标检测模型并理解每一步在做什么我们不会从 YOLOv1 的论文公式讲起而是直接从当前最流行、生态最完善的 Ultralytics YOLO特别是 YOLOv8/YOLO26入手因为对于绝大多数应用和初学者来说这才是最高效的起点。我们的核心判断是学习 YOLO 的最佳路径不是按历史版本顺序而是先掌握一个现代、活跃的框架如 Ultralytics跑通“安装-推理-训练-部署”的完整闭环建立直观感受和信心然后再去探究其背后的算法演进和原理细节。本文将严格遵循这条路径提供一份可复现的保姆级指南。你将学到的不只是几行命令而是包括环境避坑、数据准备、模型选择、训练调参和简单部署在内的完整工作流。读完本文你应该能够独立完成一个自定义目标检测任务。1. 这篇文章真正要解决的问题很多关于 YOLO 的教程存在一个明显的断层要么过于学术大谈特谈损失函数和网络结构但对如何运行第一行代码语焉不详要么过于“傻瓜”只给一个pip install ultralytics命令一旦你的环境稍有不同比如 Python 版本、CUDA 版本、操作系统就会陷入无尽的报错深渊。这篇文章要解决的核心问题是为初学者和急于上手的开发者提供一个从零开始、环境清晰、步骤完整、可一次性跑通的 YOLO 实战入门指南。我们聚焦于解决以下几个具体痛点环境配置的“玄学”问题为什么别人的代码能跑我的就报错我们将提供一个纯净、可复现的环境搭建方案并解释关键依赖如 PyTorch、CUDA的选择逻辑。“我该用哪个版本”的困惑YOLOv5, v8, v10, YOLO26… 版本眼花缭乱。本文将帮你理清 Ultralytics YOLO 的版本关系并给出当前2026年的版本选择建议。从“跑通Demo”到“训练自己的模型”的鸿沟我们将用一个最简单的自定义数据集例如标注几种办公用品为例带你完整走完数据准备、格式转换、训练启动、效果验证的全过程。训练过程中的“黑盒”感训练时那些命令行输出到底是什么意思损失降不下去怎么办我们会解读关键训练日志和评估指标如 mAP让你知道模型在学什么学得怎么样。“接下来我该怎么做”的迷茫模型训练好后如何用它来检测新图片、视频甚至部署到简单的 Web 服务我们会给出下一步的明确方向。本文的目标读者是有一定 Python 基础对深度学习和计算机视觉感兴趣希望快速上手 YOLO 并应用于实际项目如毕设、竞赛、产品原型的开发者。我们将使用Ultralytics这个目前最主流的 YOLO 实现框架因为它封装良好、文档齐全、社区活跃极大降低了入门门槛。2. 基础概念与核心原理YOLO 到底在做什么在动手之前我们需要建立最基础的概念共识。如果你已经了解可以快速浏览。目标检测Object Detection的任务是给定一张图片找出其中所有我们感兴趣的物体目标并用矩形框Bounding Box标出它们的位置同时判断每个框内物体属于哪个类别Class。例如在一张街景图中找出所有的“人”、“车”、“交通灯”。YOLOYou Only Look Once是一种目标检测算法其核心思想是“一次看完”。与传统的两阶段检测器先找候选区域再分类不同YOLO 将输入图像划分成 S×S 的网格Grid每个网格负责预测中心点落在该网格内的目标。每个预测结果包含了边界框的位置x, y, w, h、置信度Confidence以及类别概率Class Probabilities。这种设计让 YOLO 速度极快适合实时应用。Ultralytics YOLO并非 YOLO 算法的官方实现而是一个基于 PyTorch 的、功能极其丰富的开源项目。它实现了 YOLOv5, YOLOv8, YOLO26 等多个版本并提供了统一的、易于使用的 API。你可以把它理解为一个“YOLO 全家桶”工具箱涵盖了从训练、验证、预测到导出的全流程。我们选择它正是因为其“开箱即用”的特性。几个关键术语边界框Bounding Box即检测框用(中心点x, 中心点y, 宽度w, 高度h)表示通常归一化到[0, 1]区间。置信度Confidence模型对当前框内包含目标且位置准确的把握程度。类别概率模型判断框内物体属于各个类别的概率分布。mAPmean Average Precision衡量检测模型精度的核心指标值越高越好。简单理解它综合了模型在不同置信度阈值下对所有类别的检测准确率。IoUIntersection over Union交并比用于衡量预测框与真实框的重合程度。IoU 越高定位越准。对于初学者你不需要深究 YOLO 网络每一层的细节。只需要记住YOLO 是一个端到端的系统你输入图片和标注它输出带类别和置信度的框。Ultralytics 让调用这个系统变得像调用一个函数一样简单。3. 环境准备与前置条件打造一个稳定的实验环境环境是最大的拦路虎。我们将创建一个独立的 Python 虚拟环境并安装特定版本的 PyTorch 和 Ultralytics以确保最高的成功率。3.1 硬件与操作系统要求操作系统Windows 10/11, Linux (Ubuntu 20.04/22.04 推荐), macOS。本文以Windows 11和Ubuntu 22.04为例。GPU强烈推荐NVIDIA GPU (GTX 1060 6G 或以上)。GPU 可以加速训练和推理数十倍。如果没有 GPU也可使用 CPU但速度会慢很多。内存建议 16GB 或以上。磁盘空间至少 10GB 可用空间用于安装环境和数据集。3.2 软件环境安装分步详解第一步安装 Python 和 Conda管理环境我们使用 Miniconda 来创建独立的 Python 环境避免与系统其他 Python 项目冲突。访问 Miniconda 官网 下载对应操作系统的安装包。安装 Miniconda。在 Windows 上安装时记得勾选 “Add Miniconda3 to my PATH environment variable”。在 Linux/macOS 上使用 bash 脚本安装。安装完成后打开终端Windows 用 Anaconda Prompt 或 PowerShellLinux/macOS 用 Terminal。第二步创建并激活虚拟环境# 创建一个名为 yolo_env 的 Python 3.9 环境3.9是一个兼容性很好的版本 conda create -n yolo_env python3.9 -y # 激活环境 # Windows: conda activate yolo_env # Linux/macOS: # conda activate yolo_env (命令相同)激活后你的命令行提示符前应该会显示(yolo_env)。第三步安装 PyTorch核心深度学习框架这是最关键也最容易出错的一步。请根据你的CUDA 版本选择安装命令。如果你不确定 CUDA 版本在终端输入nvidia-smi查看。如果没装 CUDA 或没有 NVIDIA GPU则安装 CPU 版本。# 示例CUDA 11.8 (常见于 RTX 30/40 系列显卡驱动较新) # 访问 https://pytorch.org/get-started/locally/ 获取最新命令 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 # 示例CUDA 12.1 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 # CPU 版本无 GPU 或 Mac pip install torch torchvision torchaudio验证 PyTorch 和 CUDA# 在 Python 交互环境中执行 import torch print(torch.__version__) # 输出 PyTorch 版本如 2.3.0 print(torch.cuda.is_available()) # 输出 True 表示 GPU 可用False 表示不可用 # 如果为 True还可以查看 CUDA 版本和显卡信息 print(torch.cuda.get_device_name(0))第四步安装 Ultralytics YOLO在激活的yolo_env环境中执行pip install ultralytics这个命令会安装 Ultralytics 包及其所有依赖如 opencv-python, matplotlib, pandas 等。第五步验证安装# 在终端中执行 yolo checks这个命令会检查环境配置包括 PyTorch、CUDA、Ultralytics 版本等。如果一切正常你会看到类似Ultralytics YOLOv8.2.0 Python-3.9.18 torch-2.3.0 CUDA:0 (NVIDIA GeForce RTX 4090, 24210MiB)的输出。至此你的核心环境已经准备就绪。这个环境是后续所有操作的基础。4. 核心流程拆解从图片到检测结果的完整链路现在我们从一个最简单的任务开始使用预训练模型对一张图片进行目标检测。这能让你在几分钟内看到 YOLO 的能力建立正向反馈。整个流程可以拆解为以下几步准备输入找到一张包含常见物体如人、狗、汽车的图片。加载模型从 Ultralytics 服务器下载一个预训练好的模型权重文件.pt。执行推理让模型对图片进行分析。解析结果获取模型输出的检测框、类别和置信度。可视化结果将检测框和标签画在图片上并保存或显示。下面我们用代码来实现这个流程。5. 完整示例与代码实现你的第一个 YOLO 检测程序我们将创建一个 Python 脚本完成上述所有步骤。请确保你在之前创建的yolo_env环境中操作。5.1 示例代码使用 YOLOv8n 进行图片检测创建一个名为first_detection.py的文件并输入以下内容# first_detection.py from ultralytics import YOLO import cv2 import matplotlib.pyplot as plt # 1. 加载一个预训练模型 # ‘yolo8n.pt’ 是 YOLOv8 的纳米nano版本体积最小速度最快精度尚可适合快速验证。 # 首次运行会自动从 Ultralytics 服务器下载模型文件。 model YOLO(yolo8n.pt) # 你也可以尝试 yolo8s.pt, yolo8m.pt 等更大模型 # 2. 指定要检测的图片路径 # 这里我们使用 Ultralytics 自带的测试图片你也可以替换成你自己的图片路径 image_path https://ultralytics.com/images/bus.jpg # 网络图片 # image_path ‘./my_image.jpg’ # 本地图片 # 3. 执行推理 # source 指定输入源可以是图片路径、URL、PIL图像、numpy数组等。 # conf 是置信度阈值低于此值的检测结果将被过滤掉。0.25 是一个常用起始值。 # saveTrue 会将结果图片保存到 runs/detect/predict 目录下。 results model(sourceimage_path, conf0.25, saveTrue) # 4. 查看结果 # results 是一个列表因为我们可以一次推理多张图片。这里我们只输入了一张。 for result in results: # 打印检测到的对象信息 print(检测到的对象) for box in result.boxes: # 获取边界框坐标 (xyxy格式左上角x,y, 右下角x,y) xyxy box.xyxy[0].tolist() # 获取置信度 confidence box.conf[0].item() # 获取类别ID和名称 class_id int(box.cls[0].item()) class_name result.names[class_id] print(f 类别: {class_name}, 置信度: {confidence:.2f}, 位置: {xyxy}) # 5. 使用 OpenCV 显示结果图片如果是在本地有GUI的环境 # 结果图片保存在 result.save_dir 指定的路径 result_img_path result.save_dir / result.path.name print(f\n结果图片已保存至: {result_img_path}) # 尝试用 OpenCV 读取并显示 try: result_img cv2.imread(str(result_img_path)) # OpenCV 使用 BGR 格式matplotlib 使用 RGB需要转换 result_img_rgb cv2.cvtColor(result_img, cv2.COLOR_BGR2RGB) plt.figure(figsize(10, 6)) plt.imshow(result_img_rgb) plt.axis(off) # 不显示坐标轴 plt.title(YOLO Detection Result) plt.show() except Exception as e: print(f无法显示图片可能处于无GUI环境。错误信息: {e}) print(请直接查看保存的图片文件。) print(\n推理完成)5.2 代码详解与运行模型选择YOLO(yolo8n.pt)加载的是 YOLOv8 的纳米模型。这是速度和精度的平衡点。yolo8s小、yolo8m中、yolo8l大、yolo8x超大模型更大更准但也更慢。初次体验建议用n或s。自动下载第一次运行这行代码时会自动下载yolo8n.pt模型文件约 6MB保存到本地缓存中下次无需再下载。推理参数conf0.25是置信度阈值。你可以调高如 0.5来获得更少但更可靠的检测框或调低如 0.1来检测更多可能的目标但假阳性也会增多。结果保存saveTrue会让 Ultralytics 将带检测框的图片保存到runs/detect/predict目录下并按运行次数自动创建子文件夹如predict1,predict2。运行脚本 在终端中确保处于yolo_env环境并切换到脚本所在目录然后运行python first_detection.py如果网络通畅你会看到下载进度条然后程序开始推理。最终你会在终端看到打印的检测信息并且图片会显示出来如果环境支持 GUI同时图片文件会保存在runs/detect/predict*/bus.jpg。恭喜你已经完成了第一次 YOLO 目标检测。这个过程几乎不需要你理解任何底层细节这就是现代框架的强大之处。6. 运行结果与效果验证运行上面的脚本后你应该在终端看到类似以下的输出Ultralytics YOLOv8.2.0 Python-3.9.18 torch-2.3.0 CUDA:0 (NVIDIA GeForce RTX 4090, 24210MiB) YOLOv8n summary (fused): 168 layers, 3151904 parameters, 0 gradients, 8.7 GFLOPs image 1/1 /tmp/.../bus.jpg: 640x480 4 persons, 1 bus, 1 stop sign, 7.3ms Speed: 0.5ms preprocess, 7.3ms inference, 1.2ms postprocess per image at shape (1, 3, 640, 480) 检测到的对象 类别: person, 置信度: 0.89, 位置: [100.5, 200.3, 150.7, 350.9] 类别: person, 置信度: 0.85, 位置: [300.1, 180.5, 380.9, 400.2] ... 结果图片已保存至: runs/detect/predict2/bus.jpg 推理完成如何验证成功查看终端输出YOLOv8n summary行显示模型加载成功。image 1/1 ...行显示了检测到的物体类别和数量以及推理时间。这证明模型工作正常。查看生成的图片找到runs/detect/predict*/bus.jpg文件并打开。你应该能看到原图上画出了彩色的检测框并标注了类别和置信度。检查检测结果合理性观察检测框是否准确地框住了物体如人、公交车以及置信度是否较高通常 0.5 可以认为是可靠的。如果运行失败第一步排查什么网络问题首次运行需要下载模型。如果卡在下载请检查网络连接或尝试手动下载模型文件放到当前目录。CUDA 不可用如果torch.cuda.is_available()返回False但你有 NVIDIA GPU请检查 CUDA 和 PyTorch 版本是否匹配。可以尝试重新安装对应 CUDA 版本的 PyTorch。模块导入错误确保在正确的 Conda 环境 (yolo_env) 中运行并且已成功安装ultralytics。图片路径错误如果使用本地图片确保路径正确且图片文件存在。7. 迈向实战训练你自己的自定义检测模型使用预训练模型检测已知类别COCO 数据集包含的80类很简单。但 YOLO 的真正威力在于能够学习识别任何你感兴趣的物体。接下来我们学习如何准备数据并训练一个自定义模型。7.1 准备自定义数据集这是训练过程中最耗时但也最重要的一步。数据格式必须正确。Ultralytics YOLO 要求的数据集格式如下datasets/ └── my_custom_dataset/ ├── images/ │ ├── train/ │ │ ├── image1.jpg │ │ ├── image2.jpg │ │ └── ... │ └── val/ │ ├── image100.jpg │ └── ... └── labels/ ├── train/ │ ├── image1.txt │ ├── image2.txt │ └── ... └── val/ ├── image100.txt └── ...images/train/和images/val/分别存放训练集和验证集的图片。labels/train/和labels/val/存放对应的标注文件每个.txt文件与图片同名。每个标注文件.txt的每一行代表一个目标格式为class_id x_center y_center width height。class_id是类别索引从0开始。x_center, y_center, width, height是边界框中心点的 x, y 坐标以及框的宽和高这些值都经过了归一化即除以图片的宽度和高度范围在 0 到 1 之间。如何获得标注文件对于小规模数据集可以使用标注工具手动标注推荐LabelImg开源支持 Pascal VOC 和 YOLO 格式。Roboflow在线平台提供标注、版本管理和数据增强功能对新手友好有免费额度。CVAT功能强大的开源在线标注工具。假设我们想训练一个检测“键盘”和“鼠标”的模型。我们收集了 100 张包含键盘和鼠标的图片用 LabelImg 标注后将图片和对应的.txt文件按上述目录结构整理好。7.2 创建数据集配置文件我们需要一个 YAML 文件来告诉 YOLO 数据集在哪里以及有哪些类别。 创建一个名为my_dataset.yaml的文件内容如下# my_dataset.yaml # 数据集根目录路径相对于此YAML文件或绝对路径 path: ./datasets/my_custom_dataset # 训练集图片路径相对于path train: images/train # 验证集图片路径相对于path val: images/val # 测试集图片路径可选 # test: images/test # 类别数量 nc: 2 # 类别名称列表顺序必须与标注文件中的 class_id 对应 names: [keyboard, mouse] # 可选下载地址/说明 # download: https://...7.3 启动训练准备好数据和配置文件后训练只需几行代码。创建一个train_custom.py脚本# train_custom.py from ultralytics import YOLO # 1. 加载一个预训练模型作为起点迁移学习 # 使用预训练权重可以大大加快收敛速度提高最终精度。 model YOLO(yolo8n.pt) # 同样可以从 nano 模型开始 # 2. 开始训练 # data: 数据集配置文件的路径 # epochs: 训练轮数。对于小数据集100-300 轮可能足够。 # imgsz: 输入图片的大小。YOLO 会统一缩放到此尺寸。640 是常用尺寸平衡速度和精度。 # batch: 批次大小。根据你的 GPU 内存调整。如果内存不足减小此值如 -1 表示自动调整。 # name: 给本次训练任务起个名字结果会保存在 runs/detect/{name} 下。 # device: 指定训练设备。‘0’ 表示第一块 GPU‘cpu’ 表示使用 CPU。 results model.train( data./my_dataset.yaml, epochs100, imgsz640, batch16, namemy_keyboard_mouse_v1, device0 # 或 ‘cpu’ ) print(训练完成)关键参数解释epochs整个数据集被遍历的次数。太少可能学不好太多可能导致过拟合。可以从 100 开始尝试。imgsz模型输入的固定尺寸。更大的尺寸如 1280可能提升小物体检测精度但会显著增加计算量和内存消耗。batch一次迭代中用于更新模型权重的样本数量。GPU 内存越大可以设置的 batch 越大。如果出现CUDA out of memory错误首先尝试减小batch。device如果你的机器有多块 GPU可以指定device[0,1]来使用多卡训练。运行训练脚本python train_custom.py训练开始后终端会显示一个进度条并实时输出各项损失box_loss, cls_loss, dfl_loss和评估指标mAP50, mAP50-95。训练过程的所有信息模型权重、日志、图表都会保存在runs/detect/my_keyboard_mouse_v1/目录下。7.4 使用训练好的模型进行推理训练完成后最好的模型权重会自动保存在runs/detect/my_keyboard_mouse_v1/weights/best.pt。我们可以用它来检测新的图片。# inference_custom.py from ultralytics import YOLO # 加载我们刚刚训练好的最佳模型 model YOLO(runs/detect/my_keyboard_mouse_v1/weights/best.pt) # 对新图片进行推理 results model(path/to/your/new_image.jpg, saveTrue, conf0.5) # 也可以对视频或摄像头进行实时检测 # results model(source0, showTrue, conf0.5) # source0 表示使用默认摄像头现在你的模型就学会了识别“键盘”和“鼠标”8. 常见问题与排查思路在实践过程中你几乎一定会遇到一些问题。下表列出了最常见的问题及其解决方法问题现象可能原因排查方式解决方案ModuleNotFoundError: No module named ‘ultralytics’未在正确的 Python 环境中安装 ultralytics或安装失败。在终端输入 pip listgrep ultralytics查看是否安装。确认当前终端激活的环境是yolo_env。CUDA out of memoryGPU 内存不足。通常是batch大小或imgsz设置过大。运行nvidia-smi查看 GPU 内存使用情况。1. 减小batch参数如从 16 降到 8。2. 减小imgsz如从 640 降到 320。3. 在model.train()中设置workers0以减少数据加载线程。torch.cuda.is_available()返回FalsePyTorch 未安装 GPU 版本或 CUDA 版本不匹配或驱动问题。检查 PyTorch 版本print(torch.__version__)。检查 CUDA 版本nvidia-smi顶部显示的是驱动支持的最高CUDA版本nvcc --version显示的是安装的CUDA工具包版本。1. 根据你的 CUDA 版本从 PyTorch 官网 获取正确的安装命令重装。2. 更新 NVIDIA 显卡驱动。训练时损失loss不下降或为 NaN学习率过高、数据标注有误、数据量太少、类别不平衡。1. 检查训练日志开头的数据集加载信息确认图片和标签数量正确。2. 可视化几张训练图片和标签看标注框是否合理。1. 尝试降低学习率在model.train()中添加参数lr00.01调小。2. 仔细检查数据集修正错误的标注。3. 增加数据量或使用数据增强。4. 对于 NaN可以尝试梯度裁剪clip_grad10.0。模型检测不到目标或精度很低mAP很低数据量不足、数据质量差、类别定义模糊、训练轮数不够、模型容量太小。1. 在验证集上运行模型查看预测结果。2. 分析混淆矩阵训练后会在runs目录生成。1. 收集更多、更多样化的数据。2. 提高标注质量确保边界框紧密贴合物体。3. 增加训练轮数epochs。4. 换用更大的模型如从yolo8n.pt换成yolo8s.pt。5. 使用数据增强Ultralytics 默认已开启。推理速度很慢模型太大、imgsz太大、在 CPU 上运行。使用yolo checks确认是否在使用 GPU 推理。1. 换用更小的模型如yolo8n.pt。2. 减小推理时的图片尺寸imgsz320。3. 确保使用 GPUdevice‘0’。4. 将模型导出为 TensorRT 或 ONNX 等优化格式进行部署。标注文件格式错误.txt文件中的坐标未归一化或格式不符合cls x_center y_center width height。随机打开一个.txt文件检查。坐标值应在 0~1 之间。使用正确的标注工具如 LabelImg 并选择 YOLO 格式导出。手动检查并修正格式。9. 最佳实践与工程建议当你成功跑通第一个自定义模型后以下建议可以帮助你走向更专业、更稳定的项目。数据是王道质量高于数量100张标注精准的图片远胜于1000张标注粗糙的图片。确保边界框紧贴物体类别标签正确。数据多样性训练集应尽可能覆盖目标物体可能出现的各种场景、光照、角度、尺度和遮挡情况。划分训练集、验证集、测试集通常按 70:20:10 或 80:10:10 的比例划分。验证集用于训练时调参测试集用于最终评估切勿用测试集参与任何训练或调参过程。从预训练模型开始迁移学习永远不要从零开始训练随机初始化权重。使用在 COCO 等大型数据集上预训练的模型如yolo8n.pt作为起点可以极大提升收敛速度和最终精度。超参数调优Ultralytics YOLO 提供了合理的默认超参数。对于大多数项目你只需要关注epochs,imgsz,batch,lr0初始学习率。可以使用model.tune()方法进行超参数搜索但这需要大量计算资源。对于初学者手动微调几个关键参数即可。监控训练过程训练时Ultralytics 会实时在终端输出指标并生成丰富的可视化结果保存在runs/detect/exp*/目录下。重点关注results.csv所有指标日志、confusion_matrix.png混淆矩阵、results.png损失和指标曲线。这些图表能帮你判断模型是否过拟合、欠拟合。模型选择与权衡n(nano),s(small),m(medium),l(large),x(extra large) 模型在参数量、速度和精度上依次递增。移动端/边缘设备优先选择n,s。服务器端/追求精度可以考虑m,l。实际选择先用s或m做实验根据精度和速度需求决定是否换用更大或更小模型。模型导出与部署训练好的.pt模型可以直接用于 Python 推理。但对于生产环境通常需要导出为更高效的格式。ONNX通用交换格式支持多种推理引擎如 OpenVINO, TensorRT。TensorRTNVIDIA GPU 上的极致优化速度最快。CoreML苹果设备iOS/macOS部署。OpenVINO英特尔 CPU/GPU 部署。使用model.export(format‘onnx’)即可轻松导出。版本控制与复现性记录每次实验的关键配置数据集版本、模型结构、超参数、环境PyTorch, CUDA 版本。可以使用yolo cfg命令导出训练配置。考虑使用Docker来固化整个环境确保在任何机器上都能复现结果。通过遵循上述流程和最佳实践你不仅能够快速上手 YOLO 目标检测更能建立起一个稳健的计算机视觉项目开发基础。从环境搭建到自定义训练再到问题排查和优化这条路径覆盖了绝大多数初学者和中级开发者的核心需求。记住动手实践和迭代优化是学习深度学习最快的方式。现在你可以尝试用你自己的图片和数据去训练一个识别特定物体的模型了。