有效客流数据是如何计算出来的?从AI目标检测到转化率计算的数据链路
摘要
传统客流统计通常只输出进店人数和出店人数,但零售场景中的原始人员轨迹并不能直接作为消费者数据使用。员工、配送人员、重复进出等目标会造成统计噪声。
本文从数据处理链路出发,拆解有效客流的计算过程,包括目标检测、轨迹关联、员工识别、重复目标过滤、事件生成、数据聚合,以及最终的转化率计算。
1. 客流统计真正难的不是“数人”
一个基础客流系统可以用非常简单的方式完成统计。
假设入口设置一条虚拟检测线。
人员从左向右穿越:
IN +1
人员从右向左穿越:
OUT +1
这就是最基础的客流统计。
问题在于:
穿过检测线的人,不一定是消费者。
例如:
消费者 → Customer
员工 → Staff
快递员 → Courier
配送人员 → Delivery
供应商 → Supplier
重复进入 → Re-entry
如果系统直接将所有目标计入客流:
Total Traffic = Customer + Staff + Courier + Re-entry + Other
那么这个值并不能直接作为消费者流量。
有效客流需要在原始计数之后增加一层数据过滤:
Raw Detection
↓
Object Detection
↓
Multi-Object Tracking
↓
Trajectory Analysis
↓
Staff Filtering
↓
Re-ID / Duplicate Filtering
↓
Entry Event
↓
Effective Traffic
这才是完整的数据链。
2. 系统架构
一个典型的AI客流分析系统可以拆成五层。
┌──────────────────────────────┐
│ Camera Layer │
│ RGB / Stereo / ToF / IR │
└──────────────┬───────────────┘
↓
┌──────────────────────────────┐
│ Detection Layer │
│ Person Detection │
│ Head / Shoulder Detection │
└──────────────┬───────────────┘
↓
┌──────────────────────────────┐
│ Tracking Layer │
│ ID Assignment │
│ Trajectory │
│ Direction │
└──────────────┬───────────────┘
↓
┌──────────────────────────────┐
│ Filtering Layer │
│ Staff Filter │
│ Re-ID │
│ Duplicate Removal │
│ Invalid Object Filter │
└──────────────┬───────────────┘
↓
┌──────────────────────────────┐
│ Analytics Layer │
│ Traffic / Conversion / Dwell │
│ Heatmap / Time Distribution │
└──────────────────────────────┘
这里最容易被忽略的是Tracking Layer。
检测模型只能回答:
当前画面里有没有人?
Tracking需要回答:
当前这一帧的人,和上一帧是不是同一个人?
没有轨迹关联,就很难处理重复目标。
3. 目标检测不是客流统计
目标检测输出通常类似:
Frame ID: 10231
Object 01
Class: person
Confidence: 0.96
BBox: [x1,y1,x2,y2]
Object 02
Class: person
Confidence: 0.91
BBox: [x1,y1,x2,y2]
此时系统只知道画面中有两个目标。
还不知道:
- 谁进入了门店
- 谁离开了门店
- 是否是同一个人
- 是否为员工
- 是否已经统计过
因此,目标检测精度不能直接等同于客流统计精度。
这两个指标属于不同层级。
4. 从Detection到Tracking
Tracking通常需要为目标建立临时ID:
Frame 100
Person A → Track ID 17
Frame 101
Person A → Track ID 17
Frame 102
Person A → Track ID 17
系统由此得到一条轨迹:
T17 = {P100, P101, P102, ...}
再根据轨迹判断移动方向。
例如虚拟线:
Entry Line
────────────┼────────────
│
OUT ←│→ IN
如果轨迹从区域A进入区域B:
A → B = IN
如果从B返回A:
B → A = OUT
这一步解决的是方向问题。
5. 为什么还需要Re-ID?
单纯Tracking通常只在连续视频帧中维持目标ID。
当目标短时间消失后重新出现,系统可能重新分配ID。
例如:
Person A
↓
Track ID 21
↓
遮挡
↓
Track lost
↓
重新检测
↓
Track ID 35
实际上:
ID 21 = ID 35
但系统如果不知道这一点,就可能把同一个消费者当成两个目标。
Re-ID的目的,就是利用目标外观特征、轨迹信息、时间信息等建立重新关联。
可以抽象为:
Similarity =
Appearance Similarity
+ Spatial Similarity
+ Temporal Constraint
实际工程中通常还会设置时间窗口和空间阈值,避免无限制匹配。
6. 员工过滤属于数据清洗层
员工数据是零售客流系统中的典型噪声。
例如员工一天可能经过入口几十次。
如果每次都计入客流:
Raw Traffic = Customer + Staff
转化率会被压低。
一种常见思路是建立员工特征库:
Employee Feature
↓
Embedding
↓
Feature Database
↓
Similarity Matching
↓
Staff / Non-Staff
需要注意:
员工识别准确率和客流统计准确率不是同一个指标。
工程测试时应该分别记录:
Counting Accuracy
Staff Recognition Accuracy
Re-ID Accuracy
Direction Accuracy
否则一个指标无法解释整个系统性能。
7. 有效客流的计算
经过过滤后,可以建立一个简化模型:
Effective Traffic
=
Valid Entry Events
-
Staff Events
-
Duplicate Events
-
Invalid Events
例如:
Raw Entry = 1000
Staff = 80
Duplicate = 60
Invalid = 20
则:
Effective Traffic
= 1000 - 80 - 60 - 20
= 840
这里的840才适合进入后续消费者转化分析。
8. 为什么转化率会因此发生变化?
假设POS系统记录:
Orders = 120
如果使用原始客流:
Conversion
= 120 / 1000
= 12%
如果使用有效客流:
Conversion
= 120 / 840
≈ 14.29%
销售订单没有变化。
变化的是分母。
所以:
客流误差会直接传递到转化率。
这也是有效客流最核心的技术价值。
9. 建议测试哪些技术指标?
一个完整的客流系统不应该只测试“准确率”。
建议至少建立以下指标:
| 指标 | 含义 |
|---|---|
| Counting Accuracy | 人数统计准确率 |
| Direction Accuracy | 进出方向准确率 |
| Tracking ID Accuracy | 轨迹关联准确率 |
| Re-ID Accuracy | 重复目标识别准确率 |
| Staff Recognition | 员工识别准确率 |
| False Positive Rate | 无效目标误报率 |
| False Negative Rate | 漏检率 |
| Latency | 单帧或事件处理延迟 |
| FPS | 视频处理帧率 |
不同部署环境还需要分别测试:
Daylight
Low Light
Backlight
Crowded Scene
Occlusion
Multiple Entry
Narrow Entrance
Wide Entrance
只有在不同场景下测试,才能知道系统到底在哪些条件下产生误差。
10. 结论
有效客流不是一个简单的计数结果。
它实际上是一个数据处理结果:
采集
↓
检测
↓
跟踪
↓
方向判断
↓
员工过滤
↓
重复识别
↓
事件生成
↓
数据聚合
↓
有效客流
因此,判断一个AI客流系统是否可靠,不能只看宣传中的单一准确率。
真正应该观察的是完整的数据链路,以及每一层的误差来源。
对于需要计算门店转化率的系统来说,有效客流是连接视觉数据与销售数据的重要中间层。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)