为什么需要自己训练模型

现在用的 rfdetr-nano 是通用模型,它见过很多普通的 person,所以能直接检测行人。

但如果你的场景比较特殊,比如:

  • 监控摄像头很高
  • 人很小
  • 夜间画面
  • 雨天
  • 工厂制服
  • 红外摄像头
  • 低清视频
  • 人被遮挡
  • 只想检测某个区域的人

通用模型可能不够稳。这时候你训练自己的模型,就是告诉它:

在我的真实画面里,什么样子算 person。


一、训练集的收集

1. 好数据长什么样

好的数据包括:

  • ☀️ 白天
  • 🌙 晚上
  • ☁️ 阴天
  • 💡 强光
  • 🌑 背光
  • 🚶 近处的人
  • 🔭 远处的人
  • 🧍 正面的人
  • 🧍‍♂️ 侧面的人
  • 🧍‍♀️ 背面的人
  • 👥 多人
  • 👤 少人
  • 🙈 遮挡
  • 🏚️ 空场景

注意:空场景也要放。 比如没有人的走廊、没有人的路口,这能帮助模型学会——没有人时不要乱框。

2. 什么图片不适合放太多

不要只收集”特别漂亮、特别清楚”的图片。比如全是这种:

  • 正面站着的人
  • 光线很好
  • 人很大
  • 背景简单

这样训练出来的模型在真实监控里可能不好用。

真实场景通常是:

  • 模糊
  • 遮挡
  • 角度奇怪
  • 光线变化

所以训练数据要接近真实使用场景

3. 图片数量怎么理解

新手可以这样分阶段:

阶段 数量 目标
练流程 20~50 张 学会上传 → 标注 → 生成版本 → 训练 → 测试
做初版模型 100~300 张 看自定义模型是否比通用模型更适合你的场景
做稳定模型 500 张以上 更适合真实项目

但数量不是唯一标准。100 张高质量、有代表性的图,可能比 1000 张重复截图更有用。

4. 类别怎么定

你现在做行人检测,最简单的类别就是:person

不要一开始设计太复杂。比如不要马上分:

❌ 太复杂 ✅ 新手推荐
adult / child person(一个类别)
worker / visitor
male / female
front_person / back_person

新手第一版建议:只标 person。等你真的有需求,再考虑加类别。


二、标注规则

1. 标注规则最重要

目标检测训练需要你给每个人画框。

正确画法

框住整个人:头、身体、手臂、腿、脚。框要尽量贴近人,但不要切掉身体。

遮挡的人怎么标

如果一个人被车、柱子、别人挡住,只能看到上半身,通常就框住可见部分

关键:整个数据集保持一致。 不要有的图片框全身,有的只框头,有的框一大片背景。不一致会让模型混乱。

2. 每个人都要标

如果一张图里有 10 个人,就要标 10 个框。不要只标最明显的那几个。

否则模型会学到一个错误规律:有些人可以忽略 → 导致漏检。

3. 负样本也很重要

负样本就是没有目标的图片。比如你做行人检测,可以放:

  • 没有人的街道
  • 没有人的走廊
  • 空办公室
  • 空停车场
  • 只有车没有人
  • 只有树和路牌没有人

这样模型会学会不要把其他东西误判成人。

4. 标注规则精简版

  1. 类别统一 — 只用一个类别 person,不要混用 humanpeoplepedestrian
  2. 每个人都要标 — 一张图里有几个人,就标几个框,不要漏标
  3. 框要贴紧 — 框住人的可见身体部分,不要框太大,也不要切掉头、手、脚
  4. 遮挡的人 — 只框可见部分,不要脑补被挡住的身体
  5. 小人/模糊人 — 肉眼能确认是人,就标;看不清、不确定,就不标。规则要保持一致
  6. 空场景也要保留 — 没有人的图可以作为负样本,帮助模型减少误检

训练前检查

抽查一部分图片,确认:

  • ✅ 没有漏标
  • ✅ 框足够贴近
  • ✅ 类别都是 person
  • ✅ 遮挡和小目标规则一致

标注要完整、贴紧、一致。


三、数据集划分

训练时通常分三份:

数据集 作用 简单理解
Train(训练集) 模型真正拿来学习的图片 看 Train,学习什么是 person
Valid(验证集) 训练过程中检查模型表现 看模型有没有越训越好,有没有过拟合
Test(测试集) 训练完成后的最终考试 看模型遇到没见过的新图片效果怎么样

常见比例:

  • 70% Train
  • 20% Valid
  • 10% Test

新手先用默认划分就可以。


四、Dataset Version 是什么

你上传和标注图片后,还不能直接训练。你要先生成一个 Dataset Version

它可以理解为:一次固定的数据快照,里面包含:

  • 哪些图片参与训练
  • 每张图的标注
  • Train / Valid / Test 划分
  • 预处理
  • 数据增强

以后你改了标注、加了图片,就要生成新的版本再训练。


五、预处理和增强

新手第一版建议简单点:

预处理

  • Auto-Orient:修正图片方向
  • Resize:统一图片尺寸

增强(第一版少量使用)

  • 水平翻转
  • 亮度变化
  • 轻微模糊
  • 轻微旋转

但不要乱加。比如你的摄像头永远不会倒着拍人,就不要加太夸张的旋转。增强应该模拟真实世界可能出现的变化。


六、训练模型时选什么

对于你的行人检测,推荐训练 RF-DETR

模型 适用场景
RF-DETR Nano 实时跑摄像头,速度优先
RF-DETR Small 速度和准确率平衡
RF-DETR Medium 更重视准确率,不太在乎速度

七、核心要点总结

自己训练模型的核心不是”点 Train”,而是:

  1. 📷 收集真实场景图片
  2. ✏️ 认真标注每个目标
  3. 📐 保持标注一致
  4. 📦 生成 Dataset Version
  5. 🚀 用 RF-DETR 训练
  6. 🧪 再用真实图片测试