2、标注基础:视频标注与图片标注的区别、关键概念(帧、目标、轨迹、ID)
大家好,我是老张。今天咱们聊聊视频标注的基础。
说实话,很多刚入行的朋友觉得标注嘛,不就是画框框?图片上画框,视频里也画框,能有多大区别?
嗯,我当年也是这么想的。直到第一次接了个视频跟踪项目,被甲方爸爸打回来三次……那滋味,真不好受。
今天我就把踩过的坑,一次性说清楚。
一、图片标注 vs 视频标注:到底差在哪?
先看一张对比表,一目了然:
| 对比维度 | 图片标注 | 视频标注 |
|---|---|---|
| 核心任务 | 识别并框出物体 | 识别 + 持续跟踪物体 |
| 数据量 | 单张独立 | 连续帧序列(30fps = 每秒30张) |
| 标注对象 | 静态目标 | 动态目标 + 轨迹 + ID |
| 时间维度 | 无 | 有(前后帧关联) |
| 常见错误 | 漏标、框不准 | ID跳变、轨迹断裂、目标消失 |
| 标注效率 | 较高(单张处理) | 较低(需逐帧或插帧) |
说白了,图片标注是「拍照片」,视频标注是「拍电影」。照片里人不动,你可以慢慢画。电影里人一直在动,你不仅要画,还得保证每一帧里「同一个人」的框始终跟着他走。
二、四个关键概念:帧、目标、轨迹、ID
这四个词,是视频标注的「四梁八柱」。我一个个讲,每个都带实战经验。
1. 帧(Frame)
帧就是视频里的一张张图片。视频本质上是快速播放的图片序列。
举个例子:一段10秒的视频,30fps,那就是300帧。
标注时怎么处理?
- 关键帧标注: 只标注第1帧、第30帧、第60帧……中间帧靠算法插值。
- 逐帧标注: 每一帧都手动标注。精度最高,但累死人。
- 我个人的习惯: 对于运动缓慢的目标(比如行人走路),每5帧标一次;对于快速运动的目标(比如赛车),每1-2帧标一次。这个经验值,是我在多个项目中试出来的。
2. 目标(Object)
目标就是你要跟踪的东西。可以是一个人、一辆车、一只猫,甚至是一个零件。
标注目标时要注意:
- 类别明确: 是「行人」还是「骑自行车的人」?是「轿车」还是「SUV」?分类越细,模型学得越准。
- 遮挡处理: 目标被遮挡了怎么办?我一般会标「可见部分」,并在属性里注明「遮挡程度:50%」。
- 边界清晰: 框要刚好包住目标,不要留太多空白,也不要切掉目标的身体/车尾。
我记得有一次,团队里新来的同学把「行人」和「骑电动车的人」都标成了「人」。结果模型训练出来,看到骑电动车的人就识别成「人+车」两个目标……嗯,这就是分类不细的后果。
3. 轨迹(Trajectory)
轨迹就是目标在视频中移动的路径。说白了,把每一帧里目标的中心点连起来,就是轨迹。
轨迹标注的核心要求:
- 连续性: 目标从第1帧出现,到第100帧消失,中间不能断。断了就叫「轨迹断裂」。
- 平滑性: 相邻帧之间,目标的位置变化应该是连续的。如果第5帧在左边,第6帧突然跳到右边,那就是标注错误。
- 完整性: 目标从进入画面到离开画面,全程都要有标注。
4. ID(身份标识)
ID是视频标注里最容易出错的地方。每个目标都有一个唯一的ID,从出现到消失保持不变。
ID的规则:
- 唯一性: 同一视频中,每个目标一个ID,不能重复。
- 稳定性: 目标从第1帧到第100帧,ID始终是同一个。
- 不可复用: 目标离开画面后,它的ID就作废了。新出现的目标要用新ID。
常见的ID错误:
- ID跳变: 同一个目标,第1-50帧是ID=1,第51帧突然变成了ID=2。模型会以为来了个新目标。
- ID交换: 两个人交叉走过,标注员搞混了,把A的ID给了B,B的ID给了A。这是最坑的错误,模型会学出「灵魂互换」的效果。
- ID丢失: 目标还在画面里,但标注员忘了标,导致ID中断。
三、知识体系结构图
下面这张图,把视频标注的核心逻辑串起来了:
四、实战中的常见问题
讲完理论,说说实战。我整理了几个高频问题:
- 目标短暂消失又出现,ID怎么处理?
比如一个人走到树后面,3秒后又走出来。我的做法是:保持原ID不变,中间被遮挡的帧标注「遮挡」属性。这样模型就知道:这个人没丢,只是暂时看不见。
- 多个目标外观相似,怎么区分?
比如一群穿同样校服的学生。我建议:利用运动轨迹来区分。即使外观一样,每个人的运动路径是不同的。标注时先标第1帧,然后逐帧跟踪,利用位置变化来区分。
- 标注工具卡顿怎么办?
嗯,这个问题我遇到过。视频标注工具吃内存,尤其是长视频。我的建议是:把长视频切成10-20秒的片段,分段标注。既减轻工具压力,也方便多人协作。
好了,这一章的内容就到这里。记住这四个概念:帧、目标、轨迹、ID。它们是视频标注的基石,也是你后面学习跟踪算法的基础。
公众号:蓝海资料掘金营,微信deep3321