news 2026/10/27 10:29:37

手机拍屏幕行为模型二次训练方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
手机拍屏幕行为模型二次训练方案

范围:为"手机对着电脑屏幕拍照"行为预警系统,调研怎么训:YOLO 检测模型二次训练的完整做法(数据/超参/冻结策略/部署)、ROI 分类器备选线、Qwen2.5-VL LoRA 微调复核模型、视频动作模型微调的适用条件,以及公开数据集盘点与评估验收标准。

1. 总体结论

三条训练线,按"必训 → 对比 → 可选"排序:

  1. YOLO 4 类自训 = 必训,也是整个项目最便宜的部分(2080 Ti 上数小时级)。预训练 COCO 模型能检出person/cell phone但回答不了"手持 vs 放置"和"对着屏幕",自训增量价值集中在hand-phone(手举手机整体)和monitor(俯视角度显示器)两个新类 + 小目标手机召回提升。
  2. ROI 分类器 = 同一套标注数据的第二条路,PoC 双路对比。业界先例(CCTV 手机使用检测,两阶段 MAP 92.6%)证明 YOLO 定位 + 人 ROI 四分类是可行替代;两条路标注格式一次产出,谁准用谁。
  3. VLM 微调 = 先 prompt 基线、不达标再 LoRA。Qwen2.5-VL-7B 零微调 + 封闭式 prompt 大概率已够"复核器"角色(它本来就擅长开放式视频理解);LoRA 微调(Unsloth 4bit + TRL SFT,7B 单张 2080 Ti 可训)只在上一步准确率 <90% 时上,否则多花 1~2 天工程换 1~3 个点不划算,还有小数据过拟合风险。
  4. 视频动作模型微调(SlowFast/VideoMAE)= 本场景不推荐。实测 90 个视频(每类 20 条)微调 I3D/SlowFast 测试精度只有 70~77%,而算力比路线 1/2 贵 1~2 个数量级;VideoMAE 小数据特性(3~4k 视频可微调)是它唯一值得留的入口——仅当已积累 ≥500 条行为视频时才考虑。

数据是成败关键,不是模型:公开数据集(FPI-Det 22,879 张脸-手机同步标注、Kaggle Phone Usage 23,930 张、Objects Phone V3 35k 张街景监控)可以当"预训练底座"先训一版通用模型,再用自己的场景数据(实拍+摆拍,≥3k 张)做场景适配微调——两阶段数据策略比纯自拍省一半标注量且泛化更好。

2. 训练目标拆解

2.1 YOLO 4 类定义(沿用 10-08 调研)

类框法来源训练策略
person完整人体COCO 预训练已够用不训或轻量微调提远距召回
monitor显示器(含支架,俯视/斜视、黑屏亮屏都要标)自训形态单一,500~1000 张即可
cell phone手机本体公开数据底座 + 自训补充提远距小目标召回
hand-phone手+手机整体(降低对手机本体的依赖,遮挡时仍可检)自训核心类,需多姿势样本 1000~2000 张

hand-phone标注规范(决定误报率的细节):

  • 框住"握持手机的手 + 手机"整体,不是只框手机;
  • 横屏/竖屏/带壳/裸机都框,手遮挡手机时照样框;
  • 负样本必须显式处理:手机放桌上 → 只标cell phone不标hand-phone;打电话 → 标hand-phone(它确实手持)但位置不在显示器附近,由规则层过滤;看手机(低头平视手机)→ 标hand-phone,靠"手臂朝向屏幕 vs 朝向自己"的角度规则 + VLM 区分。标注规范里把这三类易混情况写成文字条款,标注员照做,否则误报无解。

2.2 ROI 分类器的 4 类标签(与 2.1 同一批图产出)

no_phone / phone_on_table / holding_phone_viewing / holding_phone_toward_screen

  • 输入 = YOLO 检出的 person ROI(扩边 20% 防截断);
  • 第 4 类的判别构图特征:手机举高、手臂伸展、手机位于人前方而非脸部侧面——分类器学这种构图比检测器硬学空间关系直接;
  • 第 3 与第 4 类的边界("举着看"和"举着拍"单帧构图接近)是这条线的已知弱点,靠时序(第 4 类持续出现 + 手机中心稳定对屏幕)在规则层二次过滤。

3. 数据工程(核心章节)

3.1 公开数据集盘点(可当预训练底座)

数据集规模内容对本项目用途来源
FPI-Det(arXiv 2509.09111, 2025)22,879 张,29,279 脸 + 10,255 手机同步标注办公/教育/交通/公共场所,含极端尺度变化(手机小到 20×20px)与手-手机互遮挡;已含 YOLO/DETR 基线:YOLOv8-x 手机 AP@50 = 92.4%,人脸仅 56.5%手机检测预训练底座;其"手机易检、人脸难检"结论提醒:我们的难点在小目标+遮挡,不在"认出手机"github.com/KvCgRv/FPI-Det
Kaggle Phone Usage Dataset23,930 张(YOLO 格式,即拿即训)两类:in_hand(手持使用)/on_ear(贴耳通话)hand-phone类的直接冷启动数据;YOLO 格式免转换Kaggle: anshsuthar/phone-usage-dataset
Objects Phone V3(Ultralytics 数据集平台)35,045 张城市街景监控视频帧,手机 bbox补"监控视角"域(俯视/远距),缓解自拍数据全是平视的域偏移platform.ultralytics.com 数据集页
Roboflow Cellphone 项目集数百~数千张不等各种手机使用场景多样性补充Roboflow Universe 搜 “cellphone”
SYN-PPDB (CVPR 2021W)53,760 帧(Unity 3D 合成)手机使用行人行为(无接触/注视/通话),合成→真实迁移把精度从 84.3% 提到 96.7%证明合成数据可用作冷启动;本场景若要合成,用"人+手机贴图"合成只建议补长尾(如逆光、极端俯角),不代替实拍arXiv 2102.02119 系

注意:公开集里几乎没有"手机对显示器拍照"这个特定构图(它本来就是个细分行为),所以公开数据只解决"检得出手机/手持","对着屏幕"的判定最终还是要场景自拍数据 + 规则/VLM。预期管理:公开底座 + 场景微调后,hand-phoneAP@50 合理预期 85~93%(FPI-Det 基线 92.4% 是监控通用视角,我们俯拍更远小目标会打折)。

3.2 自拍数据方案(场景适配层)

摆拍矩阵(2~3 天、需员工配合,覆盖决定泛化的四个轴):

轴取值
行为拍屏 200 次 / 看手机 200 次 / 通话 100 次 / 手机放桌 200 次 / 路过 200 次
距离1m / 3m / 5m(对应手机在 1080p 帧里约 80px / 40px / 20px,覆盖最坏情况)
角度每个工位 2 个典型角度(正视/侧 30°+)
光照白天 / 傍晚 / 夜间补光(夜视红外下另采 100~200 张补数据,红外成像手机外观差异大)
  • 来源:现有墙装摄像枪直接录 2~3 天(含无摆拍的自然流量,这是最贴分布的部分)+ 定点摆拍补齐长尾;
  • 抽帧策略:摆拍视频按 2fps 抽帧 + 人工筛(每段保留 5~15 张有效帧),目标≥3,000 张有效帧,其中hand-phone类 ≥1,000 张;
  • 负样本刻意多采:“放桌手机”"低头看手机"各占 1/3 以上——误报率由负样本质量决定;
  • 标注:CVAT(多人协作+质检流)或 LabelImg(单人快);3~6k 张 4 类约 2~4 人天;
  • 隐私:员工摆拍需书面知情同意;非摆拍自然录像里的路人人脸在训练集中打码或裁剪剔除(训练不需要人脸,且避免数据合规问题)——FPI-Det 的工业数据集也是人脸打码的,这是业界惯例。

3.3 两阶段数据策略(推荐)

阶段 1(底座):公开集(FPI-Det/Kaggle/Objects Phone V3 手机类,~20k 张) → 训出"通用手机检测器",1 天(2080 Ti, YOLO11s, 50 epoch) 阶段 2(适配):阶段 1 权重 + 自拍场景数据(3~6k 张) → 场景微调 2~3 天 → 最终模型

比直接全量混训好:公开数据的监控视角先教会"小目标手机长什么样",场景数据只需教"我们的工位长什么样",小场景集过拟合风险更低。

4. YOLO 二次训练怎么做(具体配方)

4.1 模型与训练框架

  • Ultralytics YOLO11s(n 档更快但小目标精度损失,s 档在 2080 Ti 上训练和部署都宽裕;AGPL 风险见 10-08 调研 §3.4,内部部署可接受,法务有顾虑切 PaddleDetection RT-DETR);
  • 起始权重:阶段 1 用yolo11s.pt(COCO 预训练);阶段 2 用阶段 1 的 best.pt。

4.2 关键超参(小数据配方,均有出处)

超参值依据
lr00.001(默认 0.01 是 COCO 量级,小数据会冲掉预训练特征)Ultralytics finetuning 指南 + 实践共识
patience10~20(默认 100 是为长训练设计的,小数据集早停省时间)同上
freeze两阶段冻结(见 4.3)Ultralytics 指南 + arXiv 2509.05490
mosaic0.5(默认 1.0 过强,<2k 图时 mixup 直接0.0)小数据实践:重增广引入的标注噪声会拖慢收敛
imgsz1280(默认 640;5m 外手机 <50px,640 下只剩几个像素)小目标必须提分辨率;代价是训练慢 4 倍、显存 ×2,s 档 2080 Ti 扛得住
epochs阶段 1: 50;阶段 2: 100(配早停)经验值
optimizerauto(<10k iteration 自动 AdamW 低 lr),训练不稳时手动AdamW, lr0=0.001Ultralytics 指南

4.3 冻结策略(有系统实验支撑)

arXiv 2509.05490(YOLOv8/v10 分层冻结系统实验,4 个监控数据集)结论:没有普适最优,但两条经验稳定成立——

  • 小数据 + 域相似(办公监控 vs COCO 属相似域):冻结 backbone(前 10 层)防过拟合,mAP 与全量微调持平甚至更好;
  • 冻结还能省至 28% 显存;
  • 极端小数据集只训 head(freeze 到 neck)作下限方案。

实操 = Ultralytics 官方推荐的两阶段微调:

fromultralyticsimportYOLO# 阶段 1:冻 backbone,只训 neck+head(让新 4 类先学会)model=YOLO("yolo11s.pt")model.train(data="custom.yaml",epochs=20,freeze=10,imgsz=1280,lr0=0.001,name="stage1")# 阶段 2:全解冻,低 lr 精调(backbone 适配监控俯视角)model=YOLO("runs/detect/stage1/weights/best.pt")model.train(data="custom.yaml",epochs=30,lr0=0.001,patience=15,imgsz=1280,name="stage2")

freeze 深度当超参试:freeze ∈ {0, 4, 10}各跑一遍比 val mAP,10-15 epoch 内出分晓(2080 Ti 上单跑数小时)。

4.4 训练成本与部署

项估算(2080 Ti 单卡)
阶段 1(20k 张, s 档, 1280, 50ep)1 天量级
阶段 2(3~6k 张, 1280, 100ep 早停)数小时~1 天
超参对比 3 组 freeze1~2 天
导出部署model.export(format="engine")→ TensorRT FP16;注意 TensorRT engine 与 GPU 架构绑定(2080 Ti 上构建的 engine 不能给 L20 用,跨卡要重建);2080 Ti sm_75 无 FP8,FP16 即可
推理YOLO11s-1280 TensorRT FP16 单卡50100 fps(640 下 200~500 fps 的经验值按 4 倍像素折算),单路 10fps 采样占用 <10%,8~16 路并发仍可

5. ROI 分类器线(同数据对比项)

  • 数据:与 §2.1 同一批标注,person ROI 裁剪(扩边 20%)→ 4 类分类集;
  • 模型:MobileNetV3-Large 或 EfficientNet-B0 微调(MobileNet 级 <10ms/ROI,2080 Ti 上 1 小时内训完,甚至 CPU 可跑);
  • 负类增强:no_phone/phone_on_table各占 ≥30%;
  • PoC 对比设计:A 路(YOLO 4 类 + 规则)vs B 路(YOLO person + ROI 四分类 + 规则),同一测试集(含负例全帧回放)比三项:触发召回 / 每 8h 误触发次数 / 单帧 GPU 时间。B 路额外成本:多一次推理 + 多一条训练流水线;已知弱点:俯拍 ROI 截断、双人交互表达不了。谁准用谁,预计差距 <5%,A 路部署更简可作平票裁决。

6. VLM 复核模型:先 prompt,后 LoRA

6.1 第一步:零微调 prompt 基线(必做)

Qwen2.5-VL-7B 原生支持多帧视频输入(动态 FPS + 绝对时间编码 MRoPE,官方视频基准 Video-MME 7B 达 65.1),"6 帧 + 封闭式问题"这种结构化判定是它舒适区。先按 10-08 调研 §4.2 的 prompt 方案跑 100 个真实触发 clip,得到基线准确率。预期:封闭二分类 + 强 prompt 下 85~95%,很可能直接达标(≥90%),后面全都不需要。

6.2 第二步(条件触发):LoRA 微调

触发条件:prompt 基线 <90%,且错误集中分析显示是"表述理解偏差"(如混淆看手机/拍摄的定义边界)而非"看不清"(后者该回去补数据或提分辨率,微调无用)。

  • 工具链:Unsloth(4bit 量化加载 + LoRA,单张 2080 Ti 24GB 可训 7B)+ TRLSFTTrainer;社区有现成 notebook(4bit + LoRA 在 T4 上训 7B 的完整流程,2080 Ti 显存更大更宽裕);
  • 数据格式:chat 模板,每样本 = 4~8 帧图(Qwen 多帧输入)+ 封闭式问题 → 目标答案{"shooting": true/false, "confidence": 0-1, "reason": "一句话"};数据量500~2000 个 clip 级样本(正负各半,正样本来自摆拍录像抽帧,负样本用"看手机/通话/放桌"clip);
  • 冻结策略:Qwen2.5-VL 官方后训练(SFT+DPO)冻结 ViT 只训 LLM 侧——我们照做,LoRA 只挂 LLM 注意力/MLP 层(r=16~32),ViT 动则小数据极易过拟合且视觉通用能力崩坏;
  • 成本:1~2 天(数据整理 1 天 + 训练 2~4h + 评测);
  • 风险:微调后通用能力下降 → 微调模型只当"专用复核器",不兼做其他 VLM 任务;保留基线模型做 A/B 对照;
  • 再下一档(通常不需要):DPO 偏好对齐(正/负 clip 对)——只有 LoRA 后错误仍集中在"置信度校准"时才上。

7. 视频动作模型微调:适用条件评估

  • 工具:MMAction2(SlowFast/I3D/X3D/VideoMAE 全有现成 config,改 data path 就能微调);
  • 小数据实测(MDPI 2025,90 视频/每类 20 条):I3D 测试 76.7%、SlowFast 70%——小数据下不占优;
  • VideoMAE 是唯一亮点:自监督预训练后只需 3~4k 视频即可下游微调(K400 87.4%),如果项目跑起来后录像库自然积累了 ≥500~1000 条"拍屏/看手机/通话"视频(每条 5~10s,抽 16 帧),再评估它做离线全量行为分类入库(审计报表用,不进实时链路);
  • 本期结论:不训。实时链路用 §4+§6 已覆盖,视频模型只在"录像库足够大 + 有离线分析需求"时启动。

8. 评估与验收

层指标通过标准(沿用 10-08 PoC 计划,补充分层)
YOLO 检测各类 AP@50hand-phone≥85%(预期 85~93);分距离段报告:1m / 3m / 5m 各报一次(5m 段预期显著下降,决定是否需要 SAHI 切片兜底)
检测+规则触发召回 / 误触发召回 ≥90%;每 8h 误触发 ≤3 次(全帧回放测试集,含负例)
VLM 复核clip 级准确率≥90%(区分 拍摄/看手机/通话);P95 延迟 ≤60s
端到端3 天真实挂机真拍屏被抓率 ≥80%;误报可解释可申诉;告警延迟 P95 ≤90s

防过拟合检查:测试集必须是独立工位/独立时间段(不与训练集同场景同视角同一天),否则指标虚高。

9. 风险与缓解

风险概率影响缓解
自拍数据量不足(员工不配合摆拍)中精度上限锁死公开底座先行(§3.3);合成数据补长尾(SYN-PPDB 验证过迁移可行);降低验收标准分层交付(先 3m 内可用)
5m+ 远距手机漏检高漏报imgsz 1280;SAHI 切片二次检测(只对含 person 帧);重点工位加近景枪(架构层缓解,非训练层)
VLM 微调后通用能力退化中复核器变"傻"冻结 ViT;保留基线 A/B;微调模型专用化
两阶段训练阶段 1 底座质量差拖累阶段 2低返工阶段 1 先单独验证手机 AP@50 ≥80% 再进阶段 2
Ultralytics AGPL低法务内部部署不触发分发;备选 RT-DETR/YOLOX(Apache-2.0),训练配方平移
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/27 10:29:24

微信小程序 scroll-view 实现纵向、横向滚动页面

摘要&#xff1a;本篇是小程序基础组件 scroll-view 练习案例&#xff0c;同时也是课程作业。使用scroll-y实现纵向滚动、scroll-x实现横向滚动&#xff0c;利用 CSS 伪元素::before渲染页面文字&#xff0c;最后在横向滚动区域新增一页&#xff0c;内容为阳光灿烂&#xff0c;…

作者头像 李华
网站建设 2026/10/27 10:26:09

Linux网络篇——UDP(一)之C++实现UDP英汉词典翻译服务器

牢蒯的源码在下面的仓库里&#xff0c;各位大佬可以自行取用&#xff0c;古法编程&#xff0c;难免有bug&#xff0c;大佬们可在评论区指出错误。 https://gitee.com/laotian666/linux_storage.git 0 前置知识&#xff1a;UDP网络编程核心接口与结构体 UDP属于无连接传输协议…

作者头像 李华
网站建设 2026/10/27 10:23:56

AI智能体席卷制造业,3000万人才缺口背后的程序员生存指南

2025年被称为AI智能体元年&#xff0c;制造业正经历从“人驱动”向“数智原生”的变革。企业招聘标准从经验筛选转向AI协同&#xff0c;急需既懂AI又懂制造的复合型人才。目前制造业人才缺口近3000万&#xff0c;蓝领招工难&#xff0c;高技能人才稀缺。本文揭示人才真相&#…

作者头像 李华
网站建设 2026/10/27 10:18:32

45.7MB 整合包,OpenClaw 双平台部署实操全记录

&#x1f4cc; 说明 本文以 OpenClaw 为例展开讲解&#xff0c;全程采用图形化、可视化的交互方式。整合包已内置全部运行依赖&#xff0c;即使是普通用户&#xff0c;也能轻松复现完整的部署流程。 ✨核心亮点&#xff1a; 全程可视化图形交互界面&#xff0c;自动补齐全部运行…

作者头像 李华