工业视觉踩坑实录(十二):加了假人训练数据,检测模型还是分不清真假人
加了假人训练数据,检测模型还是分不清真假人
摘要:一个教室,四五十个学生,地上躺着4个假人模特。检测模型全报了,系统一直误报有人躺着。回去加了假人照片做负样本训练,换个新款假人照样误检。试了多模态大模型能分,但四五十个人全送大模型推理,根本跑不动。这篇聊聊为什么检测模型分不了假人,以及为什么大小模型级联这个思路能工作。

关于作者
我接触视觉整整10年。
工业视觉、烟草、煤矿等行业都有深度开发经验。从硬件选型、算法开发、模型训练,到上位机开发及部署,都在一线磨过。
之前是多家公司人工智能团队的技术负责人。现在自己创业了,还在继续做视觉落地这件事。
作者说
这篇是踩坑实录里技术分析较多的一篇。
前几篇讲的是「遇到了什么,最后怎么解决的」。这篇不太一样——核心问题到今天还没有完整的解决方案,但思路慢慢清晰了。
写下来是因为,这个过程本身可能有点参考价值。从「加负样本训练」到「试试大模型」再到「级联架构」,每一步都有对问题本质的理解在推进。不理解根因,方向就容易走偏。
一张照片
2024年11月,运维的合作伙伴发来一张照片。
实训室,地上躺着4个假人模特。黑色上衣、黄色裤子,急救课模拟病人用的那种。有靠墙立着的,有直接躺地上的,旁边是心肺复苏操作台。
他说这个房间天天误报,人数一直对不上。
我第一反应觉得这好办,回去拍几组假人照片混进训练集当负样本重新训一版就行了。假人再怎么像人,总有不一样的地方吧。
拍了各种角度各种光线的假人照片,加进训练集重新训。
换了别的款式假人扔进去,还是误检。
训练数据里明明有假人,模型还是分不清。

检测模型到底在学什么
当时想了好久,后来想明白了。
目标检测模型训练的时候,给的是像素和类别标签。模型要学的是从像素到类别的映射。
关键在于,这个映射学到的不是「什么是人」,而是「图像里什么样的像素模式对应人这个类别」。
这区别大了。
真人在镜头里出现的样式太多了。站着的、坐着的、弯腰的、蹲着的、侧身的、背对的、被桌子挡一半的、被前面同学挡后面的。穿的衣服更是各不相同。模型要处理所有这些变化,它学到的是所有这些变化在像素层面的共同特征。
假人呢?穿着衣服、有正确的人体比例、轮廓完整清晰。在像素层面,它跟真人没有本质区别——同样的衣服纹理、同样的人体结构、同样的人体轮廓。
说白了,假人的视觉特征本来就落在「人」这个类别的自然分布范围内。检测模型在这个分布里找不到一条线能区分真假,因为它没有被训练去理解「假」这个语义概念。
这就是为什么加负样本训练只能缓解,不能根治。你加一批假人A训练,模型会对A型假人更敏感。换一批没见过的新款假人B,照样误检。模型的本质是在学习「这些像素模式像人」,而不是「这是真人还是假人」。
MDPI 2025有一篇论文专门研究这个,系统评估了多批模型区分真实物体和人工复制品的能力,结论和我的经验完全一致。(论文链接)
多模态大模型为什么能分
当时多模态大模型刚出圈,我试了一下。
把假人照片丢给智谱的APP(那时候还是GLM-4,现在已经是GLM-5.1了),问它看到了什么。
它说画面里有几个穿着衣服的假人模特躺在地上。
检测模型报4个人,大模型一眼分清真假。区别在哪?
多模态大模型在训练的时候见过海量图文对,里面包含大量关于「真」和「假」的描述。假模特、雕像、蜡像、海报上的人——这些概念和对应的视觉图像在训练数据里是配对出现的。模型因此学到了「假」在语义层面长什么样。
即使监控画面里假人的分辨率很低、看不清面部细节,模型依然能通过轮廓、纹理、姿态等特征综合判断这不是真人。这不是像素级别的模式识别,是语义层面的理解。
其实VLM在这类任务上也没有那么完美。2025年有论文专门研究了这个现象。
《LLMs Are Not Yet Ready for Deepfake Image Detection》(arXiv:2506.10474)发现,VLM在伪造检测中会频繁编造细节来合理化自己的误判——明明没看到什么特征,它会编一个理由让自己听起来合理。
《InspectVLM: Unified in Theory, Unreliable in Practice》(arXiv:2508.01921)也指出,VLM在工业检测场景里会忽略视觉输入,转而依赖语言记忆,提供的线索越多越容易出错。
也就是说,VLM能分真假,但不稳定,给太多提示反而会让它更容易出错。这个特性在设计级联架构的时候也得考虑进去。
方向对了,但直接用有代价。
四五十个人的教室
当时一算账就放弃了这个方向。
一个普通教室,镜头能看到的位置大概坐着四五十个学生。每个人检测出来之后都要裁一张小图出来送VLM判断真假。四五十张图,每张接口调用加推理要大几百毫秒。算下来一帧要十几秒,人员计数根本没法实时跑。
这不是算法的问题,这是工程上的取舍问题。VLM的推理成本比检测模型高几十倍,在这么多人同时出现的场景下,全量过VLM的代价是不可接受的。
而且还有个更麻烦的事。学生不是静止的,他们会走动,会有遮挡,会有各种姿态变化。假人虽然不会主动动,但它可能被经过的学生碰到、在画面里不是完全静止的。纯粹靠运动信息来区分也不可靠。
所以当时就卡在这了。
级联架构为什么能工作
隔了一年多,最近重新看这个方向。2025年学术界已经把这个场景做到了工程可用的程度。
核心思路是一致的:小模型做粗筛,大模型只处理拿不准的少量目标。不是降低精度,是分工。
为什么分工能work?
因为不同模型擅长的东西不一样。YOLO这种检测模型,擅长的是「快速从像素判断这里有没有人」,它的置信度分数反映的是「这个像素模式有多像人」。但「像人」和「是真人的概率」不是一回事。假人也是很像人的。
VLM不一样。它判断一个人是不是真人,不是靠像素模式,而是靠语义理解。它会问自己:这个轮廓、这个纹理、这个姿态,符合真实人体的物理规律吗?
所以,如果YOLO对某个检测结果的置信度偏低,可能有两种情况。第一,这个目标本身模糊(被遮挡、分辨率低),是真人的概率本来就低。第二,这个目标是假人——它的像素模式符合「人形」,但某些细节不符合「真人」的语义约束。
VLM能分辨这两种情况。但YOLO分不清。
级联架构的逻辑就在这里:YOLO做第一道,把所有「看起来像人的」都捞出来。然后,不是所有被捞出来的都需要VLM再审——YOLO置信度非常高的那些,大概率就是真人,不需要再花计算资源。只有置信度处于中间地带、「看着像但又有点不对劲」的那些,才需要VLM来做语义层面的二次判断。
Cerberus这篇论文把CLIP和VLM级联起来,CLIP做第一级粗筛丢弃70-90%的无关帧,VLM只处理剩余候选帧。在L40S上跑到57帧每秒,加速151倍,准确率97.2%。(论文链接,2025)
Rehman等人的三级级联更细致。YOLOv8做第一级检测,卷积自编码器做第二级门控——自编码器训练时只见过正常人体,重建质量高的目标直接通过,重建质量低的说明「跟正常人体不太一样」,才送给VLM做第三级判断。VLM的调用量大幅减少,延迟降低3倍。(论文链接,2025)
SGL方案用2B小VLM先行判断,置信度够就直接出结果,拿不准的才调用26B大模型。实测剪掉91%的视觉token。(论文链接,2024)
IHT团队在工地安全场景里给出了一个更直接的方案:YOLOv11n做检测,把检测结果转成结构化的自然语言提示,连同原始图像一起喂给4B以下的小规模VLM做上下文推理。思路很清晰——不让VLM从零开始理解整张图,而是先用检测模型「划重点」,告诉它画面里有哪些人、哪些物体、分别在哪里。VLM只需要判断这些物体之间的关系和语义,不需要重新做一遍定位。(论文链接,2026)
这个方案在工地危害检测数据集上跑了Gemma-3 4B、Qwen-3-VL 2B/4B、InternVL-3 1B/2B等模型,所有模型均持续提升。表现最好的Gemma-3 4B,F1分数从34.5%跃升至50.6%,而且每张图的额外开销只有2.5毫秒。2.5毫秒换16个百分点的精度,这个trade-off非常划算。
本质上,这些方案都在做同一件事:用便宜的方法过滤掉大部分明显正常的样本,把计算资源留给真正需要语义理解的目标。
在我的场景里怎么设计
回到假人检测这个问题。教室里四五十号人,不能全送VLM,但也不能靠运动跟踪。学生走来走去,假人也不一定完全静止。更合适的做法是利用多维度的信息。
第一条路,利用检测置信度差异。假人的视觉特征虽然接近真人,但YOLO给出的置信度通常会比真人略低。可以通过大量真实场景数据统计分析,找到一个区分阈值——比如置信度低于0.7的才送VLM复查。这样大部分真人高置信度直接通过,只有少量模糊目标走VLM验证。
第二条路,利用空间上下文。假人通常在地面上或者靠墙的位置,和坐着上课的学生在空间分布上有明显差异。可以通过目标的空间位置(是否贴近地面、是否靠墙)做一个轻量预筛。这条规则简单,但有效。
第三条路,利用自编码器重建评分。训练一个只见过正常学生图像的卷积自编码器。给它看一个检测框内的图像,如果重建误差大,说明这个目标跟训练数据里的正常学生「不一样」,可能是假人。这个方法不需要额外标注,只需要在正常上课场景的数据上训练就行。
第四条路,参考IHT团队的思路,把检测结果转成结构化提示让VLM做上下文推理。比如不是让VLM「看这张图判断是不是真人」,而是告诉它:「YOLO在坐标(x1,y1,x2,y2)处检测到一个人形目标,置信度0.72,位于画面底部靠墙位置,请判断这是真人还是假人模型」。给足了前置信息,VLM就不需要从零开始理解整张图,推理更快更准。实测Gemma-3 4B在这个模式下单张只增加2.5ms开销,Qwen3-VL-2B和InternVL-3 2B也能跑。(论文链接,2026)
这四条不是互斥的,实际可以组合起来用。置信度初筛 + 空间位置过滤 + 自编码器门控,三层下来需要VLM处理的目标可能只剩两三个。
回头看
这个项目最大的教训不是某个算法或某条方案,而是思考问题的方式。
加负样本训练失败,不是因为数据不够或模型不够好,是因为方向走偏了。检测模型解决的是「像素模式像不像人」,不是「这是不是真人」。这两个问题看起来很像,但解法完全不一样。
选型的前提是理解问题。不理解问题的根因,就会选错方案。选了错的方向,努力再多也是白费。
后来我见到类似的情况会先问自己:这个问题,是检测模型能解决的,还是需要语义理解?如果需要语义理解,那检测模型的精度提升(更大模型、更多数据)不会本质性地解决问题,得换个思路。
还有一条经验:暂时解决不了的问题,不要急着否定方向。如果根因分析是对的——方向没错,只是条件不够——那就先搁着,等条件变化。模型和硬件的进步速度比你想象的快。(比如今天刚发布的Vision Banana,说要干掉Sam3)
几条建议
如果有人想在类似场景里复现这个方案:
不要只靠加负样本。换个样式就失效,太脆弱。应该从任务定义出发思考——这是检测模型能解决的问题,还是需要语义理解的任务。
级联架构的设计要充分利用前置信息。YOLO的置信度、目标的空间位置、相邻帧的跟踪轨迹——这些都能帮助判断一个检测结果可不可疑,不需要直接上VLM。
轻量VLM选型要看具体硬件。Qwen3-VL-2B在4GB显存设备上可用,4B版本在Jetson Xavier NX上50ms级延迟,8B版本需要24GB显存才跑得顺。IHT团队的测试显示Gemma-3 4B在检测引导模式下的精度最好,但Qwen3-VL系列也能持续提升。如果追求极致低成本,InternVL-3 1B版本值得试。(Qwen3-VL技术解析,2026;检测引导sVLM,2026)
YOLO26今年刚出,去掉了NMS后处理,部署管线简化了不少,nano版CPU推理快了43%。后续可以考虑用YOLOE-26的开放词汇变体,它直接把视觉语言能力接进了检测器,说不定原生就能处理一部分假人检测的问题。
作者:头帕王子
系列专栏:工业视觉踩坑实录
如果觉得有用,点赞关注不迷路 👋
如果你也在做类似的工业视觉项目,希望这篇文章能帮你少走些弯路。有问题欢迎留言或加我好友讨论。
📎 相关专栏
参考:
- Cerberus: CLIP + VLM Cascaded Video Anomaly Detection (2025)
- Cascaded Multi-Agent Anomaly Detection (2025)
- SGL: Small VLM Guides Large VLM (2024)
- Exploring the Limits of LLMs’ Ability to Distinguish Between Objects (MDPI, 2025)
- LLMs Are Not Yet Ready for Deepfake Image Detection (arXiv, 2025)
- InspectVLM: Unified in Theory, Unreliable in Practice (arXiv, 2025)
- Qwen3-VL全系列深度解析与本地化部署指南 (CSDN, 2026)
- Detection-Guided Small VLM for Hazard Recognition (IHT, 2026)
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)