Aven_ · 3 天前 · 山东

SiRider S1 芯擎开发板之客流跟踪统计分析系统

上篇介绍了SiRider S1 芯擎开箱体验,这次分享下在AI智能终端之客流统计分析系统研发过程中一点体会。 下面为一段客流统计分析系统在多场景实测视频剪辑。

https://www.bilibili.com/vide...

一、在AI智能终端之客流跟踪统计分析系统

应用背景

随着商业智能化的发展,AI智能终端已成为推动各行各业智能化转型的重要力量。SiRider S1芯擎工业开发板,凭借其强大的计算能力和丰富的接口资源,成为研发高性能AI智能终端的理想选择。传统的客流统计方法存在精度低、实时性差、无法有效跟踪个体等问题。因此,基于AI技术的客流跟踪统计分析系统应运而生,通过目标检测、目标跟踪和行人属性分析技术,实现对客流的精准识别、跟踪和深度统计分析。

需求分析

  1. 精度高:要求系统能够准确识别并跟踪个体,减少误报和漏报。
  2. 实时性:系统需实时处理视频流,提供即时的客流跟踪和统计分析结果。
  3. 智能化:通过AI算法自动识别客流特征,如行为模式、停留时间、轨迹以及行人属性(如性别、年龄、服装类型等),为决策提供智能支持。
  4. 可扩展性:系统应具备良好的扩展性,以适应不同应用场景和未来技术升级。
  5. 稳定性与可靠性:确保在复杂多变的环境中稳定运行,提供可靠的数据支持。

二、主要应用场景

1. 居民区/学校

  • 安全管理:通过监控居民区出入口、公共区域的客流情况,及时发现异常行为,如徘徊、尾随等,提高居民区的安全性。
  • 社区活动分析:分析居民在公共区域的活动情况,如活动热点区域、活动时间段等,为社区活动策划、设施布局提供数据支持。
  • 特殊人群关注:通过对居民属性的分析,识别出老年人、儿童等特殊人群,为他们提供额外的安全关注和照顾。

2. 公共安全

  • 大型活动场所:实时监控人流密度,预防踩踏事故。
  • 景区/公园:分析游客流量和属性特征,合理规划游览路线。

3. 零售业

  • 商场/超市:分析顾客流量、停留热点区域、顾客行为模式及属性特征(如性别、年龄分布),优化商品布局,提升顾客购物体验。
  • 连锁店:跨门店比较客流数据,制定针对性的营销策略,提高销售效率。

4. 公共交通

  • 地铁站/火车站:监控乘客流量,分析乘客属性特征,优化列车班次,减少拥堵,提升乘客满意度。
  • 公交站:分析乘客上下车情况,结合乘客属性优化公交线路,提高运营效率。

三、SiRider S1芯擎工业开发板介绍

SiRider S1芯擎工业开发板是一款高性能的嵌入式计算平台,集成了先进的处理器、丰富的接口资源及强大的图形处理能力。其特点包括:

  • 高性能处理器:提供强大的计算能力,满足复杂AI算法的运行需求。
  • 丰富接口:支持多种摄像头、传感器等外设连接,便于构建完整的智能监控系统。
  • 低功耗设计:适合长时间运行的工业应用场景。
  • 稳定性与可靠性:经过严格测试,确保在恶劣环境下稳定运行。
    info.png

perf.png

通过我们的遥测工具采集性能数据可以看出,在持续近 20 小时 高负载 工作条件下,S1芯擎工业开发板的温度始终保持在 45-47摄氏度,表现很稳定。

四、相关基础知识

1. 目标检测

目标检测旨在从图像或视频中识别出感兴趣的目标(如行人、车辆等),并确定其位置和大小。在本系统中,采用 YOLOX 算法进行目标检测,因其具有高精度、高速度和易于部署的特点。

行人检测

2. 目标跟踪

目标跟踪是指在连续的视频帧中,对特定目标进行持续识别和定位。本系统采用基于深度学习的 ByteTrack 算法进行目标跟踪,因其具有实时性好、鲁棒性强的特点。ByteTrack 算法通过结合目标检测的结果和卡尔曼滤波进行目标状态的预测和更新,实现对目标的持续跟踪,而且每个检测到的目标都会分配一个唯一的编号。

f4.png

3. 行人属性分析

行人属性分析是计算机视觉领域的一个重要分支,旨在从图像或视频中提取出行人的各种属性信息,如性别、年龄、服装类型等。这些属性信息对于理解行人的行为模式、分析客群特征等具有重要意义。在本系统中采用基于深度学习的行人属性分析算法 PULC,实现对行人属性的准确识别。

行人属性

4. 数据处理与展示

将目标检测、目标跟踪和行人属性分析的结果进行汇总和处理,生成直观的统计分析报告和可视化界面。这些报告和界面可以帮助用户更好地了解客流情况,优化运营策略和安全管理。以下为客流跟踪统计分析系统内置的多维度数据分析图表展示。

24小时事件.png

24小时行人.png

一周行人.png

一周事件.png

五、实现流程

1. 硬件环境

  • 连接摄像头:SiRider S1芯擎工业开发板使用RTSP协议获取摄像头视频流。
  • 配置网络环境:开发板所在网络需要能访问摄像头。

2. 软件配置

  • 安装开发工具:在PC上安装交叉编译工具链、IDE(如VSC)。
  • 配置AI模型:将训练好的 YOLOX 目标检测模型、ByteTrack 目标跟踪算法和 [PULC] 行人属性分析算法部署到SiRider S1开发板上。
  • 由于目前对 周易Z2 AIPU 推理代码适配集成还未全部完成,本客流跟踪统计分析系统使用C++和ONNX(INT8量化)模型实现。目前AI模型在CPU推理下大约可处理四五路视频流,当NPU适配完成整体处理能力定将成倍提升,等AIPU适配完成后会再来更新。

3. 客流跟踪分析系统主要部分

因为 YOLOXByteTrack 、[PULC] 等模型的C++推理代码在 Github 有很多,大家可以自行去检索,在此只帖出主要部分。

3.1 视频流处理流程

    // 伪代码:视频流获取与处理
    VideoCapture cap("rtsp://admin:12345@112.x.x.90:8020/Streaming/Channels/101"); // 获取监控摄像头视频流
    if (!cap.isOpened()) {
        cerr << "无法打开视频流" << endl;
        return -1;
    }
    
    Mat frame;
    while (true) {
        cap >> frame; // 读取视频帧
        if (frame.empty()) break;
        
        // 调用YOLOX模型进行目标检测
        vector<DetectionResult> detections = detectObjects(frame);
        
        // 调用ByteTrackSORT算法进行目标跟踪
        vector<TrackedObject> trackedObjects = trackObjects(detections, previousTrackedObjects);
        
        // 对跟踪到的行人进行属性分析
        for (auto& trackedObject : trackedObjects) {
            trackedObject.attributes = analyzeAttributes(trackedObject.boundingBox, frame);
        }
        
        // 处理跟踪和属性分析结果,如统计人数、绘制轨迹、
        //分析客群属性如性别、年龄段、穿着、表情等
        // ...
        
        imshow("Video", frame); // 显示处理后的视频帧
        
        // 更新上一帧的跟踪对象
        previousTrackedObjects = trackedObjects;
        
        if (waitKey(30) >= 0) break; // 按下任意键退出循环
    }

3.2 YOLOX 目标检测

    // 伪代码:YOLOX目标检测
    vector<DetectionResult> detectObjects(Mat& frame) {
        // 将图像转换为模型输入格式
        // 一般RGB2BGR、MEAN/STD、缩放等
        
        // 调用YOLOX模型进行推理
        vector<DetectionResult> results = yolov5Model.infer(inputImage);
        
        // 返回检测结果
        return results;
    }

3.3 ByteTrack 目标跟踪

    // 伪代码:ByteTrack目标跟踪
    vector<TrackedObject> trackObjects(vector<DetectionResult>& detections, vector<TrackedObject>& previousTrackedObjects) {
        // 初始化卡尔曼滤波器
        // ...
        
        // 对每个检测到的目标进行匹配和跟踪
        for (const auto& detection : detections) {
            // 尝试匹配已跟踪的对象
            // ...
            
            // 如果匹配成功,更新卡尔曼滤波器
            // ...
            
            // 如果匹配失败,创建新的跟踪对象
            // ...
        }
        
        // 处理丢失的跟踪对象(如超出视野范围)
        // ...
        
        // 返回更新后的跟踪对象列表
        return trackedObjects;
    }

3.4 PULC 行人属性分析

    // 伪代码:行人属性分析函数
    map<string, string> analyzeAttributes(Rect& boundingBox, Mat& frame) {
        // 裁剪出行人区域图像
        Mat personImage = frame(boundingBox);
        
        // 调用行人属性分析模型进行推理
        // 把结果写入数据库,可以对某时间段的行人进行多维分析
        map<string, string> attributes = attributeModel.infer(personImage);
        
        // 返回属性分析结果
        return attributes;
    }

4. 系统优化与调试

  • 性能优化:通过调整模型参数、优化代码结构、对拉流、推理、结果渲染等使用多线程提高系统处理速度和准确性。
  • 稳定性测试:在不同场景下对系统进行长时间运行测试,确保系统稳定可靠。
  • 精度优化:通过与实际客流数据和行人属性进行对比,调整合适的阈值,提升系统的精度和准确性。

六、展望

本文基于SiRider S1芯擎工业开发板的AI智能终端之客流跟踪统计系统的研发流程,通过目标检测、目标跟踪和行人属性分析技术,系统能够实现对客流的精准识别、跟踪和深度统计分析,为商业运营提供有力的数据支持。未来我们将继续探索芯擎工业开发板在AI智能终端领域的应用,为各行各业提供更加全面、深入的解决方案。

推荐阅读
关注数
0
文章数
4
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息