这类教程最值得先看的不是它有多少集、讲了多少小时,而是能不能帮你把 YOLO 从“知道名字”变成“能跑起来、能改代码、能用自己的数据训练”。如果你刚接触目标检测,或者用过 YOLOv5/v8 但想跟上最新的 YOLO26,这篇内容会帮你理清从环境搭建、模型推理到自定义训练的全流程,重点是避开那些新手最容易卡住的坑。
我建议你先别急着看 100 集视频,而是按这个顺序来:第一,确认你的机器(尤其是显卡)能不能跑得动;第二,用官方最小的模型跑通一个图片检测,确保基础环境没问题;第三,再去看数据集准备和训练流程。很多问题出在第一步的环境和依赖上,而不是模型本身。
1. 环境准备:别在 Python 版本和 CUDA 上浪费时间
跑 YOLO 的第一步永远是配环境。这里最容易出问题的是 Python 版本、PyTorch 版本和 CUDA 版本的匹配。如果你用错了组合,要么装不上,要么跑起来报各种奇怪的错误。
1.1 硬件与软件基础要求
YOLO 可以在 CPU 上运行,但速度会很慢,主要用于学习和简单验证。如果要训练或者希望推理速度快,必须有 NVIDIA 显卡(GPU)。以下是常见配置的参考:
| 组件 | 最低要求(仅学习推理) | 推荐配置(自定义训练) | 说明 |
|---|---|---|---|
| 操作系统 | Windows 10/11, Ubuntu 18.04+, macOS | Ubuntu 20.04/22.04 LTS | Windows 方便,Linux 更稳定且社区支持好。 |
| CPU | 4 核以上 | 8 核以上 | 主要影响数据加载和预处理速度。 |
| 内存 | 8 GB | 16 GB 或以上 | 训练时数据集加载会占用大量内存。 |
| GPU | 集成显卡(仅 CPU 模式) | NVIDIA GTX 1060 6GB 或更高 | 关键指标是显存。YOLO26n 推理约需 1GB,训练需 2GB+。 |
| 显存 | - | ≥ 4 GB | 训练常用模型(如 YOLO26s)建议 6GB+,批量处理大图像或视频需要更多。 |
| 磁盘 | 10 GB 可用空间 | 50 GB 以上 SSD | 用于安装环境、存放数据集和模型权重。 |
关键点:先确认你的显卡型号和驱动。在命令行输入nvidia-smi(Linux/Win)查看 CUDA 版本。例如,输出显示 “CUDA Version: 12.4”,那么你安装的 PyTorch 就必须支持 CUDA 12.x。
1.2 一步到位的环境搭建命令
网上很多教程会让你一步步装 Python、pip、PyTorch、Ultralytics,但最容易翻车的是 PyTorch 和 CUDA 不匹配。我建议直接用 Ultralytics 官方推荐的安装方式,它会自动处理大部分依赖。
打开你的终端(Windows 用 CMD 或 PowerShell,Linux/macOS 用 Terminal),依次执行以下命令:
# 1. 创建并激活一个独立的 Python 环境(强烈建议,避免包冲突) conda create -n yolo_env python=3.10 -y conda activate yolo_env # 如果你没有 conda,用 venv(Python 3.3+ 自带) # python -m venv yolo_env # source yolo_env/bin/activate # Linux/macOS # yolo_env\Scripts\activate # Windows # 2. 安装 Ultralytics 包(核心) pip install ultralytics执行完pip install ultralytics后,它会自动安装适配的 PyTorch 版本以及其他所有依赖(如 opencv-python, numpy, pandas 等)。这是目前最稳妥的方式,比自己单独配 PyTorch 省心很多。
验证安装是否成功:
python -c "from ultralytics import YOLO; print('Ultralytics 导入成功')"如果没报错,说明基础环境好了。
1.3 额外依赖与常见安装问题
有些功能需要额外包,比如用 GPU 加速的 TensorRT、导出为 ONNX 等。但初期你不用装,等需要时再按官方文档装。这里列出几个新手常遇到的问题:
问题:
ImportError: libGL.so.1: cannot open shared object file(Linux)- 原因:OpenCV 缺少系统图形库。
- 解决:
sudo apt update && sudo apt install libgl1-mesa-glx(Ubuntu/Debian)
问题:
CUDA out of memory- 原因:显存不够。哪怕是最小的模型,如果输入图片分辨率太大或批量处理,也可能爆显存。
- 解决:推理时加参数
imgsz=640(降低分辨率),训练时减小batch size(如batch=4)。
问题:速度特别慢,GPU 使用率 0%
- 原因:PyTorch 可能装成了 CPU 版本。
- 解决:在 Python 里运行
import torch; print(torch.cuda.is_available()),如果输出False,说明没识别到 GPU。重新按上述步骤安装ultralytics,或通过pip install torch torchvision --index-url https://download.pytorch.org/whl/cu118(根据你的 CUDA 版本)单独安装 GPU 版 PyTorch。
环境配好之后,不要急着去下载几百 GB 的数据集,先用一张图片测试整个链路是否通畅。
2. 第一件事:用 5 分钟跑通图片检测,验证整个流程
很多教程一上来就讲原理、讲历史,但我的建议是,先让模型跑起来,看到输出结果,建立信心和直观感受。我们用最新的 YOLO26 的最小模型(yolo26n.pt)来测试。
2.1 下载模型与单张图片推理
Ultralytics 的设计非常简洁,几行代码就能完成检测。创建一个新的 Python 脚本,比如test_detect.py,写入以下内容:
from ultralytics import YOLO import cv2 # 1. 加载模型(会自动下载预训练权重,约几MB到几十MB) # 'n'代表nano,是最小最快的版本,适合快速验证 model = YOLO('yolo26n.pt') # 2. 准备一张测试图片(可以用你自己的,或下面这行代码下载一个示例) # 这里我们直接用模型自带的预测接口,它会处理下载和推理 results = model.predict(source='https://ultralytics.com/images/bus.jpg', save=True) # 3. 查看结果 for result in results: # 打印检测到的物体信息(类别、置信度、坐标) print("检测到的物体:") for box in result.boxes: cls_id = int(box.cls[0]) # 类别ID conf = float(box.conf[0]) # 置信度 xyxy = box.xyxy[0].tolist() # 边界框坐标 [x1, y1, x2, y2] print(f" 类别: {result.names[cls_id]} ({cls_id}), 置信度: {conf:.2f}, 坐标: {xyxy}") # 结果图片会保存在 'runs/detect/predict' 目录下 print(f"结果图片已保存至: {result.save_dir}")运行这个脚本:
python test_detect.py第一次运行会下载yolo26n.pt模型文件(很小)。你会看到终端打印出检测到的物体(比如公交车、人),并且在当前目录下生成一个runs/detect/predict/文件夹,里面保存了画好检测框的图片。
这个步骤的目的:确认从模型加载、推理到结果保存的整个基础链路是通的。如果这里就报错,那问题大概率出在环境(如缺少依赖、网络问题无法下载模型)。
2.2 理解预测接口的关键参数
model.predict()是主要的推理接口,有几个参数直接影响结果和性能:
source: 输入源。可以是图片路径(‘image.jpg’)、图片目录(‘path/to/images’)、视频路径、摄像头索引(如0表示电脑自带摄像头)、或 URL。imgsz: 输入图片的尺寸。模型会先将图片缩放到这个尺寸再处理。默认是 640。增大(如 1280)可能提升对小物体的检测精度,但会显著增加显存消耗和计算时间。conf: 置信度阈值。只有置信度高于这个值的检测框才会被保留。默认 0.25。调高(如 0.5)可以减少误检,但可能漏掉一些不太确定的物体。iou: 用于非极大值抑制(NMS)的 IoU 阈值。YOLO26 虽然支持无 NMS 推理,但某些模式或后处理仍会用到。默认 0.7。调低可以让重叠的框更容易被保留。device: 指定运行设备。如device=‘cuda’(GPU),device=‘cpu’,或device=0(指定第一块 GPU)。save: 是否保存带标注的结果图片/视频。save_txt: 是否将检测结果保存为 YOLO 格式的标签文件(.txt)。show: 是否实时显示结果(对于图片会弹出窗口)。
例如,如果你想用 GPU 并以更高置信度阈值检测一个视频:
results = model.predict(source=‘video.mp4’, imgsz=1280, conf=0.5, device=‘cuda’, save=True)2.3 处理批量图片和视频
单张图片跑通后,处理批量文件就很简单了,只需改变source参数:
# 检测一个文件夹下的所有图片 results = model.predict(source=‘path/to/your/images/’, save=True) # 检测视频文件 results = model.predict(source=‘path/to/video.mp4’, save=True) # 使用电脑摄像头进行实时检测 results = model.predict(source=0, show=True, conf=0.5)对于批量处理,重点关注输出目录的组织。默认情况下,每次运行predict都会在runs/detect/下创建一个新的递增文件夹(如predict,predict2,predict3)。如果你需要更规范的管理,可以在代码中指定保存路径。
跑通推理之后,你可能会想,这个模型能检测的类别(COCO 数据集的 80 类)不够用,我需要检测特定的东西,比如安全帽、车牌、某种零件。这就到了核心环节:准备自己的数据并训练模型。
3. 准备自己的数据集:80% 的时间花在这里,但方法对了就简单
训练自己的 YOLO 模型,数据集的质量和格式是关键。很多人卡在这一步,不是因为标注工具难用,而是没理解 YOLO 需要的格式和目录结构。
3.1 数据标注:选对工具和格式
你需要为每张训练图片生成一个对应的.txt标注文件。文件内容格式如下:
<class_id> <x_center> <y_center> <width> <height>这些坐标是归一化的,即相对于图片宽度和高度的比例值,范围在 0 到 1 之间。
例如,一张图片img1.jpg的标注文件img1.txt内容可能是:
0 0.5 0.5 0.2 0.3 1 0.3 0.7 0.1 0.1这表示有两个物体:类别 0 和类别 1,以及它们中心点的归一化坐标和宽高。
标注工具推荐:
- LabelImg: 老牌工具,支持 PascalVOC 和 YOLO 格式。适合初学者,但功能较基础。
- Roboflow: 在线平台,功能强大,支持协作、数据增强、版本管理,并提供免费额度。对于个人和小项目非常友好,能直接导出成 Ultralytics 可用的格式。
- CVAT: 功能强大的开源在线标注系统,适合团队和复杂任务。
- Ultralytics 提供的标注工具: 如果你已经安装了
ultralytics,可以使用其内置的yolo命令行工具进行辅助标注和数据集管理。
关键建议:如果你是第一次做,我强烈建议先用Roboflow。上传图片,在线标注,然后它可以直接生成一个包含data.yaml的、结构正确的数据集压缩包,省去了自己组织目录和写配置文件的麻烦。
3.2 数据集目录结构
无论你用哪种工具,最终本地数据集文件夹应该组织成如下结构:
your_custom_dataset/ ├── data.yaml # 数据集配置文件(最重要!) ├── train/ │ ├── images/ # 训练集图片 │ │ ├── img1.jpg │ │ └── ... │ └── labels/ # 训练集标签(.txt文件) │ ├── img1.txt │ └── ... ├── val/ │ ├── images/ # 验证集图片 │ └── labels/ # 验证集标签 └── test/ # 测试集(可选) ├── images/ └── labels/data.yaml文件内容示例:
# 数据集路径(可以是绝对路径,也可以是相对于训练脚本运行目录的相对路径) path: /home/user/datasets/your_custom_dataset # 根目录 train: train/images # 训练集图片路径(相对于 path) val: val/images # 验证集图片路径(相对于 path) test: test/images # 测试集路径(可选) # 类别数量 nc: 3 # 你的数据集中有多少个类别 # 类别名称列表(顺序必须与标注文件中的 class_id 对应) names: [‘helmet’, ‘person’, ‘vehicle’] # 例如:0=helmet, 1=person, 2=vehicle注意:train/images和train/labels中的文件名(不含扩展名)必须一一对应。例如img1.jpg对应img1.txt。
3.3 划分训练集、验证集和测试集
一个常见的错误是把所有数据都用来训练。你需要将数据划分为:
- 训练集 (Training Set): 用于模型学习,通常占 70%-80%。
- 验证集 (Validation Set): 用于在训练过程中评估模型,调整超参数,防止过拟合,通常占 10%-15%。
- 测试集 (Test Set): 用于最终评估模型在“未见过的数据”上的性能,通常占 10%-15%。
你可以手动划分,也可以用代码(如sklearn.model_selection.train_test_split)自动划分。Roboflow 等工具在导出时可以直接帮你划分好。
数据集准备好后,就可以开始训练了。这是最耗时的部分,但命令很简单。
4. 训练自定义模型:命令简单,但参数和监控是重点
训练的命令只有一行,但背后的参数选择和训练过程监控决定了最终模型的成败。
4.1 启动训练的基本命令
假设你的数据集配置文件路径是datasets/custom/data.yaml,你想基于yolo26s.pt(小型模型)进行训练,训练 100 个周期(epochs),图片尺寸为 640x640,批量大小为 16:
from ultralytics import YOLO # 加载一个预训练模型(推荐从官方模型开始微调) model = YOLO(‘yolo26s.pt’) # 开始训练 results = model.train( data=‘datasets/custom/data.yaml’, # 数据集配置文件路径 epochs=100, # 训练周期数 imgsz=640, # 输入图片尺寸 batch=16, # 批量大小(根据GPU显存调整) device=‘cuda’, # 使用GPU,如果是CPU则改为 ‘cpu’ name=‘my_custom_train’, # 本次训练的实验名称 pretrained=True, # 使用预训练权重(强烈建议) optimizer=‘auto’, # 优化器,默认是 SGD lr0=0.01, # 初始学习率 lrf=0.01, # 最终学习率因子 (lr0 * lrf) weight_decay=0.0005, # 权重衰减,防止过拟合 )运行这个脚本,训练就会开始。Ultralytics 会自动处理数据加载、模型前向传播、损失计算、反向传播和权重更新。
4.2 关键训练参数详解与调整策略
epochs: 整个数据集被完整训练一遍的次数。太少欠拟合,太多可能过拟合。对于小型数据集(几百张图),100-300 个 epochs 可能足够;大型数据集可能需要更多。建议:先跑 50-100 个 epochs 看损失曲线下降情况。batch:最重要的参数之一,直接影响显存和训练稳定性。如果出现CUDA out of memory,首先调小batch(如 16 -> 8 -> 4)。batch越大,每次参数更新基于的样本越多,理论上梯度估计更准,但需要更多显存。imgsz: 训练时输入的图片尺寸。默认 640。增大尺寸(如 1280)可以提升模型对小物体的检测能力,但会平方级增加计算量和显存消耗。通常先在 640 上训练,评估后再考虑增大。device: 指定设备。多 GPU 训练可以用device=[0, 1](使用第 0 和第 1 块 GPU)。workers: 数据加载的线程数。用于将数据从磁盘加载到内存/GPU。对于 SSD 硬盘,可以设置得高一些(如 8);对于机械硬盘或网络存储,设置太高可能导致瓶颈。默认值通常够用。pretrained: 是否加载预训练权重。一定要设为True。从零开始训练 YOLO 需要海量数据和计算资源,微调预训练模型是实际项目中的标准做法。optimizer,lr0,lrf,weight_decay: 这些是优化相关的超参数。对于初学者,建议先用optimizer=‘auto’(默认是 SGD)和默认的学习率。如果训练过程中损失不下降或波动很大,再考虑调整学习率(lr0,通常调小,如 0.01 -> 0.001)。
4.3 如何监控训练过程与评估模型
训练开始后,你会在终端看到实时日志,包括当前 epoch、GPU 内存使用、各项损失(box_loss, cls_loss, dfl_loss)等。但更直观的是 Ultralytics 自动生成的训练可视化报告。
所有训练结果(模型权重、日志、图表)都会保存在runs/detect/my_custom_train/(你指定的name)目录下。重点关注以下几个文件:
results.csv: 包含每个 epoch 的详细指标(损失、精度、召回率等)的表格文件。- 可视化图表(在
runs/detect/my_custom_train/目录下):train_batchX.jpg: 训练批次的可视化,检查数据增强是否正常。val_batchX_labels.jpg/val_batchX_pred.jpg: 验证集的真实标签和模型预测对比。results.png:最重要的图,包含了训练和验证集的各种损失曲线以及性能指标(精度 P、召回率 R、mAP@0.5、mAP@0.5:0.95)随 epoch 的变化。
如何判断模型训练得好不好?
- 看损失曲线 (
results.png中的损失图):训练损失和验证损失都应该随着 epoch 增加而稳步下降,并最终趋于平缓。如果验证损失在某个点后开始上升,而训练损失继续下降,说明过拟合了(模型只记住了训练数据,泛化能力差)。 - 看性能指标 (
results.png中的 P, R, mAP 图):- 精度 (Precision, P): 模型预测为正的样本中,真正为正的比例。越高说明误检越少。
- 召回率 (Recall, R): 所有真实为正的样本中,被模型正确预测出来的比例。越高说明漏检越少。
- mAP (mean Average Precision): 综合衡量精度和召回率的指标,是目标检测的核心评估指标。
mAP@0.5指 IoU 阈值为 0.5 时的 mAP;mAP@0.5:0.95是在多个 IoU 阈值(0.5到0.95,步长0.05)下的平均值,要求更严格。 - 理想情况是 P、R 和 mAP 都随着训练逐渐升高并稳定在高位(例如 mAP@0.5 > 0.8 通常算不错)。
训练完成后,你会得到一系列模型权重文件,保存在runs/detect/my_custom_train/weights/目录下:
best.pt: 在验证集上表现最好的权重(根据你指定的评估指标,默认是 mAP@0.5)。last.pt: 最后一个 epoch 训练完的权重。
接下来,用你的best.pt去进行推理测试,就像我们最开始用yolo26n.pt那样:
model = YOLO(‘runs/detect/my_custom_train/weights/best.pt’) results = model.predict(source=‘your_test_image.jpg’, save=True)如果测试结果满意,你可能还想把模型用起来,比如部署到服务器或边缘设备。这就涉及到模型导出和优化。
5. 模型导出与部署:从 PyTorch 到生产环境
训练好的.pt文件是 PyTorch 格式,虽然方便在 Python 环境中使用,但在某些生产环境(如 C++ 应用、移动端、嵌入式设备)中,可能需要转换成其他格式。
5.1 支持的导出格式
Ultralytics YOLO 支持一键导出多种格式:
from ultralytics import YOLO model = YOLO(‘runs/detect/my_custom_train/weights/best.pt’) # 导出为 ONNX 格式(广泛支持的中间格式) model.export(format=‘onnx’) # 导出为 TensorRT 引擎(NVIDIA GPU 上极致优化) model.export(format=‘engine’, device=0) # 需要提前安装 tensorrt # 导出为 OpenVINO IR 格式(Intel CPU/GPU 优化) model.export(format=‘openvino’) # 导出为 CoreML 格式(Apple 设备) model.export(format=‘coreml’) # 导出为 TorchScript(PyTorch 的序列化格式) model.export(format=‘torchscript’)导出后,你会在best.pt的同目录下得到相应的文件,如best.onnx、best.engine等。
5.2 不同格式的特点与选择
| 格式 | 主要用途 | 优点 | 缺点/注意事项 |
|---|---|---|---|
| ONNX | 跨平台部署的中间格式,可被众多推理引擎(ONNX Runtime, TensorRT, OpenVINO)加载。 | 通用性强,便于模型交换和优化。 | 需要目标平台有对应的 ONNX 运行时。 |
| TensorRT | 在 NVIDIA GPU 上实现最低延迟和最高吞吐量推理。 | 性能极致优化,支持 FP16/INT8 量化。 | 依赖特定 GPU 架构和 TensorRT 版本,转换稍复杂。 |
| OpenVINO | 在 Intel CPU、集成显卡、独立显卡上优化推理。 | 对 Intel 硬件优化好,易于部署。 | 主要针对 Intel 平台。 |
| CoreML | 部署到 Apple 生态系统(iOS, macOS, iPadOS)的设备上。 | 苹果设备原生支持,性能好。 | 仅限 Apple 平台。 |
| TorchScript | 在非 Python 环境中运行 PyTorch 模型(如 C++ LibTorch)。 | 保留 PyTorch 动态图特性,适合研究。 | 性能通常不如 ONNX+专用推理引擎。 |
选择建议:
- 快速测试和跨平台:先导出为ONNX,然后用 ONNX Runtime 推理,这是兼容性最好的路径。
- NVIDIA GPU 服务器生产环境:研究TensorRT,它能带来显著的性能提升。
- Intel CPU 服务器或边缘设备:使用OpenVINO。
- 移动端 App (iOS/Android):iOS 用CoreML,Android 可以考虑NCNN或TFLite(需额外转换步骤)。
5.3 使用导出的模型进行推理
以 ONNX 格式为例,你可以使用 ONNX Runtime 进行推理,完全脱离 PyTorch 环境:
import cv2 import numpy as np import onnxruntime as ort # 1. 加载 ONNX 模型 session = ort.InferenceSession(‘best.onnx’, providers=[‘CUDAExecutionProvider’, ‘CPUExecutionProvider’]) # 优先用GPU # 2. 预处理图片(需要模拟原始 YOLO 模型的预处理) def preprocess(image_path, img_size=640): img = cv2.imread(image_path) img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 保持长宽比进行 resize 和 pad # ... (此处需要实现与训练时一致的预处理逻辑,包括归一化等) # 最终得到一个 [1, 3, img_size, img_size] 的 numpy 数组 return img # 3. 运行推理 input_img = preprocess(‘test.jpg’) input_name = session.get_inputs()[0].name outputs = session.run(None, {input_name: input_img}) # 4. 后处理 outputs (解析边界框、置信度、类别) # ... (需要根据模型输出结构进行解析,YOLO26 的输出格式可能与之前版本不同)注意:直接使用导出的模型进行推理,需要你自己实现与训练时完全一致的预处理和后处理逻辑。Ultralytics 的YOLO类封装了这些步骤,但如果你换用其他推理引擎,这部分就需要自己处理。这也是部署中的一个难点。
对于大多数应用,如果你仍在 Python 环境下,继续使用YOLO(‘best.pt’)或YOLO(‘best.onnx’)是最简单的,因为 Ultralytics 已经帮你处理好了前后处理。
6. 避坑指南与进阶路线
最后,结合我自己的经验,总结几个最容易踩坑的地方和后续深入学习的方向。
6.1 训练过程中的常见问题与排查
损失为 NaN 或突然变得巨大:
- 可能原因:学习率 (
lr0) 设置过高;数据标注有严重错误(如坐标超出 0-1 范围);批次大小 (batch) 太小,导致梯度不稳定。 - 排查:首先检查数据标注,用
yolo val命令验证数据集格式是否正确。然后大幅降低学习率(如从 0.01 降到 0.001)再试。确保batch大小不是 1。
- 可能原因:学习率 (
mAP 一直很低(比如低于 0.3):
- 可能原因:数据集质量差(图片模糊、标注不准、类别不平衡);训练数据量太少;模型复杂度与任务不匹配(比如用太小的模型
yolo26n去学非常复杂的场景)。 - 排查:可视化训练批次的图片 (
train_batchX.jpg),看数据增强是否合理,标注框是否准确。增加训练数据量。尝试更大的模型(如yolo26m或yolo26l)。
- 可能原因:数据集质量差(图片模糊、标注不准、类别不平衡);训练数据量太少;模型复杂度与任务不匹配(比如用太小的模型
过拟合(训练集指标好,验证集指标差):
- 现象:训练损失持续下降,验证损失在某个 epoch 后开始上升。
- 解决:增加数据增强(在
data.yaml中配置或使用augment=True参数);使用正则化技术,如增加weight_decay;采用早停(patience参数,当验证指标一段时间不提升时停止训练);减少模型复杂度或使用 Dropout(如果模型支持)。
训练速度非常慢:
- 排查:确认
device设置正确(是cuda而不是cpu)。检查workers参数,如果数据在机械硬盘上,workers设置过高可能导致 IO 阻塞。检查 CPU 或 GPU 是否达到高负载。
- 排查:确认
6.2 从入门到精通的进阶路线
如果你已经跑通了自定义训练,可以按以下路径深入:
模型改进:
- 更换骨干网络:YOLO 的骨干网络(Backbone)负责特征提取。了解不同版本(如 YOLO26s, m, l, x)在速度和精度上的权衡。
- 注意力机制:尝试集成 SE、CBAM、CA 等注意力模块到模型中,提升对关键特征的关注。
- 损失函数优化:研究 CIOU、EIOU、SIOU 等边界框损失函数,以及 Focal Loss 等分类损失函数,看是否能提升你的任务指标。
数据工程:
- 数据增强策略:系统学习 Mosaic、MixUp、CutMix 等高级数据增强技术,并合理配置其参数。
- 解决类别不平衡:对于某些类别样本极少的情况,使用过采样、欠采样或 Focal Loss。
- 自动化数据清洗:利用模型预测结果对原始数据集进行半自动清洗和修正。
部署优化:
- 模型量化:学习 FP16 半精度和 INT8 整数量化,在不显著损失精度的情况下大幅减少模型体积、提升推理速度。
- 模型剪枝:移除网络中冗余的通道或层,得到更小、更快的模型。
- 知识蒸馏:用一个大模型(教师模型)指导一个小模型(学生模型)的训练,让小模型获得接近大模型的性能。
扩展任务:
- 实例分割:YOLO 不仅可以检测框,还能输出每个物体的像素级掩码(mask)。
- 姿态估计:检测人体的关键点。
- 多目标跟踪 (MOT):在视频中持续跟踪多个物体,赋予每个物体唯一的 ID。
- 分类与 OBB:图像分类和定向边界框检测。
学习这些高级主题,最好的方法是阅读 Ultralytics 的官方文档、研究 GitHub 上相关项目的源码,并在自己的具体项目上实践和调试。不要只看教程,动手跑代码、改参数、分析结果,才是进步最快的方式。
回到开头,那“100 集教程”的价值,在于它可能系统性地覆盖了从原理到实战的方方面面。但真正要掌握 YOLO,你需要的是:一个配好的环境、一份干净的数据、一段能跑起来的训练代码,以及不断根据结果反馈进行调整的耐心。把这篇文章里的步骤走通,你就已经跨过了从“知道”到“做到”最关键的那道门槛。剩下的,就是在具体项目中,带着问题去深入探索每一个模块了。