YOLO
YOLO 全称为 You Only Look Once,是一类流行的物体检测和图像分割模型
YOLO 本身是指一类模型,但有时也会把官方推出的 Python 库 Ultralytics 称为 YOLO。在这种语境下,YOLO 完全可以算是一个深度学习框架。它本身是基于 PyTorch 实现的,提供了很多模型和功能,接口非常简单
Miniforge
Section titled “Miniforge”请先完成 Miniforge 的安装
然后创建一个 python 3.12 的环境(3.12 是目前 ultralytics 已验证兼容性的最高版本,不过我用 3.13 还没遇到过问题)并激活
# pytorch 可以换成别的名字mamba create -n pytorch python=3.12mamba activate pytorch后续所有命令都在该环境中运行,请确保你激活了正确的环境。
PyTorch
Section titled “PyTorch”在刚激活的环境里完成 PyTorch 的安装
官方快速入门手册 推荐使用 pip 安装
pip install ultralytics下载完成后,可通过如下方式测试是否可用
# 如果没有报错,那就是导入成功了python -c "import ultralytics"还可以通过如下方式测试是否可用
yolo checks该命令会打印出非常详细的安装信息。可以简单检查下有没有问题(其中 CUDA:0 意思是第 0 号显卡有可用的 CUDA,并不意味着有问题)。
最后你还可以实际运行个示例来测试功能是否正常
yolo predict model=yolo11n.pt source='https://ultralytics.com/images/bus.jpg'该命令会使用官方预训练的模型 yolo11n.pt 对 https://ultralytics.com/images/bus.jpg 这张图片进行预测。模型和图片会下载到当前工作目录,而运行的结果默认保存在当前工作目录的 runs 里。你可以检查下图片是否被正确预测。
目前我没用到这个库,因此暂时作为可选项。事实上这并不是加速必需的,因为 PyTorch 已经自带了 CUDA 运行时。这个库的作用是让你自己写深度学习框架的时候可以加速。
进入 官网 后会看到 NVIDIA 提供了多种安装方式。
鉴于前面的库都使用 pip 安装,此处也使用 pip。不过英伟达在 PyPI 上注册了多个假包来告诉你没有安装正确的版本,且官网的 pip 命令下载的就是假包。
目前 PyPI 上这么多的版本中,只有 nvidia-cudnn-cu11、nvidia-cudnn-cu12、nvidia-cudnn-cu13 这几个不是假包。请根据显卡的 CUDA 版本下载正确的包。查看 CUDA 版本的方式可参考 PyTorch 的安装 这部分。
# 将 nvidia-cudnn-cu1x 替换为与 CUDA 对应的版本pip install nvidia-cudnn-cu1x同样地,下载完成后,可通过如下方式测试是否可用
# 如果没有报错,那就是导入成功了python -c "import cudnn"VSCode
Section titled “VSCode”推荐使用 VSCode 来编写 Python 代码,因为 我喜欢 官方力荐且制作了 相关扩展
可以在 VSCode 中安装 Ultralytics Snippets 这个扩展。顾名思义,此扩展就是提供了一些代码片段,不安装并不影响正常使用。
YOLO 有两种用法,分别是 Python 和 CLI
Python
Section titled “Python”通过 from ultralytics import YOLO 来导入 YOLO 库。
该库的接口很多,建议阅读 官方文档。
YOLO CLI 的基本语法如下
yolo TASK MODE ARGS其中
- TASK (可选)是以下之一
detect/segment/classify/pose/obb。如果未明确传递,YOLO 将尝试推断 TASK。detect是目标检测,segment是语义分割,其余的我没用过。 - MODE (必需)是以下之一
train/val/predict/export/track/benchmark。train是训练,val是验证,predict是预测,export是导出,benchmark是基准测试,剩下的那个我没用过。 - ARGS (可选)是任意数量的自定义
arg=value键值对,例如imgsz=320,用于覆盖默认值。这部分较为复杂,不同的 TASK 配置差别极大,建议参考 官方配置说明。
更详细的参考请阅读 官方文档
建议新建一个文件夹,并以如下方式命名和使用子文件夹
文件夹YOLO
文件夹bin/ 二进制文件
- …
文件夹data/ 原始数据
- …
文件夹datasets/ 标注后的数据集
- …
文件夹docs/ 文档
- …
文件夹runs/ 运行结果
- …
文件夹scripts/ 脚本代码
- …
文件夹weights/ 权重模型
- …
然后在 VSCode 中按 ctrl + k, ctrl + o,并选择此文件夹打开。
打开文件夹后在 VSCode 中按 ctrl + shift + ~ 新建终端,激活正确的环境并运行
yolo settings datasets_dir="datasets"之后 YOLO CLI 就会从 datasets 中去寻找数据集,从网上下载的示例数据集也会保存在这个目录里。
YOLO 的训练数据集建议按如下方式组织结构
文件夹example
文件夹images
文件夹train/
- …
文件夹val/
- …
文件夹labels
文件夹train/
- …
文件夹val/
- …
分别把训练集的图片和标签放入 images/train 和 labels/train 里,验证集则是 images/val 和 labels/val。注意图片和标签的文件名必须相同。
然后把 example 这个文件夹放入 datasets 目录下,并在项目根目录新建一个 example.yaml 文件,填写上如下内容
path: example
train: images/trainval: images/val
names: 0: low 1: medium # 省略剩余的标签接着运行如下命令
yolo detect train data='example.yaml' model=yolo11n.pt epochs=10 imgsz=640这会运行目标检测的模型训练,其中数据集是 datasets/example,在 yolo11n.pt 模型的基础上训练,并以 epochs=10 imgsz=640 覆盖默认参数值。更详细的说明请参考 官方文档 - 训练。
训练的结果保存在 runs/detect 目录下。
将你要预测的图片放入 data 文件夹里,并运行如下命令
yolo segment predict model=yolo11n-seg.pt source='data' imgsz=320这会运行语义分割的图片预测,其中数据来源是 data,而模型权重使用 yolo11n-seg.pt,并以 imgsz=320 覆盖默认参数值。更详细的说明请参考 官方文档 - 预测。
训练的结果保存在 runs/segment 目录下。