
说到客流分析,很多人的第一反应还是“数人数”。
设备装在入口,对着门口,进来一个记一个,出去一个再记一个。
但真正的AI客流分析系统并不是这么工作的。
如果只需要统计某一帧画面里有几个人,目标检测模型已经足够。
问题在于,客流统计面对的是连续发生的运动目标。
一个人会连续出现在几十甚至几百帧画面中;两个人可能同时进入;有人会走到入口又转身;有人会从一个区域移动到另一个区域。
因此,系统真正需要处理的是:
人在哪里、什么时候出现、往哪里移动、是不是同一个人。
一、第一层识别:人体目标
系统首先需要从传感器数据中找到人体。
二维视觉里,通常得到一个矩形框:
┌──────────┐
│ │
│ 人体 │
│ │
└──────────┘
同时会输出一个置信度。
例如:
Person
Confidence = 0.98
这一步解决的是:
“这里有没有人?”
但还没有解决:
“这个人是谁?”
也没有解决:
“他刚才是不是已经被统计过?”
所以Detection只是第一步。
二、第二层识别:同一个人
假设一个人从入口走过。
摄像头可能连续获得:
Frame 1
Frame 2
Frame 3
...
Frame 60
如果每次检测都算一个人,最后会得到60个人。
显然不对。
因此系统需要给目标建立临时ID:
Frame 1 → ID 21
Frame 2 → ID 21
Frame 3 → ID 21
...
Frame 60 → ID 21
这就是Tracking。
Tracking的核心任务可以简单理解为:
让算法知道连续画面中的目标是不是同一个目标。
三、第三层识别:这个人怎么移动
当目标有了ID以后,系统就可以记录它的位置变化。
例如:
P1 → P2 → P3 → P4 → P5
这些点连起来,就是目标轨迹。
如果目标从入口外侧移动到入口内侧,系统可以判断:
IN
反过来则可能判断:
OUT
如果目标接近入口之后又返回原方向,则可能产生:
Turn-back
所以客流统计中的“进店”和“出店”,本质上并不是简单检测,而是:
轨迹 + 方向 + 空间区域
共同产生的事件。
四、为什么3D数据很有用
普通图像主要记录:
X、Y
也就是二维位置。
双目视觉可以进一步获得:
Z
也就是深度。
双目系统通过左右摄像头之间的视差计算深度。
基本公式:
Z = fB/d
其中:
Z:目标距离
f:焦距
B:双目基线
d:视差
这样,一个人体目标就不再只是图像里的一个矩形框。
系统可以获得更多空间信息。
例如:
X = 横向位置
Y = 纵向位置
Z = 深度距离
对于入口区域的多人同时通过、前后遮挡等情况,深度信息可以作为目标区分的额外依据。
五、一个人停留了多久,也可以从轨迹计算出来
如果系统记录了目标进入某个区域和离开该区域的时间,就可以计算停留时间。
公式很简单:
Dwell Time = Exit Time − Entry Time
例如:
进入:10:12:30
离开:10:14:18
停留时间:
108秒
因此,停留时间不是额外“测量”出来的数据。
它本身就是目标轨迹和时间戳计算出来的结果。
六、AI还能识别年龄和性别吗
可以。
但这里要把几个概念分开。
人体检测回答:
这里有没有人?
人体跟踪回答:
这个人是不是刚才那个目标?
属性识别回答:
这个目标属于什么属性类别?
例如:
ID 21
Gender: Female
Age Group: 25-35
这里的Age Group是年龄段分类,不意味着系统能够知道一个人的精确年龄。
同样,Gender Classification也属于属性分类。
它与真实身份识别是两个不同问题。
七、ReID又是什么
如果一个场景只有一个摄像头,Tracking通常可以解决连续跟踪。
但如果场景扩大到多个区域:
Camera A
↓
Camera B
问题就变成:
A摄像头里的ID 21,是不是B摄像头里的ID 08?
这时可以使用ReID。
ReID,即Person Re-Identification,可以把人体目标转换成特征向量,再计算不同目标之间的相似度。
流程可以表示为:
人体
↓
特征提取
↓
Embedding
↓
Similarity Matching
↓
目标关联
因此ReID解决的是:
跨时间、跨区域的目标关联问题。
八、AI客流分析为什么不是简单加减法
假设入口一天产生:
1000次Entry
这1000次记录并不一定等于1000个独立消费者。
因为其中可能存在:
员工
配送人员
物流人员
重复进入
短时间往返
如果系统需要计算有效客流,就需要对这些事件进行进一步处理。
典型链路是:
Raw Traffic
↓
Detection
↓
Tracking
↓
Classification
↓
ReID
↓
Event Filtering
↓
Effective Traffic
所以有效客流不是简单的:
总人数 − 一个固定比例
而是建立在目标识别和事件判断基础上的数据处理结果。
九、为什么系统需要边缘AI
如果所有原始视频都传到云端:
Camera
↓
Network
↓
Cloud
↓
AI Processing
↓
Result
视频传输会占用大量带宽,同时网络状态也会影响实时处理。
边缘AI则把部分模型直接放到设备端:
Camera
↓
Edge AI
↓
Detection
↓
Tracking
↓
Event
↓
Structured Data
云端收到的可以直接是:
{
"entry": 23,
"exit": 18,
"dwell": 126
}
而不是完整的视频流。
这也是目前边缘视觉系统常见的架构之一。
十、系统最终输出的其实是一组事件
一个完整的目标事件可能包含:
Track ID
Timestamp
Position
Direction
Age Group
Gender
Dwell Time
Event Type
例如:
{
"track_id": 21,
"timestamp": "2026-09-24 10:32:18",
"direction": "IN",
"gender": "female",
"age_group": "25-35",
"dwell_time": 108
}
多个目标事件经过聚合后,才变成我们通常看到的客流报表。
所以最终看到的“143人”,实际上已经经过了多个计算过程。
十一、技术指标应该怎么看
判断一个AI客流系统,不能只看宣传页面上的一个“准确率”。
至少需要区分:
Detection Accuracy
目标检测准确率。
Counting Accuracy
最终人数统计准确率。
Tracking Accuracy
目标连续跟踪能力。
ReID Accuracy
跨区域目标关联能力。
Latency
从数据采集到结果输出的延迟。
MTBF
长期运行稳定性。
另外还应该观察系统在不同环境下的表现:
逆光
暗光
遮挡
高密度人群
多人并行
快速移动
目标交叉
例如一个设备在实验室单人测试中达到很高准确率,并不能直接说明它在复杂入口环境中也具有相同表现。
技术指标必须结合测试条件理解。
十二、把整个系统串起来
如果把前面的技术模块全部连接起来,可以得到一条完整链路:
Sensor
↓
Person Detection
↓
Depth / Position
↓
Object Tracking
↓
Trajectory
↓
Direction
↓
Attribute Recognition
↓
ReID
↓
Event Recognition
↓
Filtering
↓
Aggregation
↓
Traffic Data
从这个角度看,AI客流分析系统实际上是在持续处理:
目标 + 时间 + 空间 + 属性 + 事件
而不是单纯处理“人数”。
这也是为什么现代客流分析系统的技术重点已经从传统的计数模块,逐渐扩展到3D感知、目标跟踪、ReID、属性识别、边缘推理和事件分析。
最终输出虽然还是一个数字,但这个数字背后是一整套实时视觉数据处理流程。