ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

基于物联网的人体行为识别系统的设计与实现 | ESP32-CAM+豆包视觉大模型+UDP视频流 | X603171

基于物联网的人体行为识别系统的设计与实现 | ESP32-CAM+豆包视觉大模型+UDP视频流 | X603171 项目编号X603171| 采集端 ESP32-WROVER-DEV | 视频合成 SimpleVideoServer MJPEG | 智能识别 豆包多模态视觉大模型摘要本文介绍一套面向无人值守场景的人体行为识别系统。系统按「端—云—用」三层组织以 ESP32 系列 Wi-Fi 摄像头节点作为前端采集单元节点只负责取帧把 JPEG 序列图像逐帧推送至服务端 8004 端口服务端由开源项目 SimpleVideoServer 汇总各节点上传的帧、合成 MJPEG 视频通道后再分发同时按配置的帧数抽取「连续序列图像」提交给多模态视觉大模型由模型输出行走、静止、跌倒、跑步等行为结论识别记录、终端信息与运行参数统一持久化到 MySQL通过 Bootstrap 构建的 Web 管理端与 web-view 承载的微信小程序完成实时查看、历史检索与参数配置。文末给出整机联调阶段的实测数据。技术栈速览层次选型版本 / 形态采集端主控ESP32-WROVER-DEVESP32 双核、板载 PSRAMArduino IDE 开发图像传感器摄像头模组方案标注 OV3660由主控 IO 阵列挂载无线通信2.4 GHz Wi-Fi站点模式实测接入热点 8266wifi视频合成SimpleVideoServer开源项目接收逐帧图像并合成 MJPEG 流服务端jeesite Spring BootJava 技术栈接口调度与识别任务编排数据库MySQL识别记录、终端信息与配置项管理端Bootstrap响应式后台五个业务页面小程序原生小程序 web-view加载 H5 页面三个页签智能识别豆包多模态视觉大模型Doubao-1.5-vision-pro-32k后台可配置模型名与密钥设备通信UDP 逐帧上行 HTTP 接口图像上行与业务查询分流一、项目基本情况系统按「端—云—用」的结构组织采集端只负责取帧与上行服务端负责视频流合成、智能判定与数据持久化管理与查看端负责呈现与配置。三者之间以两条明确的链路相连接口边界清晰任一环节替换都不需要改动其余两部分。与把识别计算下沉到端侧的方案相比本设计把全部推理放在服务端采集节点不承担任何识别运算因而可以采用成本更低、功耗更小的硬件同时视频流由服务端统一合成后对外分发服务端部署在公网即可实现远程访问摆脱了依赖内网穿透的限制。1.1 技术架构服务端建立在 jeesite 平台之上采用 Java 与 Spring Boot 实现业务与调度MySQL 承担数据持久化管理端界面由 Bootstrap 构建。系统不自行训练识别模型而是调用多模态视觉大模型服务端把序列图像与提示词一并提交模型返回的是自然语言形式的行为结论而不是单纯的分类标签。层次技术选型主要职责应用层Bootstrap 管理端、微信小程序web-view 加载 H5实时查看、历史检索与参数配置智能分析层豆包多模态视觉大模型Doubao-1.5-vision-pro-32k由连续序列图像判定人体行为并给出文字结论业务服务层jeesite Java Spring Boot接口调度、识别任务编排与配置项管理视频合成层SimpleVideoServer开源项目接收各节点逐帧图像合成 MJPEG 视频流并分发数据存储MySQL识别记录、终端信息与配置项的持久化感知采集层ESP32 系列 Wi-Fi 摄像头节点Arduino IDE 开发序列图像采集与逐帧上行1.2 硬件构成硬件由一个 Wi-Fi 摄像头节点构成主控负责图像采集调度与无线通信图像传感器负责连续取帧二者之间通过数据线直连不额外占用调试串口。节点的全部对外能力只有一路 Wi-Fi 上行因此整机结构简单现场只需保证供电与无线覆盖即可运行。器件型号 / 参数在本系统中的作用主控模组ESP32-WROVER-DEVESP32 双核、板载 PSRAM图像采集调度、无线通信与上行控制图像传感器摄像头模组方案标注为 OV3660连续采集可见光序列图像供模型判定行为无线通信2.4 GHz Wi-Fi站点STA模式接入局域网并向服务端逐帧推送图像供电与稳压Type-C 输入 AMS1117-3.3 稳压5 V 输入转换为 3V3供主控与外设使用串口下载CH340C USB 转串口 自动下载电路固件烧录与串口日志输出DTR / RTS 控制 EN 与 IO0状态指示LED1 / LED2S8050 三极管驱动运行状态与串口收发指示注意口径说明本项目提供的《项目介绍》文本中主控记为 stm32f103、摄像头记为 OV2640而项目原理图的文件名为 ESP32-WROVER-DEV、方案导图标注为「esp32cam ov3660」开发工具为 Arduino IDE。三者互有出入本稿以原理图与方案导图为准硬件实物以演示视频中的实拍画面为据见图 5相关口径在《发布说明》中一并留档。1.3 软件与运行环境软件项说明服务端框架jeesite 平台 / Java / Spring Boot数据库MySQL管理端Bootstrap 响应式后台五个业务页面小程序原生小程序以 web-view 控件加载 H5 页面智能识别豆包多模态视觉大模型模型名称与密钥均在后台配置项中维护视频合成开源项目 SimpleVideoServer服务端合成 MJPEG 视频流固件开发Arduino IDE网络接入采集节点以站点模式接入实测热点名称为 8266wifi二、系统架构设计系统自下而上划分为感知采集层、传输与合成层、智能分析层与应用层层间以明确的接口解耦。下图给出各层的组成与层间关系。▲ 图 1 系统总体架构图▲ 图 2 系统功能结构图从功能边界看硬件端只负责采集与上行服务端只负责合成、识别与持久化管理端与小程序只负责呈现与配置。管理端的五个业务页面与小程序的两个数据页构成使用者实际接触到的全部入口。2.1 视频传输与合成链路采集节点上电后以站点模式接入无线局域网随后向服务端的 8004 端口持续逐帧推送 JPEG 图像。服务端并不把节点直接暴露给浏览器而是由 SimpleVideoServer 汇总各节点上传的帧合成 MJPEG 视频通道后再分发给浏览器与小程序。这一设计带来两点收益。其一节点侧无需自行提供 HTTP 服务与视频流——ESP32-CAM 常见的 CameraWebServer 示例在持续推流时开销较大改为「只管拍照、不停上传」后端侧负担显著下降其二视频流的出口位于服务端服务端部署在公网即可实现远程访问。链路承载数据方向与方式图像帧上行JPEG 序列图像采集节点 → 服务端逐帧推送至 8004 端口视频流下行MJPEG 视频通道服务端 → 浏览器 / 小程序服务端合成后分发业务接口识别记录、配置项管理端 ↔ 服务端HTTP 请求响应2.2 智能分析与判定规则识别环节由服务端调用豆包多模态视觉大模型完成。系统并不逐帧调用模型而是按「连续序列图像」的方式组织输入参数项 index_list_size 控制一次提交的帧数实测配置为 2即每次提交 2 张相互关联的序列图像由模型结合前后帧的动作变化判断行为。这比单帧分类更能区分「静止」与「跌倒」这类姿态相近但过程不同的状态。参数名称参数项实测值模型名称model_namedoubao-1-5-vision-pro-32k-250115模型 keysk已配置本稿作遮挡处理提示词tsc请帮我分析 2 张关联的序列图片中的人……首页显示的记录数index_list_size3是否开始识别image_detection_switchtrue判定规则分三种情形均可在实测记录中直接观察到画面内无人员时返回「无人员在摄像头范围内」画面内仅有 1 人时返回具体行为实测出现「行走」「静止」「跌倒」「跑步」四类画面内多于 1 人时返回「监测到多人无法判断结果」明确不给出具体行为避免误判。值得注意的是两类边界情形同样作为一条识别记录落库。这样处理的好处是前端列表不会把「模型主动放弃判定」与「服务未运行」混为一谈运维人员可以据此区分是识别策略生效还是链路中断。2.3 硬件系统设计硬件部分以 ESP32-WROVER-DEV 开发板为主控板载 Type-C 供电、CH340C USB 转串口、AMS1117-3.3 稳压电路与自动下载电路。自动下载电路由 DTR、RTS 两路信号经三极管网络控制 EN 与 IO0配合串口工具的时序即可免按键进入下载模式图像传感器由主控的 IO 阵列挂载与调试串口互不冲突。▲ 图 3 硬件系统原理框图图 4 为本项目原理图的矢量导出件原始设计采用嘉立创 EDA 绘制随附 schdoc、json、svg、pdf 四种格式。自左至右依次为 Type-C 输入、CH340C USB 转串口、3.3 V 稳压、自动下载电路与主控模组另附 LED 状态指示、串口通信指示与两组扩展排针。▲ 图 4 硬件原理图ESP32-WROVER-DEV 开发板图 5 为采集节点的硬件实物取自演示视频中的实拍画面主控板两侧分列排针摄像头模组经 FPC 座直连Type-C 数据线接入后板上指示灯点亮表明供电与固件运行正常板面丝印可辨认出 ESP32-WROOM 系列模组的标识。图 6 为同一节点的串口联调记录串口参数为 COM33 / 115200 / 8 / N / 1日志中按 ssid、pass、server_IP 三段依次输出配网信息并给出接入后获取的局域网地址与向服务端 8004 端口发起连接的记录。▲ 图 5 采集节点硬件实物演示视频画面▲ 图 6 采集节点串口联调记录注意硬件实物素材说明项目素材目录未单独提供硬件照片图 5 系从演示视频的画面中截取并作清晰化处理像素密度低于常规实拍照片仅用于说明节点的实际形态全文未使用任何生成式图像替代实物。2.4 数据交互时序▲ 图 7 系统数据交互时序图时序图给出了一次完整识别过程的消息顺序节点由上电配网开始接入后持续逐帧上行图像服务端一边合成分发视频流一边按配置的帧数抽取序列图像提交大模型模型返回行为结论后写入识别记录前端再通过轮询刷新「最近识别结果」列表。参数管理中的模型名称、提示词与识别开关变更后即时生效无需重启采集节点。2.5 数据结构系统在 MySQL 中维护五类记录字段均取自管理端的实际列表可作为二次开发的建表参考。# 用户记录用户管理页实测字段 姓名 电话 更新时间 # 终端记录终端管理页实测字段 终端编号 终端名称 安装地址 摄像头SN online 更新时间 # 配置项参数管理页实测字段 参数名称 类型 参数项 参数值 备注 更新时间 # 识别记录历史数据查询页实测字段 终端编号 终端名称 照片 结果 更新时间其中「结果」字段存放的正是模型输出的行为结论或边界提示语与照片字段一一对应因此任意一条记录都可以回溯到判定当时的现场画面。三、系统界面展示管理端按「实时监视为主、记录检索为辅」组织左侧为固定导航右侧为内容区。以下界面均取自系统实际运行过程涉及个人信息的字段已作脱敏处理。3.1 Web 管理端管理端基于 jeesite 平台与 Bootstrap 构建实测访问地址为 127.0.0.1:8889/a/index左侧导航包含用户管理、终端管理、参数管理、实时数据查询与历史数据查询五个入口。图 8 上部为登录页下部为登录后的系统主界面。▲ 图 8 Web 管理端登录页与系统主界面用户管理页维护使用系统的账号表格列为姓名、电话与更新时间实测有 2 条记录。为保护个人信息本稿已将姓名与电话两列替换为占位文本表格结构与其余字段保持原样。▲ 图 9 用户管理界面姓名与电话已脱敏终端管理页记录采集节点的归属信息表格列为终端编号、终端名称、安装地址、摄像头 SN、在线状态与更新时间。实测 1 条记录终端编号 ZDBH01、终端名称「摄像头 A」、摄像头 SN 30AEA45EE1A0、状态 online行内的「打开摄像头」按钮可调出实时视频弹窗用于在后台直接确认现场画面。▲ 图 10 终端管理界面参数管理页是系统唯一的运行期配置入口表格列为参数名称、类型、参数项、参数值、备注与更新时间。实测 5 条配置项覆盖模型名称、模型密钥、识别提示词、首页显示的记录数与识别总开关其中模型密钥值已在图中作遮挡处理。把这些参数外置到数据库使得现场调整识别策略不需要重新烧录固件。▲ 图 11 参数管理界面模型密钥值已遮挡实时数据查询页由视频区与结果区两部分组成上方播放服务端合成的 MJPEG 画面并给出摄像头编号下方「行为识别」开关控制识别任务的启停「最近识别结果」按时间倒序给出若干条最新的判定结论。▲ 图 12 实时数据查询界面历史数据查询页是系统的数据主干表格列为终端编号、终端名称、照片、结果与更新时间每条记录都附有判定当时的缩略图。实测该页累计 1343 条记录共 68 页、每页 20 条样例数据的时间跨度集中在 2026-03-23 00:42:40 至 00:55:01在同一时段内可以连续观察到「无人员在摄像头范围内 → 静止 → 跌倒」的完整过程说明序列图像的判定结果在时间上是连贯的。▲ 图 13 历史数据查询界面3.2 微信小程序小程序以 web-view 控件加载 H5 页面的方式实现底部设实时数据、历史记录、个人中心三个页签。首次进入需填写服务器地址与端口实测为 192.168.1.7 与 8889填写后进入账号登录页。▲ 图 14 微信小程序服务器配置与登录界面实时数据显示页顶部给出摄像头编号中部嵌入视频画面下方以开关控制行为识别并在「最近识别结果」中按时间倒序列出结论。图 15 左右两屏取自同一次联调左屏画面中出现两人时给出「监测到多人无法判断结果」与「行走」右屏单人场景下给出「跌倒」——正是判定规则中三类情形的直接体现。▲ 图 15 微信小程序实时数据显示界面历史记录查询页以卡片形式组织数据每条卡片给出摄像头编号、时间、识别结果与现场画面画面中直接叠加了识别结论标签便于快速核对个人中心页提供密码修改与退出功能图中姓名与手机号已作脱敏处理。▲ 图 16 微信小程序历史记录查询与个人中心界面3.3 实测数据汇总观测项实测值管理端访问地址127.0.0.1:8889/a/index终端编号 / 终端名称 / 摄像头 SNZDBH01 / 摄像头 A / 30AEA45EE1A0online识别记录总量1343 条共 68 页每页 20 条样例数据时段2026-03-23 00:42:40 — 00:55:01识别结论类别行走 / 静止 / 跌倒 / 跑步 / 无人员在摄像头范围内 / 监测到多人无法判断结果模型名称配置值doubao-1-5-vision-pro-32k-250115序列图像帧数index_list_size2节点串口参数COM33 / 115200 / 8 / N / 1节点上行端口服务端 8004 端口小程序服务器配置192.168.1.7 : 8889演示视频时长7 分 12 秒1994×1080四、系统视频展示▲ 图 17 系统演示视频封面演示视频为系统完整运行过程的屏幕录制时长 7 分 12 秒分辨率 1994×1080内容按「方案导图讲解 → Web 管理端五个页面演示 → 小程序配置与演示 → 行为样本验证」的顺序展开。另有一段 51 秒的短片集中展示四种识别行为对应的画面与判定结果。建议按以下顺序观看可以最快建立对系统整体的认识。先看方案与架构对照本稿图 1、图 2 理解四层划分与两条链路的走向再看 Web 管理端依次观察用户管理、终端管理、参数管理、实时数据查询与历史数据查询的实际操作然后看小程序从服务器地址配置、账号登录到实时数据显示与历史记录查询最后看行为样本短片集中观察行走、静止、跌倒等行为的判定结果与画面叠加标签。视频提供 B站版、无水印版与水印版三种文件正文不内嵌视频文件请将其作为独立的视频稿件发布。五、获取方法5.1 交付内容交付内容形式硬件实物已完成联调的 Wi-Fi 摄像头采集节点程序源码ESP32 固件工程、服务端 Java 工程与微信小程序工程硬件原理图嘉立创 EDA 源文件及导出的原理图、PCB 文件演示视频系统完整运行的演示录像B站版 / 无水印版 / 水印版技术支持远程协助环境搭建、程序调试与小规模修改答疑5.2 获取方式在站内联系作者在文章评论区留言或直接发送站内私信写明需要的项目编号「X603171」以及用途学习 / 二次开发 / 课程设计收到后会按用途给出对应的资料组织方式与部署说明。注意资料中的服务端工程需要在本地配置 Java、MySQL 与 jeesite 运行环境采集端固件需要 Arduino IDE 与 ESP32 系列开发板支持包。建议先确认本地环境再索取资料。5.3 部署前确认采集节点默认以站点模式接入固定热点实测名称 8266wifi现场部署前需改为实际的 Wi-Fi 参数服务端接收图像的端口实测 8004与小程序填写的服务器地址、端口需保持一致模型名称、密钥与识别提示词均在参数管理页维护部署到新的场景时应重新标定提示词参与判定的序列图像帧数index_list_size影响判定灵敏度建议结合现场节奏调整后再上线。附录 A 串口联调日志摘录以下日志取自采集节点的串口输出串口参数 COM33 / 115200 / 8 / N / 1可直接用于核对节点的配网与连接流程。wait wifi... wifi_config__ ssid: 8266wifi pass: 123456789 server_IP: 192.168.137.250 wifi_connected Local IP address: 192.168.137.127 Mac is 30AEA4B61130 connect server 192.168.137.250 port is 8004附录 B 参数管理配置项参数项 含义 实测值 model_name 模型名称 doubao-1-5-vision-pro-32k-250115 sk 模型密钥 由后台维护本文不展开 tsc 识别提示词 请帮我分析 2 张关联的序列图片中的人…… index_list_size 首页显示的记录数 3 image_detection_switch 是否开始识别 true注意配置项以数据库记录的形式维护修改后无需重启采集节点即可生效。附录 C 识别结果判定规则画面情形模型输出画面内无人员无人员在摄像头范围内画面内仅 1 人行走 / 静止 / 跌倒 / 跑步画面内多于 1 人监测到多人无法判断结果两类边界结论同样写入识别记录表前端据此区分「模型主动放弃判定」与「链路中断」。项目编号 X603171。本文所述系统已完成实测验证相关技术问题可在评论区交流。
返回列表