YOLO目标检测从入门到实战:环境搭建、模型训练与部署全流程 如果你正在学习计算机视觉或者想找一个能快速上手、效果立竿见影的实战项目那么“目标检测”几乎是你绕不开的第一站。而在目标检测领域YOLOYou Only Look Once系列模型无疑是那颗最耀眼的明星。它凭借“看一眼就出结果”的极速推理能力彻底改变了实时目标检测的游戏规则从自动驾驶、工业质检到安防监控无处不在。但问题来了面对网上浩如烟海的教程、从YOLOv1到YOLO11甚至YOLO26的版本迭代、以及复杂的PyTorch环境配置很多初学者要么被劝退在第一步要么学了一堆理论却连一个最简单的检测程序都跑不起来。更让人困惑的是YOLO家族版本众多我到底该学哪个最新的YOLO11和经典的YOLOv5、YOLOv8有什么区别学完理论后如何真正把它用在自己的项目里这篇文章的目的就是为你扫清这些障碍。我不会用“168小时”的夸张标题来吸引你而是用一篇结构清晰、内容扎实的长文带你从零开始真正理解YOLO的核心思想并亲手完成从环境搭建、模型使用、自定义训练到模型部署的完整闭环。你将学到的不是零散的知识点而是一套可复用的“YOLO工程实践方法论”。无论你是想完成课程设计、毕业项目还是为工作寻找一个高效的技术方案这篇文章都将是你可靠的起点。1. 这篇文章真正要解决的问题在深入代码之前我们必须先搞清楚一个核心问题为什么是YOLO在它之前已经有R-CNN、Fast R-CNN、Faster R-CNN等优秀的两阶段Two-Stage检测器它们精度很高。但YOLO的出现开启了一个新的时代——单阶段One-Stage实时检测。YOLO解决的核心痛点就是“速度”。两阶段检测器需要先产生候选区域Region Proposals再对每个区域进行分类和回归步骤繁琐速度慢。而YOLO将目标检测重新定义为一个单一的回归问题直接从图像像素到边界框坐标和类别概率的映射。它只需要“看”一次图像You Only Look Once就能同时预测出所有物体的位置和类别。这种设计带来了革命性的优势极致的速度在GPU上可以达到每秒几十甚至上百帧的处理速度满足了视频流实时分析的需求。全局上下文理解由于是在整张图像上进行推理YOLO对图像有全局的理解不容易将背景误检为物体。端到端训练整个网络可以一起训练优化目标直接就是检测性能简化了训练流程。因此这篇文章要解决的不仅仅是“如何使用YOLO”更是“如何理解YOLO的设计哲学并据此做出正确的技术选型和工程决策”。我们将重点关注目前生态最完善、应用最广泛的Ultralytics YOLO系列包括YOLOv5, YOLOv8, YOLO11因为它们提供了从研究到生产的完整工具链。2. 基础概念与核心原理要玩转YOLO必须理解几个核心概念否则看代码和配置就像看天书。2.1 目标检测任务定义目标检测的任务是给定一张输入图像找出其中所有感兴趣的目标物体并确定它们的位置和类别。位置通常用一个矩形框Bounding Box表示包含中心点坐标(x, y)、宽度(w)和高度(h)。类别物体属于哪个类别如“人”、“车”、“狗”。2.2 YOLO的核心思想网格划分与直接预测这是理解YOLO最关键的一步。YOLO将输入图像划分为 S x S 个网格Grid Cell。每个网格负责预测那些中心点落在该网格内的物体。对于每个网格模型会预测B个边界框Bounding Boxes每个框预测5个值(x, y, w, h, confidence)。(x, y)边界框中心相对于该网格左上角的偏移量。(w, h)边界框的宽度和高度相对于整张图像的比例。confidence置信度这个框包含一个物体的概率以及这个框预测得有多准与真实框的重叠度即IoU。公式常为Pr(Object) * IoU(pred, truth)。C个条件类别概率在网格包含物体的前提下物体属于每个类别的概率Pr(Class_i | Object)。在推理时将每个边界框的置信度与条件类别概率相乘就得到了每个框对于每个类别的“类别特定置信度分数”。这个分数同时编码了“这个框包含某类物体的概率”和“这个框预测的位置好坏”。# 概念性代码帮助理解预测张量的结构 # 假设 S7, B2, C20 (VOC数据集) # 那么模型最终的预测输出是一个形状为 [batch, S, S, B*5 C] 的张量 # 即 [batch, 7, 7, (2*5 20)] [batch, 7, 7, 30] # 对于其中一个网格 cell[i, j]它的预测向量长度为30 predictions_for_cell_ij model_output[0, i, j, :] # 形状 (30,) # 这30个值可以拆解为 bbox1 predictions_for_cell_ij[0:5] # (x1, y1, w1, h1, conf1) bbox2 predictions_for_cell_ij[5:10] # (x2, y2, w2, h2, conf2) class_probs predictions_for_cell_ij[10:30] # 20个类别的条件概率2.3 非极大值抑制NMS由于每个网格会预测多个框同一物体可能被多个网格或多个框检测到最终会产生大量重叠的检测框。NMS的作用就是剔除冗余的检测框只保留最好的那个。 其过程简单来说就是将所有框按置信度排序。选择置信度最高的框将其加入最终输出列表。计算该框与剩余所有框的IoU交并比。剔除那些IoU超过某个阈值如0.5的框因为它们很可能是同一个物体。从剩余的框中重复步骤2-4直到没有框剩下。2.4 Ultralytics YOLO 版本演进与选型建议从搜索材料中我们可以看到YOLO的快速迭代。对于初学者和大多数应用者我的建议是YOLOv5经典、稳定、社区资源极其丰富。如果你是第一次接触或者项目要求稳定压倒一切选它。它的文档和教程是最多的。YOLOv8Ultralytics的“集大成者”不仅支持目标检测还原生支持实例分割、姿态估计、图像分类等多任务。API设计更现代是当前最推荐用于新项目的版本平衡了性能、易用性和功能。YOLO11最新版本在架构上进一步优化追求更高的效率更少的参数相当的精度。适合对边缘部署和计算资源敏感的场景。其设计向后兼容YOLOv8迁移成本低。一句话总结新手从YOLOv8入手追求极致效率看YOLO11维护老项目用YOLOv5。3. 环境准备与前置条件工欲善其事必先利其器。YOLO的运行环境主要以Python和PyTorch为核心。以下配置是一个经过验证的稳定组合。3.1 硬件与操作系统操作系统Windows 10/11, Linux (Ubuntu 20.04/22.04), macOS。本文演示以Ubuntu 22.04为例命令在Windows Git Bash或WSL中同样适用。GPU强烈推荐NVIDIA GPU (GTX 1060 6G或以上)并安装对应版本的CUDA和cuDNN。GPU能带来数十倍的训练和推理加速。CPU仅适用于学习和小规模推理训练会非常慢。3.2 软件环境安装我们使用Conda来管理独立的Python环境避免包冲突。# 1. 安装Miniconda或Anaconda如果已安装请跳过 # 从官网下载并安装Miniconda: https://docs.conda.io/en/latest/miniconda.html # 2. 创建一个新的conda环境命名为yolo指定Python 3.9一个兼容性较好的版本 conda create -n yolo python3.9 -y # 3. 激活环境 conda activate yolo # 4. 安装PyTorch核心深度学习框架 # 访问 https://pytorch.org/get-started/locally/ 获取最适合你CUDA版本的命令。 # 例如对于CUDA 11.8 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 # 如果你没有GPU或CUDA安装CPU版本 # pip install torch torchvision torchaudio # 5. 安装Ultralytics YOLOv8这是我们的主角 # 这个包包含了训练、验证、预测和导出的所有功能 pip install ultralytics # 6. 安装一些常用的辅助库 pip install opencv-python matplotlib pandas seaborn ipython jupyter # OpenCV用于图像处理matplotlib用于绘图pandas/seaborn用于数据分析ipython/jupyter用于交互式编程。 # 7. 验证安装 python -c import torch; print(fPyTorch版本: {torch.__version__}, CUDA可用: {torch.cuda.is_available()}) python -c import ultralytics; print(fUltralytics版本: {ultralytics.__version__})如果输出显示PyTorch版本正确且CUDA可用TrueUltralytics版本也成功打印那么恭喜你环境搭建成功4. 核心流程拆解YOLO实战四部曲掌握YOLO的完整工作流是将其应用于实际项目的关键。这个流程可以概括为四个核心步骤如下图所示我们用文字描述这个流程使用预训练模型进行推理最快体验YOLO的能力。准备自定义数据集教会YOLO认识你关心的物体。训练你自己的模型在自定义数据上微调Fine-tune模型。模型评估与部署验证模型效果并将其应用到实际系统中。接下来我们一步步实现。5. 完整示例与代码实现5.1 第一步使用预训练模型进行推理5分钟出结果这是建立信心的第一步。Ultralytics的API设计得非常简洁。# 文件first_detection.py from ultralytics import YOLO import cv2 # 1. 加载一个预训练模型 # ‘yolov8n.pt’ 是YOLOv8的纳米nano版本体积最小速度最快适合快速验证。 # 还有 yolov8s.pt小, yolov8m.pt中, yolov8l.pt大, yolov8x.pt超大精度和速度依次递增。 model YOLO(yolov8n.pt) # 首次运行会自动从官网下载模型文件 # 2. 对一张图片进行推理 results model(https://ultralytics.com/images/bus.jpg) # 可以使用图片URL # 或者使用本地图片 # results model(./path/to/your/image.jpg) # 3. 处理结果 for result in results: # 在图片上绘制检测框 annotated_frame result.plot() # 这个函数返回一个带标注的numpy数组图像 # 显示图片 cv2.imshow(YOLOv8 Detection, annotated_frame) cv2.waitKey(0) # 按任意键关闭窗口 cv2.destroyAllWindows() # 打印检测到的物体信息 boxes result.boxes # 边界框对象 if boxes is not None: print(f检测到 {len(boxes)} 个物体) for box in boxes: # 获取坐标 (xyxy格式左上角x,y, 右下角x,y) x1, y1, x2, y2 box.xyxy[0].tolist() # 获取置信度 confidence box.conf[0].item() # 获取类别ID和名称 class_id int(box.cls[0].item()) class_name model.names[class_id] print(f - {class_name} ({confidence:.2f}): [{x1:.1f}, {y1:.1f}, {x2:.1f}, {y2:.1f}])运行这个脚本你就能看到YOLOv8n对一张包含行人和公交车的图片的检测结果。这就是YOLO最基础也是最强大的能力——开箱即用。5.2 第二步准备自定义数据集要让YOLO识别特定物体比如识别某种工业零件、特定品牌的logo、野生动物等你需要准备自己的数据集。数据集的组织格式至关重要。YOLO格式数据集结构your_dataset/ ├── images/ │ ├── train/ # 训练集图片 │ │ ├── image1.jpg │ │ └── ... │ └── val/ # 验证集图片 │ ├── image2.jpg │ └── ... └── labels/ ├── train/ # 训练集标签 │ ├── image1.txt # 与图片同名 │ └── ... └── val/ # 验证集标签 ├── image2.txt └── ...标签文件.txt格式 每一行代表图片中的一个物体格式为class_id x_center y_center width heightclass_id: 物体的类别索引从0开始。x_center, y_center, width, height: 物体边界框的中心坐标和宽高这些值都是相对于图片宽度和高度的归一化值范围0-1。例如一张图片尺寸为640x480其中有一个物体的边界框左上角为(100, 120)右下角为(300, 360)那么宽度 300 - 100 200高度 360 - 120 240中心x 100 200/2 200中心y 120 240/2 240 归一化后x_center 200 / 640 0.3125y_center 240 / 480 0.5width 200 / 640 0.3125height 240 / 480 0.5标签行即为0 0.3125 0.5 0.3125 0.5如何制作数据集收集图片尽可能多地收集包含目标物体的图片背景、光照、角度要多样。标注工具推荐使用labelImg或Roboflow。labelImg开源桌面工具。pip install labelImg # 安装 labelImg # 启动使用时将输出格式设置为YOLO。Roboflow在线平台https://roboflow.com/提供标注、版本管理、数据增强和预处理非常强大有免费额度。划分数据集通常按 80% 训练集20% 验证集的比例划分。创建数据集配置文件data.yaml这是告诉YOLO去哪里找数据的关键文件。# 文件data.yaml path: /home/user/datasets/your_dataset # 数据集根目录 train: images/train # 训练集图片路径相对于path val: images/val # 验证集图片路径相对于path # test: images/test # 可选测试集 # 类别数量和名称 nc: 3 # 类别数量例如你有3类物体 names: [cat, dog, person] # 类别名称列表顺序与class_id对应5.3 第三步训练你自己的模型有了数据集和配置文件训练就变得非常简单。Ultralytics封装了复杂的训练逻辑。# 文件train_custom.py from ultralytics import YOLO # 1. 加载一个预训练模型作为起点迁移学习 # 从预训练模型开始训练比从零开始训练快得多效果也更好。 model YOLO(yolov8s.pt) # 这里我们使用小模型平衡速度和精度 # 2. 开始训练 results model.train( data./data.yaml, # 数据集配置文件路径 epochs100, # 训练轮数根据数据集大小调整通常50-300 imgsz640, # 输入图片尺寸YOLOv8默认640 batch16, # 批次大小根据GPU内存调整-1表示自动调整 device0, # 使用GPU 0如果是CPU则设为 cpu多卡可用 0,1 workers8, # 数据加载的线程数 projectruns/detect, # 保存训练结果和权重的项目目录 namecustom_train_v1, # 本次训练的实验名称 exist_okTrue, # 如果项目/名称已存在则允许覆盖 # 更多高级参数可以查看官方文档 # https://docs.ultralytics.com/modes/train/#arguments ) print(训练完成)训练开始后终端会显示进度条和损失曲线。所有训练日志、模型权重、评估结果都会保存在runs/detect/custom_train_v1/目录下。你可以使用TensorBoard来可视化训练过程tensorboard --logdir runs/detect/custom_train_v15.4 第四步模型评估与部署训练完成后我们需要评估模型在验证集上的表现然后使用它进行预测或导出为其他格式用于部署。评估模型# 文件evaluate_model.py from ultralytics import YOLO # 加载训练得到的最佳模型通常保存在 runs/detect/.../weights/best.pt model YOLO(runs/detect/custom_train_v1/weights/best.pt) # 在验证集上评估模型 metrics model.val() # 默认使用训练时data.yaml中的验证集 # metrics.box.map # mAP50-95 # metrics.box.map50 # mAP50 # metrics.box.map75 # mAP75 # metrics.speed # 推理速度 print(metrics.box.map50) # 打印mAP50这是常用的评估指标使用训练好的模型进行预测# 文件predict_with_custom.py from ultralytics import YOLO import cv2 model YOLO(runs/detect/custom_train_v1/weights/best.pt) # 预测单张图片 results model(./test_image.jpg, saveTrue) # saveTrue会保存标注后的图片 # 预测视频 results model(./test_video.mp4, saveTrue, showTrue) # showTrue会实时显示 # 预测摄像头流 # results model(source0, showTrue) # source0 表示默认摄像头模型导出部署的关键 训练出的PyTorch模型.pt在研究和开发中很方便但在生产环境部署时我们通常需要将其转换为更高效或跨平台的格式。# 文件export_model.py from ultralytics import YOLO model YOLO(runs/detect/custom_train_v1/weights/best.pt) # 导出为ONNX格式广泛支持的中间格式 success model.export(formatonnx) # 生成 best.onnx # 导出为TensorRT格式NVIDIA GPU上极致性能 # success model.export(formatengine, device0) # 需要提前安装TensorRT # 导出为OpenVINO格式Intel CPU/GPU优化 # success model.export(formatopenvino) # 导出为CoreML格式Apple设备 # success model.export(formatcoreml) # 导出为TensorFlow Lite格式移动端/嵌入式设备 # success model.export(formattflite)导出的模型文件可以集成到C程序、移动App、Web后端或边缘计算设备中。6. 运行结果与效果验证运行上述代码后你应该能得到以下可验证的结果预训练模型推理成功显示带有检测框的图片并在控制台打印出检测到的物体类别、置信度和坐标。这是验证环境是否正确的第一步。训练过程在runs/detect/custom_train_v1目录下你会找到weights/best.pt和weights/last.pt最佳和最后一个epoch的模型权重。args.yaml本次训练的所有参数配置。results.csv和results.png训练过程的指标和图表损失、精度等。confusion_matrix.png混淆矩阵可视化模型在各个类别上的混淆情况。val_batchX_pred.jpg验证集批次的预测结果示例。模型评估运行model.val()后会输出一个包含多项指标的对象。重点关注mAP50-95平均精度均值IoU阈值从0.5到0.95的平均值和mAP50IoU阈值为0.5时的平均精度。一个在自定义数据集上训练良好的模型mAP50通常能达到0.8以上取决于任务难度和数据质量。模型导出成功导出后会在模型文件同目录下生成对应格式的文件如best.onnx。你可以使用相应的运行时如ONNX Runtime加载该文件进行推理验证导出是否成功。如何判断成功训练损失曲线train/box_loss,train/cls_loss应稳步下降并趋于平缓验证集精度metrics/precision,metrics/recall,metrics/mAP50应逐步上升。预测在未见过的测试图片或视频上模型能稳定、准确地框出目标物体且置信度合理。导出使用目标格式的推理引擎能成功加载模型并输出与PyTorch模型相近的结果。7. 常见问题与排查思路在学习和使用YOLO的过程中你几乎一定会遇到下面这些问题。别慌按表索骥。问题现象可能原因排查方式解决方案ImportError: No module named ultralyticsUltralytics包未安装或未安装在当前Python环境。在终端输入python -c import ultralytics。1. 确认已激活正确的conda环境 (conda activate yolo)。2. 重新安装:pip install ultralytics。CUDA out of memoryGPU内存不足。通常是批次大小(batch)或图片尺寸(imgsz)设置过大。运行nvidia-smi查看GPU内存使用情况。1. 减小batch参数如从16降到8或4。2. 减小imgsz参数如从640降到416。3. 使用更小的模型如yolov8n.pt。训练时损失为NaN或异常大学习率(lr0)过高数据标签有问题如坐标超出0-1范围。1. 检查训练日志开头的学习率。2. 使用脚本检查标签文件格式。1. 降低初始学习率如从0.01降到0.001。2. 编写脚本遍历所有标签文件检查数值范围。模型检测不到任何物体预测结果为空1. 自定义数据集类别与预训练模型不匹配却未重新训练。2. 自定义模型训练不充分或过拟合。3. 推理时置信度阈值(conf)设置过高。1. 确认使用的模型是否在自己数据上训练过。2. 查看验证集指标是否正常。3. 尝试降低conf参数。1. 使用在自己数据上训练的模型。2. 增加训练轮数(epochs)检查数据质量。3. 预测时设置conf0.25或更低。训练速度非常慢1. 使用了CPU而不是GPU。2.workers数据加载线程设置过小。3. 硬盘IO慢特别是从网络位置读取数据。1. 检查device参数是否为0或cuda。2. 监控GPU利用率 (nvidia-smi -l 1)。3. 检查数据读取路径。1. 确保CUDA和PyTorch GPU版本正确安装。2. 适当增加workers通常设为CPU核心数。3. 将数据集复制到本地SSD硬盘。导出的ONNX/TensorRT模型推理结果错误导出时输入/输出节点或动态轴设置有问题推理时预处理/后处理与训练时不匹配。1. 使用Netronhttps://netron.app/打开导出的模型检查输入输出维度。2. 对比PyTorch和导出模型对同一张图片的推理结果。1. 确保导出时imgsz与训练时一致。2. 在推理代码中确保图片预处理归一化、BGR2RGB等与YOLO训练时一致。Ultralytics的model.predict()已封装好。RuntimeError: Expected all tensors to be on the same device模型和数据不在同一个设备上一个在CPU一个在GPU。检查代码中model.to(device)和data.to(device)的调用。使用Ultralytics的高级API如model.predict()通常会自动处理设备问题。如果自定义代码确保统一设备。8. 最佳实践与工程建议掌握了基础操作后以下经验能帮助你将YOLO用得更好、更稳。8.1 数据层面数据质量高于数据数量100张标注精准、多样化的图片远胜于1000张标注粗糙、重复的图片。标注时务必紧贴物体边缘。数据增强是免费的午餐YOLO训练内置了强大的数据增强Mosaic, MixUp, 随机翻转、色彩抖动等。对于小数据集这是防止过拟合、提升模型泛化能力的关键。你可以在data.yaml同目录下创建一个args.yaml来调整增强参数但初学者建议先用默认值。类别平衡确保每个类别的图片数量不要相差太悬殊。如果“猫”有1000张图“狗”只有10张模型会严重偏向“猫”。可以通过过采样少数类别或收集更多数据来解决。创建严谨的验证集验证集必须与训练集独立同分布且未见。绝不能把训练集的图片放到验证集。它是衡量模型泛化能力的唯一可靠标准。8.2 模型训练与调优从预训练模型开始除非你有海量数据和计算资源否则永远不要从零开始训练。使用yolov8n.pt或yolov8s.pt进行迁移学习。学习率与优化器YOLOv8默认使用AdamW优化器和自动调整的学习率策略对大多数情况效果很好。如果训练不稳定损失震荡可以尝试减小lr0初始学习率。早停Early StoppingYOLOv8内置了早停机制patience50如果验证集指标在连续50个epoch内没有提升训练会自动停止并保存最佳模型。你可以调整patience参数。模型选择不是越大越好yolov8x.pt精度最高但速度最慢。在边缘设备上yolov8n.pt或yolov8s.pt往往是更实际的选择。用验证集的速度和精度指标来做权衡。8.3 推理与部署批处理Batch Inference在部署服务端API时对多张图片进行批处理推理可以极大提升GPU利用率和吞吐量。model.predict()支持传入一个图片路径列表。置信度与IoU阈值conf控制检测框的置信度下限。调高会减少误检但可能漏检调低则相反。通常设在0.25-0.5之间。iou用于NMS的IoU阈值。调高如0.7允许更重叠的框存在调低如0.3则会过滤掉更多重叠框。通常0.45是一个不错的起点。多尺度推理TTA在测试时对图像进行多种尺度的变换并集成结果可以小幅提升精度但会显著增加计算量。通过model.predict(..., augmentTrue)开启。生产环境监控部署后要监控模型的推理延迟、吞吐量、内存占用并定期用新的数据评估其性能是否下降概念漂移。8.4 项目组织yolo_project/ ├── data/ │ ├── raw_images/ # 原始收集的图片 │ ├── annotated/ # 标注后的图片和标签 │ └── dataset/ # 最终整理好的YOLO格式数据集 │ ├── images/train/ │ ├── images/val/ │ ├── labels/train/ │ ├── labels/val/ │ └── data.yaml ├── scripts/ │ ├── train.py │ ├── evaluate.py │ ├── predict.py │ └── export.py ├── runs/ # Ultralytics自动生成的训练记录 │ └── detect/ │ └── exp1/ ├── models/ # 存放导出的用于部署的模型 │ ├── best.onnx │ └── best.pt ├── requirements.txt └── README.md良好的项目结构是可持续迭代的基础。9. 总结与后续学习方向通过这篇文章我们完成了一次从理论到实践的完整YOLO目标检测之旅。我们从YOLO解决“实时性”的核心痛点出发理解了其“网格划分”与“直接预测”的精妙思想。然后我们一步步搭建了PyTorch和Ultralytics环境并实践了YOLO工作的完整流程使用预训练模型快速体验 - 准备自定义数据集 - 训练专属模型 - 评估与部署。你现在已经掌握了YOLO的核心概念网格、边界框预测、NMS。关键工具链Conda环境管理、Ultralytics Python API。数据集制作YOLO格式标签的编写与数据集的正确组织。模型训练与调优使用预训练模型进行迁移学习并理解关键超参数。模型部署将PyTorch模型导出为ONNX等生产格式。问题排查面对CUDA内存不足、训练失败、检测不到物体等常见问题的解决思路。但这仅仅是开始。YOLO的世界远比这更广阔你可以沿着以下方向继续深入深入原理研究YOLO的损失函数CIoU, Focal Loss、网络架构Backbone, Neck, Head、正负样本匹配策略TaskAlignedAssigner。阅读原论文YOLOv1, YOLOv3, YOLOv5, YOLOv8是必经之路。探索高级任务YOLOv8/YOLO11不仅做检测还支持实例分割Instance Segmentation和姿态估计Pose Estimation。尝试用model YOLO(yolov8n-seg.pt)或model YOLO(yolov8n-pose.pt)开启新任务。模型压缩与加速学习知识蒸馏Knowledge Distillation、剪枝Pruning、量化Quantization技术让模型在资源受限的设备上飞起来。工程化与集成学习如何使用ONNX Runtime、TensorRT、OpenVINO或TFLite部署模型并集成到Web服务Flask/FastAPI、移动端Android/iOS或嵌入式设备Jetson, Raspberry Pi中。关注前沿保持对Ultralytics官方仓库https://github.com/ultralytics/ultralytics和YOLO新版本如YOLO26的关注。社区的创新速度非常快。目标检测是打开计算机视觉大门的钥匙而YOLO是这把钥匙中最锋利、最顺手的一把。希望这篇长文能成为你AI实践路上的一块坚实垫脚石。建议你将代码和配置文件保存好它们是你未来项目可靠的起点。