交付记录 · 2026-09-04 至 09-05

Jetson 人物检测 Demo 交付记录

设备 Jetson Orin NX 16GB(Super) 摄像头 绿联 CM797 · 1080p30 网页 192.168.1.128:8080 整理 2026-09-07

四块需求全部上线,设备上跑到摄像头满帧 30 帧/秒,网页界面可用,开机自启。唯一没做的是用真人和未参与注册的照片做准确率验证,这一步需要你在现场配合。

完成情况

你的需求状态现在能做到什么
框出人形大小和位置并显示完成实时人框、跟踪编号、17 个骨架关键点,多人同时
识别头部位置和尺寸完成专用头部检测模型出实线框;检测不到时用关键点估算出虚线框并标"估";尺寸显示宽×高
标注常用手势(加分项)完成身体动作:举手、挥手、双手举起。手部手势 30 余种:点赞、OK、比耶、手掌、握拳、比心、合十、拍照等
上传照片注册人脸、识别是谁完成网页上传或抓拍注册,画面上显示名字和相似度,可补加照片、删除
目标平台 Jetson Orin NX完成四个模型都用 TensorRT 加速,30 帧/秒,systemd 服务开机自启
展示界面完成演示大屏风格网页:直播画面、现场人物卡片、事件流、注册面板、显示开关、演示视频切换、全屏
真人准确率验证未做缺真人视频和未参与注册的照片,摄像头至今朝天花板

系统是怎么搭的

一条流水线,单进程多线程。每一帧顺序经过下面六步,括号里是设备上锁频后的实测耗时。

  1. 采集USB 摄像头 1080p MJPEG,Jetson 硬件解码(nvv4l2decoder),不占 CPU。
    30 fps · 解码 0 ms CPU
  2. 人 + 姿态YOLO26n-pose(TensorRT 半精度)一次给出人框和 17 个关键点,ByteTrack 给每个人稳定编号,每帧跑。
    11 ms / 帧
  3. 头部SCUT-HEAD 数据集训练的 YOLOv8n 头部检测器(TensorRT),每 3 帧跑一次,中间按人框位移平移缓存;检测不到时用耳、眼、肩关键点估算。
    9.6 ms / 次
  4. 人脸InsightFace(SCRFD 检测 + ArcFace 512 维特征),每 3 帧检测一次;对每个跟踪编号节流比对:未确认时 0.4 秒复查,确认后 2 秒复核;连续两次匹配同一人才显示名字,之后有惯性不闪烁。
    GPU · 按人节流
  5. 手势HaGRIDv2 官方 YOLOv10n 手势检测器(TensorRT),每 3 帧跑一次,按离手腕最近归到人;连续两次一致才显示,漏检一次重新计数,人走即清;双手类手势另加"两只手腕都在框内且置信度 ≥ 0.75"校验。姿态规则(举手、挥手)作为补充。
    每 3 帧一次
  6. 展示FastAPI 网页:MJPEG 直播(最高 15 帧)加每 0.7 秒拉一次的数据面板。画面叠加层按状态着色。
    绘制 1 ms
绿 = 已识别的人黄 = 未注册的人青 = 头部框(实线检测 / 虚线估算)橙 = 手势

选型依据、候选对比、许可和合规说明在同目录的《调研与选型报告.md》。

操作记录

验证方法与局限

层次在哪跑覆盖什么
单元测试本机零置信度关键点不出头框、"命中→漏检→命中"不显示手势、单次 0.41 不确认身份、双手校验
接口测试设备每次部署后检查状态、切换信号源、抓拍、注册、删除
端到端测试设备两段测试视频(样图拼接、HaGRID 示例拼接)跑真实流水线,截图人工看叠加层
界面测试本机 + 你的局域网假后端配真页面截图;你在局域网的实际体验与两轮评审

局限:所有识别相似度数据来自"注册同一张照片",只能证明流程通,不能证明准确率;摄像头至今朝天花板,没有真人画面。

踩坑备查

现象原因解决
设备下载极慢国外源单连接限速GitHub 走代理镜像;apt 用 .cn 镜像加优先级规则;aria2 多线程预取
apt 依赖冲突NVIDIA 优先级规则只认 .com新增 *.nvidia.cn 规则
torch 导不进venv 继承系统旧 sympy在 venv 内升级
人脸跑在 CPU、硬解失效insightface 顺带装了 CPU 版 onnxruntime 和无 GStreamer 的 OpenCV卸掉,用 GPU 轮子和系统 OpenCV
只有 7 帧给 TensorRT 模型传 half=True 每帧重建推理器去掉参数
只有 19 帧没锁频jetson_clocks 写进服务
硬解只有 11 帧nvjpegdec 元件慢换 nvv4l2decoder
缩略图损坏随机哈希文件名md5 固定文件名
远程命令误杀自己pkill 模式匹配到 ssh 自身脚本落盘执行
远程脚本中断ffmpeg 吃掉脚本标准输入加 -nostdin
新页面旧脚本浏览器缓存脚本带版本号并禁止缓存

文件与位置

Mac 项目目录
~/Documents/AI/work/jetson-person-demo/调研与选型报告.md(选型、实测、许可、合规)、findings.md(全部调研原始资料)、progress.md(逐条操作日志,本文依据)、task_plan.mdapp/(代码约 1900 行)、docs/(设计与本文)
设备目录
~/demo/app 代码、~/demo/venv~/demo/models 各模型与引擎、~/demo/data/faces 人脸库、~/demo/setup_phase*.log 安装日志
运行
sudo systemctl status person-demo;网页 http://192.168.1.128:8080(同一局域网)
改代码
Mac 上改 → rsync 到设备 → sudo systemctl restart person-demo
关键版本
JetPack 6.2.1 · TensorRT 10.3 · cuDNN 9.3 · torch 2.10.0 · onnxruntime-gpu 1.23.0 · OpenCV 4.8(系统版)· insightface 1.0.1

需要你做的三件事

  1. 把摄像头摆正对着人,让人在 3 米内走动、做手势,在局域网打开页面看实际效果。
  2. 提供几个人的照片(每人 2~3 张不同角度)和一段真人视频,我用来做正式的准确率验证并调阈值。
  3. 改掉设备的默认密码,并只保留密钥登录。

风险提示

三个模型(YOLO、InsightFace 模型、HaGRID)的许可都只适合内部 demo,做产品前要换成可商用版本或购买授权,替代方案见选型报告。人脸属于敏感个人信息,正式使用需符合《人脸识别技术应用安全管理办法》;demo 只在设备本地存特征向量,可随时删除。