#LCCL~
又带来这个~ 相互指导博弈来提升目标检测精度 的
论文地址:https://openaccess.thecvf.com/content/ACCV2020/papers/Zhang_Localize_to_Classify_and_Classify_to_Localize_Mutual_Guidance_in_ACCV_2020_paper.pdf
源代码地址:https://github.com/ZHANGHeng19931123/MutualGuide
目标检测一般包括分类和回归两个子任务。在模型训练的过程中,我们依据回归任务的预测结果动态分配分类任务的标签,同时利用分类任务的预测结果来分配回归任务的标签,以此达到相互指导、左右互搏的效果。
有监督的目标检测是计算机视觉中的一项流行任务,旨在通过边界框定位目标并将它们中的每一个分配给预定义的类。基于深度学习的方法在很大程度上主导了这个研究领域,最近的方法都是基于Anchor机制的。Anchors是在整个图像上均匀堆叠的不同大小和纵横比的预定义参考框。它们通过将目标检测问题转换为基于Anchor的边界框回归和分类问题,帮助网络处理目标尺寸和形状变化。大多数最先进的基于Anchor的目标检测器采用预定义的Anchor boxes和GT框(以下称为 IoU-anchor)之间的交集(IoU)来将样本Anchor分配给目标(正样本Anchor)或背景(负样本Anchor)类别。然后使用这些分配的Anchors来最小化训练期间的边界框回归和分类损失。
Anchor A和Anchor B与框GT具有相同的IoU,但具有不同的视觉语义信息。每个图像中的真实情况标记为虚线框。
基于深度学习的目标检测涉及两个子任务:实例定位和分类。这两个任务的预测分别告诉我们图像上的“位置”和“什么”目标。在训练阶段,两个任务都通过梯度下降联合优化,但是静态Anchor匹配策略并没有明确受益于两个任务的联合解决方案,这可能会导致任务错位问题,即在评估阶段 ,该模型可能会生成具有正确分类但不精确定位的边界框的预测,以及具有精确定位但错误分类的预测。这两种预测都显着降低了整体检测质量。
为了解决现有基于IoU-anchor策略的这两个局限性,研究者提出了一种新的自适应Anchor匹配准则,由定位和分类任务相互指导,动态分配训练Anchor样本为优化分类,反之亦然。特别是,将定位良好的Anchor限制为也很好分类(定位到分类),以及那些分类良好的Anchor也很好定位(分类到定位)。这些策略导致内容/上下文敏感的Anchor匹配并避免任务错位问题。尽管所提出的策略很简单,但在PASCAL VOC和MS COCO数据集上,尤其是在严格的指标(如AP75)上,Mutual Guidance与具有不同深度学习架构的传统静态策略相比,带来了一致的平均精度 (AP) 增益。
新提出的方法有望在需要精确实例定位的应用程序上更有效,例如自动驾驶、机器人、户外视频监控等。
传统的Anchor通常是预先定义了一组Anchor的aspect ratio,在实际的滑窗训练过程中先用二分类模型判断这些Anchor的框内有没有物体,并根据设定的阈值将sample标注为positive或者negative或者ignored,然后进行bonding box回归进行refine,最后做多分类再回归调整位置。
这里作者将预定义的Anchor和GT的IoU叫做IoU-anchor,IoU-anchor大于50%的作为positive,小于40%作为negative,其他作为ignored samples。如果没有Anchor的大于50%,那就选最大的IoU的那个作为positive。如下图所示:
定位到分类(Localize to Classify)
动态设置述分类方法中正负样本的阈值。因为随着训练进行,正样本变多(因为二分类模型能力逐渐增强,但是阈值没变),作者认为这样会导致训练不稳定。
于是作者将拟将分类模型的分类能力纳入阈值设置考量范围以动态设置阈值:在根据IoU-regressed标注确定正负样本的时候不再直接采用固定阈值,而是根据IoU-anchor中的正样本数量n来选取IoU-regressed的前n个样本标注为positive,其他negative和ignored同理。
这种策略能够随着定位能力提高而提高,同时也保持了训练过程中正负样本分配的一致性!
分类到定位(Classify to localize)
在分类早期,模型处于初始状态,大多数分类的结果都接近于0,存在类似于推荐系统的冷启动问题同时也可能使得训练不稳定,所以研究者定义了一个Classify to localize的策略来避免这种问题。
首先作者定义了一个IoU-amplified用于替换传统的IoU-regressed,其表达式如下:
其中σ是超参用于调整的增强系数,p是分类得分。此外,这一部分也采用了类似于前面定位到分类部分动态阈值设置的策略来设置这里的正样本阈值。
显然开始时与GT的iou较大的anchor box置信度一般更高,被选中的概率也更高;当iou相同时,置信度p较高的anchor得到的IOUamplified也更大。上图的第四列是直接预测的置信度,第五列是amplified之后的score。可以发现amplified后的结果与iou和p都有关。
IoU-amplifed总是高于IoU-anchor,并且amplification与预测的Classif分数成正比。特别是σ越小amplification越强(注意σ要大于1),σ变大时就消失。
通过这种交互作用,训练过程能够让回归好分类差的Anchor尽可能地提升分类精度,同样让分类好但回归差的Anchor尽可能地提升回归精度,从而一定程度解决 task-misalignment问题。
实验及可视化
训练阶段标签分配差异的可视化(图像大小设置为320×320像素)。红色、黄色和绿色Anchor框分别是由基于IoU-anchor、Localize to Classify和Classify to Localize分配的正样本Anchor。
#FSOD~
一种简单的目标检测方法,少样本目标检测(few-shot object detection,FSOD)——仅在少数训练实例的情况下为新类别扩展目标检测器的任务
这次的目标是少样本目标检测(few-shot object detection,FSOD)——仅在少数训练实例的情况下为新类别扩展目标检测器的任务。引入了一种简单的伪标记方法,从训练集中为每个新类别获取高质量的伪注释,大大增加了训练实例的数量并减少了类不平衡;新提出的方法会找到以前未标记的实例。
小样本目标检测 (FSOD) 旨在使用很少的训练示例检测新目标,最近在社区中引起了极大的研究兴趣。已经证明基于度量学习的方法使用基于双分支的孪生网络对这项任务有效,并计算图像区域和少样本示例之间的相似性以进行检测。
然而,在之前的工作中,两个分支之间的交互只限于检测头,而剩下的数百层用于单独的特征提取。受最近关于视觉转换器和视觉语言转换器的工作的启发,研究者提出了一种新颖的基于完全交叉转换器(Fully Cross-Transformer)的FSOD模型 (FCT),方法是将交叉转换器整合到特征主干和检测头中。提出了非对称批处理交叉注意来聚合来自具有不同批处理大小的两个分支的关键信息。新模型可以通过引入多级交互来改善两个分支之间的少样本相似性学习。PASCAL VOC和MSCOCO FSOD基准的综合实验证明了我们模型的有效性
使用模型预测进行Na¨ıvely training会产生次优性能;研究者提出了两种新方法来提高伪标记过程的精度:首先,引入了一种验证技术来删除具有不正确类标签的候选检测;其次,训练了一个专门的模型来纠正质量差的边界框。
在这两个新步骤之后,获得了大量高质量的伪注释,允许最终检测器进行端到端的训练。此外,研究者展示了新方法保持了基类性能,以及FSOD中简单增强的实用性。在对PASCAL VOC和MS-COCO进行基准测试时,与所有shots数量的现有方法相比,新提出的方法实现了最先进或次优的性能。
目标检测是指确定图像是否包含特定类别的对象的任务,如果是,则对它们进行定位。近年来,通过为一组预定义的目标类训练计算模型,在目标检测方面取得了巨大的成功,其中包含大量人工注释标签,例如MS-COCO和PASCAL VOC。然而,这样的训练范式限制了模型只能在有大量训练数据的封闭的小类别上表现良好。
相比之下,人类可以不断扩展他们的词汇表,学习检测更多的类别,即使只能访问几个例子。这也是现代计算机视觉系统的理想能力,并在少样本目标检测 (FSOD) 任务中进行了研究。
研究者工作的目标是FSOD:给定一个现有的目标检测器,该检测器已经在某些类别的大量数据(称为基本类别)上进行了训练,我们希望学习仅使用一些注释来检测新类别,例如每个类别1-30个,同时保持原始基本类别的性能。
新框架分析
Problem Definition
在今天分享中,我们考虑与TFA[Few-shot object detection via feature reweighting]中相同的问题设置。具体来说,假设我们有一个图像数据集D和两个注释集。首先是 Ybase,对一组基本类别Cbase进行了详尽的注释。其次YKNOVEL,在一组小类别 CNOVEL上只有K个注释。请注意,基本类别的注释是详尽的,但对于新类别,大多数实例都没有标记,因为在少样本设置下,仅为图像数据集D提供了K个注释。
为了解决“监督崩溃”的问题,我们采用了一种简单的伪标签方法来挖掘新类别的实例,有效地扩展了它们的注释集。然而,来自检测器的伪注释(在Novel训练之后)是不可靠的,包含大量误报。在这里,我们建立了一种方法来提高这些候选伪注释的精度,方法是自动过滤掉具有不正确类标签的候选,并为剩余的那些改进边界框坐标。我们的方法为新类别产生了大量高精度伪注释,允许最终检测器在基础和新类别数据上进行端到端训练。
主要讲解下Label Verification!我们从Chum等人的查询扩展工作中获得灵感[Total recall: Automatic query expansion with a generative feature model for object retrieval]。它使用空间验证在检索期间接受或拒绝新实例。这里的目标是验证每个候选检测的预测类标签。具体来说,我们考虑为具有非常有限的few-shot注释的新颖类别构建分类器。仅使用少量注释构建分类器显然不是一项简单的任务,因为它通常需要高质量的特征表示。在这里,我们受益于自监督模型的最新发展,例如MoCo、SwAV、DINO,并使用这些模型产生的高质量特征构建kNN分类器。在实践中,这项工作使用了通过自监督DINO方法训练的ViT模型的输出CLS,其中NN性能被证明特别强。
为了执行标签验证(上图),我们首先使用自监督模型计算每个给定的新类 ground-truth注释的特征。这些特征在kNN分类器中用作训练数据。同样,我们使用相同的自监督模型计算候选检测集中每个实例的特征。具体来说,为了计算给定注释/候选检测的特征,首先使用边界框来裁剪相关图像。然后调整该作物的大小并作为输入传递给自监督模型。
实验及可视化
COCO数据上的性能比较
PASCAL VOC性能比较
左上:在标签验证期间验证的预测实例;来自我们的基线检测器和我们的kNN分类器的预测类标签匹配。右上:在标签验证期间被拒绝的预测实例;我们的基线检测器(误报)和kNN预测的类标签不匹配。左下:经过验证的质量非常差的边界框)蓝色虚线)在框校正期间得到了显着改善(石灰实心)。右下:经过验证的可接受的边界框(蓝色虚线)得到进一步改进(石灰实心)。
以往小样本检测方法大致可以分为俩类:single-branch方法和two-branch方法;前者通常是基于Faster RCNN进行finetuned,需构建multi-class classifier;但该方法针对shot比较少例如1-shot时,较为容易出现过拟合情况;而后者通常时构建siamese网络,分别同时提取query特征和support特征,然后基于metric learning方法比如feature fusion,feature alignment,GCN或者non-local attention来计算俩分支的相似性,由于在Novel类别上无需构建multi-class classifier,所以泛化性更好;俩类方法大致差异如下图所示:
Task Definition
在小样本目标检测(FSOD)中,有两组类C=Cbase∪Cnovel和Cbase∩Cnovel=∅,其中基类Cbase每个类都有大量训练数据,而新类Cnovel(也称为支持类)只有每个类的训练示例很少(也称为支持图像)。对于K-shot(例如,K=1,5,10)目标检测,研究者为每个新类别c∈Cnovel准确地使用K个边界框注释作为训练数据。FSOD的目标是利用数据丰富的基类来协助检测少样本的新类。
Overview of Our Proposed Model (FCT)
研究者认为以往的two-branch方法只关注了detection head部分的特征交互,忽略了特征提取部分;于是这篇论文的motivation就出来了。因此研究者在Faster RCNN上提出了Fully Cross-Transformer(FCT)的小样本检测方法,在每个阶段都进行特征交互。如下图所示:
The Cross-Transformer Feature Backbone
在cross-transformer中计算Q-K-V attention时为了减少计算量,研究者采用了PVTv2的方式。上面大致介绍了query和support特征提取,在特征交互上作者提出了 Asymmetric-Batched Cross-Attention。具体做法如下图和公式所示:
评论。研究者彻底研究了提出的模型中两个视觉分支之间的多层次交互。cross-transformer特征主干中的三个阶段使两个分支与低级、中级和高级视觉特征逐渐有效交互。
The Cross-Transformer Detection Head
在detection head部分,和以上操作相反,在每张query上提取完proposal之后经过ROI Align可以得到ROI特征fp∈RBp∗H′∗W′∗C3,其中Bp=100,为了减少计算复杂度还是对support进行ave操作fs′=1Bs∑Bsfs,fs′∈R1∗H′∗W′∗C3,然后使用Asymmetric-Batched Cross-Attention计算俩分支attention,不同的是,query分支Bp≥1 and Bs′=1 。
#Amodal-Completion-in-the-Wild
遮挡是计算机视觉很基础但依旧未解决的问题之一,因为遮挡意味着视觉信息的缺失,而机器视觉系统却依靠着视觉信息进行感知和理解,并且在现实世界中,物体之间的相互遮挡无处不在。牛津大学 VGG 实验室 Andrew Zisserman 团队最新工作系统性解决了任意物体的遮挡补全问题,并且为这一问题提出了一个新的更加精确的评估数据集。该工作受到了 MPI 大佬 Michael Black、CVPR 官方账号、南加州大学计算机系官方账号等在 X 平台的点赞。以下为论文「Amodal Ground Truth and Completion in the Wild」的主要内容。三次马尔奖获得者Andrew带队解决任意物体遮挡补全难题
- 论文链接:https://arxiv.org/pdf/2312.17247.pdf
- 项目主页:https://www.robots.ox.ac.uk/~vgg/research/amodal/
- 代码地址:https://github.com/Championchess/Amodal-Completion-in-the-Wild
非模态分割(Amodal Segmentation)旨在补全物体被遮挡的部分,即给出物体可见部分和不可见部分的形状掩码。这个任务可以使得诸多下游任务受益:物体识别、目标检测、实例分割、图像编辑、三维重建、视频物体分割、物体间支撑关系推理、机器人的操纵和导航,因为在这些任务中知道被遮挡物体完整的形状会有所帮助。
然而,如何去评估一个模型在真实世界做非模态分割的性能却是一个难题:虽然很多图片中都有大量的被遮挡物体,可是如何得到这些物体完整形状的参考标准 或是非模态掩码呢?前人的工作有通过人手动标注非模态掩码的,可是这样标注的参考标准难以避免引入人类误差;也有工作通过制造合成数据集,比如在一个完整的物体上贴直接另一个物体,来得到被遮挡物体的完整形状,但这样得到的图片都不是真实图片场景。因此,这个工作提出了通过 3D 模型投影的方法,构造了一个大规模的涵盖多物体种类并且提供非模态掩码的真实图片数据集(MP3D-Amodal)来精确评估非模态分割的性能。各不同数据集的对比如下图:
具体而言,以 MatterPort3D 数据集为例,对于任意的有真实照片并且有场景三维结构的数据集,我们可以将场景中所有物体的三维形状同时投影到相机上以得到每个物体的模态掩码(可见形状,因为物体相互之间有遮挡),然后将场景中每个物体的三维形状分别投影到相机以得到这个物体的非模态掩码,即完整的形状。通过对比模态掩码和非模态掩码,即可以挑选出被遮挡的物体。
数据集的统计数据如下:
数据集的样例如下:
此外,为解决任意物体的完整形状重建任务,作者提取出 Stable Diffusion 模型的特征中关于物体完整形状的先验知识,来对任意被遮挡物体做非模态分割,具体的架构如下(SDAmodal):
提出使用 Stable Diffusion Feature 的动机在于,Stable Diffusion 具有图片补全的能力,所以可能一定程度上包含了有关物体的全部信息;而且由于 Stable Diffusion 经过大量图片的训练,所以可以期待其特征在任意环境下有对任意物体的处理能力。和前人 two-stage 的框架不同,SDAmodal 不需要已经标注好的遮挡物掩码作为输入;SDAmodal 架构简单,却体现出很强的零样本泛化能力(比较下表 Setting F 和 H,仅在 COCOA 上训练,却能在另一个不同域、不同类别的数据集上有所提升);即使没有关于遮挡物的标注,SDAmodal 在目前已有的涵盖多种类被遮挡物体的数据集 COCOA 以及新提出的 MP3D-Amodal 数据集上,都取得了SOTA表现(Setting H)。
除了定量实验,定性的比较也体现出了 SDAmodal 模型的优势:从下图可以观察到(所有模型都只在 COCOA 上训练),对于不同种类的被遮挡物体,无论是来自于 COCOA,还是来自于另一个MP3D-Amodal,SDAmodal 都能大大提升非模态分割的效果,所预测的非模态掩码更加接近真实的。
#LDR~~
作者提出了一个语言驱动的一体化恢复框架,这是首个PVL结合MOE的图像恢复模型。提出方法的关键是利用预训练的视觉语言模型来推理退化图像中的各种天气特定知识。然后,作者使用这些知识通过三个模块恢复干净的图像:退化图测量模块,Top-K专家恢复和恢复特征聚合。 首个将大模型(PVL)结合混合专家系统(MOE)用于多合一恶劣天气图像恢复
论文链接:https://arxiv.org/abs/2312.01381Code: github.com/noxsine/LDR
背景
在恶劣天气条件下成像时会出现图像质量退化的问题,这给自动驾驶汽车和户外监控系统等计算机视觉系统带来了重大挑战。这些系统需要能够在各种天气条件下稳定运行,无论是雨天、雾天还是雪天。为了确保安全和效率,采用一体化框架(即一个模型能处理多种退化输入)处理不同天气状况比使用针对每种天气单独优化的模型要更为有效,这种集成的任务流程可以更好地适应各种应用场景的需求。
一般来说,退化图像可以建模为干净图像和退化残差的相加组合。因此,一些研究对所有退化类型使用单个网络。虽然这些方法能够学习到公共的图像重建知识,但是它们忽略了不同的退化仍然具有不同的数学模型,例如雾霾模型中大气散射效应产生的透射图对于雨滴模型是不必要的。
因此,另一些研究使用不同的子网络进行天气特定知识的学习。然而,他们需要辅助监督来分配不同子网,例如退化类型或深度图作为监督。此外,现有方法的固定子网架构限制了所学习的天气特定知识的多样性及其处理各种天气条件下图像的能力,例如由于天气严重程度或以前从未遇到过的退化类型而退化的图像,或者真实场景中的雪和雾霾等混合天气条件。
在本文中,我们的问题是——我们能否通过自适应学习各种天气特定知识和共享知识来恢复被各种天气条件退化的图像,而不需要真实天气的类型和强度的真值。我们通过语言驱动的一体化恢复框架从两个方面回答了这个问题。
1)预训练视觉语言模型的特征空间内的知识可以用于各种任务,但其在我们的任务中的潜力仍在探索中。一种直接的方法是使用预训练视觉语言模型作为图像退化分类器。相比之下,我们更进一步,从预训练视觉语言模型的特征空间中推理出天气条件类型之外的各种天气特定知识。
2)在退化图的指导下,我们释放了各种天气去除的潜力。由于模型参数是与天气相关的,例如,与降雨相关的参数通常对不相关的退化无效,并且将不相关参数的计算归零也几乎不影响恢复质量。因此我们选择在图像恢复过程中绕过与特定天气类型和严重程度无关的参数的计算。在混合专家模型结构的帮助下,我们的框架动态地选择专家进行恢复,从而保证了天气相关知识的自适应学习,而不局限于固定的网络架构。
主要贡献
我们提出了一种语言驱动的一体化恢复框架框架,可以在图像恢复的一体化解决方案中自适应地消除各种不利的天气条件。我们的模型是第一个将预训练的视觉语言模型(PVL)应用到一体化的图像恢复领域的模型。
我们提出了一个退化图测量模块,用于从预训练的视觉语言模型中提取不同的天气特定知识。我们使用大型语言模型查询降级图像中降级的发生、类型和严重程度。获得的降级先验描述了高级文本语义中降级的内容、位置和严重程度。然后,通过将先验与退化图像对齐,将高阶退化转换为二维退化图,这个退化图提供了来自预训练的视觉语言模型模型的不同图像退化知识的逐像素表示。
我们提出了一个Top-K专家恢复模块,稀疏和自适应计算像素级恢复特征。具体来说,我们维护了一个恢复专家的候选列表,并利用退化映射稀疏地选择与每个退化最相关的恢复专家。通过明智地应用选定的专家像素来恢复特定于天气的特征,我们为恢复创建了灵活的、自适应退化的专家组合/模型架构。
网络结构图
实验结果
在雨、雪、雾等退化天气类型数据集上的结果表明,我们的方法获得了最先进的性能。
退化图可视化
我们在all-weather数据集上可视化了我们的方法所生成的退化图,可以看到我们的退化图能够很好的定位出退化区域。同时我们还展示了视觉语言模型对于退化输入的语义输出。
结论
我们提出了一个语言驱动的一体化恢复框架,这是首个PVL结合MOE的图像恢复模型。提出方法的关键是利用预训练的视觉语言模型来推理退化图像中的各种天气特定知识。然后,我们使用这些知识通过三个模块恢复干净的图像:退化图测量模块,Top-K专家恢复和恢复特征聚合。在标准基准数据集上的实验表明,我们的方法在很大程度上优于过去的工作。在未来,该方法利用视觉语言模型生成的退化先验提示,有望发展成为图像恢复的基础模型。
#DPM模型
今天带来的主题——1000000类的快速精确检测。比Base Line快了将近2000倍。但是任何一个好的东西都会有美中不足之处,之后我们在讨论其缺陷。
今天说的这个模型主要优势在于速度快,具体就是对于多类检测问题,检测速度可以做到和类别数目无关。
对于包含C类的物体检测而言,一个基本的框架是,训练C个分类器,对于每个候选位置,用每个分类器都判定一遍,然后做后处理融合。这样的坏处就是速度太慢,处理速度和物体类别成反比。
今天说讲的内容参考的Base Line算法是DPM模型,就是每个物体的模型由多个part(假定P个)的模型组成,每个part的模型可以看作是一个filter和该位置特征的点积(整体上可以看作是一个convolution过程),然后根据可能的part候选的位置约束确定物体的位置。在实际中,最耗时的是convolution过程,每个物体分类器的filter(对应weight)都需要和候选位置的特征进行一次点积处理,假定候选窗口数目为W个,候选窗口的feature dimension是M维,则运算复杂度为W*C*P*M。
今天讲的内容工作者利用了之前的一个工作结果,可以将两个向量的点积(其实点积和cos距离有非常强的关联,如果预先对参与cos距离运算的两个向量进行模的归一化处理,则归一化后两向量的cos距离和点积是相同的)相似度转化为两个hash值的hamming距离。
距离将feature转换为lsh hash的过程如下(得到的hash是LSH hash,也是WTA hash):假定共M维feature,设K为保留的中间元素数目设定一个重排数组(随机得到,个数为M,元素为0-M-1,每个元素的序号表示临时feature对应原始feature中的序号),从而将原始feature转变为一个临时feature,取临时featue的前K维,组成最终的新feature,则新feature中最大元素序号(新feature中)为k,将k表示为一个log(K)位的二进制数字串继续设定共N个重排数组(随机得到),则得到共N*log(K)位的二进制串,按照最前面的重排数组对应的串放在最低位的原则,得到一个hash值(N*log(K)位整数)。
对应的,两个feature之间的点积转化为两个对应hash之间的hamming距离。
直观上看,由于如此得到的数字只和数字之间的相互大小有关,且每次保留最大的序号的信息,因此,对于数字的扰动非常鲁棒。因此,得到的两个hash值之间的hamming距离所对应的相似度对于特征值的变化更加鲁棒,是更有效的表示。
(到底是否是这样,无从得知,其他信息请参考J. Yagnik, D. Strelow, D. A. Ross, and R.-s. Lin. The powe of comparative reasoning. In IEEE International Conference on Computer Vision, 2011.)
由于计算两个hash之间的hamming距离非常快速(还可以查表),因此最耗时的部分在计算每个窗口的feature以及计算hash值上,这个运算和类别数目无关。
上述可以用于点积衡量相似度的特征,可以是各种各样的特征,在物体检测里面最常用的要数HOG特征了。
下面以HOG特征为例,说明Base Line 算法和本文提出的改进之间计算时间的对比:
Base Line算法的计算过程如下:
- 计算多尺度的边缘强度和边缘方向图像;
- 对所有窗口进行遍历,对于每个窗口,计算其高斯加权HOG直方图特征,分别计算HOG特征和C类P个filter的点积;
- 将具有局部最大响应的窗口作为候选,得到可能的物体中心的分布累积,综合得到最终的物体检测结果。
改进算法计算过程如下:
事先计算得到C*P个filter对应的hash值
- 计算多尺度的边缘强度和边缘方向图像;
- 对所有窗口进行遍历,对于每个窗口,计算其高斯加权HOG直方图特征,计算特征对应的hash值,分别计算HOG特征hash值和C类P个filter的hash值的hamming距离;
- 将具有局部最大响应的窗口作为候选,得到可能的物体中心的分布累积,综合得到最终的物体检测结果。
对比可以看到,由于改进算法中,计算hamming距离的部分非常快,可以忽略,因此,最终得到的多类检测器的运算量和类别数目无关。
进一步,为了快速运算,可以将上述的hamming距离计算转换为查表运算,为了当累积相似度高于阈值时无需继续计算,将hash值划分为多个不同部分(这样每个表也比较小)。
将N*log(K) bit的hash分为N/M组(band),每组是一个M*log(K) bit的整数,对于每个类别每个part的filter(训练模型),对应N/M组查找表(查找表的序号为当前窗口feature在该band上的hash值,查找表记录的值为该featurehash值和模型hash值的相似度),从而避免了hamming距离计算过程。每个filter取到的N/M组查找表的值的累积和为对应的点积值(相似度)。对N/M组累积和计算,当计算发现相似度大于阈值时,则放弃后面的运算,直接对预估物体位置分布进行累积。
则最终得到物体位置分布累积最大的位置为检测得到的物体位置。
提出的框架中还有一点值得讨论的地方在于,100000类数据都是搜索引擎爬取的,没有经过人工标定,所以结果存在一定不准确的地方。但是定性上看,这样做确实快了很多。
当然,相对Base Line算法,提出的算法在精度上还是降低一些的(见论文voc 2007的对比结果,mAP由0.26->0.24)。而耗费的20G内存,推测主要应该是查找表对应的内存。
实验
表1 hash-based算法与Base Line算法准确率比较
从表中可以看出,只有3个表现的比较好,其余的都表现一般甚至比Base Line更差。
mAP随hash数量变化的情况
可以看出:
- 随着hash数量增加,mAP随之提高,但是到某一数量的时候趋于饱和,该实验证明了达到了16的时候,效果最好;
- 当K=16时,在5KB/filter,mAP到达饱和,所有当有1000000类时,每类10个filters,则需要5G内存;
- 在5秒每张图像的条件下,与Base Linr相比,加速将近增加了20倍。
表2 相同内存情况下,执行速度与准确率的关系
三种不同执行时间下,检测目标数量和mAP的关系
从图中可以看出:
- 关系曲线呈指数变化趋势;
- 大概三分之一的样本集的准确率为0.20;
- 大概五分之一的样本集的准确率为0.30。
t=8时,检测准确率最高的6中物体
在PASCAL VOC2007数据集中,内存给定,不同执行时间下,增加目标类,准确率的变化情况。
从上图可以看出:执行速度越快,准确率越低。随着类数增加,准确率迅速下降,这是由于哈希冲突或者哈希表的信息量达到饱和,值得注意的是红色曲线,mAP下降最少,说明当增加计算时间后,hashing-base检测器检测大数据量级的目标类是可行的。
之前有提及框架的缺点,现在说说其缺点所在:
因为是在单机上进行类别检测,所以速度不是很理想,单机处理一张图像的速度需要20s,而且1000000类的mAP是0.16,从数据上看是很理想,但是距离实用性还有很长的距离。
- 这个思路,对于基本操作为点积(x*y)运算的,都可以加速,这个操作非常常见,比如线性SVM,COS距离,以及神经网络和LR里面的WX等等,都可以使用。一个比较容易想到的是可以应用于multi-model检测框架中(比如多类别物体检测,多姿态人脸/汽车检测等等);
- 对于多模型检测,速度是一个非常重要的方面,一般的思路就是在提高单个模型速度(feature和分类器计算速度)的情况下,增加特征共用(LAB feature image, vector boosting),其实,最理想的特征共用是deep learning模型(只在最后一层不同,其它层都是共用的,每个隐节点可以看作是feature,所有类别共用feature,只在输出层时,计算一个wh+b项,是非常理想的特征共用),只可惜单个deep learning模型太慢,当遍历多个检测候选窗口时,最终的速度现在看太慢了。
补充:其实这个方法可能用于加速神经网络模型(当然包括deep learning),难点在于点积变为hash距离的近似比较大,未必会有好的结果。
#Grad-CAM
其实还是关于yolo的 利用Grad-CAM解释目标检测框架
研究者研究了视觉物体检测器的可解释性问题。具体来说,研究者在YOLO目标检测器的示例中演示了如何将Grad-CAM集成到模型架构中并分析结果。最后展示了如何计算个体检测的基于归因的解释,并发现结果的归一化对其解释有很大影响。
当今复杂的计算机视觉模型需要解释其行为的机制。这推动了可扩展人工智能(XAI)[Adadi and others, “Peeking inside the black-box: A survey on explainable artificial intelligence (XAI),” IEEE Access]的深入研究。视觉领域中关于XAI的大多数工作都集中于解释视觉分类器,即它们学习到的表示和/或它们的决策。
目前,缺乏用于视觉目标检测器的XAI方法,因为它们的特殊架构阻碍了XAI方法的应用。在今天分享中,研究者以YOLO检测器为例,研究了视觉目标检测器的XAI问题。研究者将Grad-CAM集成到模型中,以生成单个目标检测的解释,即边界框。在检测级别计算注意力图,以评估哪些信息导致某个决策。为此,研究者关注YOLO检测器估计的两个分数,即目标性和类概率,以获得更全面的解释。
研究者批判性地分析了结果,并提出了不同的标准化策略,以使输入图像内或不同图像之间的不同目标检测的注意力图具有可比性。研究者分析了真检测和假检测的结果,并比较了不同的标准化变量以显示结果。
在目标检测和XAI方面都有大量相关工作。令人惊讶的是,这两个领域的结合几乎没有被研究过。罕见的例外是Tsunakawa等人的工作[H. Tsunakawa, Y. Kameya, H. Lee, Y. Shinya, and N. Mitsumoto,“Contrastive relevance propagation for interpreting predictions by asingle-shot object detector,” in 2019 International Joint Conference onNeural Networks (IJCNN).],他们提出了用于单镜头多框检测器,基于传播的XAI方法(逐层相关传播,LRP)的扩展,以及Petsiuk等人[V. Petsiuk, R. Jain, V. Manjunatha, V. I. Morariu, A. Mehra, V. Ordonez,and K. Saenko, “Black-box explanation of object detectors via saliencymaps,” in Proceedings of the IEEE/CVF Conference on ComputerVision and Pattern Recognition],他们提出基于随机输入采样的用于目标检测器的事后模型不可知XAI方法。缺乏文献可能是目标检测器高度特定的架构阻碍XAI方法集成的结果。目标检测器需要解释定位和分类方面,并提供影响检测可能性的多个分数。这使得许多特别是自学的解释方法的直接应用变得困难。
检测模型基于Tiny YOLO v3架构,对可重新配置的硬件进行了推理优化,并包含两个检测头,以说明具有不同规模的目标。每个头部的最后一个卷积层存储每个潜在边界框的多个分数:(i)objectness,它提供了一般观察目标的可能性;(ii)所有目标类的类概率向量。对于头部1,该层的大小为1x1x512x30,对于头部2,该层为1x1x256x30。这些层中的特定神经元代表Grad-CAM的输入,用于生成解释。在这些层之后,YOLO架构应用非极大抑制(NMS),并且决策阈值过滤掉最可能的检测结果。
Grad-CAM最初是为传统的CNN架构提出的,用于根据在最后一个卷积层中学习到的抽象特征来解释决策。考虑到YOLO基于卷积滤波器堆栈,Grad-CAM是适用的,但并非没有某些修改。对于给定的检测,首先通过反转NMS过程来识别相应头部的最后一个卷积层中的神经元,该层对应于所研究的边界框的类概率和目标。这些神经元代表计算朝向下层卷积层(即卷积堆栈的顶层特征图)神经元的梯度的起点。
研究者采用两步方法来获得两个分数的解释。梯度首先用于对底层卷积层的激活图进行加权。然后在层的所有通道上对加权激活图进行平均,并放大(即插值)和映射(即颜色编码)到输入图像(416px x 416px),见上图。放大的激活模式突出显示了输入图像中与所调查边界框的类或目标有密切关系的部分。注意,由于YOLO的架构,Grad-CAM的结果是全局图像级别的激活,即,它们不限于观察到的边界框,如下图所示。
渐变CAM激活默认情况下为最小-最大标准化,以提高可见性。这导致在同一图像中和不同图像中的不同目标检测之间的不可比较的激活模式。为了解决这一问题,研究者提出了三种不同的标准化级别:检测级别(默认)、图像级别(图像中所有解释的联合标准化)和数据集级别(一组图像中所有说明的联合标准)。
实验及结果
下图显示了在同一输入图像上错误检测到的卡车。红色海报上的白色矩形文字似乎误导了探测器,使其看到了一辆卡车。目标和类概率在检测级别都会强烈激活,这会给人一种印象,即检测器以高置信度失败。这实际上是不正确的,这可以通过数据集级别(未显示)的归一化来看出,在数据集级别,两种激活都被强烈衰减,这表明检测器实际上对检测不确定。
研究者通过将Grad-CAM集成到YOLO中,研究了目标检测的可解释性。我们可以可视化其内部决策得分,从而帮助解释目标检测。
结果表明,标准化对于使不同的解释具有可比性至关重要,例如,在不同的图像中。研究者的方法很有效:生成一个解释大约需要半秒钟。未来,我们的目标是使用这些解释来识别运行时的潜在错误检测。
#PPCNN
这是细粒度特征提取和定位用于目标检测,近年来,深度卷积神经网络在计算机视觉上取得了优异的性能。深度卷积神经网络以精确地分类目标信息而闻名,并采用了简单的卷积体系结构来降低图层的复杂性,基于深度卷积神经网络概念设计的VGG网络。VGGNet在对大规模图像进行分类方面取得了巨大的性能。该网络设计了一堆小卷积滤波器,使网络结构非常简单,但网络有一些定位错误。
就有研究者提出了独特的网络架构,PPCNN(金字塔池化卷积神经网络),以减少定位误差,并提取高级特征图。该网络由改进的VGGNet和U-shape特征金字塔网络组成。介绍了一种提取和收集目标的小特征信息并从源图像中检测小物体的网络。该方法在定位和检测任务中取得了更高的精度。
Facebook的特征金字塔网络Feature Pyramid Networks(FPN)。FPN主要解决的是物体检测中的多尺度问题,通过简单的网络连接改变,在基本不增加原有模型计算量情况下,大幅度提升了小物体检测的性能。我们将从论文背景,论文思想,结果与结论几方面探讨此论文。
在物体检测里面,有限计算量情况下,网络的深度(对应到感受野)与stride通常是一对矛盾的东西,常用的网络结构对应的stride一般会比较大(如32),而图像中的小物体甚至会小于stride的大小,造成的结果就是小物体的检测性能急剧下降。传统解决这个问题的思路包括:
- 多尺度训练和测试,又称图像金字塔,如图1(a)所示。目前几乎所有在ImageNet和COCO检测任务上取得好成绩的方法都使用了图像金字塔方法。然而这样的方法由于很高的时间及计算量消耗,难以在实际中应用。
- 特征分层,即每层分别预测对应的scale分辨率的检测结果。如图1(c)所示。SSD检测框架采用了类似的思想。这样的方法问题在于直接强行让不同层学习同样的语义信息。而对于卷积神经网络而言,不同深度对应着不同层次的语义特征,浅层网络分辨率高,学的更多是细节特征,深层网络分辨率低,学的更多是语义特征。
因而,目前多尺度的物体检测主要面临的挑战为:
- 如何学习具有强语义信息的多尺度特征表示?
- 如何设计通用的特征表示来解决物体检测中的多个子问题?如object proposal, box localization, instance segmentation.
- 如何高效计算多尺度的特征表示?
针对这些问题,提出了特征金字塔网络FPN,如上图(d)所示,网络直接在原来的单网络上做修改,每个分辨率的feature map引入后一分辨率缩放两倍的feature map做element-wise相加的操作。通过这样的连接,每一层预测所用的feature map都融合了不同分辨率、不同语义强度的特征,融合的不同分辨率的feature map分别做对应分辨率大小的物体检测。这样保证了每一层都有合适的分辨率以及强语义特征。同时,由于此方法只是在原网络基础上加上了额外的跨层连接,在实际应用中几乎不增加额外的时间和计算量。将FPN应用在Faster RCNN上的性能,在COCO上达到了state-of-the-art的单模型精度。
具体而言,FPN分别在RPN和Fast RCNN两步中起到作用。其中RPN和Fast RCNN分别关注的是召回率和正检率,在这里对比的指标分别为Average Recall(AR)和Average Precision(AP)。分别对比了不同尺度物体检测情况,小中大物体分别用s,m,l表示。
在RPN中,区别于原论文直接在最后的feature map上设置不同尺度和比例的anchor,本文的尺度信息对应于相应的feature map(分别设置面积为32^2, 64^2, 128^2, 256^2, 512^2),比例用类似于原来的方式设置{1:2, 1:1,, 2:1}三种。
与RPN一样,FPN每层feature map加入3*3的卷积及两个相邻的1*1卷积分别做分类和回归的预测。在RPN中,实验对比了FPN不同层feature map卷积参数共享与否,发现共享仍然能达到很好性能,说明特征金字塔使得不同层学到了相同层次的语义特征。
金字塔池化网络允许从不同卷积层中的多尺度特征作为输入,并提取相同尺度的输出特征图,如上图所示。研究者提出了用VGGNet在u-shape特征金字塔网络中构建的改进的网络架构来提取高级特征图。该特征金字塔网络的特征提取过程如下图所示。
可视化结果: