首页 > 其他分享 >w~视觉合集6

w~视觉合集6

时间:2024-10-24 09:19:37浏览次数:3  
标签:训练 模型 坑洼 路面 道路 图像 视觉 合集

我自己的原文哦~  https://blog.51cto.com/whaosoft/12329049

#SPM~概念半透膜模型

一只橘猫,减去「猫」,它会变成什么?

第一步在常见 AI 作图模型输入「一只胖胖的像面包的橘猫」,画出一只长得很像面包的猫猫,然后用概念半透膜 SPM 技术,将猫猫这个概念擦掉,结果它就失去梦想变成了一只面包。上图 1 是更多的猫猫图失去猫这个概念后的结果。AI图片橡皮擦来了,清华&阿里合作推出「概念半透膜」模型,还能改头换面

图 1 概念半透膜 SPM 针对不同的「猫」图擦除猫概念后的效果

下图 2 到图 6 展示了更多的示例。

图 2 失去梦想变成一只面包表情包

图 3 西装光剑米老鼠图擦除米老鼠概念

图 6 毕加索的抽象画擦除毕加索概念

这便是清华大学丁贵广教授团队和阿里安全联合发布的概念半透膜模型(concept Semi-Permeable Membrane,SPM 模型),该模型能够在 Diffusion 架构的 AI 作图模型中,精准、可控地擦除各类具象或抽象概念,并对无关概念做到几乎完全保留。

相关论文《One-dimensional Adapter to Rule Them All: Concepts, Diffusion Models and Erasing Applications》已经被计算机视觉国际顶级会议 CVPR 2024 高分录用。

  • 项目主页:https://lyumengyao.github.io/projects/spm
  • Github 地址:https://github.com/Con6924/SPM
  • 论文地址:https://arxiv.org/abs/2312.16145

阿里集团资深总监、人工智能治理与可持续发展研究中心主任、集团科技伦理治理委员会执行主席薛晖表示:该项成果在通义大模型系列的 AIGC 内生安全领域、可控生成等方面都具备落地潜力,能够有效避免有害概念的侵害,促进通义等 AI 技术产品可用、可靠、可信、可控地向善发展。

1、动机和研究背景

前不久,OpenAI 的文生视频模型 Sora 带来了 AIGC 新时代,主流的视觉 AIGC 基于扩散模型(Diffusion Model,DM),但依然存在各类问题,比如可以被诱导生成涉黄、侵权等危险概念、无法精准地对某些概念进行作画和控制等。这里的 「概念」可以是具象的「苹果」,也可以是抽象的「梵高风」、「色情」、「暴力」。

外置安全系统拦截风险会造成较差的用户体验(一些无恶意的用户可能在创作时,因为模型偶然生成一些违规内容而被拦截),因此需要一种基于模型内生安全的概念擦除方法,保留用户意图,同时对模型违规元素进行柔性地精准擦除。

针对此,本文提出了概念半透膜模型(concept Semi-Permeable Membrane,SPM 模型)。

2、技术框架

如下图 7 所示,给定一个目标概念,本文的主要目标是从预训练的 DM 中精确地擦除该概念,同时保留其他生成内容。

为了避免对特定 DM 参数的依赖和训练过程中出现的参数漂移,本文首先设计了一种轻量化的一维 Adapter,称为概念半透膜(concept Semi-Permeable Membrane,SPM)。这种极轻量的非侵入性结构可以插入任何预训练的 DM(如 SD v1.x)中,以学习特定概念的可迁移识别及其相应的擦除,同时保持原始模型的完整性。

然后,本文提出了一种新颖的 SPM 微调策略 ——Latent Anchoring(LA),以有效地在潜空间中利用连续的概念进行精确的擦除和有效的概念保留。一旦 SPM 独立学习到擦除不同的潜在风险的能力,这些 SPMs 就构成了一个概念擦除库,其中任何概念的组合(例如 Van Gogh + nudity)都可以根据需求场景定制,并直接免训练地迁移到其他 SPM 兼容的模型中(例如社区中的 RealisticVision 模型)。

在适配 SPM 后的推理过程中,本文的 Facilitated Transport 机制在接受输入 prompt 时会动态地控制 SPM 的激活和渗透性。例如,包含不雅内容的 prompt 将由 nudity SPM 擦除,但不会触发 Van Gogh SPM。同时,没有在 DM 中安装相应 SPM 的 Picasso 风格的生成几乎不会受到影响。

图 7 SPM 技术框架

2.1 轻量化的一维 Adapter:SPM

为了摆脱预训练模型的参数依赖,本文设计了一种轻量高效的 Adapter,SPM。它仅有一个内在维度,作为一种「半透薄膜」被插入到 DM 中来实现精准擦除。

SPM 的结构设计使得多个 SPM 可以叠加地插入到同一个 DM 中,基于信号加法的擦除使得多个危险概念可以灵活定制,以满足错综复杂且不断变化的擦除需求。此外,它可以在大多数的 DM 上轻松迁移,相比现有方法,显著提高推理、部署和存储效率。

2.2 微调阶段的概念半透性精准习得:Latent Anchoring

本文通过模型参数微调使 SPM 获得对特定概念的擦除半渗透性。基于 LDM 中概念的叠加与消去对应于对数概率算数运算的理论,本文对 SPM 进行参数化,以在 DM 的噪声预测过程中执行概念的擦除。

2.3 生成阶段的概念半透性动态适配:Facilitated Transport

3、实验效果

3.1 单概念的擦除

面对具体概念如「史努比」(图 8 一行五列),抽象概念如「梵高画风」和「毕加索画风」(图 9 一行六列,四行六列),SPM 都擦除足够彻底,且对其他概念几乎没有影响。而其他方法或擦除不彻底,或对无关概念有所破坏。

图 8 擦除史努比的效果

图 9 擦除梵高、毕加索画风的效果

3.2 多概念的擦除

擦除多个概念时,SPM 能保持稳定效果如图 10,且不会影响其他无关概念如图 11,而其他方法都或多或少对无关概念进行侵蚀。

图 10 SPM 对多个概念的擦除效果

图 11 SPM 擦除多概念时对无关概念没有影响   

3.3 违规概念的擦除

如图 12,对于一些抽象的有害概念例如色情,只需要加入 SPM,即可做到相对稳定的消除。如图 13,在学界著名的 I2P 测评集合上,SPM 对于色情概念的擦除效果目前达到了业界最优。

图 12 擦除色情概念的效果

图 13 色情概念擦除效果业界最优

3.4 无需训练的迁移

如图 15 显示,当 SPM 训练完成后,就可以直接迁移到同样架构、不同参数的其他模型上,达成即插即用的擦除目的。

图 15 在不同社区模型下的擦除表现

4、结论

SPM 针对视觉 AIGC 的可控擦除,能够带来更多创作可能性,也能通过擦除危险概念帮助 AI 向善。未来可以迁移到视频侧、3d 侧等各种模态下的概念编辑和擦除工作,都会成为后续 Sora 时代值得研究的点。

#ConvNet vs Transformer, Supervised vs CLIP

如何衡量一个视觉模型?又如何选择适合自己需求的视觉模型?MBZUAI和Meta的研究者给出了答案。后Sora时代,CV从业者如何选择模型?卷积还是ViT,监督学习还是CLIP范式

这里对于 ConvNet 和 Vision Transformer 架构在 ImageNet 精度之外的模型行为进行了深入分析,每个架构都涵盖了有监督训练范式和 CLIP 训练范式。尽管作者选择的模型具有相似的 ImageNet 精度和计算要求,但本文发现它们在许多其他的方面有所不同。

一直以来,ImageNet 准确率是评估模型性能的主要指标,也是它最初点燃了深度学习革命的火种。但对于今天的计算视觉领域来说,这一指标正变得越来越不「够用」。

因为计算机视觉模型已变得越来越复杂,从早期的 ConvNets 到 Vision Transformers,可用模型的种类已大幅增加。同样,训练范式也从 ImageNet 上的监督训练发展到自监督学习和像 CLIP 这样的图像 - 文本对训练。

ImageNet 并不能捕捉到不同架构、训练范式和数据所产生的细微差别。如果仅根据 ImageNet 准确率来判断,具有不同属性的模型可能看起来很相似。当模型开始过度拟合 ImageNet 的特异性并使准确率达到饱和时,这种局限性就会变得更加明显。

CLIP 就是个值得一提的例子:尽管 CLIP 的 ImageNet 准确率与 ResNet 相似,但其视觉编码器的稳健性和可迁移性要好得多。这引发了对 CLIP 独特优势的探索和研究,如果当时仅从 ImageNet 指标来看,这些优势并不明显。这表明,分析其他属性有助于发现有用的模型。

此外,传统的基准并不能完全反映模型处理真实世界视觉挑战的能力,例如不同的相机姿势、光照条件或遮挡物。例如,在 ImageNet 等数据集上训练的模型往往很难将其性能应用到现实世界的应用中,因为现实世界的条件和场景更加多样化。

这些问题,为领域内的从业者带来了新的困惑:如何衡量一个视觉模型?又如何选择适合自己需求的视觉模型?

在最近的一篇论文中,MBZUAI 和 Meta 的研究者对这一问题开展了深入讨论。

  • 论文标题:ConvNet vs Transformer, Supervised vs CLIP:Beyond ImageNet Accuracy
  • 论文链接:https://arxiv.org/pdf/2311.09215.pdf

论文聚焦 ImageNet 准确性之外的模型行为,分析了计算机视觉领域的四个主要模型:分别在监督和 CLIP 训练范式下的 ConvNeXt(作为 ConvNet 的代表)和 Vision Transformer (ViT) 。

所选模型的参数数量相似,且在每种训练范式下对 ImageNet-1K 的准确率几乎相同,确保了比较的公平性。研究者深入探讨了一系列模型特性,如预测误差类型、泛化能力、习得表征的不变性、校准等,重点关注了模型在没有额外训练或微调的情况下表现出的特性,为希望直接使用预训练模型的从业人员提供了参考。

现代计算机视觉为从业者提供了各种各样的模型。那么,我们有了这么多的模型,当特定的应用到来时,该选择哪个不该选择哪个?就是一个值得思考的问题,也是个有挑战性的问题。

传统上,大家喜欢通过在大规模图像识别数据集 ImageNet 上的精度来比较模型性能,谁的准确率高就选谁。但是,这个指标过于单一,无法捕捉到对于特定任务很重要的性能的细微差别

在这个工作中,作者对于 ConvNet 和 Vision Transformer 架构在 ImageNet 精度之外的模型行为进行了深入分析,每个架构都涵盖了有监督训练范式和 CLIP 训练范式。尽管作者选择的模型具有相似的 ImageNet 精度和计算要求,但本文发现它们在许多其他的方面有所不同:

  1. 错误类型 (types of mistakes)
  2. 输出校准 (output calibration)
  3. 迁移性能 (transferability)
  4. 特征方差 (feature invariance)

等等。

如下图1所示,这些模型特征的差异,是传统的 ImageNet 精度所不能包含的,因此我们在为特定任务选择模型的时候更应该去细微地分析。

图1:模型通常只根据它们的 ImageNet 精度进行比较,而我们通常忽视了其他许多重要的行为

在分析中,研究者发现不同架构和训练范式的模型行为存在很大差异。例如,模型在 CLIP 范式下训练的分类错误少于在 ImageNet 上训练。不过,监督模型的校准效果更好,在 ImageNet 稳健性基准测试中普遍更胜一筹。ConvNeXt 在合成数据上有优势,但比 ViT 更偏重纹理。同时,有监督的 ConvNeXt 在许多基准测试中表现出色,其可迁移性表现与 CLIP 模型相当。

可以看出,各种模型以独特的方式展现了自己的优势,而这些优势是单一指标无法捕捉到的。研究者强调,需要更详细的评估指标来准确选择特定情境下的模型,并创建与 ImageNet 无关的新基准。

基于这些观察,Meta AI 首席科学家 Yann LeCun 转发了这项研究并点赞:

模型选择

对于监督模型,研究者使用了 ViT 的预训练 DeiT3- Base/16,它与 ViT-Base/16 架构相同,但训练方法有所改进;此外还使用了 ConvNeXt-Base。对于 CLIP 模型,研究者使用了 OpenCLIP 中 ViT-Base/16 和 ConvNeXt-Base 的视觉编码器。

请注意,这些模型的性能与最初的 OpenAI 模型略有不同。所有模型检查点都可以在 GitHub 项目主页中找到。详细的模型比较见表 1:

对于模型的选择过程,研究者做出了详细解释:

1、由于研究者使用的是预训练模型,因此无法控制训练期间所见数据样本的数量和质量。

2、为了分析 ConvNets 和 Transformers,之前的许多研究都对 ResNet 和 ViT 进行了比较。这种比较通常对 ConvNet 不利,因为 ViT 通常采用更先进的配方进行训练,能达到更高的 ImageNet 准确率。ViT 还有一些架构设计元素,例如 LayerNorm,这些元素在多年前 ResNet 被发明时并没有纳入其中。因此,为了进行更平衡的评估,研究者将 ViT 与 ConvNeXt 进行了比较,后者是 ConvNet 的现代代表,其性能与 Transformers 相当,并共享了许多设计。

3、在训练模式方面,研究者对比了监督模式和 CLIP 模式。监督模型在计算机视觉领域一直保持着最先进的性能。另一方面,CLIP 模型在泛化和可迁移性方面表现出色,并提供了连接视觉和语言表征的特性。

4、由于自监督模型在初步测试中表现出与监督模型类似的行为,因此未被纳入结果中。这可能是由于它们最终在 ImageNet-1K 上进行了有监督的微调,而这会影响到许多特性的研究。

接下来,我们看下研究者如何对不同的属性进行了分析。

分析

模型错误

ImageNet-X 是一个对 ImageNet-1K 进行扩展的数据集,其中包含对 16 个变化因素的详细人工注释,可对图像分类中的模型错误进行深入分析。它采用错误比例度量(越低越好)来量化模型在特定因素上相对于整体准确性的表现,从而对模型错误进行细致入微的分析。ImageNet-X 的结果表明:

1. 相对于监督模型,CLIP 模型在 ImageNet 准确性方面犯的错误更少。

2. 所有模型都主要受到遮挡等复杂因素的影响。

3. 纹理是所有模型中最具挑战性的因素。

形状 / 纹理偏差

形状 - 纹理偏差会检测模型是否依赖于脆弱的纹理捷径,而不是高级形状线索。这种偏差可以通过结合不同类别的形状和纹理的线索冲突图像来研究。这种方法有助于了解,与纹理相比,模型的决策在多大程度上是基于形状的。研究者对线索冲突数据集上的形状 - 纹理偏差进行了评估,发现 CLIP 模型的纹理偏差小于监督模型,而 ViT 模型的形状偏差高于 ConvNets。

模型校准

校准可量化模型的预测置信度与其实际准确度是否一致,可以通过预期校准误差 (ECE) 等指标以及可靠性图和置信度直方图等可视化工具进行评估。研究者在 ImageNet-1K 和 ImageNet-R 上对校准进行了评估,将预测分为 15 个等级。在实验中,研究者观察到以下几点:

1. CLIP 模型过于自信,而监督模型则略显不足。

2. 有监督的 ConvNeXt 比有监督的 ViT 校准效果更好。

稳健性和可迁移性

模型的稳健性和可迁移性对于适应数据分布变化和新任务至关重要。研究者使用各种 ImageNet 变体对稳健性进行了评估,结果发现,虽然 ViT 和 ConvNeXt 模型的平均性能相当,但除 ImageNet-R 和 ImageNet-Sketch 外,有监督模型在稳健性方面普遍优于 CLIP。在可迁移性方面,通过使用 19 个数据集的 VTAB 基准进行评估,有监督的 ConvNeXt 优于 ViT,几乎与 CLIP 模型的性能相当。

合成数据

PUG-ImageNet 等合成数据集可以精确控制摄像机角度和纹理等因素,是一种很有前景的研究路径,因此研究者分析了模型在合成数据上的性能。PUG-ImageNet 包含逼真的 ImageNet 图像,姿态和光照等因素存在系统性变化,性能以绝对 top-1 准确率为衡量标准。研究者提供了 PUG-ImageNet 中不同因素的结果,发现 ConvNeXt 在几乎所有因素上都优于 ViT。这表明 ConvNeXt 在合成数据上优于 ViT,而 CLIP 模型的差距较小,因为 CLIP 模型的准确率低于监督模型,这可能与原始 ImageNet 的准确率较低有关。

变换不变性

变换不变性是指模型能够产生一致的表征,不受输入变换的影响从而保留语义,如缩放或移动。这一特性使模型能够在不同但语义相似的输入中很好地泛化。研究者使用的方法包括调整图像大小以实现比例不变性,移动 crops 以实现位置不变性,以及使用插值位置嵌入调整 ViT 模型的分辨率。

他们在 ImageNet-1K 上通过改变 crop 比例 / 位置和图像分辨率来评估比例、移动和分辨率的不变性。在有监督的训练中,ConvNeXt 的表现优于 ViT。总体而言,模型对规模 / 分辨率变换的稳健性高于对移动的稳健性。对于需要对缩放、位移和分辨率具有较高稳健性的应用,结果表明有监督的 ConvNeXt 可能是最佳选择。

总结

总体来说,每种模型都有自己独特的优势。这表明模型的选择应取决于目标用例,因为标准性能指标可能会忽略特定任务的关键细微差别。此外,许多现有的基准都来自于 ImageNet,这也会使评估产生偏差。开发具有不同数据分布的新基准对于在更具现实世界代表性的环境中评估模型至关重要。

以下是本文结论的概括:

ConvNet 与 Transformer

1. 在许多基准上,有监督 ConvNeXt 的性能都优于有监督 ViT:它的校准效果更好,对数据转换的不变性更高,并表现出更好的可迁移性和稳健性。

2. ConvNeXt 在合成数据上的表现优于 ViT。

3. ViT 的形状偏差更大。

监督与 CLIP

1. 尽管 CLIP 模型在可转移性方面更胜一筹,但有监督的 ConvNeXt 在这项任务中表现出了竞争力。这展示了有监督模型的潜力。

2. 有监督模型在稳健性基准方面表现更好,这可能是因为这些模型都是 ImageNet 变体。

3. CLIP 模型的形状偏差更大,与 ImageNet 的准确性相比,分类错误更少。

#路面坑洼检测中的视觉算法

3D道路成像和路面坑洼检测的经典工作综述。论文链接:https://arxiv.org/pdf/2204.13590.pdf

计算机视觉算法在3D道路成像和路面坑洼检测中的应用已有二十多年的历史。这里先介绍了用于2D和3D道路数据采集的传感系统,包括摄像机、激光扫描仪和微软Kinect。还讨论了基于计算机视觉的路面坑洼检测方法目前面临的挑战和未来的发展趋势: 经典的基于2D图像处理和基于3D点云建模和分割的方法已经成为历史; 卷积神经网络(CNN)已经展示了引人注目的路面坑洼检测结果,并有望在未来的进展中打破瓶颈的自/无监督学习多模态语义分割。作者相信本研究可为下一代道路状况评估系统的发展提供实用的指导。

坑洼是一种相当大的结构性道路损坏[1]。它是由水和路上的行驶的车辆综合作用形成的[2]。水渗透了地面,路面下的土壤被侵蚀,地面上的车辆经过后,破坏了路面,清除了部分路面。

道路坑洼不仅是一种不便,它们也是对车辆状况和交通安全的重大威胁[3]。例如,据芝加哥太阳报报告,司机在2018年头两个月就道路坑洼提出了11,706宗投诉[4]。根据坑洼事实报告,在美国33,000起交通事故中,大约三分之一的死亡事故与道路状况不佳有关。因此,经常检查道路和修复坑洼是必要和关键的[5]。

目前,人工目视检查仍然是道路坑洼检测的主要形式[6]。结构工程师和认证检查员定期检查路面坑洼并报告坑洼位置。这个过程是低效、昂贵和危险的。例如,新西兰的市议会在2017年花费数百万美元检测和修复路面坑洼(仅基督城就花费了52.5万美元)[7]。此外,据报道,在美国圣地亚哥,每年有超过30K 的路面坑洼被修复。建议圣地亚哥居民报告道路坑洼,以减轻当地道路维护部门的检测负担[8]。此外,检查员和工程师手工检测路面坑洼的结果总是主观的,因为决定完全取决于个人的经验和判断[9]。

出于这些原因,研究人员一直致力于开发能够有效、准确和客观地重建、识别和定位路面坑洼的自动化道路状况评估系统[10]。具体而言,近年来,路面坑洼检测已经不仅仅是一个基础设施维护问题,因为它也是许多汽车公司嵌入到 L3/L4自动驾驶汽车中的先进驾驶辅助系统(ADAS)的功能,并且新兴的自动驾驶系统对道路养护标准提出了更高的要求[11]。捷豹路虎使用数据驱动技术进行实验,通知驾驶员路面坑洼的位置,并发出警告来减慢汽车的速度[12] ,而 ClearMotion 建立了一个智能悬挂系统,使用硬件和软件的组合来预测,吸收和抵消由路面坑洼引起的冲击和振动[13]。

自世纪之交以来,计算机视觉技术已被广泛应用于获取3D道路数据和/或检测道路坑洼。然而,这一研究课题的最新研究成果很少涉及最前沿的计算机视觉技术,如3D点云建模与分割、机器/深度学习等。本文对目前最先进(SoTA)的道路成像系统和基于计算机视觉的路面坑洼检测算法进行了全面和深入的综述。现有系统和算法的概述如下图所示。

激光扫描仪、微软 Kinect 传感器和相机是道路数据采集中最常用的三种传感器。现有的路面坑洼检测方法分为四类:

  1. 经典的基于2D图像处理的[14]
  2. 基于3D点云建模和分割的[15]
  3. 基于机器/深度学习的[16]
  4. 混合[3]。

本文系统地回顾了现有的技术和公开数据集 ,并讨论了现有的挑战及其可能的解决方案。相信本文对下一代3D道路成像和路面坑洼检测算法的开发具有一定的指导意义。

道路成像系统

道路成像(或道路数据采集)通常是智能道路检查的第一步[10]。摄像机和距离传感器已被广泛用于获取可视化道路数据。早在1991年就开始使用2D成像技术来完成这项任务[20]。然而,道路表面的几何结构不能从不相关的2D道路图像(没有重叠区域)来说明[21]。此外,在灰度或彩色道路图像上执行的图像分割算法可能会受到各种环境因素的严重影响,最显著的是光照条件差[22]。许多研究人员[5,21,23,24]因此求助于3D成像技术,这被用来克服这两个缺点。最常用于3D道路数据采集的传感器包括激光扫描仪、微软 Kinect 传感器和立体摄像机,如下图所示。

激光扫描 是一种行之有效的精确3D道路数据采集成像技术[1]。这项技术是在三角测量的基础上发展起来的[25]。传感器(接收器)位于距离激光照明源已知距离的位置[26]。因此,因此,可以通过计算激光反射角来进行精确的点测量。然而,激光扫描仪必须安装在特定的道路检查车辆上[27]进行3D道路数据采集。由于设备采购费用高和长期维护费用高,这种车辆并没有得到广泛使用。

微软 Kinect 传感器 最初是为 Xbox-360运动感应游戏设计的,通常配备有 RGB 摄像头、红外传感器/摄像头、红外发射器、麦克风、加速器和用于运动跟踪的倾斜马达。据报道,已经有三次尝试[22,27,28]使用微软 Kinect 传感器进行3D道路数据采集。虽然这些传感器具有成本效益和使用方便,但它们在阳光直射下会受到红外饱和度的严重影响,而且3D路面重建的精度不能令人满意[3]。

3D道路数据也可以使用从不同视图捕获的多个2D道路图像获得,例如使用单个可移动摄像机[29]或同步摄像机阵列[23] ,如下图所示。

这种技术背后的理论通常被称为多视图几何[30]。稀疏或密集对应匹配是多视图3D几何重建的基本任务。一种典型的单目稀疏路面3D重建方法,如[31]所示,其中使用来自运动的结构(SfM)[32]算法获得摄像机的姿态和稀疏的3D路面点云,并使用光束法平差(BA)[33]算法进行细化。

布里斯托尔视觉信息实验室的研究人员[21,34,35]率先使用多目摄像机进行密集的3D路点云采集。在这种情况下,深度信息是通过找到两个同步捕获的道路图像之间视觉特征对应对的水平位置差异来获得的[36]。这个过程通常被称为视差估计或立体匹配,它模仿人类的双眼视觉。提出了一种基于种子和生长的视差估计算法来有效地获取3D道路数据。[35]引入了一种更自适应的视差搜索范围传播策略,以提高估计道路差异的准确性。[5,21]利用透视变换算法将目标图像转换为参考视图,极大地降低了立体匹配速度和视差精度之间的平衡。

此外,[34]和[35]中存在的瓶颈问题也通过使用有效和自适应的成本量处理算法来解决。据报道,在[5]和[21],重建3D道路几何模型的精度超过3毫米。与激光扫描仪和微软 Kinect 传感器相比,立体摄像机更便宜,更可靠的3D道路成像。随着深度学习技术的不断发展,卷积神经网络(CNN)比传统的显式规划方法具有更好的视差估计效果。

道路坑洼检测方法

基于经典2D图像处理的算法(例如,增强、压缩、变换、分割)显式的处理道路RGB或视差/深度图像[9]。基于机器/深度学习的算法使用图像分类、对目标识别或语义分割算法解决道路坑洼检测问题,可使用SoTA CNNs[44]解决。3D道路点云建模和基于分割的算法将特定的几何模型(通常是平面或二次曲面)拟合到观察到的道路点云,并通过比较观察到的曲面和拟合的曲面来分割道路点云[3]。混合方法结合了上述两种或多种算法,以提高整体道路坑洼检测性能。2011至2021期间开发的最具代表性的道路坑洼检测算法(从基于经典2D图像处理到基于深度学习)如下图所示。

经典的2D图像处理

基于经典2D图像处理的道路坑洼检测是一个研究的很好的课题。这种方法通常有四个阶段的流程:(1)图像预处理,(2)图像分割,(3)损伤区域提取,和(4)检测结果后处理[9]。下表总结了代表性的现有技术。

图像预处理算法,如中值滤波[42]、高斯滤波[45]、双边滤波[46]和形态学滤波[47],首先用于减少冗余信息并突出受损道路区域。例如,自适应直方图均衡算法是在[45]中用于在二值化道路图像之前调整图像亮度,并且在[14]中使用 Leung-Malik 滤波器[48]和 Schmid 滤波器[49]来强调彩色道路图像中的结构纹理特征。

最近,许多研究人员[3,5,6,28,50]利用2D空间视觉信息(通常是道路深度/视差图像)来检测坑洼。例如,[50]和[3]使用立体设备倾斜角度和道路视差投影模型转换道路视差图像,其通过使用黄金分割搜索[51]和动态规划[52]算法使全局能量函数最小化来估计。视差变换使损坏的道路区域高度可区分,如下图所示。

 [6]得到了上述能量最小化问题的闭式解,从而避免了迭代优化过程中的繁琐计算。由于深度/视差图像可以描述道路表面的几何结构,所以它们对于检测路面坑洼更有用[6]。然后将预处理后的道路图像分割成前景(受损道路区域)和背景(未受损道路区域)。

大多数先前的技术[46,40,37]采用基于直方图的阈值分割方法,如 Otsu 阈值分割[53] ,三角形阈值分割[14]和自适应阈值分割[46,40] ,以分割彩色/灰度道路图像。正如在[37]中所讨论的,Otsu 的阈值分割方法最小化了类内方差,并且在分割道路图像方面比三角形阈值分割方法获得了更好的性能。采用自适应阈值分割方法对道路图像进行分割,其性能优于常用的三角形阈值分割方法。

最近的工作[3,5,6,50]表明,这种图像分割算法通常能更有效和准确地处理转换后的视差图像,描绘道路场景的准鸟瞰图。例如,[3]利用 Otsu 的阈值分割[53]方法来分割转换后的差异图像用于道路坑洼检测,并且在[5]中,使用简单的线性迭代聚类(SLIC)算法[54]将转换后的差异分组成一组超像素。然后通过寻找超像素来检测路面坑洼,超像素的值低于自适应确定的阈值。第三和第四阶段通常以联合方式进行。根据几何学和纹理学假设,首先从分割的前景中提取损坏的路面区域(坑洼),这俩假设包括:

  1. 坑洼通常是凹洞;
  2. 坑洼纹理通常比周围的路面更加粗糙和颗粒化;
  3. 由于阴影,坑洼 ROI 像素的强度通常比周围路面的强度低。

例如,在[14]中,潜在坑洼的轮廓被建模为一个椭圆。然后将椭圆内的图像纹理与未损坏的道路区域纹理进行比较。如果椭圆的 ROI 比周围区域的纹理更粗糙和颗粒化,椭圆被识别为路面坑洼。在[38]中,通过分析各种几何特征,如大小、紧凑度、椭圆度和凸壳,提取潜在坑洼的轮廓。然后采用有序直方图交会法确定提取的区域是否包含路面坑洼。最后,对提取出的受损路段进行后处理,进一步提高路面坑洼检测结果。

这个过程通常类似于第一阶段。经典的基于2D图像处理的路面坑洼检测方法已经研究了近二十年。这种类型的算法已经被[9]系统地研究过了,作者参考读者[9]以获得更多的细节。然而,这些方法是在早期技术的基础上发展起来的,可能会受到各种环境因素的严重影响。幸运的是,现代3D计算机视觉和机器学习算法已经大大克服了这些缺点。

3D点云建模和分割

设计用于处理3D道路点云的方法通常有两个阶段的流程[34,68] :

  1. 将观察到的3D道路点云插值成显式的几何模型(通常是平面或二次表面) ;
  2. 通过将其与插值几何模式进行比较来分割观察到的3D道路点云。

下表总结了3D点云建模和分割中最具代表性的算法。 

以[34]为例,利用最小二乘拟合将二次曲面拟合到密集的3D道路点云中。通过比较实测和拟合的3D路面之间的差异(高程) ,可以有效地提取受损路面面积(坑洼)。不同的坑洼也使用连接组件标记(CCL)算法进行标记。类似地,[56]将观察到的3D道路点云插值到平面表面。通过在拟合表面下寻找3D点,可以粗略地检测出潜在的路面坑洼。K均值聚类和区域生长算法随后被用来改进路面坑洼检测结果。

然而,最小二乘拟合会受到异常值的严重影响,常常使得建模的路面不准确[3]。因此,[55]采用双平方加权鲁棒的最小二乘近似的道路点云建模。利用随机样本一致性(RANSAC)算法提高二次曲面拟合的鲁棒性。[35]和[3]将表面法线信息引入到二次曲面拟合过程中,大大提高了FreeSpace和路面坑洼检测的性能。

除了上述基于摄像机的方法之外,[71]还采用了高速3D横向扫描技术来进行路面推挤(路面上突然出现的波浪)和路面坑洼的检测。对激光条纹数据进行亚像素线提取(包括点云滤波、边缘检测和样条插值)。然后由激光条纹曲线生成道路横向剖面,并用线段逼近。利用分段端点的二阶导数来识别可能出现的推挤和坑洼的特征点。

最近,[72]引入了一个基于激光雷达的路面坑洼检测系统,通过比较它们与最适合的平面3D路面的距离,将3D路点分类为损坏和未损坏。遗憾的是,[72]缺乏算法细节和必要的定量实验道路损伤检测结果。与其他方法相比,基于3D点云建模和分割的方法相对较少。然而,实际的道路总是不平坦的,使得这样的方法有时不可行。此外,如果目标仅仅是识别和定位路面坑洼而不是获取它们的几何细节,那么获取3D道路点云可能就没有必要了。结合2D图像处理算法,可以显著提高3D点云建模性能[3]。

机器/深度学习

随着机器/深度学习技术的发展,深度CNN (Deep CNN)已经成为路面坑洼检测的主流技术。DCNN 通常通过使用大量人工标注的道路数据进行反向传播来训练,而不是设置显式的参数来分割道路图像或点云以进行坑洼检测[73]。数据驱动的路面坑洼检测方法一般是基于三种技术开发的[26] : (1)图像分类网络,(2)目标检测网络,和(3)语义分割网络。

图像分类网络被训练来分类正面(坑洼)和负面(非坑洼)道路图像,目标检测网络被训练来识别实例级的道路坑洼,语义分割网络被训练来分割道路(颜色或视差/深度)图像用于像素级(或语义级)道路坑洼检测。本节的其余部分将详细介绍这些算法的每种类型。

基于图像分类的方法

在深度学习技术爆发之前,研究人员通常使用经典的图像处理算法来生成手工制作的视觉特征,并训练一个支持向量机(SVM)模型来对道路图像片段进行分类。下表总结了最具代表性的基于 SVM 的方法[16,57,58,77,62,61,63]。由于这些算法已经过时,作者不会在这里向读者提供太多的细节。

随着计算资源的革命和训练数据样本量的增加,DCNN 在路面坑洼检测中得到了广泛的应用。与传统的基于支持向量机的方法相比,DCNN 能够学习更抽象(分层)的视觉特征,并且它们显著提高了路面坑洼检测性能[46]。上表总结了最典型的基于 DCNN 的方法[64,66,67,65]。[64]和[66]从头开始设计 DCNN。在[64]中提出的 DCNN 由四个卷积池层和一个完全连接(FC)层组成。

对在东帝汶收集的道路数据进行的大量试验表明,这种 DCNN 在对坑洼和非坑洼图像进行分类方面是有效的。在[66]中引入的 DCNN 由一个预池化层、三个卷积池层、一个sigmoid层和两个 FC 层组成。预池化层的设计是为了减少与路面坑洼无关的特性。实验结果表明,提出的预池化层可以大大提高道路图像分类的性能,所设计的 DCNN 可以有效地检测不同光照条件下的路面坑洼。

[67]和[65]开发了基于现有 DCNN 的道路图像分类网络。开发了一个基于流行的残差网络的 DCNN [78]。大量的实验表明,提出的模型可以有效地分类夜间和/或雾天收集的热道路图像,它也优于现有的技术[61,79,65]。在[65]中,四个开发良好的 DCNN: (1) Inception-v4[80] ,(2) ResNet-v2[80] ,(3) ResNet-v2[81]和(4) MobileNet-v1[82] ,被训练来分类道路图像。实验结果表明,这些模型在测试集上的表现类似。

最近,[83]比较了30个 SoTA 图像分类 DCNN 在道路裂缝检测方面的应用,发现道路裂缝检测与其他应用领域的图像分类相比是一个相对容易的任务。与道路裂缝检测相比,路面坑洼检测是一项较为容易的任务。因此,作者认为基于图像分类网络的路面坑洼检测是一个很好解决的问题。

基于目标检测的方法

基于目标检测的道路坑洼检测方法可以分为三种类型: (1)基于单目多框的检测器(SSD)的,(2)基于区域的 CNN (R-CNN)系列的,和(3)YOLO系列的。下表总结了最具代表性的基于目标检测的方法。

SSD有两个组成部分[84] ,即主干网络和SSD头。前者是一个用于视觉特征提取的深度图像分类网络,后者是添加到主干网络的一个或多个卷积层,以便输出可以目标类的边界框。该领域的研究人员主要将不同的图像分类网络纳入道路坑洼检测的SSD中。例如,Inception-v2[85]和 MobileNet [82]被用作[86]中的主干网络,而 ResNet-34[78]和 RetinaNet [87]被用作[88]中的主干网络。

与 SSD 相比,R-CNN 和 YOLO 系列更广泛地应用于路面坑洼的检测。在[95]中,R-CNN 被证明可以实现与 SSD 类似的路面坑洼检测性能。在[75]中,开发了四个路面坑洼检测网络: (1)更快的 R-CNN (以 Inception-v2[85]为主干网络) ,(2)更快的 R-CNN (以 ResNet-101为主干网络[78]) ,(3)更快的 R-CNN (以 Inception-ResNet-v2为主干网络[80])和(4) SSD (以 MobileNet-v2[96]为主干网络)。广泛的实验表明,更快的 R-CNN (以 ResNet-101为主干网络)取得了最佳的整体性能。实验结果如下图所示。

[90]比较了两个更快的 R-CNN (分别以 ResNet-101和 ResNet-152为主干网)在[86] w.r.t. 引入的数据集上用于道路损伤检测的性能。三个评估指标: F1-Score,精度的调和平均数和召回的调和平均数。实验结果表明,更快的 R-CNN (以 ResNet-152为主干网络)优于更快的 R-CNN (以 ResNet-101为主干网络)。这可能是因为更深层的主干可以学习更抽象的表示。[94]利用一个更快的 R-CNN 来检测在日本、印度和捷克共和国拍摄的公路图像中的裂缝和坑洼。首先训练一个分类器来推断道路图像是在哪个国家拍摄的。然后训练一个更快的 R-CNN,来针对每个国家(为了减少由于区域差异造成的影响)的道路裂缝和坑洼检测。与 R-CNN 系列不同,YOLO 系列使用区域proposals来定位图像中的路面坑洼,YOLO 系列通常将道路图像分割成一个网格集合,并在每个网格中选择一个边界框集合。网络输出一个类概率和每个边界框的偏移值。利用类概率高于阈值的边界框定位图像中的路面坑洼。由于它们的准确性和高效性,YOLO 系列已经成为基于目标检测的道路坑洼检测的首选。例如,在[89]中,开发了两个目标检测 DCNN,分别称为 F2-Anchor 和 Den-F2-Anchor,用于检测路面坑洼。F2-Anchor 是 YOLOv2的一个变种,能够生成5个新的anchor box(使用 Kmeans算法获得)。实验结果表明,F2-Anchor 在检测不同大小和形状的道路坑洼方面优于原 YOLOv2。与 F2-Anchor相比,Den-F2-Anchor加密了网格,取得了比 YOLOv2和 F2-Anchor更好的路面坑洼检测性能。此外,[92]训练了三个 YOLO 架构: YOLOv3[101] ,YOLOv2[102]和 YOLOv3 Tiny [101] ,用于路面坑洼检测。YOLOv3-tiny实现了最好的整体路面坑洼检测准确度。同样,[91]比较了三种不同的 YOLOv3架构: YOLOv3[101] ,YOLOv3 Tiny [101]和 YOLOv3 SPP [101] ,用于路面坑洼检测。YOLOv3 SPP 展示了最高的路面坑洼探测准确度。最近,[93]设计了两个 YOLOv1网络的分层路面坑洼检测方法[103]。一个事先训练好的 YOLOv1模型被用来检测汽车(背景) ,而另一个 YOLOv1模型被用来检测前景中的道路坑洼。尽管如此,上述的目标检测方法只能在实例级识别路面坑洼,当需要像素级的路面坑洼检测结果时,它们是不可行的。

基于语义分割的方法

SoTA 语义分割网络分为两大类: (1)单模态和(2)数据融合。单模态网络通常使用编码器-解码器结构分割 RGB 图像[100]。数据融合网络通常从两种不同类型的视觉传感器数据中学习视觉特征(FuseNet 中使用彩色图像和深度图[104] ,SNE-RoadSeg 系列中使用彩色图像和表面法线图[105,106] ,并且在 AA-RTFNet 中使用彩色图像和转换的视差图像[11])并融合所学到的视觉特征以提供对环境的更好的语义理解。下表总结了最具代表性的现有语义分割技术。 

[98]提出了一种基于全卷积网络(FCN)的路面坑洼检测方法。为了减轻提供监督式学习所需的像素级注释的困难,[98]利用了一种半监督学习技术来生成伪标签,并对预先训练好的FCN 自动微调。与监督式学习相比,半监督式学习可以大大提高整体的 F-score。此外,[100]将基于注意力的多尺度特征融合模块(MSFFM)整合到 DeepLabv3 + [107]中用于路面坑洼检测。同样,[99]提出了一个基于注意力的路面坑洼检测耦合框架。该框架利用基于注意力的功能融合模块来改善图像分割性能。本文的工作还证明了小样本学习在路面坑洼检测中的有效性。作者在这个领域进行了广泛的研究。[11]介绍了一个注意力聚集框架,该框架利用了三种注意力模块的优势: (1)通道注意力模块(CAM) ,(2)位置注意力模块(PAM) ,(3)双注意力模块(DAM)。此外,[11]提出了一种有效的基于生成对抗网络(GAN)的训练集增强技术,通过生成假彩色道路图像和转换后的道路视差图像来增强语义分割网络的训练。实验结果表明: (1) AA-UNet (单模态网络)检测路面坑洼的性能优于其他 SoTA 单模态网络; (2) AA-RTFNet (数据融合网络)检测路面坑洼的性能优于其他 SoTA 数据融合网络; (3)训练集增强技术不仅提高了 SoTA 语义分割网络的准确性,而且在训练过程中加速了它们的收敛。最近,作者开发了一个基于图神经网络(GNN)的图注意层(GAL)来进一步优化单模态语义分割的图像特征表示[44]。如下图所示,GAL-DeepLabv3+是性能最好的实现,其性能优于所有其他用于路面坑洼检测的 SoTA 单模态语义分割 DCNN。 

这里需要注意的是,道路坑洼的检测可以与其他驾驶场景的理解问题一起解决,特别是FreeSpace和道路异常检测[105,108,109,106,110]。不幸的是,SoTA 语义分割网络是强大的数据驱动算法,需要大量的数据。因此,基于无监督或自监督学习的路面坑洼检测是一个需要更多关注的研究热点。

混合方法

混合路面坑洼检测方法通常利用上述至少两类算法。它们已经被广泛研究了十多年。这些方法,如下表所总结的,已经将 SoTA 结果带到了这个任务中。 

十年前,[111]开发了一种基于经典2D图像处理和3D点云建模和分割的混合路面坑洼检测方法。首先对道路视频(由高速摄像机收集)进行图像梯度滤波,以选择被认为包含道路坑洼的关键帧。关键帧的3D道路点云(由微软 Kinect 获得)同时建模为平面表面。类似于[50] ,RANSAC 被用来增强3D道路点云建模的鲁棒性。然后通过比较观察到的路面和模拟的路面来检测路面坑洼。由于采用了高效的基于2D图像处理的关键帧选择方法,该方法大大减少了3D点云建模中的冗余计算。

[29]提出了类似的混合方法。首先对由高清摄像机收集的道路视频进行处理,以识别可能包含道路坑洼的关键帧。同时,该道路视频也被用于稀疏到密集的3D道路几何重建。通过对多模态路面数据的分析,可以有效、准确地检测出路面坑洼。这种混合方法大大减少了错误检测路面坑洼的数量。

[22]介绍了一种类似的基于 RGB-D 数据(由微软 Kinect 收集)的混合路面坑洼检测方法。首先对获得的深度图像进行平面拟合。类似于[111] ,这个过程用 RANSAC 进行了优化。然后创建并归一化反映实际和拟合深度图像之间差异的归一化深度差图像。然后,Otsu 的阈值分割方法在归一化深度差图像上进行,以检测道路坑洼。

最近,[3]提出了一种基于2D道路视差图像变换和3D道路点云分割的路面坑洼混合检测算法。首先对密集的亚像素视差图进行变换,以便更好地区分损坏和未损坏的道路区域。然后,使用 Otsu 的阈值分割方法,从转换后的视差图中提取潜在的未受损道路区域。利用最小二乘拟合(也用 RANSAC 改进)将提取区域中的差异建模为二次曲面。在点云建模过程中还集成了表面法线信息,以减少离群点。最后,通过比较实际视差图和模型视差图,有效地检测出路面坑洼。

除了上面讨论的方法之外,研究人员还开发了基于经典2D图像处理算法和机器/深度学习模型的混合方法。以[112]为例,一个朴素贝叶斯分类器(NBC)[117]被训练来学习有向梯度(HOG)[118]特征的直方图。然后利用这些 HOG 特征训练道路图像分类器。一旦一幅图像被认为包含路面坑洼,就使用归一化图切分(NGCS)[119]算法对其进行分割,以产生像素级的路面坑洼检测结果。

此外,[113]提出了一个两阶段的路面坑洼检测方法。在第一阶段,利用 BoW [120]算法对道路图像进行分类。这个过程包括四个步骤: (1)尺度不变特征变换(SIFT)[121]特征提取和描述,(2)使用 K平均算法构建可视化词汇/码本,(3)词汇生成直方图,(4)使用支持向量机进行道路图像分类。在第二阶段,利用图割分割(GCS)[119]算法对道路图像进行分割,用于像素级道路坑洼检测。

最近,[114]提出了一种路面裂缝和坑洼混合检测算法。一个改进的 SegNet [122]首先训练分割道路图像用于FreeSpace检测。然后对FreeSpace区域进行 Canny算子处理,生成路面裂缝/坑洼候选区域。最后,对 SqueezeNet [123]进行训练,以确定生成的候选项是路面裂缝还是路面坑洼。

近年来,基于3D点云分割和机器/深度学习的路面坑洼检测方法也引起了人们的广泛关注。[115]是这一领域的代表性现有技术。(1) SV1,一种基于单帧立体视觉的方法,基于v-disparity图像分析和3D平面拟合(在视差空间) ; (2) SV2,一种基于多帧视觉传感器数据融合的方法,开发基于数字地面模型(DEM)和视觉里程计; (3) LM1,Mask R-CNN [124]训练转移学习; (4) LM2,YOLOv2[102]训练转移学习。

此外,[116]还引入了一种基于语义道路图像分割和3D道路点云分割的混合道路坑洼检测方法。首先对 DeepLabv3+[107]模型进行训练,以产生初始像素级道路坑洼检测结果。将初步检测到的路面坑洼边缘3D点划分为外部点和内部点。外边缘用于拟合局部平面和计算路面坑洼体积,而内边缘用于减少不正确的检测坑洼通过分析道路深度分布。

公共数据集

这一部分简要介绍了现有的开放式路面坑洼检测数据集,这些数据集可以为研究人员在评估他们开发的路面坑洼检测算法时提供适当的数据集指示。[125]创建了一个用于道路图像分类的数据集。它由训练集和测试集组成。训练集包含367张健康道路的彩色图像和357张有坑洼的彩色图像; 测试集包含每个类别的8张彩色图像。

这个数据集可以在[这里](kaggle.com/virenbr11/po thole-and-plain-rode-images)获得。[126]提出了一个大规模的数据集,用于实例级的坑洼检测。这个数据集由一个训练集、一个测试集和一个标注CSV 文件组成。  

该训练集包含2658张健康道路的彩色图像和1119张有坑洼的彩色图像。测试集包含628个彩色图像。使用 GoPro Hero 3 + 照相机捕获图像(分辨率: 2760 × 3680像素)。这个数据集可以在[这里](kaggle .com/sovitrath/road-pothole-images-for-pothole-detection)访问。

[127]创建了一个印度道路的数据集(图像分辨率: 720 × 1280像素) ,使用语义分割注释(道路,坑洼,人行道,浅路和背景)。该数据集包含2475幅彩色图像的训练集和752幅彩色图像的测试集。这个数据集可以在[这里](kaggle.com/eya ntraiit/language-section-datets-of-indian-road)获得。

[128]创建了一个数据集,被称为 CIMAT 自动驾驶挑战序列(CCSAD)。它最初是用来开发和测试无人机感知和导航算法的。CCSAD 数据集包括四个场景: (1)colonial town街道,(2)城市街道,(3)大道和小道,以及(4)隧道网。这个数据集包含500GB 的高分辨率立体图像,辅以惯性导航系统(IMU)和 GPS 数据。CCSAD数据集可在这里公开获取。

[86]展示了一个大规模的道路损坏数据集,包括在日本收集的9053张彩色道路图像(分辨率: 600 × 600像素)。这些图像(包含15,435道路损坏)是在不同的天气和光照条件下用安装在汽车上的智能手机拍摄的。该数据集可在这里公开获得。

[129]创建了一个数据集,包括665对彩色道路图像和不同道路条件下的坑洼真值标签。该数据集可用于城市街道路面坑洼的自动检测和定位。该数据集可在这里公开获得。另一个道路坑洼检测数据集[130]是为二值道路图像分类创建的。它包含了352张完好无损的道路图片和329张坑坑洼洼的图片。这个数据集很小,只能用于测试图像分类 CNN。你可浏览[这里](kaggle.com/datasets/atulyakumar98/pothole-d etection-dataset)获取。

[3]发布了世界上第一个多模态道路坑洼检测数据集(图像分辨率: 800 × 1312像素) ,包含55组(1)彩色图像,(2)亚像素视差图像,(3)转换的视差图像和(4)像素级坑洼注释。该数据集可在这里公开获得。同一研究小组最近发表了Pothole-600[11]。它还提供了两种形式的视觉传感器数据: (1)彩色图像和(2)转换的视差图像。转换后的视差图像是通过对使用[21]中介绍的立体匹配算法估计的致密亚像素视差图像执行视差变换算法[50]而获得的。Pothole-600数据集可在这里获得。

现有的挑战和未来的趋势

在2012年深度学习热潮之前,经典的基于2D图像处理的方法主导了这个研究领域。然而,这种明确的方法通常是计算密集型的,并且对各种环境因素敏感,最显著的是光照和天气条件[22]。此外,路面坑洼的形状不规则,这使得在这些方法中做出的几何假设有时是不可行的。

因此,自2013年以来,3D点云建模和基于分割的方法已经出现,以提高道路坑洼检测的准确性[34]。然而,这种方法通常需要一个小视场,因为假设一个单帧3D道路点云是一个平面或二次曲面。尽管已经作出了显着的努力来进一步提高道路点云建模的鲁棒性,例如使用 RANSAC 算法[3] ,但是需要广泛的参数来确保这些方法的性能,使得它们对于适应新的场景非常具有挑战性。

在过去的五年中,DCNN 已经被广泛应用于解决这个问题。图像分类网络只能确定道路图像是否包含坑洼。目标检测网络只能提供实例级的路面坑洼检测结果。由于交通部门对路面凹坑的宽度、深度、体积等几何特性更加关注,因此开发结合3D道路几何重建和语义分割的混合方法是本文研究的未来趋势。

最近的深度立体匹配网络已经显示出优越的性能。作者相信它们可以通过迁移学习很容易地应用于3D道路几何模型的重建。然而,这种(有监督的)方法通常需要大量标注良好的训练数据来学习立体匹配,这使得它们在实践中很难实现[131]。

因此,专门为路面3D重建开发的无/自监督立体匹配算法也是一个需要更多关注的热门研究领域。此外,如[105,106,108,109]所述,数据融合语义分割是目前驾驶场景理解的一个热门话题。然而,这样的网络通常是计算复杂的。经过大量的文献研究,作者认为网络剪枝和知识提取是解决这一问题的可行方案。在实际实验中,作者还可以应用训练有素的图像分类 DCNN 来选择关键帧(可能含有坑洼的道路图像) ,显著地避免了语义分割的冗余计算。路面坑洼不一定无处不在,准备一个大型的、注释良好的数据集来训练语义分割 DCNN 是一个挑战。因此,开发用于路面坑洼检测的少/低样本语义分割网络也是一个需要更多关注的研究热点。

本文综合调研了SoTA 道路成像技术和计算机视觉算法在路面坑洼检测中的应用。经典的基于2D图像处理和基于3D点云建模和分割的方法存在严重的局限性。因此,本文主要讨论了用于路面坑洼检测的性能良好的 SoTA DCNN。由于交通部门对路面凹坑的几何特性更感兴趣,开发基于立体匹配的路面3D重建和数据融合语义分割功能的混合方法是本文研究的未来趋势。然而,训练立体匹配和语义分割网络需要大量的人工标注数据集,准备这样的数据集是非常劳动密集型的。因此,作者相信无/自监督立体匹配算法(专门为路面3D开发)和语义道路图像分割的少量/低样本学习是需要更多关注的热门研究领域。

#Tracking Everything Everywhere All at Once

前段时间,Meta 发布「分割一切(SAM)」AI 模型,可以为任何图像或视频中的任何物体生成 mask,让计算机视觉(CV)领域研究者惊呼:「CV 不存在了」。之后,CV 领域掀起了一阵「二创」狂潮,一些工作陆续在分割的基础上结合目标检测、图像生成等功能,但大部分研究是基于静态图像的。

现在,一项称为「追踪一切」的新研究为动态视频中的运动估计提出了新方法,能够准确、完整地追踪物体的运动轨迹。

该研究由来自康奈尔大学、谷歌研究院和 UC 伯克利的研究者共同完成。他们联合提出了一种完整且全局一致的运动表征 OmniMotion,并提出一种新的测试时(test-time)优化方法,对视频中每个像素进行准确、完整的运动估计。 

  • 论文地址:https://arxiv.org/abs/2306.05422
  • 项目主页:https://omnimotion.github.io/

有网友在推特上转发了这项研究,仅一天时间就收获了 3500 + 的点赞量,研究内容大受好评。

从该研究发布的 demo 看,运动追踪的效果非常好,例如追踪跳跃袋鼠的运动轨迹:

荡秋千的运动曲线:

还能交互式查看运动追踪情况: 

即使物体被遮挡也能追踪运动轨迹,如狗在跑动的过程中被树遮挡:

在计算机视觉领域,常用的运动估计方法有两种:稀疏特征追踪和密集光流。但这两种方法各有缺点,稀疏特征追踪不能建模所有像素的运动;密集光流无法长时间捕获运动轨迹。

该研究提出的 OmniMotion 使用 quasi-3D 规范体积来表征视频,并通过局部空间和规范空间之间的双射(bijection)对每个像素进行追踪。这种表征能够保证全局一致性,即使在物体被遮挡的情况下也能进行运动追踪,并对相机和物体运动的任何组合进行建模。该研究通过实验表明所提方法大大优于现有 SOTA 方法。

方法概述

该研究将帧的集合与成对的噪声运动估计(例如光流场)作为输入,以形成整个视频的完整、全局一致的运动表征。然后,该研究添加了一个优化过程,使其可以用任何帧中的任何像素查询表征,以在整个视频中产生平滑、准确的运动轨迹。值得注意的是,该方法可以识别画面中的点何时被遮挡,甚至可以穿过遮挡追踪点。

OmniMotion 表征

传统的运动估计方法(例如成对光流),当物体被遮挡时会失去对物体的追踪。为了在遮挡的情况下也能提供准确、一致的运动轨迹,该研究提出全局运动表征 OmniMotion。

该研究试图在没有显式动态 3D 重建的情况下准确追踪真实世界的运动。OmniMotion 表征将视频中的场景表示为规范的 3D 体积,通过局部规范双射(local-canonical bijection)映射成每个帧中的局部体积。局部规范双射被参数化为神经网络,并在不分离两者的情况下捕获相机和场景运动。基于此种方法,视频可以被视为来自固定静态相机局部体积的渲染结果。 

由于 OmniMotion 没有明确区分相机和场景运动,所以形成的表征不是物理上准确的 3D 场景重建。因此,该研究称其为 quasi-3D 表征。

OmniMotion 保留了投影到每个像素的所有场景点的信息,以及它们的相对深度顺序,这让画面中的点即使暂时被遮挡,也能对其进行追踪。

实验及结果

定量比较

研究者将提出的方法与 TAP-Vid 基准进行比较,结果如表 1 所示。可以看出,在不同的数据集上,他们的方法始终能实现最佳的位置准确性、遮挡准确性和时序一致性。他们的方法可以很好地处理来自 RAFT 和 TAP-Net 的不同的成对对应输入,并且在这两种基准方法上提供了一致的改进。

定性比较

如图 3 所示,研究者对他们的方法和基线方法进行了定性比较。新方法在(长时间)遮挡事件中显示出了出色的识别和追踪的能力,同时在遮挡期间为点提供合理的位置,并处理很大的摄像机运动视差。

消融实验与分析

研究者利用消融实验来验证他们设计决策的有效性,结果如表 2 所示。

在图 4 中,他们展示了由他们的模型生成的伪深度图,以展示学习到的深度排序。 

需要注意的是,这些图并不对应于物理深度,然而,它们展示了仅使用光度和光流信号时,新方法能够有效地确定不同表面之间的相对顺序,这对于在遮挡中进行追踪至关重要。更多的消融实验和分析结果可以在补充材料中找到。

#VL-BEIT

BLIP:一种新的 VLP 框架,可以灵活地迁移到视觉语言理解和生成任务。使用共享的 Transformer 对单模态和多模态数据进行掩码预测 (Masked Prediction),是一种从头开始训练的单阶段的视觉语言预训练方法。

VL-BEIT 也是微软推出的一种多模态 Transformer 模型,在研究它之前我们可以大概从微软发表的多模态相关的工作里面简单看到这个团队在多模态和自监督领域的技术积累。

本文介绍的 VL-BEIT 是上一篇博客介绍的 VLMo 的后续工作,在其中的一些技术细节和方法上面也和 VLMo 大差不差。VLMo 是一种分阶段的视觉语言预训练方法,第一步训练视觉模型,第二步训练文本模型,最后一步才是视觉文本的多模态模型。VL-BEIT 给出一种极简多模态解决方案。VL-BEIT 使用共享的 Transformer 对单模态和多模态数据进行掩码预测 (Masked Prediction),是一种从头开始训练的单阶段的视觉语言预训练方法。在这一个阶段里面,VL-BEIT 的目标不仅仅包括了使用纯视觉数据集的掩码图像建模,还包括了使用纯文本数据集的掩码语言建模,和使用多模态数据集的掩码视觉语言建模。

VL-BEIT:极简单阶段多模态预训练方案

论文名称:VL-BEIT: Generative Vision-Language Pretraining

论文地址:

​https://arxiv.org/pdf/2201.12086.pdf​

代码地址:

​https://github.com/microsoft/unilm​

VL-BEIT 是上一篇博客介绍的 VLMo 的后续工作,它的技术方案建立在三种重要的视觉,文本方面的自监督学习算法之上。

  • BERT[1]:提出完形填空 (Masked Language Modeling, MLM) 技术自监督训练文本 Transformer 模型。
  • BEIT[2]:提出掩码图像建模 (Masked Image Modeling, MIM) 技术自监督训练视觉 Transformer 模型。
  • VLMo[3]:基于以上两种技术,基于视觉文本预训练 (Vision-Language Pretraining) 技术自监督训练多模态 Transformer 模型。

以上三种技术的共同特点可以概括为:都是基于掩码-预测的范式 (Mask-then-Predict Paradigm)。VLMo 在使用上面三种技术时是顺序进行的,即分3个阶段。意思就是先使用 BEIT 的 MIM 技术训练好视觉模型,再使用 BERT 的 MLM 技术训练好文本模型。在第3阶段训练多模态模型时,使用第1阶段训练好的视觉模型和第2阶段训练好的文本模型的初始化参数。

VL-BEIT 是在单个训练的阶段里面,通过一种统一的掩码-预测的任务直接完成多模态模型的训练,相比于之前的多个阶段训练更加地简单而有效。这个统一的任务就包含多种预训练的目标了:

  1. 首先就是 BEIT 的 MIM 技术,它依靠于大规模的纯视觉数据集 (单模态数据集)。
  2. 然后是 BERT 的 MLM 技术,它依靠于大规模的纯文本数据集 (单模态数据集)。
  3. 最后是 VLMo 的视觉-语言建模,它依靠于大规模的视觉文本数据集 (多模态数据集)。

那么如何让 VL-BEIT 模型既可以接受单模态数据集作为输入,又可以接受多模态数据集作为输入呢?作者这里还是遵循了 VLMo 的架构设计思路。这样做的好处是在预训练之后,VL-BEIT 模型可以微调为纯视觉模型,又可以微调为双塔多模态模型或者单塔多模态模型,以用于各种视觉和视觉语言下游任务。

VL-BEIT 的输入表征

VL-BEIT 的输入表征和 VLMo 基本一致。

图像的表征

VL-BEIT的模型架构

VL-BEIT 的模型架构和 VLMo 一致,是一个混合专家 Transformer 模型 (Mixture-of-Modality-Experts, MoME)。更多详细的介绍可以参考:多模态超详细解读 |VLMo:混合多模态专家的视觉语言预训练

MoME Transformer 模型也是一个 Transformer 模型,也是先通过一个 Multi-Head Self-Attention 的子模块,再通过一个 FFN 的子模块。FFN 子模块是由3个并行,独立的 FFN 并联得到的,就像一个专家池,包含视觉专家 Vision-FFN,文本专家 Language-FFN 和视觉文本专家 Vision-Language-FFN,在标准 Transformer 中根据不同的情况使用不同的 FFN。Self-Attention 层在不同的专家之间共享。

这样设计的好处是:MoME Transformer 可以分情况选择不同的专家来使用。

  1. 当我们要做纯视觉任务的时候,可以只让视觉专家 V-FFN 输入视觉信息,这样 VL-BEIT 就变成了纯视觉模型。
  2. 当我们要做纯文本任务的时候,可以只让文本专家 L-FFN 输入文本信息,这样 VL-BEIT 就变成了纯文本模型。
  3. 当我们要做多模态分类任务的时候,可以让视觉文本专家 VL-FFN 工作,这样 VL-BEIT 就变成了单塔多模态模型。
  4. 当我们要做多模态检索任务的时候,可以让视觉文本专家 VL-FFN 工作,这样 VL-BEIT 就变成了双塔多模态模型。

VL-BEIT 根据不同的需求可以让不同的专家模型工作,不论是架构层面还是训练层面都很灵活。

图1:VL-BEIT 模型的预训练

VL-BEIT 的预训练任务

VL-BEIT 在预训练时同时使用了3个预训练任务,它们分别是:

掩码语言建模 (Masked Language Modeling, MLM)

使用掩码语言建模 (MLM) 从大规模纯文本数据中学习语言表征,如图 1(a) 所示。遵循 BERT 的做法,随机选择文本序列中的一些 token,并用 [MASK] token 替换。每个 [MASK] token 有 80% 的概率正常使用 [MASK] token,有 10% 的概率保留原始 token,有 10% 的概率替换为随机 token。MLM 任务预训练的目标是从损坏的文本中去恢复这些被 mask 掉的 token。

掩码图像建模 (Masked Image Modeling, MIM)

使用掩码图像建模 (MIM) 从大规模图像数据中学习视觉表征,如图 1(b) 所示。遵循 BEiT 的做法,随机选择图像序列中的 40% 的 patch,并用 [MASK] patch 替换。MIM 任务预训练的目标是从损坏的图片中去恢复这些被 mask 掉的 patch。作者使用 BEIT v2 的 image tokenizer 来获得离散的 token 作为重建目标。

掩码视觉语言建模 (Masked Vision-Language Modeling, MVLM)

把掩码图像建模的方法扩展到多模态数据。注意这个任务使用的数据集是成对的图片,文本对。这个任务的目标是根据图片和对应的文本线索,去恢复被 mask 的图像 patch 和文本 token,如图 1(c) 所示。以 50% 的概率随机 mask 文本 token,根据图片和损坏的文本的联合表征来恢复 mask 的文本 token。同样随机 mask 图片 patch,根据损坏的图片和文本的联合表征来恢复 mask 的图片 patch。MVLM 任务鼓励模型去学习图片线索和文本信息之间的对齐。

VL-BEIT 的预训练数据

从 VL-BEIT 的3种预训练任务也可以看出来,VL-BEIT 在预训练时要使用3种数据集:纯视觉数据集,纯文本数据集和多模态数据集。

视觉数据集使用 ImageNet-22K,文本数据集使用 English Wikipedia 和 BookCorpus。

多模态数据集使用下面4个,图片数加起来大概是 4M,图文对的数量加起来大概是 10M。

  • Conceptual Captions
  • SBU Captions
  • COCO
  • Visual Genome

VL-BEIT 做了两种经典的多模态下游任务:多模态分类任务 (VQA ,NLVR2) 和多模态检索任务,以及两种视觉任务:图像分类和语义分割。

VL-BEIT 多模态下游任务实验结果

Visual Question Answering (VQA) 任务

VQA 旨在根据给定的图像回答问题。作者使用 VQA 2.0 数据集,并将 VQA 任务表述为一个分类问题,从 3, 129 个最常见的答案中选择答案,这也是很多工作中的一种常见的做法。因为是分类任务,所以 VL-BEIT 模型可以微调为一个单塔模型,联合编码图像和文本。通过模型 [T_CLS] token 的输出向量作为图像-问题对的表征,然后喂入一个 MLP 获得最终预测结果。

Natural Language for Visual Reasoning (NLVR2)

NLVR2 给出一个文本和一对图像,任务是预测描述对图像输入是否正确 (二分类)。作者使用 NLVR2 数据集来评估模型,把三元组输入 (image1, image2, text) 变成两个图文对,每对包含 text 和一个 image,作者将两个输入对的 [T_CLS] 标记的最终输出向量拼接起来。然后将连接的向量输入一个 MLP 做预测。     

Image-Text Retrieval

检索任务可以分为图文检索和文图检索。作者使用广泛使用的 COCO 和 Flickr30K 数据集来评估模型,也使用了 VLMo 和 ALBEF 中使用的 hard negative mining。在推理过程中,首先使用 VL-BEIT 作为双塔模型来获得前 kk 个候选者,然后使用该模型作为单塔模型,根据其图像-文本匹配分数对候选者进行排名。

如下图2所示是多模态分类任务的结果,包括 VQA 和 NLVR2 任务。VL-BEIT 在 VQA 上的表现优于以前的模型,并在 NLVR2 上实现了具有竞争力的性能。

图2:多模态分类任务实验结果 

图3:多模态检索任务实验结果

VL-BEIT 视觉任务实验结果

VL-BEIT 的视觉下游任务,作者做了 ImageNet-1K 图像分类和 ADE20K 语义分割,结果如下图4所示。作者将 VL-BEIT 与两个基本大小的视觉 Transformer 在图像分类和语义分割方面进行了比较。对于 BEIT 和 VL-BEIT,作者在 ImageNet-22K 上执行中间微调,并且与 ImageNet-22K 上预训练的 ViT 比较。VL-BEIT 在 ImageNet-1K 上优于 ViT 和 BEIT,而且该模型在 ADE20K 上也具有竞争力。

 图4:视觉任务实验结果 

#YouKu-mPLUG

最近阿里达摩院发布了Youku-mPLUG,这是目前中文社区内最大的、公开的高质量视频-语言数据集。该数据集是从中国著名的视频分享网站优酷中严格筛选而来,符合安全、多样性和高质量标准。Youku-mPLUG包含来自45个不同类别的1000万个中文视频-文本对,是进行大规模预训练的理想数据源。

此外,为了便于对视频-语言模型进行全面评估,达摩院的研究者精心构建了最大的人工标注中文基准,涵盖了跨模态检索、视频描述和视频分类三个流行的视频-语言任务。Youku-mPLUG可以帮助研究人员进行更深入的多模态研究,并在未来开发更好的应用程序。

达摩院的研究者也发布了在Youku-mPLUG数据上预训练的视频语言预训练模型mPLUG-video。mPLUG-video在以上的基准测试中取得了新的SOAT结果:在视频分类方面性能提高了高达23.1%,在视频描述生成任务上的CIDEr指标上获得68.9的高分。借助于大语言模型Bloomz和GPT-3,mPLUG-video仅使用1.7%的训练参数就可以显著提升对人类指令的和视频内容的理解能力,效果显著好于video-LLaMA等大模型效果。

  • 论文链接:https://arxiv.org/pdf/2306.04362.pdf
  • 代码链接:https://github.com/X-PLUG/Youku-mPLUG

Youku-mPLUG中的数据例子如下

mPLUG-video 对人类指令的和视频内容的理解

mPLUG-video可以很好的理解视频的整体语义是“舞蹈视频”以及包含详细的视觉信息,比如“跳跃”和“扭动”等。

mPLUG-video还能轻松理解广告的内容,指出广告的类型和创作部门。 

mPLUG-video可以准确指出下面视频中的关键角色是“奥特曼”,而其他两个视频大模型明显不能给出准确答案。 

虽然视频-语言预训练(video-language pre-training,VLP)取得了显著的进展。但是,与英语VLP社区相比(如表格1所示),缺乏大规模高质量的公开中文VLP数据集阻碍了中文视频-语言预训练模型的研究。

此外,中文VLP社区还面临着缺乏公开基准测试数据(如表格2所示)的问题。这导致了两个重要问题:首先,该社区的发展和应用已经滞后。其次,一些研究能够通过使用其他研究无法公平比较的秘密下游基准测评获得惊人的性能,从而使得建立性能评估标准变得困难。虽然一些方法将英语文本翻译成中文[1]或基于英语视频注释数据集[2],但英语和中文之间存在固有的语言和文化差异。

因此,该工作构建的公开的预训练数据集和评测基准是有重要意义的。

预训练数据集构建过程

基于严格的安全性、多样性和质量标准,达摩院团队从优酷4亿个原始视频中挑选出了1000万个高质量的视频文本对。为确保视频的多样性,团队利用视频指纹识别技术去除重复视频。所有视频都经过分层多标签分类模型,被严格划分为20个一级类别和45个二级类别,如图2所示。Youku-mPLUG涵盖多个领域,各类别分布均匀。

为保证高质量,团队对视频和文本进行了严格的数据清洗。针对文本,要求视频标题长度在5到30个字之间,而且至少包含5个汉字,同时过滤明显的广告和无意义内容。对于视频质量和完整度,团队特别挑选了近期上传的视频,长度在10到120秒之间,以确保内容清晰完整。此外,还运用了中文图像文本预训练模型CLIP来过滤那些特征和图像特征相似度较低的视频。图3呈现了视频时长和标题长度的分布情况。 

构造下游任务基准测评

论文使用视频文本检索、视频类别预测和视频描述生成三种类型的下游任务来评估模型在理解和生成方面的能力。表3总结了用于这三种任务的统计数据:

视频类别预测(Video Category Classification)

论文开始使用优酷的分类预估模型来给视频自动生成类别,但发现准确率只有94%,这个结果不太让人满意。因此论文开始使用人工标准的方法,在招聘到一批标记的员工后,首先要对标注员进行筛选,每个标注员会对100个视频进行打标,如果错误率达到2.5%就判定为不合格。在筛选到合适的标注员后,为了保证最高的准确率,又额外使用了三名标记员来复核每个视频的的标记结果。

视频描述生成(Video Captioning)

视频描述生成任务要求模型能够对视频片段的内容和标题生成一段简洁的描述。研究团队同样根据视频的类别分布随机抽取了大约8万个视频,并采用彩色直方图法将视频分割成多个镜头。为了能够准确理解和描述视频内容,研究团队还聘用了多个母语为汉语且受教育程度较高的标注员。每个标注员会被随机分配25个视频,并要求他们生成字幕,字幕包括视频的主题和对象,以及相关的动作和背景描述。字幕必须至少包含15个汉字。在预标注阶段结束,标注员会继续对数据进行标注,为了防止数据穿越,同一个视频的片段或者有相似标题的视频会专门分配到训练集或者测试集。此外,研究团队还招募了三个以上的标注员来标注视频片段,用来验证和测试视频的多样性和质量。

视频文本检索(Video-Text Retrieval)

论文从上述已经标注的视频字幕中选择部分子集作为视频文本检索任务的文本query。此外,视频的标题也会合并到文本query中以增强文本query的多样性。

mPLUG-video

模型结构

研究者提出了基于解码器的视频-语言模型mPLUG-video,如图4所示,模型由视频编码器、视觉摘要模块和语言解码器组成。由于预训练的大型语言模型在各种任务上表现出了令人难以置信的零样本和泛化能力,本文使用现成的中文大型语言模型(例如GPT-3)进行高效的模块化训练。此外,训练过程中冻结大语言模型,仅将视频编码器和视觉摘要模块留作可训练,从而大大减少了可训练参数,同时减轻了计算负担。

具体的,视频编码器使用了12层的TimeSformer。进一步,为了降低长视频序列的计算复杂度,论文引入了视觉抽取模块,它利用可学习的大小为M×D的query来减少视频序列的长度,其网络结构包括cross-attention 和 FFN。将预训练的大语言模型作为通用的文本解码器。此时需要将视频看成是外语(video-guidded language),然后将缩减后的视频序列与从文本embedding层获取的token特征concat起来输入到大语言模型中,最后这种视频引导的语言特征会预测输出下一个token。

预训练阶段-训练目标论文用自回归的方式(auto-regressive)的方式训练mPLUG-video,训练任务为预测下一个词,即模型需要根据给定的视频补全文本,大语言模型的损失函数如下:

应用到下游任务阶段-训练目标

视频描述自动生成(Video Captioning)

视频描述生成是一种自回归任务。论文在对视频描述数据集进行微调的过程中,训练目标和与预训练目标保持一致。

视频类别预测(Video Category Classification)

视频分类预测任务也可以看成是视频描述生成任务,分类预测任务评估的是预估类别的准确率。

视频文本检索(Video-Text Retrieval)

与mPLUG-2 不同,mPLUG-video不能直接应用于检索任务。因此论文将视频-文本对输入到模型中并提取最后一个token的特征,然后通过对最后一个token应用一个额外的线性层来获取匹配的得分。mPLUG-2也是达摩院发布的图/文/视频通用的大模型。 

实验结果

下游任务基准测评

从表4中可以看到,在视频分类预估任务上mPLUG-video的准确率最高,且mPLUG-video(2.7B)的效果要好于mPLUG-video(1.3B),这表明一个更大的大语言模型解码器能让效果更上一层楼。在视频描述生成任务上,mPLUG-video(2.7B)也取得了最好的效果,但实际在mPLUG数据集上,这些方法依然具有很大的挑战性。

从表5中可以看到在视频-文本检索任务上,mPLUG-video的效果却不如mPLUG-2,这是因为冻结语言模型的参数会影响mPLUG-video提取跨模态特征,这也表明论文发布的Youku-mPLUG 数据集确实能准确评估视频语言模型的建模能力。

在zero-shot视频指令理解上的人工评测

为了测试不同模型的视频指令理解能力,论文在50个随机采样的视频(45个来自Youku-mPLUG,5个来自HD-VILA-100M)上手动设置了65条指令并要求标注员对每个模型的响应结果进行打分,打分分为A、B、C、D四个等级,其中A表示“正确且令人满意”;B表示“有一些不完美,但可以接受”;C表示“理解了指令但是回复存在明显错误”;D表示“完全不相关或不正确的回复”。如图5所示,使用预训练的mPLUG-video模型在视频指令的响应效果上取得了最好的结果。 

#FKD~~

首个快速知识蒸馏的视觉框架:ResNet50 80.1%精度,训练加速30%

  • 论文和项目网址:http://zhiqiangshen.com/projects/FKD/index.html
  • 代码:https://github.com/szq0214/FKD

来自卡耐基梅隆大学等单位 ECCV 2022 的一篇关于快速知识蒸馏的文章,用基本的训练参数配置就可以把 ResNet-50 在 ImageNet-1K 从头开始 (from scratch) 训练到 80.1% (不使用 mixup,cutmix 等数据增强),训练速度(尤其是数据读取开销)相比传统分类框架节省 16% 以上,比之前 SOTA 算法快 30% 以上,是目前精度和速度双双最优的知识蒸馏策略之一,代码和模型已全部开源!

知识蒸馏(KD)自从 2015 年由 Geoffrey Hinton 等人提出之后,在模型压缩,视觉分类检测等领域产生了巨大影响,后续产生了无数相关变种和扩展版本,但是大体上可以分为以下几类:vanilla KD,online KD,teacher-free KD 等。最近不少研究表明,一个最简单、朴素的知识蒸馏策略就可以获得巨大的性能提升,精度甚至高于很多复杂的 KD 算法。但是 vanilla KD 有一个不可避免的缺点:每次 iteration 都需要把训练样本输入 teacher 前向传播产生软标签 (soft label),这样就导致很大一部分计算开销花费在了遍历 teacher 模型上面,然而 teacher 的规模通常会比 student 大很多,同时 teacher 的权重在训练过程中都是固定的,这样就导致整个知识蒸馏框架学习效率很低。

针对这个问题,本文首先分析了为何没法直接为每张输入图片产生单个软标签向量然后在不同 iterations 训练过程中复用这个标签,其根本原因在于视觉领域模型训练过程数据增强的使用,尤其是 random-resize-cropping 这个图像增强策略,导致不同 iteration 产生的输入样本即使来源于同一张图片也可能来自不同区域的采样,导致该样本跟单个软标签向量在不同 iterations 没法很好的匹配。本文基于此,提出了一个快速知识蒸馏的设计,通过特定的编码方式来处理需要的参数,继而进一步存储复用软标签(soft label),与此同时,使用分配区域坐标的策略来训练目标网络。通过这种策略,整个训练过程可以做到显式的 teacher-free,该方法的特点是既快(16%/30% 以上训练加速,对于集群上数据读取缓慢的缺点尤其友好),又好(使用 ResNet-50 在 ImageNet-1K 上不使用额外数据增强可以达到 80.1% 的精度)。

首先我们来回顾一下普通的知识蒸馏结构是如何工作的,如下图所示:

知识蒸馏框架包含了一个预训练好的 teacher 模型(蒸馏过程权重固定),和一个待学习的 student 模型, teacher 用来产生 soft 的 label 用于监督 student 的学习。可以看到,这个框架存在一个比较明显的缺点:当 teacher 结构大于 student 的时候,训练图像前馈产生的计算开销已经超过 student,然而 teacher 权重并不是我们学习的目标,导致这种计算开销本质上是 “无用的”。本文的动机正是在研究如何在知识蒸馏训练过程中避免或者说重复利用这种额外的计算结果,该文章的解决策略是提前保存每张图片不同区域的软监督信号(regional soft label)在硬盘上,训练 student 过程同时读取训练图片和标签文件,从而达到复用标签的效果。所以问题就变成了:soft label 怎么来组织和存储最为有效?下面具体来看该文章提出的策略。

1. FKD 算法框架介绍

FKD 框架的核心部分包含了两个阶段,如下图:(1)软标签(soft label)的生成和存储;(2)使用软标签(soft label)进行模型训练。

如图所示,上半部分展示了软标签的生成过程,作者通过输入多个 crops 进入预训练好的 teacher 来产生需要的软标签向量,同时作者还保存了:(1)每个 crop 对应的坐标和(2)是否翻转的 Boolean 值。下半部分展示了 student 训练过程,作者在随机采样图片的时候同时也会读取它们对应的软标签文件,从中选取 N 个 crops 用于训练,额外数据增强比如 mixup,cutmix 会放在这个阶段,从而节省了由于引入更多数据增强参数带来的额外存储开销。

2. 采样策略

本文还提出了一个 multi-crop sampling 的策略,即在一个 mini-batch 里面每张图片采样多个样本 crops。当总的训练 epochs 不变的前提下,该采样方式可以大大减少数据读取的次数,对于一些数据读取不是非常高效或者产生严重瓶颈的集群设备,这种策略的加速效果非常明显(如下表格所示)。同时在一张图片采样多个 crops 可以减少训练样本间的方差,帮助稳定训练,作者发现如果 crops 的数目不是太大的情况下可以明显提升模型精度,但是一张图片里面采样太多 crops 数目会造成每个 mini-batch 里面训练样本的信息差异不足(过于相似),因此过度采样会影响性能,所以需要设置一个合理的数值。

3. 加速比

作者在实验部分跟标准的训练方式以及 ReLabel 训练进行了速度的比较,结果如下表格所示:可以看到,相比正常的分类框架,FKD 会快 16% 左右,而相比 ReLabel 则快了 30%,因为 ReLabel 相比正常训练需要读取双倍的文件数目。需要注意的是这个速度对比实验中,FKD crop 数目为 4,如果选取更大的 crop 数目可以得到更高的加速比。

加速原因分析:

除了上述介绍的采用多个 crops 来进行加速外,作者还分析了其他一些加速的因素,如下图所示,ReLabel 在训练模型阶段需要生成采样数据的坐标,同时需要使用 RoI-Align 和 Softmax 来生成所需的软标签,相比而言,FKD 直接保存了坐标信息和最终软标签格式,因此读取标签文件之后不需要做任何额外的后处理就可以直接训练,速度相比 ReLabel 也会更快。

4. 标签质量分析

软标签质量是保证模型训练精度的一项最重要的指标,作者通过可视化标签分布以及计算不同模型预测之间的交叉熵(cross-entropy)来证明了所提出的方式拥有更好的软标签质量。

上图展示了 FKD 和 ReLabel 软标签分布的情况对比,得到如下结论:

  • (第一行)FKD 相比 ReLabel 置信度更加平均也与输入样本内容更加一致,作者分析原因是 ReLabel 将全局图像输入到模型中,而不是局部区域,这使得生成的全局标签映射编码了更多全局类别信息同时忽略了背景信息,使得生成的软标签过于接近单个语义标签。
  • (第二行)虽然存在一些样本 ReLabel 和 FKD 之间的最大预测概率相似,但 FKD 包含更多标签分布中的从属类别概率,而 ReLabel 的分布中并没有捕获这些从属类别的信息。
  • (第三行)对于某些异常情况,FKD 比 ReLabel 更加健壮,例如目标框含有松散边界,或者只定位部分目标等。
  • (第四行)在有些情况下,ReLabel 的标签分布意外的崩溃了(均匀分布),没有产生一个主要的预测,而 FKD 仍然可以预测得很好。

5. 标签压缩、量化策略

1)硬化 (Hardening)。在该策略中,样本标签 Y_H 使用 teacher 预测的最大 logits 的索引。标签硬化策略产生的依然是 one-hot 的标签,如下公式所示:

2)平滑 (Smoothing)。平滑量化策略是将上述硬化后的标签 Y_H 替换为软标签和均匀分布的分段函数组合,如下所示:

3)边际平滑 (Marginal Smoothing with Top-K)。边际平滑量化策略相比单一预测值保留了更多的边际信息(Top-K)来平滑标签 Y_S: 

4)边际平滑归一化 (Marginal Re-Norm with Top-K)。边际平滑归一化策略会将 Top-K 预测值重新归一化到和为 1,并保持其他元素值为零(FKD 使用归一化来校准 Top-K 预测值的和为 1,因为 FKD 存储的软标签是 softmax 处理之后的值): 

具体对应上述各种量化策略的图示如下图所示: 

6. 不同标签量化 / 压缩策略的存储大小比较

不同标签压缩方法需要的存储空间如下表格所示,所使用的数据集为 ImageNet-1K,其中 M 是软标签生成阶段每张图像被采样的数目,这里作者选取了 200 作为示例。Nim 是图像数量, ImageNet-1K 数据集为 1.2M,SLM 是 ReLabel 标签矩阵的大小,Cclass 是类的数量,DDA 是需要存储的数据增强的参数维度。

从表格中可以看到,在不做任何压缩的情况下 FKD 软标签需要的存储空间为 0.9T,这在实际使用中显然是不现实的,标签数据的大小已经远远超过训练数据本身了。通过标签压缩可以极大减少存储大小,同时后面实验也证明了合适的压缩方式并不会损害模型精度。

7. 自监督学习任务上的应用

FKD 的训练方式也可以应用于自监督学习任务。作者使用自监督算法比如 MoCo,SwAV 等来预训练 teacher 模型,然后按照上述方式生成用于自监督的软标签(unsupervised soft label),这个步骤跟监督学习得到的 teacher 很相似。生成标签过程会保留原始自监督模型中 projection head 并使用之后的最终输出向量,然后将这个向量作为软标签保存下来。得到该软标签后,可以使用同样的监督式的训练方式来学习对应的 student 模型。

8. 实验结果

1)首先是在 ResNet-50 和 ResNet-101 上的结果,如下表所示,FKD 取得了 80.1%/ResNet-50 和 81.9%/ResNet-101 的精度。同时训练时间相比普通训练和 ReLabel 都快了很多。

2)作者还测试了 FKD 在 MEAL V2 上的结果,同样得到了 80.91% 的结果。 

3)Vision Transformer 上的结果:

接下来作者展示了在 vision transformer 上的结果,在不使用额外数据增强的情况下,FKD 就可以比之前知识蒸馏方法得到将近一个点的提升,同时训练速度快了 5 倍以上。

4)Tiny CNNs 上的结果: 

5)消融实验:

首先是不同压缩策略,综合考虑存储需求和训练精度,边际平滑策略是最佳的。

接下来是训练阶段不同 crop 数目的对比,MEAL V2 由于使用了 pre-trained 的参数作为初始化权重,因此不同 crop 数目下性能都比较稳定和接近。而 vanilla 和 FKD 在 crop=4 的时候表现得最好。尤其 vanilla,相比 crop=1 精度提升了一个点,crop 大于 8 之后精度下降明显。 

6)自监督任务上的结果:

如下表所示,在自监督学习任务上 FKD 方式还是可以很好的学习目标模型,同时相比双子结构自监督网络训练和蒸馏训练,可以加速三到四倍。

9. 下游任务

下表给出了 FKD 模型在 ImageNet ReaL 和 ImageNetV2 两个数据集上的结果,可以看到,FKD 在这些数据集上取得了稳定的提升。

下表是 FKD 预训练模型在 COCO 目标检测任务上的结果,提升同样明显。 

10. 可视化分析

如下两张可视化图所示,作者通过可视化中间特征层(attention map)的方式探索 FKD 这种 region-based 训练方式对模型产生的影响,作者对比了三种不同训练方式得到的模型:正常 one-hot label,ReLabel 和本文提出的 FKD。

(i) FKD 的预测的概率值相比 ReLabel 更加小(soft),因为 FKD 训练过程引入的上下文以及背景信息更多。在 FKD 随机 crop 的训练策略中,许多样本采样于背景(上下文)区域,来自 teacher 模型的软预测标签更能真实的反映出实际输入内容,并且这些软标签可能与 one-hot 标签完全不同,FKD 的训练机制可以更好的利用上下文中的额外信息。

(ii) FKD 的特征可视化图在物体区域上具有更大的高响应值区域,这表明 FKD 训练的模型利用了更多区域的线索进行预测,进而捕获更多差异性和细粒度的信息。

(iii)ReLabel 的注意力可视化图与 PyTorch 预训练模型更加接近,而 FKD 的结果跟他们相比具有交大差异性。这说明 FKD 方式学习到的注意力机制跟之前模型有着显著的差别,从这点出发后续可以进一步研究其有效的原因和工作机理。

  

#CLIP4

本文提出了在一组带有掩膜的图像区域和它们对应的文本描述上微调CLIP的方法。通过挖掘现有的图像-标题数据集来收集训练数据,使用 CLIP 将遮罩图像区域与图像标题中的名词进行匹配。

论文地址:https://arxiv.org/pdf/2210.04150.pdf

本文研究了开放式语义分割(Open-vocabulary semantic segmentation)问题,该问题旨在根据文本描述将图像分割为语义区域,这些描述在训练期间可能没有被看到。常用的Two-Stage方法首先是生成无类别掩码提议,然后利用预先训练的视觉语言大模型(如CLIP)对掩码区域进行分类。作者分析了这种方法的性能瓶颈主要在预训练的CLIP模型,因为它在掩膜图像上表现不佳。

为了解决这个问题,作者提出了在一组带有掩膜的图像区域和它们对应的文本描述上微调CLIP的方法。通过挖掘现有的图像-标题数据集(如COCO Captions)来收集训练数据,使用CLIP将掩码图像区域与图像标题中的名词进行匹配。与更精确且手动注释的具有固定类别的分割标签(如COCO-Stuff)相比,作者发现带噪声且多样化的数据集可以更好地保留CLIP的泛化能力。除了对整个模型进行微调外,作者还利用掩码图像中的“空白”区域,使用作者称之为“mask prompt tuning”的方法。

实验表明,在不修改CLIP任何权重的情况下,mask prompt tuning可以带来显着的改进,并且可以进一步改善完全微调的模型。特别是,在COCO数据集上训练并在ADE20K-150上进行评估时,该模型实现了29.6%的mIoU,比先前的最新技术水平高出8.5%。这也是第一次,开放式词汇的通用模型在没有Dataset specific adaptations的情况下性能能与2017年的有监督模型相媲美。

Introduction

首先还是对研究问题的描述。语义分割旨在将像素分组为具有相应语义类别的有意义的区域,虽然已经取得了显著的进展(例如2015年的FCN,2017年的DeepLab,2018年的Encoder-Decoder等),但现代语义分割模型主要是用预定义的类别进行训练,无法推广到未知类别。相反,人类以开放词汇方式理解场景,通常有成千上万种类别。为了接近人类水平的感知,作者研究了开放式语义分割,其中模型通过文本描述的任意类别对图像进行分割。

视觉语言模型(例如CLIP)可以从十亿级别的图像-文本对中学习丰富的多模态特征。先前的研究表明,视觉语言模型对于开放式词汇分类具有优越的能力,因此提出了使用预训练视觉语言模型进行开放式语义分割的方法。其中,Two-Stage方法表现出了巨大的潜力:该方法首先生成无类别掩码提议,然后利用预先训练的CLIP执行开放式词汇分类。作者认为这种Two-Stage方法的成功依赖于两个假设:

(1)模型可以生成无类别的掩膜。

(2)预训练的CLIP可以将其分类性能转移到对掩膜的分类上。

为了验证这两个假设,作者进行了以下分析:首先,作者假设有一个绝对正确的掩膜生成器和一个正常的CLIP分类器。我们使用真实的掩膜作为这个生成器,并将生成的掩膜输入到预训练的CLIP进行分类。该组合在ADE20K-150数据集上仅达到20.1%的mIoU。接下来,我们假设拥有一个绝对正确的分类器,但是只使用普通的掩膜生成器-一个在COCO数据集上预训练的MaskFormer。作者首先提取生成的掩膜,然后将每个区域与地面真实物体掩膜进行比较,找到重叠最大的物体,并将物体标签分配给该提取的掩膜区域。尽管掩膜生成器并不完美,但该组合的mIoU显着提高至66.5%。

作者所做的这个实验清楚地表明,预训练的CLIP无法对生成的掩膜进行令人满意的分类,并且这是Two-Stage开放词汇分割模型的性能瓶颈。作者认为这是由于掩膜图像与CLIP的训练图像之间存在 Domain gap。另一方面,生成的掩膜是从原始图像中裁剪并调整了大小,会受到嘈杂的分割掩膜的干扰。

紧接着,作者提出的下一个问题是如何有效地微调CLIP?掩膜图像和自然图像之间最显著的区别在于掩膜图像中的背景像素被掩蔽掉,导致许多空白区域,在将其输入CLIP Transformers时将被转换为“Zero Tokens”。这些tokens不仅不包含任何有用的信息,而且还会造成模型的Domain偏移(因为这些Zero Tokens在自然图像中不存在),并导致性能下降。为了解决这个问题,作者提出了Mask Prompt Tuning。在对掩膜图像进行tokenize的时候,作者使用可学习的Prompt Tokens替换“Zero Tokens”。作者发现,仅使用Mask Prompt Tuning就可以显著提高CLIP在掩膜上的性能。这说明Mask Prompt Tuning可以进一步提高性能,对于打破性能瓶颈具有非常重要的作用。

Method1. Two-Stage模型

作者设计的Two-Stage开放词汇语义分割模型如下图所示。它由一个生成掩膜的分割模型和一个开放词汇分类模型组成。

作者同时也指出,以这种方式训练的掩蔽建议生成器并不严格“类别无关”,因为对象的定义是由训练集中的类别定义确定的。例如,如果训练集只包含“人”作为一个类别,那么模型不太可能自动将人分割成“面部”、“手”、“身体”或更精细的身体部位。如何训练一个通用的、类别无关的模型来生成掩蔽建议是一个重要的话题,但超出了本文的范围。

2. 收集掩膜-类别对

为了使CLIP更好地处理掩蔽图像,作者尝试在由掩膜图像和文本对组成的数据集上微调CLIP。一种直接的解决方案是利用人工注释的分割标签,例如来自COCO-Stuff。这些标签很准确,但类别集合是封闭的。作者尝试了这种解决方案,并从COCO-Stuff中收集了965K个掩膜-类别对,涵盖了171个类别(例如香蕉、橙子)。然后,作者微调了CLIP的图像编码器,同时冻结文本编码器。然而,作者发现这种朴素的方法限制了CLIP的泛化能力,如果出现了更多的未见类别,性能会下降。作者认为由于数据集中文本词汇量有限,微调后的CLIP过度拟合于171个类别,而失去了对未知类别的泛化能力。

作者敏锐地察觉到,与分割标签相比,图像标题包含关于图像的更丰富的信息,并涉及更大的词汇表。例如,在下图中,图像的标题是“There are apple and orange and teapot.”。尽管“apple”和"orange"是COCO-Stuff中有效的类别,但其他非有效类别的信息却被忽略了。

基于这一观察,作者设计了一种自标记策略来提取掩蔽-类别对。如上图所示,给定一张图片,作者首先使用预训练的MaskFormer生成掩膜。同时,从相应的图像标题中,使用现成的语言解析器(Noun Parser)提取所有名词,并将它们视为潜在的类别。然后,我们使用CLIP将最匹配的掩膜与每个类别配对。从COCO-Captions中,我们使用每张图片的5个标题收集了1.3M个掩蔽-类别对和27K个唯一名词,或者使用每张图片的1个标题收集了440K个掩蔽-类别对和12K个名词。实验表明,这个带有噪声但多样化的掩膜-类别数据集比手动分割标签可以使模型更加鲁棒。

3. Mask Prompt Tuning

收集数据集后,一个自然的问题就是如何有效地微调CLIP?作者指出:掩膜与自然图像之间最显著的区别是掩膜中的背景像素被设置为零,导致许多空白区域。当将掩膜图像输入给CLIP时并进行Tokenize的时候,这些空白区域将变成“Zero Tokens”。这些Zero Tokens不仅不包含有用的信息,而且会给模型带来Domain的偏移(因为这些令牌在自然图像中不存在),从而导致性能降低。为了缓解这个问题,作者提出了Mask Prompt Tuning,如下图所示。

讨论

总结一下,作者的主要工作如下:

分析了目前主流的Two-Stage方法架构,设计了对比试验,说明了制约该方法性能的主要因素在于预训练的CLIP在掩膜图像上的分类性能不够好,为后续的改进指明了方向。

设计了一种自标记策略来提取掩膜-类别对用于CLIP微调,以适应掩膜图像并保留其泛化能力,试验表明,这样的自标记策略能够很好提升模型的泛化性。

针对掩膜图像的特点:具有大量的Zero Patch提出了Mask Prompt Tuning方法。这种方法不改变CLIP的权重,通过引入可编码的Prompt Tokens来替换Zero Tokens,使多任务权重共享成为可能。

首次展示了Open-Vocabulary Models可以在不进行特定于数据集适应的情况下达到可以媲美2017年有监督模型的性能。

#visprog

CVPR 2023年最佳论文Visual Programming: Compositional visual reasoning without training (视觉编程:无需训练的组合式视觉推理)

Paper: https://openaccess.thecvf.com/content/CVPR2023/html/Gupta_Visual_Programming_Compositional_Visual_Reasoning_Without_Training_CVPR_2023_paper.html

Code: https://github.com/allenai/visprog

VISPROG是一种神经符号方法,可利用自然语言指令解决复杂的组合式视觉任务。VISPROG避免了任何特定于任务的训练需求。相反,它利用大型语言模型的上下文学习能力生成类似Python的可组合程序,这些程序将被执行以获得解决方案和全面可解释的推理结果。生成的程序的每一行可以调用多个现成的计算机视觉模型、图像处理子程序或Python函数以生成中间输出,后续程序部分可以使用这些中间输出。在四项不同的任务中展示了VISPROG的灵活性:组合式视觉问答、基于图像对的零样本推理、实际知识对象标注和语言引导图像编辑。类似VISPROG这样的神经符号方法是扩展人工智能系统范围、为人们提供执行复杂任务的有效途径。

VISPROG是一种可组合和可解释的神经符号系统,用于进行组合式视觉推理。给定自然语言指令和高层次程序的几个示例,VISPROG利用GPT-3的上下文学习功能针对任何新指令生成程序,并在输入的图像上执行程序以获取预测结果。VISPROG还将中间输出总结为可以解释的视觉说明。

模块

VisProg目前支持20个模块,可实现图像理解、图像操作(包括生成)、知识检索和算术和逻辑操作等能力。在这里显示的红色模块是使用经过训练的最先进神经模型实现的,而蓝色模块是使用多种Python库(如PIL、OpenCV和AugLy)实现的非神经Python函数。

在VISPROG中,每个模块都被实现为一个Python类,见下述代码,其具有以下方法:

(i)解析行以提取输入参数的名称和值以及输出变量的名称;

(ii)执行必要的计算,可能涉及训练过的神经模型,并更新程序状态以获得输出变量的名称和值;

(iii)使用HTML方式以可视方式总结该步骤的计算(用于创建visual rationales)。要向VISPROG添加新模块,只需要实现并注册一个模块类,程序的执行使用该模块将由VISPROG解释器自动处理。

VISPROG中的程序生成

VisProg通过向LLM GPT-3提供指令及其相关的示例指令和对应程序,来生成程序。与以前的方法如神经模块网络(Neural Module Network)不同,VisProg利用大规模语言模型的上下文学习能力来生成程序,而不是使用预先定义的模块。这使生成的程序更加灵活且能够处理更多的组合式视觉任务。

可解释性

VisProg不仅生成高度可解释的程序,还通过将每个步骤的输入和输出的摘要拼接在一起生成visual rationales,以帮助理解和调试程序执行期间的信息流。下面是两个visual rationales的示例。

使用自然语言进行图像编辑

关于图像对的推理(自然语言视觉推理) 

结果可视化

在组合式视觉问答、基于零样本的图像对推理(仅使用单张图像VQA模型)、实际知识对象标记和语言引导的图像编辑等复杂视觉任务上展示了VisProg。下图展示了VisProg在对象标记和图像编辑任务上的能力。

更多关于所有任务的定性结果以及相应的视觉说明,包括由于程序生成中的逻辑错误或模块预测错误而导致的失败案例,请根据下面链接下载查阅:https://openaccess.thecvf.com/content/CVPR2023/supplemental/Gupta_Visual_Programming_Compositional_CVPR_2023_supplemental.zip 

标签:训练,模型,坑洼,路面,道路,图像,视觉,合集
From: https://blog.csdn.net/weixin_49587977/article/details/143200070

相关文章

  • 视觉人体动作行为识别系统
    视觉人体动作行为识别系统基于AI视觉智能分析算法,视觉人体动作行为识别系统利用监控摄像头捕捉到的视频数据进行实时分析。通过对工人的操作行为进行识别,系统能够准确判断工人在生产过程中是否存在违规行为或操作错误等情况。例如,系统可以识别工人是否按照正确的顺序执行工作任务,......
  • 【有啥问啥】CLIP Adapter:提升视觉语言模型性能的利器
    CLIPAdapter:提升视觉语言模型性能的利器1.引言在视觉语言预训练领域,CLIP(ContrastiveLanguage-ImagePre-training)模型凭借其强大的跨模态表征能力,在多个任务上取得了显著成果。然而,如同其他预训练模型一样,CLIP在特定任务或领域上的性能仍有提升空间。为了应对这一挑战......
  • 首个统一生成和判别任务的条件生成模型框架BiGR:专注于增强生成和表示能力,可执行视觉生
    BiGR是一种新型的图像生成模型,它可以生成高质量的图像,同时还能有效地提取图像特征。该方法是通过将图像转换为一系列的二进制代码来工作,这些代码就像是图像的“压缩版”。在训练时会遮住一些代码,然后让模型学习如何根据剩下的代码来填补这些空缺。BiGR不仅能够生成图像,还能在......
  • 【2024/10/22】ChatGPT国内中文版镜像网站整理合集
    一、GPT中文镜像站 yixiaai.com 支持GPT4、4o以及o1,支持MJ绘画1.什么是镜像站镜像站(MirrorSite)是指通过复制原始网站内容和结构,创建的备用网站。其主要目的是在原始网站无法访问时,提供相同或类似的服务和信息。2. ChatGPT镜像站的用途绕过访问限制 :在某些地区,访问O......
  • 揭开计算机视觉的神秘面纱,原来机器是这样“看图”的!
    上一篇:《教电脑“看”图片》本篇序言:本文介绍的计算机视觉,简单来说,是让计算机通过算法从图像中提取特征,并使用这些特征来表示图像中的各种元素及它们的相互关系,从而实现“看”的效果。这种方法在早期主要依赖于传统的机器学习(ML)技术,尤其是监督学习,在这种方法中,人类需要手动......
  • 最新Java面试题合集,将持续更新!
    1.7.重载和重写的区别重写(Override)从字面上看,重写就是重新写一遍的意思。其实就是在子类中把父类本身有的方法重新写一遍。子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类型(除过子类中方法的返回值是父类中方法返回......
  • 计算机视觉库supervision学习-day(1)-图像检测和标记
    supervision库是一款由roboflow开发的计算机视觉库提供了一系列方便的工具和功能,用于可视化和处理各种计算机视觉任务。它的目标是简化深度学习模型的可视化和后处理步骤,尤其适用于对象检测、图像分割、关键点检测等任务。一、下载supervision库1.在3.8版本及以上的python,使用pi......
  • 史上最强Java面试八股文合集,持续更新!
    线程池核心参数补充:还有一个参数 threadFactory(线程工厂):用于创建新线程的工厂,通常用于给线程设定名称、设置为守护线程等。默认的线程工厂会创建一个普通的、非守护线程。ThreadPoolExecutorthreadPoolExecutor=newThreadPoolExecutor( 3,......
  • ChatGPT国内中文版镜像网站整理合集(2024/10/22)
    ​一、GPT中文镜像站① 镜像站收集开源项目 收集各种可以的ChatGPT镜像网站,免费的收费的。支持4o以及o1,支持MJ绘画② yixiaai.com 支持4o以及o1,支持MJ绘画③ chat.lify.vip 支持通用全模型,支持文件读取、插件、绘画、AIPPT④ AIChat 支持GPT3.5/4,4o以及MJ绘画1.什......
  • 机器学习中的图像处理与计算机视觉
    引言在现代计算机科学中,图像处理和计算机视觉已成为最活跃的研究领域之一,这得益于机器学习和深度学习的发展。本文将深入探讨图像处理与计算机视觉的基础概念、常见应用、关键技术、常用工具,以及在这些领域中的代码示例。通过本篇文章,我们将了解如何从头开始构建一个简单的计......