【AI编程】yolo人流量统计: 如何知道同一个人的进入和离开
首先
用 YOLO 只能“检测到有人”,不能直接知道“同一个人进还是出”。要做人流量统计,需要加 目标跟踪 tracking。
核心流程
YOLO 检测人
每一帧检测出 person 框。跟踪算法给每个人分配 ID
常用:- ByteTrack
- DeepSORT
例如画面里某个人会被持续标记为 ID=12。
设置一条/多条虚拟线或区域
比如门口画一条线:外部区域
-------- 统计线
内部区域根据同一个 ID 的移动方向判断进出
记录这个人的中心点轨迹:ID=12: y 从 300 -> 260 可能是进入
ID=15: y 从 260 -> 310 可能是出去判断逻辑通常是:
if old_center 在门外 and new_center 在门内:
enter += 1if old_center 在门内 and new_center 在门外:
exit += 1同一个 ID 只统计一次
每个跟踪 ID 维护状态,避免一个人在门口徘徊被重复计数。counted_ids = set()
if track_id not in counted_ids and crossed_line:
counted_ids.add(track_id)
关键点是:不是 YOLO 判断同一个人,而是 tracker 判断同一个人。
如果只是单摄像头门口统计,推荐:
YOLOv26/YOLOv11 + ByteTrack
如果人容易被遮挡、丢失后又出现,推荐:
YOLO + DeepSORT
因为它们会结合外观特征 ReID,能更好地判断“是不是同一个人”。
实际工程
实际工程里一般这样判断:
检测人 -> 分配 track_id -> 记录轨迹 -> 判断是否跨越门线 -> 根据方向统计进入/出去
下一个疑问点
如果是多个摄像头之间判断同一个人,那就需要 行人重识别 ReID,只靠 YOLO 和普通跟踪不够。
