引言
识别,是计算机视觉(Computer Vision, CV)领域研究最多、应用最广泛的视觉任务,其技术成熟、工具完善,在项目落地中扮演着重要角色。
识别试图解决"是什么"的问题,其任务目标为辨认出图像、视频等载体中的物体。依据不同的理解层级,视觉识别任务可被归纳为三个子任务,如下图所示:
从左至右分别为:
- 图像级理解------分类
- 目标级理解------检测
- 像素级理解------分割
在货拉拉的业务场景中,检测 与分割任务尤其重要。在货运安全防控、车辆车贴识别、OCR、移动端算法等算法应用场景中,检测与分割都是最重要的算法环节之一。
尽管传统检测与分割算法在实际生产落地中有模型轻量、需要计算资源少等诸多优势,但它们仍然存在一些局限性,例如:
- 算法模型效果依赖数据质量与数量
- 在特定场景下生产的算法模型需要微调才能应用到其它场景
- 算法模型应用于新任务需要重新训练
随着大模型的快速发展,结合文本、视觉双模态派生出了如开放词汇目标检测、万物分割等有趣的新视觉任务与对应算法,成为传统检测分割算法的有力补充。
本篇内容针对检测和分割任务,为大家简单回顾传统视觉任务,及其在大模型时代的演进与对应的新算法,并在最后简要介绍货拉拉在项目落地中对这些新技术的实践应用。
检测
闭集检测、开集检测
传统闭集检测(Close-Set Object Detection) 的训练集和测试集囊括的目标类别相同,训练好的模型只能检测训练集中预先定义标注的类别,如下图(a)所示。
闭集检测技术成熟,其检测精度高,推理计算量小,易于轻量化,可部署在IoT摄像头等小算力设备,是应用最广泛的目标检测技术,已被应用于货拉拉的各个自动化流程中。
传统开集检测(Open-Set Object Detection) 在闭集检测的基础上,需要检测所有前景物体,对于训练集中没有定义的类别,推理时只需确定位置不需要确定类别,统一预测为未知类别,如下图(b)所示。
传统开集检测在实际生产环境存在诸多限制,如其前景定义存在模糊性、算法指标较闭集检测有差距等,较少被部署到实际生产环境。开集检测逐渐被用来指代大模型时代下的开放词汇检测。
开放词汇检测
短语定位(Phrase Grounding) 是经典的视觉文本多模态任务。给定图像和对应文本,它的任务目标是定位文本中所有名词类别在图像上的位置,如下图所示:
短语定位与目标检测有着相近的任务目标,大模型时代下的开放词汇检测正是受启发于短语定位任务。
开放词汇检测(Open-Vocabulary, Open-Set Object Detection) 通常也被称为开集检测 ,二者在当下多数语境指代同一视觉任务。开放词汇检测模型在大规模文本-图像对数据集上预训练,推理时通过文本prompt给定要检测的目标类别,实现Zero-shot形式的任意类别检测。代表性的开放词汇检测模型包括GLIP预训练模型[1]、Grounding DINO[2] 。
GLIP
2021年12月,微软发表了GLIP(Grounded Language-Image Pre-training) 预训练模型与训练方法,首次将目标检测和短语定位统一成一个视觉任务。模型结构方面,GLIP利用文本编码器(Text Encoder)和视觉编码器(Visual Encoder)分别编码文本与图像,并在两个编码器的多个层级间增加融合(Fusion)模块,最后对齐检测框特征与文本特征实现短语定位(Phase Grounding),其结构如下:
数据方面,GLIP使用人工标注的图像-文本对数据训练短语定位(Phase Grounding)教师模型(Teacher Model),再用教师模型自动标注数据,进而获取了极大规模的语义丰富的数据集,并从中学习到目标级的、语义丰富的、文本感知的鲁棒表示。
GLIP预训练模型具备高效的Few-shot下游任务迁移能力,并支持Prompt-tuning微调方式,仅需几张样本就可迁移到新的检测类别或优化特定检测类别。下图横坐标表示微调样本量,纵坐标表示mAP,紫色为完整GLIP模型,其Prompt-tuning与全模型微调同样高效:
Grounding DINO
2023年3月,IDEA联合清华等高校发表了Grounding DINO模型,在GLIP基础上进一步增强模态间融合成为新的SOTA模型,其特征增强模块如图:
Grounding DINO首次明确大模型时代下开集检测的含义。其检测效果如下图所示,其中图(a)为传统闭集检测,图(b)为其实现的开集检测,图(c)为结合开集检测和生成模型实现的目标级替换:
Grounding DINO具备极佳的Zero-shot检测能力,并且与GLIP一样具备高效的Few-shot下游任务迁移能力。在公开数据集上,Grounding DINO的Zero-shot表现与SOTA闭集检测模型相当,微调后领先SOTA闭集检测模型,在COCO数据集的mAP如下图(括号中指标对应图像大尺寸增强结果):
与传统开集检测不同,大模型时代下的开放词汇检测不严格要求预训练使用的训练集和测试集类别不重叠。GLIP强调学习语义丰富的表示和高效的Few-shot下游任务迁移 能力,Grounding DINO强调强大的Zero-shot检测能力。
和大语言模型一样,开放词汇检测同样在大规模数据集上做训练,实现Zero-shot形式的推理或Few-shot形式的任务迁移。但是其模型大小、推理速度、所需的计算资源相较传统闭集检测模型没有量级上的差异,其"大"更主要的体现在数据集规模上。
分割
语义分割、实例分割、全景分割
图像分割中应用最广泛的是如下三个基础分割任务。语义分割 为每个像素赋予一个语义类别,不需区分个体。实例分割 只关注前景物体,区分同类别的不同个体。全景分割可看作前两者的结合,关注前景与背景,并区分前景个体。如下图所示,从左至右分别为原图、语义分割、实例分割、全景分割:
引用分割、交互分割、二元分割
除了基础分割任务,近年来涌现出了如引用分割、交互分割、二元分割等新颖的分割任务。
引用分割根据文本提示分割语义目标,如下图所示:
交互分割依据用户点击、框选区域预测分割结果,如下图所示:
二元分割(显著性分割) 只区分前景背景,着重强调分割细节,如下图所示:
语义无关万物分割
语义无关万物分割(Semantic-agnostic Segment Anything)希望通过单个"基础模型",实现任意场景下对任意区域的分割,不关心所分割区域的语义类别。代表性的语义无关万物分割模型包括SAM[3]及其轻量化模型。
SAM
2023年4月,Meta发表了具有划时代意义的分割"基础模型"------SAM(Segment Anything Model) 。SAM使用标准的编解码器结构,通过图像编码器(Image Encoder)和prompt编码器(Prompt Encoder)分别编码图像和prompt,再经轻量掩膜解码器(Mask Decoder)输出分割区域掩膜(Mask),其结构如下图所示:
SAM与交互分割使用相同的交互方式,使用者给定任意点、框作为prompt,模型分割出对应的区域。相较交互分割,SAM可分割任意内容,并且不局限于目标级分割,具备更细粒度的分割能力,其分割效果如图:
与SAM模型一同发布的还包括SA-1B数据集及自动标注方式,其包含1100万高分辨率图像,11亿高质量掩膜(Mask)。SAM模型和SA-1B数据集为后续工作提供了可靠的工具。
轻量化SAM
SAM强大的通用性和分割细粒度吸引了大量从业人员对其展开探索,轻量化 是其中代表性的优化方向。FastSAM[4]、MobileSAM[5] 先后成为代表性工作。
相较FastSAM,MobileSAM模型参数量更小,推理速度更快,二者比较如下:
MobileSAM与原SAM使用相同的算法流程,使用相同的prompt编码器与掩膜解码器,并通过从原SAM模型蒸馏获取轻量化编码器,如下图所示:
蒸馏得到的图像编码器参数量较原模型有显著下降,对比如下:
尽管受限于模型参数量,MobileSAM实际分割能力仍有待业界验证,但其使得通用交互分割部署到移动平台成为可能。
语义相关万物分割
SAM虽然提供了细粒度的通用分割能力,但是其分割的区域不具备语义类别信息,限制了更广泛的实际应用。为了给分割得到的区域添加语义类别信息,研究人员提出了不同的解决思路,最具代表性的包括SSA[6]、Semantic-SAM[7]、Grounded-SAM[8] ,既要分割任意区域又要输出区域语义类别,即语义相关万物分割(Semantic Segment Anything)。
SSA
SSA(Semantic Segment Anything) 结合已有的语义分割模型和SAM,使用模型并联的解决方案,其算法流程如图:
算法流程包括两个分支,语义分支(Semantic branch)使用语义分割模型预测各像素语义类别,掩膜分支(Mask branch)使用SAM预测精细的分割轮廓,最后语义投票模块(Semantic Voting module)以每个轮廓范围内出现概率最高的像素语义类别作为整个分割区域的语义类别。
SSA巧妙的将语义分割模型和SAM互补,解决了前者分割边界模糊和后者缺少语义信息的问题。
Semantic-SAM
2023年7月,微软、IDEA联合HKUST等高校提出了Semantic-SAM,旨在可以在任意粒度下分割并识别任意内容。其关键结构如图:
在模型结构方面,Semantic-SAM为每个prompt点实现6个不同分割粒度层级的embedding。在数据方面,同时使用SA-1B数据集和Objects365、PACO-LVIS等6个包含不同层级语义标注的分割数据集。实现了为每个promt点输出6个不同分割粒度的含有语义类别的掩膜(Mask)的功能。其分割效果如图,图(a)是其实现的实例、语义、前景和局部分割效果,图(b)列举了单个prompt点输出的其中5个不同粒度的掩膜:
Grounded-SAM
Grounded-SAM是另一个代表性工作,其原理简单清晰。通过串联Grounding DINO和SAM,由Grounding DINO的开集检测能力提供语义对应的粗粒度检测框,再由SAM进一步完成分割。
实践
在货拉拉的司机证件识别、搬家打包审核、车贴审核等业务场景中,我们结合开放词汇检测、万物分割等新算法,弥补了传统视觉算法局限性,探索了更简洁高效的自动化算法流程,在数据安全 与模型生产效率方面带来提升,下面分别进行说明。
司机证件识别
保护司机与用户数据安全是货拉拉开展业务的首要前提。在司机认证等业务场景中,自动化算法流程首先需要实时检测司机证件。为了保证算法效果,传统模型生产流程需要大量人工对卡证数据进行标注,过程消耗标注人力,且对司机数据安全带来隐患。
结合开放词汇检测 和传统模型轻量化方法,我们提出了更安全和高效的算法模型生产流程,流程如下:
开放词汇检测模型虽然具备强大的Zero-shot检测能力,但是其不能区分不同类别卡证间的细节差异,且无法同时保证检测的精度(Precision)和召回(Recall),不满足直接应用的条件。
我们首先将开放词汇检测模型作为教师模型,对每类卡证分别以高置信度的阈值对卡证位置进行高精度地检测,以获取定位标注。然后经过严格的筛选规则,自动滤除舍弃定位不准的标注结果与样例,并为各类卡证生成类别标注。最后,利用完整自动标注了定位与类别信息的样例,蒸馏训练移动端轻量模型。
在该流程下训练得到的轻量模型同时具备高精度和高召回,计算资源需求低,可在移动端高效完成实时卡证检测任务。整个流程中避免了人工标注环节,减少了数据泄漏风险,提高了生产效率。
搬家打包审核
搬家业务中,用户的家具、电器先经搬家小哥打包,再由审核人员确认打包是否规范,以此来保证用户产品安全。在打包审核自动化流程里,检测算法首先检测打包物体,再由后续算法判断打包合规性。家具、电器的品类与样式繁多,规范打包样式标准复杂,环境背景多变,给打包审核自动化提出了挑战:
传统闭集检测算法需要大量人工标注数据,且难以应对变化的打包物体类别与标准。
结合开放词汇检测模型与传统闭集检测模型,我们提出了较传统算法流程更简单高效的解决方案:
开放词汇检测模型具备强大的Few-shot任务迁移能力,通过少量样本微调可以大幅度提高模型检测能力,同时也能弥补Zero-shot失效的场景。
我们首先将打包规范对应的文本描述和样例图像作为样本对,对开放词汇检测模型进行Prompt-tuning,使模型将特定的打包样式与对应的文本prompt关联起来,例如以"完整黑色打包"作为prompt,微调模型能够高精度检测相应的打包物体。然后用微调后的开放词汇检测模型蒸馏训练传统闭集检测模型,以满足精度和召回要求,减少计算资源需求。
该流程使模型能高效扩展到更多类目与打包样式 ,而无需增添新的算法模型。
车贴审核
车贴是货拉拉建立品牌认知的重要工具,我们定期对车辆车贴进行审核以保证车贴完整不受损坏。车贴审核任务不同于传统视觉重识别(ReID)和检索(retrieval)任务,它不关注学习可区分不同个体的表示,进而检索特征最相近的样本,而强调学习用于区分细节差异的表示,以确认车贴细节是否一致。同时车贴样式繁多、细节丰富、拍摄角度多变,并不断有新样式车贴出现,使得设计鲁棒的自动化车贴审核流程充满挑战:
我们设计了基于特征匹配的自动化审核流程,首先从车辆图像对中提取和匹配特征点,然后利用几何变换对齐车辆表面,再经过比对模型得到车贴审核得分。该流程不依赖拍摄角度和车贴样式,能有效判断车贴细节变化。
但是不同时间的车贴图像经常来自不同的相机模型,不同的镜头畸变使车身产生不同程度变形,同时车辆可能发生磕碰刮擦,这些问题会严重影响自动审核的结果。在比对模型前分割出车贴区域,并只比对该区域,是解决上述问题的一种方案。
我们使用万物分割模型作为比对前的分割模型,将特征匹配获取的特征点对作为输入万物分割模型的prompt,进而获取精确的车贴区域而无需考虑变化的车贴样式,流程如下:
在车贴自动审核流程中,万物分割模型为我们提供了解决镜头畸变和车身变化影响的新思路。
总结展望
大模型时代下的检测任务主要为开放词汇检测,其通过文本prompt提供检测类别实现Zero-shot检测,并具备高效的Few-shot任务迁移能力,代表性模型包括GLIP预训练模型、Grounding DINO。
大模型时代下的分割任务主要为语义无关/语义相关万物分割,旨在分割任意场景下的任意区域,代表性模型包括SAM系列、Semantic-SAM等。
在货拉拉的业务场景中,开放词汇检测和万物分割算法已成为传统检测分割算法的有力补充。随着技术进步迭代,我们将不断拓展算法能力边界,提高已有算法效率,扩大算法影响力,完成AI赋能运营的使命。
参考文献
[1]Li, Liunian Harold, et al. "Grounded language-image pre-training." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2022.
[2]Liu, Shilong, et al. "Grounding dino: Marrying dino with grounded pre-training for open-set object detection." arXiv preprint arXiv:2303.05499 (2023).
[3]Kirillov, Alexander, et al. "Segment anything." arXiv preprint arXiv:2304.02643 (2023).
[4]Zhao, Xu, et al. "Fast Segment Anything." arXiv preprint arXiv:2306.12156 (2023).
[5]Zhang, Chaoning, et al. "Faster Segment Anything: Towards Lightweight SAM for Mobile Applications." arXiv preprint arXiv:2306.14289 (2023).
[6]Fudan-Zvg/Semantic-Segment-Anything. 2023. Fudan Zhang Vision Group, 22 Nov. 2023. GitHub, github.com/fudan-zvg/S....
[7]Li, Feng, et al. "Semantic-sam: Segment and recognize anything at any granularity." arXiv preprint arXiv:2307.04767 (2023).
[8]Grounded-SAM Contributors. Grounded-Segment-Anything. 2023. Apr. 2023. GitHub, github.com/IDEA-Resear....
作者简介
李佳翰,货拉拉技术中心智能运营部高级算法工程师