开篇故事
上个月,我帮一家智慧仓储客户做AGV(自动导引车)的视觉升级。他们的需求很特别:不是检测所有货架上的商品,而是要求AGV只抓取“用户语音指定的那个SKU”。
比如工人说“把第三排第二个蓝色箱子搬过来”,AGV必须理解“第三排第二个”是空间坐标,“蓝色箱子”是视觉属性,然后精准定位。
我一开始想得很简单:用YOLO检测所有箱子,再写个规则匹配颜色和位置。结果现场测试直接翻车——工人说“那个有点歪的箱子”,我的规则引擎根本不知道“歪”是什么几何特征;工人说“和左边那个一样的箱子”,规则代码直接死循环。
更离谱的是,当工人说“别拿那个,拿它旁边的”,我的模型完全听不懂“它”指代的是哪个目标。
这就是跨模态目标检测要解决的核心问题:如何让YOLO不仅能“看”,还能理解自然语言指令中的空间关系、属性描述和指代消解。
本篇,我带你用YOLOv8 + CLIP(Contrastive Language-Image Pre-training)实现一个能听懂人话的检测器,让模型从“全量检测”升级为“按需理解”。
痛点拆解
常见错误实现:用OCR+规则匹配的伪跨模态方案
很多人遇到“按描述检测”的需求,第一反应是:先用YOLO检测所有目标,提取每个目标的属性(颜色、位置、类别),然后用正则表达式匹配用户指令中的关键词。比如用户说“红色箱子”,就匹配颜色为“红色”的检测框。
反例代码(错误示范):