清晨上班途中,我注意到小区主路行人稀少,便萌生了一个问题:小区居民普遍的出行时间究竟是几点?基于此疑问,我启动了一个基于计算机视觉的目标检测实验,尝试以数据验证日常观察。
系统架构与模型选择
硬件配置
- Raspberry Pi + HQ Camera(IMX477R模块)
- 25mm定焦镜头(等效全画幅焦距约138mm)

设备架设在窗台,以10秒间隔拍摄覆盖小区主路的照片,图像保存格式为JPEG。
检测目标与模型对比
在模型选择阶段,我首先尝试了多模态视觉语言模型(Vision-Language Models, VLM),如开源社区活跃的 LLAVA 1.6 与 LLAMA3.2-Vision。通过Prompt Engineering实现了JSON结构输出。然而,这类大模型在 Mac mini(M2)上本地运行时推理速度远低于实时需求,资源消耗高,部署效率低,最终被放弃。

鉴于性能与精度的权衡,我回归至 YOLO 模型,选择了精度与速度兼顾的 YOLOv12x 模型进行目标检测。
起初检测目标仅限于行人(person
类),后期扩展至包含狗(dog
)和自行车(bicycle
)两个类别,充分利用 YOLO 模型在通用目标检测上的优势。
数据采样与推理流程
由于树莓派自身算力有限,YOLOv12x 无法直接运行,故搭建了基于局域网的推理后端服务:
- 树莓派端通过libcamera-still采集图像,借助crontab和scp命令并通过 Wi-Fi 实时传输至本地 Mac mini,文件名包含时间戳;
- Mac 端使用PIL执行图像裁剪,仅保留包含主路部分的区域;
- 利用 YOLOv12x 模型对图像进行推理,输出三个类(
person
、dog
、bicycle
)的检测结果; - 合并文件名中提取出的时间戳,将结果数据写入数据库,便于后续统计与可视化分析。
数据的存储结构与处理逻辑
本实验采用轻量级数据库 SQLite 进行本地数据存储,理由如下:
- 无需独立服务进程,适合边缘计算场景;
- 表结构灵活,便于快速迭代设计;
- 支持标准SQL查询语法,便于数据汇总、导出与可视化对接。
- 方便导入 Superset 进行可视化分析。
工作流程概述
- 图像传入推理模型进行检测;
- 图像文件名写入
counts
表,记录原始信息; - 各目标类别数量更新到对应行记录中,完成结构化标注。
核心代码实现
def detect_objects(image_name):
results = model([image_name], imgsz=1024, conf=0.4, verbose=False)
for result in results:
result_json = result.to_json()
name_counts = count_name_values(result_json)
c.execute('INSERT INTO counts (image_name) VALUES (?)', (image_name,))
count_id = c.lastrowid
for name, count in name_counts.items():
c.execute(f'UPDATE counts SET "{name}" = ? WHERE id = ?', (count, count_id))
conn.commit()
return name_counts
images_dir = "images"
jpg_list = [f for f in os.listdir(images_dir) if f.endswith('.jpg')]
for jpg in tqdm(jpg_list, desc="Processing images"):
detect_objects(jpg)
conn.close()
统计结论
基于对近一周样本数据的聚合分析,得出以下初步结论:
- 工作日 8:00–9:00 与 17:00–19:00 是行人高峰时段;
- 周末行人分布更均匀,10:00 和 17:00 前后出现两个峰值,12:00–13:00 达到最低(仅占总量约4%);
- 遛狗行为在工作日集中于 8:00 前后,周末则呈现全天分布,总体数量更多;
- 骑行活动在周末尤为活跃,呈明显上升趋势。

一周的数据的折线图

周六日每10分钟的统计

一周时间内每10分钟的总狗数
实验总结
本项目初步验证了以轻量级硬件+本地推理结合YOLOv12x模型对小区主路目标流量进行检测的可行性:
- 系统运行稳定,数据采集与处理全流程自动化;
- 可区分人、狗、自行车三类目标,白天条件下识别精度可接受;
- 日志数据已累计超 14,000 条,支撑行为规律分析。
主要技术瓶颈仍在于:
- 无法处理低照度场景;
- 重复统计导致误差;
- 目标尺寸小,缺乏足够特征支撑更复杂的行为识别。
技术挑战与现实制约
夜间光照不足
在自然光条件下模型效果良好,但夜间光线不足,HQ Camera 即使在高ISO下仍无法捕获清晰目标。
多帧重复统计
在连续拍摄过程中,目标可能在多帧中被重复识别。由于图像中目标较小,无法有效提取特征进行 ReID(再识别),简单聚类或时序推断难以完成精准去重。人工抽查样本显示,模型统计结果约为真实数量的两倍,重复统计问题显著。
作为一次基于现实好奇心驱动的实验性项目,该系统已基本完成初步验证目标。项目已开源:https://github.com/li-yang-cn/RaspberryPi-YOLO-Object-Detection (代码的实现与本文存在部分差异)
如果您对此类“低成本行为观测系统”感兴趣,欢迎讨论交流。