在图像中找到目标并用框/轮廓标出位置和类别,是自动驾驶、安防监控、工业质检等 CV 项目的基石。比分类复杂得多——不仅要认出"是什么",还要标出"在哪里"。
在图像/视频上为每个目标绘制几何框(矩形/多边形/关键点),并标注其类别
自动驾驶(行人/车辆/信号灯)、安防(人脸/行为)、医疗影像、工业缺陷检测等
★★★☆☆ 中级,需要画框+贴标签+处理遮挡密集场景,耗时约为分类的 5-20 倍
最经典的检测标注:用 (x, y, width, height) 四个值框出目标位置。标注快、计算简单,但只标注"在哪"不标注"形状"。
沿目标轮廓描点形成多边形,精确勾勒不规则形状。可细分为实例分割(每个目标独立)和语义分割(按类别填色)。
在目标上标注预定义的关键点位置(如人体的 17 个关节点),用于姿态估计、手势识别、动作分析。
在 2D 图像上标注带深度信息的立方体框(长宽高+旋转角),用于自动驾驶 3D 检测、AR/VR 场景理解。需配合 LiDAR 点云或相机标定参数。
确定要检测哪些类别、每个类别的精确边界(人露出半个身子要不要框?远处小目标要不要标?),产出 detection_guide.md。
按格式准备图像,选择标注工具(桌面/Web/云端)
检测标注工作量远大于分类,AI 预标注 几乎是标配
导出标注结果,转换为模型训练格式
| 工具 | 类型 | 费用 | 检测标注 | 亮点 |
|---|---|---|---|---|
| LabelImg ▼ | 桌面 GUI | 免费 | ✅ 强 | YOLO/VOC 直出,检测入门首选 |
| Labelme ▼ | 桌面 GUI | 免费 | ✅ 强 | 矩形框/多边形/关键点全支持 |
| CVAT ▼ | Web 服务 | 免费 | ✅ 极强 | AI 预标注+视频追踪,Intel 开源 |
| Roboflow ▼ | 云端 SaaS | 免费+付费 | ✅ 强 | 标注+训练+部署一站式 |
# === 1. 目录结构(YOLO 格式标准布局) === dataset/ ├── images/ │ ├── train/ # 000001.jpg, 000002.jpg ... │ └── val/ ├── labels/ │ ├── train/ # 000001.txt, 000002.txt ... │ └── val/ └── data.yaml # 类别配置文件 # === 2. data.yaml 内容 === path: ./dataset train: images/train val: images/val nc: 3 # 类别数 names: [<'person', 'car', 'dog'>] # === 3. Python 检查标注质量 === import os, glob from collections import Counter # 统计每类目标数量 label_dir = "dataset/labels/train" class_counts = Counter() for txt_file in glob.glob(os.path.join(label_dir, "*.txt")): with open(txt_file) as f: for line in f: cls_id = int(line.strip().split()[0]) class_counts[cls_id] += 1 print("各类别目标数:", dict(class_counts)) # {0: 1500, 1: 800, 2: 200} ← dog 是长尾类,需要增强 # === 4. 训练 YOLOv8 === from ultralytics import YOLO model = YOLO("yolov8n.pt") # 加载预训练权重 model.train( data="dataset/data.yaml", epochs=100, imgsz=640, batch=16 ) # 训练完 → runs/detect/train/weights/best.pt