#OV-DINO
开源性能最强!中大和美团提出OV-DINO:语言感知的开放域目标检测方法!
中山大学和美团联合提出新的开放域检测方法OV-DINO:基于语言感知选择性融合、统一的开放域检测方法,取得了开放域检测新SOTA,目前开源性能最强的开放域检测模型!(比GroundingDINO高12.7% AP!比YOLO-World 高4.7% AP!)
项目:wanghao9610.github.io/OV-DINO
论文:https://arxiv.org/abs/2407.07844
代码(已开源):
在线Demo:http://47.115.200.157:7860/
1. 亮点
- OV-DINO 是一种新颖的统一的开放域检测方法,能为实际应用提供出色的性能和效果。
- OV-DINO 提出了一个统一的数据集成管道,用于整合多种数据源进行端到端的预训练;并提出了一个语言感知选择性融合模块,以提高模型的视觉语言理解能力。
- 相比之前的方法,OV-DINO 在 COCO 和 LVIS 基准上显示出显著的性能提升,在零样本评估中,相比 Grounding-DINO 分别在 COCO 上提升了 2.5% AP,在 LVIS 上提升了 12.7% AP。
2. 摘要
开放域检测是一项具有挑战性的任务,因为它需要基于类名检测对象,包括在训练过程中未遇到的类名。现有的方法通过在多样的大规模数据集上进行预训练展示了强大的零样本检测能力。然而,这些方法仍然面临两个主要挑战:(i) 如何高效整合多样的数据源以进行端到端训练,(ii) 如何有效利用语言感知能力进行区域级的跨模态理解。为了解决这些挑战,我们提出了一种新颖的统一的开放域检测方法OV-DINO,该方法在多样的大规模数据集上进行预训练,并在统一框架中进行语言感知的选择性融合。具体来说,我们引入了一个统一的数据整合(UniDI)管道,以实现端到端训练,并通过将不同的数据源统一到以检测为中心的数据中来消除伪标签生成带来的数据噪声。此外,我们提出了一个语言感知选择性融合(LASF)模块,通过语言感知的查询选择和融合过程来实现模型的语言感知能力。我们在流行的开放域检测基准数据集上评估了所提出的OV-DINO的性能,以零样本方式在COCO数据集上实现了50.6%的AP,在LVIS数据集上实现了40.0%的AP,展示了其强大的泛化能力。此外,在COCO数据集上微调的OV-DINO实现了58.4%的AP,超越了许多使用相同骨干网的方法。
3. 方法
本文提出了一种名为OV-DINO的开放域检测方法。该模型在统一预训练框架内利用多种数据源实现了端到端预训练,在多个开放域检测数据集上取得了当前最好的性能表现。
图1 OV-DINO模型结构图
3.1 整体框架
OV-DINO的整体框架包括一个文本编码器、一个图像编码器和一个检测头。模型接收图像和提示文本作为输入,通过特定模板创建统一的文本嵌入表示。图像和文本嵌入经过编码器处理后,图像嵌入通过Transformer编码器生成精细化的图像嵌入。语言感知查询选择模块选择与文本嵌入相关的对象嵌入,并在解码器中与可学习的内容查询融合,最终输出分类分数和回归边界框。
3.2 统一数据集成(UniDI)
在预训练阶段,OV-DINO将检测数据、定位数据和图像-文本数据转换为统一的检测数据格式,从而简化模型优化过程并提高性能。检测数据和定位数据的集成相对简单,而图像-文本数据的转换则通过将图像描述视为图像的唯一类别来实现。所有文本输入都通过简单模板进行统一处理,确保一致的文本嵌入表示。
3.3 语言感知选择性融合(LASF)
该模块包括语言感知查询选择和语言感知查询融合两个关键组件。查询选择组件通过评估图像嵌入和文本嵌入的相似性来选择对象嵌入。查询融合组件逐步融合语言感知对象嵌入,同时保留内容查询的原始语义。语言感知查询选择通过计算图像嵌入和文本嵌入的相似性矩阵,并选择最相关的嵌入。查询融合则在解码器层中动态更新内容查询,逐步引入语言感知上下文。
3.4 预训练
OV-DINO采用检测中心的数据格式,将不同类型的数据(检测数据、定位数据和图像-文本数据)转化为适合检测的格式,允许在统一的框架内进行预训练。模型的前向传播过程包括图像编码器提取图像嵌入、文本编码器提取文本嵌入、Transformer编码器生成精细化图像嵌入、语言感知查询选择模块选择对象嵌入,以及Transformer解码器通过选择性融合模块进行查询分类和边界框回归。模型通过统一的分类损失函数和目标框损失函数进行优化。
通过上述设计,OV-DINO实现了开放域检测的高效预训练和性能提升。
- 实验4.1 实验设置
OV-DINO使用Swin Transformer作为图像编码器和BERT-base作为文本编码器的模型架构,通过统一数据集成(UniDI)流程整合了多样化的数据源,如Objects365、GoldG grounding和Conceptual Captions图像-文本数据集,进行端到端的预训练。在此基础上,引入了语言感知选择性融合(LASF)模块来优化跨模态的语义对齐。在预训练阶段,批量大小为128,训练周期为24个epoch,使用了AdamW优化器,学习率调度采用多步衰减策略。在COCO数据集进行了额外的微调,批量大小为32,设置了更小的学习率。在COCO和LVIS基准数据集上进行评估,采用平均精度(AP)和固定平均精度(Fixed AP)作为主要指标。
4.2 主要实验结果
4.2.1 COCO Benchmark
在零样本评估设置中,OV-DINO在COCO 2017验证集上取得了50.6%的平均精度(AP),这在同类方法中表现突出。该结果显著优于先前的方法,GLIP和G-DINO,显示了OV-DINO在处理未见类别时的强大泛化能力。在COCO数据集上进行微调后,OV-DINO进一步提升了性能,达到了58.4%的AP,刷新了该领域的记录。这一结果证明了OV-DINO不仅在零样本情况下表现出色,通过进一步的微调也能在封闭词汇集上实现卓越的检测性能。
4.2.2 LVIS Benchmark
在零样本评估设置中,OV-DINO在LVIS MiniVal数据集上取得了40.1%的AP,显著优于其他现有方法,如GLIP和G-DINO。在LVIS Val数据集上,OV-DINO也展现了强大的性能,取得了32.9%的AP。OV-DINO在处理LVIS数据集中的长尾类别时表现出色,能够检测到稀有(rare)、常见(common)和频繁(frequent)类别的物体。在LVIS MiniVal数据集上,OV-DINO在稀有类别上取得了34.5%的AP,在常见类别上取得了39.5%的AP,在频繁类别上取得了41.5%的AP。
表1 COCO 实验结果
表2 LVIS实验结果
4.3消融实验结果
4.3.1统一数据集成(UniDI)
消融实验显示,UniDI通过将不同数据源整合到统一的检测中心数据格式中,显著提高了模型在LVIS MiniVal数据集上的性能。
4.3.2 语言感知选择性融合(LASF)
LASF模块通过动态选择与文本输入相关的对象嵌入,并将其与可学习的内容查询融合,进一步提升了模型的跨模态对齐能力。
4.3.3 LASF变体比较
对LASF的不同变体(Later-LASF, Middle-LASF, Early-LASF)进行了比较。结果显示,Later-LASF变体在零样本转移能力上表现最佳,被选为OV-DINO的默认架构。
4.3.4 文本嵌入池化方法
消融实验研究了不同的文本嵌入池化方法(如均值池化和最大值池化)对模型性能的影响。结果表明,均值池化在结合使用O365和CC数据集时表现更好,这有助于捕获提示文本的全面表示。
4.3.5 图像-文本数据源的影响
通过比较不同来源的图像-文本数据(如基于图像-文本相似度排名的底部100K样本、随机选择的100K样本和顶部100K样本)对模型性能的影响。结果显示,排名最高的数据源表现最佳,而排名最低的数据源表现最差,这突出了图像-文本数据集中不可避免的噪声,并强调了过滤操作的必要性。
- 可视化结果5.1 COCO可视化结果比较
可视化结果显示,OV-DINO能够准确地检测出图像中定义的所有对象,并且置信度分数较高。与GLIP和G-DINO等其他方法相比,OV-DINO的预测更加精确,并且能够检测到标签中未标记的额外对象。
5.2 LVIS可视化结果展示
LVIS数据集包含超过1000个类别,OV-DINO在零样本推断中展现了其检测多样化实例的能力。可视化结果突出了OV-DINO在长尾类别上的性能,显示出在图像中检测到丰富多样的物体类别,并且预测结果具有高准确性。
通过在COCO和LVIS数据集上的可视化结果,OV-DINO证明了其强大的零样本泛化能力,即使是在面对训练期间未遇到的类别时也能进行有效的检测。
图2 COCO 可视化结果比较
图3 LVIS 可视化结果展示6. 结论
OV-DINO是一个统一的开放域检测方法,通过语言感知的选择性融合和统一数据集成(UniDI)显著提高了检测性能。在COCO和LVIS基准测试中,OV-DINO实现了超越现有最先进方法的性能,在零样本和微调评估中均展现出卓越的结果。通过引入语言感知的跨模态融合和对齐,OV-DINO为开放域检测(OVD)提供了一种新颖的视角,与传统的区域-概念对齐方法不同。尽管OV-DINO在性能上取得了显著成果,但仍存在一些挑战和局限性,如模型扩展性、计算资源需求等。期望OV-DINO能够激励未来在开放域视觉任务中更有效地利用语言感知跨模态信息的探索。
#Diffusion Feedback Helps CLIP See Better
Diffusion反馈强势助力CLIP秒变火眼金睛:北京智源研究院、中科院自动化所联合推出DIVA
不需要额外的文本标注数据,只需可轻易获取的纯图片数据就能大幅使得CLIP弥补其视觉感知短板!
本文分享论文Diffusion Feedback Helps CLIP See Better
,专注于通过自监督学习范式解决CLIP无法区分细粒度视觉细节的问题。
作者:王文轩(中科院自动化所-智源研究院联培博一研究生),孙泉(智源研究院视觉模型研究中心算法研究员),张帆(智源研究院视觉模型研究中心算法研究员),唐业鹏(北交博一研究生),刘静(中科院自动化所研究员),王鑫龙(智源研究院视觉模型研究中心负责人)
单位:中科院自动化所,中国科学院大学,北京智源人工智能研究院,北京交通大学
论文链接:https://arxiv.org/abs/2407.20171
项目主页:https://rubics-xuan.github.io/DIVA/
相关代码链接:https:///baaivision/DIVA
动机何在?——CLIP视觉缺陷
对比语言-图像预训练(CLIP)在跨领域和跨模态的开放世界表示方面表现出色,已成为各种视觉和多模态任务的基础。自从CLIP被提出以来,近年来涌现了许多关于CLIP模型的后续研究。这些研究通过预训练和微调CLIP模型,取得了性能提升并开发了新的能力。然而,这些方法仍然存在不可避免的局限性,因为它们高度依赖于图像-文本数据对,无法仅在图像数据上实现预期效果。
此外,最近的不少研究指出,尽管CLIP在零样本任务中表现出色,但由于对比学习范式和训练中使用的噪声图像-文本对,其在感知理解方面存在一些局限性。这些局限性包括难以准确理解长文本和难以辨别相似图像中的细微差异。虽然一些研究试图解决长文本理解问题,但改善CLIP的细粒度视觉感知能力的研究仍然不足。感知视觉细节的能力对于基础模型至关重要,而CLIP在这方面的不足直接影响了以CLIP作为视觉编码器的视觉和多模态模型的表现。
因此,在这项工作中,我们专注于通过自监督学习范式解决CLIP无法区分细粒度视觉细节的问题。 基于文本到图像的扩散模型能够生成具有丰富细节逼真图像的先验,我们探索了利用扩散模型的生成反馈来优化CLIP表征的潜力。
如何解决?——Diffusion Feedback来优化CLIP视觉细节表征
我们提出了一种简单的CLIP模型后训练方法,通过自监督扩散过程在很大程度上克服了其视觉缺陷。通过使用CLIP的密集视觉特征对扩散模型进行条件化,并将重建损失应用于CLIP优化,我们将扩散模型作为CLIP的视觉助手,因此我们将该框架命名为DIVA。
具体而言,如图2所示,DIVA主要由两个部分组成:一是需要增强视觉感知能力的CLIP模型,二是提供生成反馈的预训练扩散模型。输入原始图像和空文本(图2中标记为"Null")后,CLIP模型会编码相应的视觉特征,这些特征将与来自扩散模型文本编码器的空文本嵌入结合,为扩散过程提供条件。对于添加了噪声的图像,扩散模型尝试在上述条件下预测从前一步到当前步骤中添加的噪声。在训练过程中,除了CLIP模型外,所有部分的权重都保持不变,训练目标只是最小化重建损失(即扩散反馈指导)。通过这种方式,通过约束扩散模型更准确地预测添加的噪声,CLIP的原始语义丰富的判别表示将通过扩散反馈逐渐优化为包含更多视觉细节的表示。
此外更有意思的是,DIVA不需要额外的文本标注数据,只需可轻易获取的纯图片数据就能大幅使得CLIP弥补其视觉感知短板,这一点相比之前方法收集大量图文数据对的高昂成本是非常难得的!
效果如何?——立竿见影!
为了评估DIVA的有效性并展示其增强CLIP表示的潜力,我们在多模态理解和视觉感知任务上进行了全面的实验。
视觉细粒度感知方面
为了验证DIVA能够有效缓解CLIP模型固有的视觉能力不足,我们首先在各种现有的CLIP模型上进行了实验。DIVA在评估视觉-语言模型视觉能力的MMVP-VLM基准测试中使得现有的多个CLIP模型的性能取得了显著的提升(提高了3-7%)。
作为更强的视觉骨干网络为多模态大模型和视觉模型带来的收益评估
接下来,在DIVA的帮助下,我们进一步评估了增强后的CLIP骨干网络在多模态理解和视觉感知任务中带来的性能提升。DIVA的优势在于它不仅仅能让CLIP变聪明,还能让那些基于CLIP的大型多模态语言模型以及视觉模型变得更加厉害。在这些多模态和纯视觉的基准测试上准确率的显著提升,得益于我们DIVA范式通过生成反馈大幅增强了CLIP的视觉感知能力。
CLIP泛化能力评估
在全面验证了我们的方法提升CLIP模型细粒度视觉感知能力的效果后,我们进行了CLIP模型原始泛化能力的全面评估。在只由纯图片数据驱动整个框架的前提上,DIVA能够保持CLIP原本优秀的泛化性能。29个图片分类和图文检索的基准测试上无论是看图识物还是找图配字的实验结果都能证明,经过DIVA优化视觉表征之后的CLIP模型能够保留CLIP原本优秀的泛化能力。
未来展望?——大有可为!当前局限
- 数据和模型规模可进一步扩展。
- 由于这篇工作只是该方向的一个开始,目前仅展示了生成扩散模型用于提升CLIP模型表示的潜力,当前主要关注设计一个简单但有效的框架。
未来可探讨的方向
- 可以结合更细粒度的监督方案进一步提升CLIP模型的能力。
- 扩展超越图像-文本数据的其他模态,如视频和音频。
- 发展基于扩散模型的更通用、更强大的框架,以增强视觉-语言基础模型。
#LayTextLLM
字节联合复旦重磅推出 LayTextLLM!交错融合布局信息,文档理解能力再创新 SOTA!
本篇分享论文LayTextLLM: A Bounding Box is Worth One Token: Interleaving Layout and Text in a Large Language Model for Document Understanding
,字节联合复旦重磅推出 LayTextLLM!交错融合布局信息,文档理解能力再创新SOTA!
- 论文地址:https://arxiv.org/pdf/2407.01976
- 代码链接:https:///LayTextLLM/LayTextLLM
引言
在文档理解任务中,目前的主流方案普遍使用端到端的多模态大语言模型。但是,此类方法对图片的输入分辨率有很高的要求,因此需要较强的视觉基座。这也成为了多模态大语言模型(MLLM)在文档理解任务中的瓶颈。
文档理解作为text-rich的任务,实际发挥作用的信息大部分都来自于文字语义及其相对的布局信息。因此,利用成熟的OCR技术获得文字和布局(Layout)信息(即:文字坐标)并轻量级地扩展LLM,使其能够根据语义以及Layout信息来做预测。该方案也是解决文档理解的一条可行道路[1],即Layouts as “Lightweight Visual Information”。
相关工作
LayoutLM[2]是较早期将位置信息融入语言模型的文档理解方法。该方法同时需要借助于OCR工具输出的文本及对应位置信息。但是,其作为Encoder-only的模型,只能完成KIE任务(使用序列标注),在其他任务的泛化能力一般,并且在Free-form形式的问答任务上表现较差。
近期,DocLLM[3]首次提出在LLM的基础上加入布局信息的文档理解方案,将正则化后的数值型坐标作为布局信息,并引入解耦的空间注意力机制,促进文本与布局模态之间的交叉对齐。
该方案经过有监督微调(SFT)能够在VQA任务上取得与OCR-free的MLLM相当的性能。此外,得益于融入的布局信息,该方案在KIE任务上提升明显,有效解决了生成式模型在KIE任务上的短板。
但是,该方案采用的MLM(Masked Language Model)训练方式使得预训练阶段未能与SFT阶段的任务较好的对齐,因此其SFT后的模型性能也仅能与MLLM的Zero-shot性能相当。
此外,一些工作[4,5]尝试直接将坐标表达为文本Token的形式,即Coordinate-as-Tokens。实验证明,这种表达形式对于KIE任务有明显的提升,但此类方法存在如下弊端:
- 需要语言模型对于数值token有较好的理解,该能力一般要求模型大小在30B以上。
- 使用Coordinate-as-Tokens会显著增加输入序列的长度,导致更昂贵的训练和推理的成本,同时也需要较大的语言模型以保证长距离建模能力。
方法(LayTextLLM)
针对上述问题,我们提出LayTextLLM方案(A Bounding Box is Worth 1 Token: Interleaving Layout and Text in a Large Language Model for Multimodal Document Understanding)
模型设计
- 模型依然采用Interleave的方式输入文本和布局信息,该方法能最大程度的利用LLM自回归的特性。
- 与此前工作均不同的是,我们使用Embedding的方式嵌入布局信息,而非文本token的形式。该方法有效的规避了Coordinate-as-Tokens的长序列以及需借助大参数量模型的缺点。
图1 LayTextLLM模型结构
具体的模型整体架构如上图。待处理的文档图像输入给OCR工具完成文本和对应坐标框(采用左上和右下的四维坐标)的识别。
其中,文本信息借助于语言模型的Tokenizer处理为对应的文本Token;对于坐标框,我们提出SLP(Spatial Layout Projector),其简单地使用一个Linear Projector将4维的正则化坐标映射成高维(即LLM embedding size)的坐标表示,而后和文字token作交错的拼接并送入语言模型。本文所提出的方法既能高效地表示坐标并减少Token数目,同时利用了语言模型自回归特性。
此外,在LLM部分的设计,我们参考了InternLM-Xcomposer2,使用P-LoRA的路由方式,新增参数量较少。
训练方式
预训练(Layout-aware Next Token Prediction)
参考传统LLM的语言模型预训练,本文采用自回归方式预测整个输入的序列。不同于此前的预训练过程,提出的Layout-aware Next Token Prediction预训练方式当遇到需预测坐标占位符的Token时(下图中的"b"),不计算相应Token的损失。
在预训练阶段,LLM参数被冻结,仅优化Layout Projector和新增的P-LoRA参数。得益于所提出的Self-supervised的预训练方式,预训练数据非常容易获得。
图2 LayTextLLM预训练方式比较
微调(Shuffled-OCR Supervised Fine-tuning)
现有LLM使用的主流位置编码Rotatory Embedding往往倾向于使得在序列上越接近的Token,越容易获得更大的Attention Score。
因此,在图3的例子中,如果提问"What is the value of the field Change?"(蓝色框),模型很容易识别出正确结果"1.30",因为它在序列中紧挨“Change”一词。
然而,对于一个更具挑战性的问题,如"What is the value of the field Total(RM)? "(红色框),由于"Total(RM)"后有多个紧跟输入的数字文本Token,模型很难确定正确的答案。
图3 单据布局样例
为了使模型更多的依靠坐标框的布局信息而不是Rotatory Embedding提供的位置信息来预测, 在训练过程中,我们随机打乱了20%样本的OCR输入顺序。其他训练设置与传统LLM的SFT方式基本一致:给定Prompt,自回归预测问题的答案序列,且该阶段全部参数参与训练。
实验结果
实现细节
实验主要基于英文,预训练数据使用DocBank全部数据以及IIT-CDIP Test Collection 1.0随机采样的部分数据,合计约1.5M documents。Zero-shot实验中,数据来自LayoutLLM中提供的Document Dense Description (DDD) and Layout-aware SFT数据,该数据均为GPT4生成的合成数据。
SFT实验中,除DDD和Layout-aware SFT数据,我们还引入了下游测试数据对应的训练数据。下游测试数据包含VQA任务(DocVQA, InfoVQA, ChartQA, VisualMRC)和KIE任务(SROIE, CORD, FUNSD, POIE)。对于所有数据集,我们使用原数据集提供的word-level的OCR结果,以确保实验的公平性。
比较OCR-free方案
如图4所示(* 代表对应数据集的训练数据被使用),对比OCR-free的MLLM方案,提出的方法在VQA和KIE的任务上均有大幅度提升。
其中,VQA任务上,提出的方法甚至可以超过SOTA MLLM使用SFT数据后的性能(+5.1%);KIE任务上,提出的LayTextLLM大幅超过SOTA MLLM模型的Zero-shot性能(+27%)。
此外,LayTextLLM经过SFT训练后,其性能大幅度提升, 相比于SOTA MLLM的SFT效果提升近24%。
图4 与OCR-free方法的性能比较
比较OCR-based方案
我们还比较了其他OCR-based的方案,例如:DocLLM。如图5所示,在VQA和KIE两个任务上, LayTextLLM的Zero-shot效果均与DocLLM SFT后的模型效果相当。
经过SFT后,LayTextLLM在两类数据集上性能均大幅度超过DocLLM。具体地,在KIE任务中,LayTextLLM 相较于DocLLM性能提升超过15%
图5 与OCR-based方法的性能比较
输入长度比较
可以看到LayTextLLM的输入长度基本小于或者持平DocLLM,远小于coor-as-tokens的方案。图7能看出,在输入长度最小的情况下,LayTextLLM取得更高的精度。
图6 与OCR-based方法的输入长度比较。
图7 各种方法输入长度against精度。
解码回坐标
我们在内部的KIE数据集上测试了LayTextLLM,要求模型以文本格式输出值文本及其对应的边界框,例如 "Oct 10[66,1,70,15]"。我们发现,要求模型输出坐标提高了精确度,如图8所示。
我们任务要求输出坐标,强调了模型需要在输入中搜索对应信息,从而缓解了幻觉问题。此外,模型学会了组合和减去坐标。例如,如果输出文本来自两行OCR输入,模型会组合对应的OCR坐标。
相反,如果输出是输入OCR文本的子串,模型将相应地输出调整后的坐标。
总结
文本提出 LayTextLLM 用于各类文档理解任务,例如Document-oriented VQA和KIE。在这些任务中,空间布局与文本数据均起至关重要的作用。
本文通过引入Spatial Layout Projector,使模型对布局信息的感知更加精确。此外,我们设计了两个定制的训练任务(Layout-aware Next Token Prediction和Shuffled-OCR Supervised Fine-tuning),旨在提高对文档布局的理解。
大量的实验结果也表明LayTextLLM 在文档理解任务中的有效性。
#新模型一夜刷新AI绘画格局
Stable Diffusion原班人马新公司官宣!新模型一夜刷新AI绘画格局,已获2.3亿元融资
刚刚,Stable Diffusion原班人马官宣创业新公司!
3月宣布从Stability AI出走的Robin Rombach,就是Stable Diffusion的两个主要作者之一,和十来个原公司小伙伴,正式宣布了组团创业的消息。
新公司名叫Black Forest Lab,黑森林实验室。一亮相就kuku发了一个系列、共3款图片生成模型,其中有2个开源。
而且支持中文输入。
效果怎么样?看过的网友称很狂野(wild)!
输入提示词,一次测试出了画面效果和人脸数据等安全措施:
一名十多岁戴着滑雪面罩的女孩在谷仓里做折纸手工。图片底部有指定的黄色文字。背景中有个相框,里面是奥巴马的照片。
单是看了这组图文对照,就有网友感慨,这是他看过最棒的图像生成效果。
要说这家公司的特色,就是主打一个不遮遮掩掩。
今天官宣成立,今天发布系列模型,还宣布了融资进度——
已经完成3200万美元融资,由a16z领投, Oculus VR联创Brendan Iribe、YC前合伙人Garry Tan、NVIDIA Research领导计算机图形研究小组的Timo Aila、苹果杰出科学家(英特尔智能系统前首席科学家)Vladlen Koltun等人投资。
可以说,黑森林既得到了资本市场的押注,也得到了业界大佬们的青睐。
AI大牛卡帕西也在线发来贺电,还顺道称赞了一下黑森林的新模型:
歪瑞古德!开源的FLUX.1 image gen模型看起来非常强大。
而且注意了,开源协议是宽松的Apache2.0。
黑森林图像生成模型首秀
卡帕西都觉得exciting了,让咱来视觉感受下黑森林的模型效果。
这里,量子位挑选了五种类型的生成效果展示,图片均由官方提供,未标明具体使用了旗下哪款模型。
第一关,文字生成。
提示词:旧教室黑板的照片。黑板上用粉笔写着“let’s make some really pretty stuff together”,词后有一个红色的粉笔心。阳光从窗户照进来。
第二关,非真实场景+文字生成。
提示词:水下场景中,两只猫头鹰坐在一张精美的餐桌旁,餐桌中央点燃了蜡烛,两只猫头鹰正在一起享用一顿美味的晚餐。左边的猫头鹰穿着燕尾服,右边的猫头鹰穿着漂亮的裙子。背景中有一艘潜艇驶过,其侧面画有“What a Hoot”字样。桌子下面的图像底部有小水母在游动,电影般美丽的数字艺术品。
第三关,现实世界真实场景。
提示词:弗莱堡一条美丽街道的照片,一辆有轨电车经过,人们有的散步有的骑自行车。
第四关,真实人物和动漫人物生成。
提示词:三位女士在市中心街道上拍摄的照片,她们把手伸向镜头。
提示词:美丽的动漫艺术品,一个可爱的猫娘,看起来很沮丧,手里拿着一张纸,上面画着微笑,她快要哭了。
第五关,动物形象生成。
提示词:森林里的一只山猫,由专业摄影在强光下拍摄。
提示词:近距离渲染一个神话生物,由详细的螺旋分形和卷须组成,详细的递归皮肤纹理
FLUX.1系列模型
此次,黑森林共发了FLUX.1系列的3个模型:pro、dev、schnell。
FLUX.1 [pro]:系列最强音。
FLUX.1系列的精华,提供最优性能的图像生成,具有一流的指令遵循、视觉质量、图像细节和输出多样性。
黑森林团队正缓步提升API中FLUX.1 [pro]的推理计算能力。
此版本可以通过Replicate和fal.ai访问;提供专用和定制的企业解决方案。
FLUX.1 [dev]:系列中杯。
一个允许非商业途径使用的模型,开放权重、经过蒸馏。
[dev] 直接从[pro] 中蒸馏而来,具有相似的质量和迅速的遵守能力,同时比相同尺寸的标准模型更高效。
可在抱抱脸上试玩,或直接在Replicate或fal.ai上试用。
FLUX.1 [schnell]:速度小旋风。
系列最快模型,为本地开发和个人开发者量身制作。
FLUX.1 [schnell] 在Apache2.0许可证下公开可用,模型权重可以前往抱抱脸查询,推理代码可以在GitHub上找到。
已经获得了ComfyUI的支持,可以直接使用;也可以通过Replicate或fal.ai使用。
来个直观感受!
这里放三张照片,是以上大杯、中杯、小杯在不同提示词下,围绕“蛋糕”这个主题的生成效果。
△从左至右,使用模型依次为大、中、小杯
量子位多次测试后发现,输入简单提示词的话,用pro版本生成一张图片的用时在15s-25s之间(成果图下方会显示生成用时)。
黑森林称,所有FLUX.1模型都基于多模态和并行扩散Transformer块的混合架构,并扩展到12B参数。
3款模型中,FLUX.1 [pro] 和 [dev] 在视觉质量、提示响应度、尺寸/长宽高比列灵活性、排版和输出多样性这些方面,超过了Midjourney v6.0、DALL·E 3 (HD) 和 Stable Diffusion 3-Ultra。
而FLUX.1 [schnell] ,被团队称为“迄今为止最先进的少步骤模型(few-step model)”。
它不仅在同类竞争对手中脱颖而出,还超越了更强大的非压缩模型,如Midjourney v6.0和DALL·E 3 (HD)。
整个FLUX.1系列都经过了专门的微调,以求保留预训练阶段的全部输出多样性。
与已有的技术相比,FLUX.1还有以下优势:
有人免不了要问了,你们是Stability AI的OG元老,是核心成员。
So,你们这新模型,跟人家旗下的Stable Diffusion有啥区别?
创始团队成员在Reddit上进行了回应:
即使是我们的最弱型号schnell,生成质量也更好,生成速度也更快。
主打一个我成立新公司超越我自己
SD主要作者组团打造
介绍完模型相关资料,是时候正式来认识一下这家新公司了。
黑森林实验室,今天刚刚宣布成立。
公司官网上,赫然写着一句口号:A new era of creation。
公司使命推进最先进、高质量的图像和视频生成深度学习模型,并将其提供给最广泛的受众。
华点出现了!他们的下一步野心很明显,就是还要进军视频生成领域。
还放话,得是“SOTA”。
核心成员Robin Rombach,Stability AI前研究科学家。
在Stability AI工作期间,他是Stable Diffusion模型的主要开发者之一,也参与研究了SDXL、SVD等项目。
今年3月,Robin从Stability AI跑路。
外界评价他的离开让原本就乱成一锅粥的这家独角兽伤筋动骨——毕竟他是SD的两位主力之一。
往前回顾,Robin在海德堡大学拿下物理学的本科和硕士学位。
2020年,他在海德堡计算机视觉小组在Björn Ommer的指导下开始攻读计算机科学博士学位,并于2021年随研究小组移至慕尼黑大学。
研究重点关于生成深度学习模型,特别是文本到图像系统。
谷歌学术被引数接近1.5万。
此外,官网公开的成员中,Andreas Blattmann、Axel Sauer、Dominik Lorenz、Dustin Podel、Frederic Boesel、Patrick Esser、Sumith Kulal、Tim Dockhorn、Yam Levi、Zion English都是可公开查询到的Stability AI原成员。
(Andi Holmes和Jonas Müller两人暂未查询到准确资料)
可以说,黑森林就是SD的原班核心成员们出走再启航了。
难怪Axel Sauer转发了官推,大声呐喊:
我们还活着!
One More Thing
好巧不巧,同一天,Stability AI也有新动作:
推出新的AI模型Stable Fast 3D,官方称它可以在半秒内生成3D图像。
此前的模型需要数分钟才能生成类似效果的3D图像,新模型完成相同任务的速度是现有的1200倍。
那Stability AI在3月跑路的CEO,Emad Mostaque,他在干嘛呢?
六月份,他官宣了自己的去向,新公司Schelling AI,“将构建和支持由AI资金支持的开源代码、模型和数据集”。
重点精力放在创新研究和精心构建具有文化意识、科学、教育和创意的AI。
三天前,Schelling AI发布了系列文章第一篇,《How To Think About AI》。
文章有点长,感兴趣的朋友们可以搜索自行查看,这里就提一下核心思想——
AI发展很快,提倡开源开放,加速创新协作。
以及,要不说大家都是体面人呢!
黑森林实验室宣布成立的推文,人家前CEO还是友情转发了的(此处放一个狗头)。
参考链接:
[1]https://blackforestlabs.ai[2]https:///item?id=41130620[3]https:///EMostaque[4]https:///r/StableDiffusion/comments/1eds0l9/does_anyone_have_an_update_on_when_stable/[5]https:///SchellingAI/status/1818600200232927721
#DreamDissector
首次解决文本到3D NeRFs分解问题!港中文等提出DreamDissector
本文引入了一个名为DreamDissector的新颖框架,包括一种新颖的神经类别场(NeCF)表示,可以将输入的NeRF分解成独立的子NeRF,一个深度概念挖掘(DCM)技术,通过个性化扩散模型促进子NeRF和概念之间的对齐,以及一个类别分数蒸馏采样(CSDS)损失,利用DCM增强NeCF的学习。
论文链接:https://arxiv.org/abs/2407.16260
亮点直击
- 第一个解决文本到3D NeRFs分解问题的团队。
- 为了解决这个问题,本文引入了一个名为DreamDissector的新颖框架,包括一种新颖的神经类别场(NeCF)表示,可以将输入的NeRF分解成独立的子NeRF,一个深度概念挖掘(DCM)技术,通过个性化扩散模型促进子NeRF和概念之间的对齐,以及一个类别分数蒸馏采样(CSDS)损失,利用DCM增强NeCF的学习。
- 实验结果展示了DreamDissector的有效性,额外的可控编辑应用展示了其在真实场景中的实用性。
最近,文本到3D生成领域取得了显著进展。为了增强其在实际应用中的实用性,关键是生成具有交互作用的多个独立对象,类似于2D图像编辑中的图层合成。然而,现有的文本到3D方法在这一任务上存在困难,因为它们设计用于生成非独立对象或缺乏空间合理交互的独立对象。
针对这一问题,本文提出了DreamDissector,一种能够生成具有交互作用的多个独立对象的文本到3D方法。DreamDissector接受多对象文本到3D NeRF作为输入,并生成独立的纹理网格。为实现这一目标,本文引入了神经类别场(NeCF)来分解输入的NeRF。此外,本文提出了类别分数蒸馏采样(CSDS),由深度概念挖掘(DCM)模块促进,以解决扩散模型中的概念差距问题。通过利用NeCF和CSDS,本文能够有效地从原始场景中导出子NeRF。进一步的优化增强了几何和纹理。本文的实验结果验证了DreamDissector的有效性,为用户提供了控制3D合成在对象级别的新手段,并可能为未来各种创意应用打开了途径。
定性结果展示
方法
概览
DreamDissector从文本转3D神经辐射场(NeRF)开始。其目标是将生成的3D NeRF分解为根据NeRF包含的物体类别分开的独立3D资产。为实现这一目标,本文引入了一种称为神经类别场(NeCF)的3D表示。
这旨在将目标NeRF分解为多个子NeRF,同时保持每个物体的原始外观。NeCF受本文新引入的类别分数蒸馏采样(CSDS)监督,这是一种涉及一系列针对子NeRF的特定类别文本提示的分数蒸馏采样(SDS)的方法。随后,这些子NeRF被转换为DMTets进行最终的几何和纹理细化。由于DMTets可以轻松转换为表面网格,DreamDissector最终为每个物体生成独立的表面网格,保留了动作和互动,从而方便人类艺术家进行编辑。本文的DreamDissector框架概述如下图2所示。
神经类别场
为了在目标NeRF中渲染每个分类对象,一个直接的解决方案是为每个对象引入一个子NeRF,例如,一个密度场和一个颜色场。随后,可以使用其密度和颜色场来渲染每个对象。然后,整个NeRF可以通过根据体积渲染的原则组合这些密度和颜色场来渲染:
其中,表示类别的数量。然而,这种方法需要为密度和颜色场训练额外的网络,并需要一个约束损失来保持整个NeRF的外观一致性。
为此,本文提出了一种用概率分布(即类别场)对密度场进行分解以渲染每个类别对象的替代公式。具体来说,上述密度组合可以重新表述如下:
在处理密度时, 可以添加一个小的数值以避免除以零的情况。因此, 可以被视为一个概率单纯形, 因为它们相加为一, 且元素为非负数。受此启发, 我们利用具有 softmax 函数的 MLP 直接建模概率单纯形 。设 表示第 i 个点在 3D 空间中属于第 k 个类别的概率:
将 表示为温度, 它控制概率分布的尖锐度, 是类别场网络的输出。通过类别场, 第 个类别对象的颜色可以如下渲染:
可以观察到,每个点的密度σ被类别场pk缩放。换句话说,本文可以将σ解释为第k个类别对象的子NeRF的密度,例如,和σσ。此外,颜色场可以在训练过程中被重复使用并冻结,简化训练过程。
值得注意的是,NeCF的设计具有以下优点:
- 本文只需要训练一个额外的类别场网络,这比训练额外的密度和颜色场网络更有效率。
- 由于原始的密度和颜色场网络在训练过程中被冻结,子NeRF的重新组合完全等同于原始的NeRF,保持其原始外观。
类别 分数 蒸馏 抽样
一个朴素的方法。 为了训练NeCF,一个朴素的方法是使用多个SDS损失来监督每个类别的类别字段。具体地,对于第k个类别的对象,其SDS损失的梯度可以被表达为:
这里,表示第k个类别的文本embedding。例如,给定由提示生成的NeRF:“一个[v1]坐在一个[v2]上。”,用于类别对象的文本提示将是“一个[v1]”和“一个[v2]”。这可以很容易地由人类用户或现代LLM完成。需要注意的是,本文在训练NeCF时不需要为整个文本提示使用SDS,除了类别字段网络之外,所有网络都被冻结。
概念差异在扩散模型中。 尽管这种朴素的方法可以处理一些简单的情况,但它无法将具有概念差距的场景从文本描述中分离出来。概念差距指的是完整文本提示生成的对象与类别文本提示生成的对象在2D扩散模型的潜在空间中占据不同区域的差异。
例如,文本提示“一只黑猩猩透过望远镜看。”会生成一个场景,描述一只黑猩猩使用手持望远镜,如下图3左侧(a)所示。相比之下,类别文本提示“一个望远镜”更有可能生成一个三脚架安装的望远镜,因为三脚架安装的望远镜位于提示“一个望远镜”的主导特征空间中,而手持望远镜则位于边缘特征空间中。因此,学习到的NeCF会生成一个带有三脚架的望远镜,三脚架被隐藏在黑猩猩的身体内,如下图3左侧(c)所示。
深度概念挖掘。为了解决这个问题,本文提出挖掘文本提示中的概念,并将其与NeRF中描绘的概念进行对齐,以进行分解,如上图3所示。为此,本文个性化了一个T2I扩散模型,将由NeRF渲染的给定视图去噪,生成描绘一个(或多个)独立对象的图像,在一个(或多个)特定概念的条件下。具体来说,本文首先创建一组包含一个或多个概念的提示。对于每个概念或概念组合,本文通过基于文本的开放词汇分割模型(例如Grounded-SAM)为NeRF渲染视图生成相应的分割蒙版。然后,本文利用提示-蒙版对来优化文本embedding和扩散主干,使用带有蒙版注意力的概念挖掘损失:
在这里, 表示第 个类别的mask。DCM模块在优化后被冻结,以提供更好的独立文本概念与子NeRF之间的对齐,以便更好地使用CSDS损失进行NeCF训练。冻结的DCM还用于训练DMTet精化模块,如上图2所示。
最终精化。 在训练完NeCF后,本文使用等值面提取技术将子NeRF转换为DMTets,并利用文本embedding和来自DCM的模型对这些DMTets进行微调。其原理是进一步精化可以修复分解产生的伪影,而且DMTets可以轻松转换为表面网格。然而,DCM倾向于在原始NeRF中过度拟合挖掘的概念,导致颜色过饱和和不真实。为了解决这个问题,本文采用原始的稳定扩散方法通过额外步骤对DMTets的颜色进行微调,增强其真实感。最后,DMTets被转换为有纹理的网格。
整体 Pipeline
因此,整个流程包括以下步骤:
- 从渲染视图中为提示中的每个类别生成mash,并用它们来优化DCM模块。
- 冻结DCM,并使用CSDS损失训练NeCF网络,将一个NeRF分解为独立对象的子NeRF。
- 将子NeRF转换为DMTets,并利用优化后的DCM模块对它们进行微调,然后使用原始稳定扩散微调DMTets的颜色以生成最终输出。
实验结果
主要结果。 定性结果显示在下图4中。对于每种情况,每个对象的两个视图被采样,并且相应的文本提示在补充文件中提供。可以观察到DreamDissector能够有效地解开具有各种复杂交互的输入场景,比如骑行等。值得注意的是,DreamDissector能够处理具有大型和复杂接触表面的情况,如“章鱼弹钢琴”案例中所示,章鱼的触手与钢琴分离开来。此外,最终的网格比输入NeRF中的网格展现出更加真实和高质量的纹理。这种改进归因于最终的精细化处理,进一步展示了DreamDissector的实用性。
比较。 本文将DreamDissector与两个基线方法进行比较:负面提示和一个组合基线。负面提示涉及将整个文本提示作为正面提示,并将独占对象作为负面提示。例如,在提示“一个[v1]坐在[v2]上”中,两个对象的正面提示都是整个提示,而对象[v1]的负面提示是“[v2]”,反之亦然。由于最相关的作品CompoNeRF和Comp3D不是开源的,本文实现了一个具有类似思想的组合基线:分别训练对象,然后通过进一步的微调进行组合。本文在定性和定量上将本文的方法与这些基线进行比较。如下图5所示,DreamDissector明显优于基线方法。此外,本文使用CLIP分数指标评估DreamDissector和基线方法,该指标衡量文本和图像embedding之间的余弦相似性。本文对独立对象和组合对象进行这种评估,并计算平均分数。正如下表1所示,本文的方法明显优于基线方法。
分析
用于分解的DCM.
与完全无监督的基础CSDS不同,本文的DCM方法和SA3D都需要一个输入mask来进行单视图处理。正如下图6所示,基础CSDS在处理存在显著概念差异的场景(例如“一只蓝色毒箭蛙坐在一片睡莲上”)时很难分解NeRF,其中原始场景主要描绘了睡莲叶。而SA3D虽然成功分解涉及概念差异的场景(如青蛙),但在涉及大量遮挡的更复杂情况下表现不佳,比如比格犬和章鱼等情况。相比之下,DCM展现出卓越的性能,成功分解涉及概念差异和显著遮挡的场景。
DCM用于细化。 DCM不仅用于NeRF的分解,还用于细化DMTets。本文对DCM在这种细化过程中的有效性进行了分析。结果如下图7所示。从(a)可以看出,在分解后仍然存在伪影。由于原始NeRF的不可见接触表面,在分解后出现了“黑洞”。然而,使用原始稳定扩散进行DMTet细化并不能解决这个问题,如(d)所示。这是因为提示“一叠煎饼”通常会生成在煎饼上放水果的图像,因为这些水果在stable diffusion的高密度区域中很常见,如(b)所示。因此,经过微调的DMTet会在黑洞伪影区域产生水果。相比之下,DCM的稳定扩散与输入的煎饼紧密匹配,如第一行所示,在DMTet细化过程中有效修复了伪影,如(e)所示。这进一步展示了DCM的优越性。
对DCM进行消融研究。 本文对DCM的每个组成部分进行了消融研究,包括两阶段训练和mask注意力损失。具体来说,本文使用经过微调的模型从文本提示“一只小兔子坐在一堆煎饼上”中挖掘出“小兔子”概念的图像样本。理想情况下,采样的图像不应包含任何类似于煎饼的概念。如下图8所示,DCM成功提取了“小兔子”概念,而其他训练策略未能将该概念与其他类似于其坐在上面的煎饼的物品分离开。这证明了DCM挖掘独立概念的能力。
Applications
可控纹理编辑。 尽管基于文本引导的纹理生成取得了显著进展,但为具有多个物体的复杂场景生成纹理仍然具有挑战性。本文在三种不同情况下评估了TEXTure,如下图9所示。对于基准情况,本文将多物体网格视为单个实体并应用TEXTure。对于本文的方法,本文将TEXTure分别应用于每个物体的网格,然后将它们组合起来。本文观察到,基准方法生成的纹理与输入提示不匹配,并且质量较低。值得注意的是,独立物体的纹理受到场景中其他物体的影响,例如,老鼠的一部分呈现出红色。相比之下,DreamDissector显著提升了TEXTure的性能,生成视觉上吸引人且准确的纹理。
可控对象替换。 除了可控纹理编辑外,DreamDissector还具有替换单个对象而不影响场景中其他对象的能力。为了实现这一点,目标DMTet在保持其他DMTets固定的同时进行微调。然而,使用基于SDS的监督将DMTet变形为完全不同拓扑结构的对象具有挑战性。受[7]启发,本文最初将DMTet的法线馈送到stable diffusion中进行多个步骤,有效地变形了DMTet。本文还经验性地观察到,仅微调目标DMTet会引起严重的网格相互穿透。为了解决这个问题,本文引入了一个相互穿透损失,
当中 代表目标 DMTet 的第 i 个顶点时, 和 分别是 在其他 DMTets 中最近邻顶点的顶点和顶点法线,ϵ 是用于避免相互穿透的小容差超参数。如下图 10 所示的结果表明,DreamDissector 能够实现可控的概念替换。
用户进行几何编辑。 为了进一步验证 DreamDissector 如何促进用户工作流程,本文允许用户单独编辑对象。正如下图 11 所示,通过简单的操作,如缩放、平移和拖动,可以轻松修改对象,从而突显了 DreamDissector 在提高实际应用中人类编辑能力方面的有效性。
结论
DreamDissector,这是一个新颖的框架,旨在生成由文本引导的多个独立交互对象。DreamDissector 接受多对象文本到 3D 神经辐射场(Neural Radiance Field,NeRF)作为输入,并生成多个带纹理的网格。本文引入了神经类别场(Neural Category Field,NeCF),这是一种能够将输入的 NeRF 分解为多个子 NeRF 的表示。为了训练 NeCF,本文提出了类别分数蒸馏采样(Category Score Distillation Sampling,CSDS)损失。此外,本文观察到了 2D 扩散模型中的概念差异问题,这可能会降低分解性能。为了解决这个问题,本文引入了深度概念挖掘(Deep Concept Mining,DCM)来微调文本embedding和 2D 扩散模型,有效地导出子 NeRF。此外,本文提出了一个两阶段的细化过程,进一步改进几何和纹理,从而增强现实感。实验结果和进一步应用展示了 DreamDissector 在现实场景中的有效性和实用性。
#基于EasyOCR实现条码字符识别
EasyOCR是一个Python 软件包,用于从照片或扫描文档等图像中检测和提取文本。它带有预先训练的模型,旨在快速高效地进行文本识别,并支持 80 多种语言。
在本文中,我们将探讨如何使用 EasyOCR 包从图像中检测和提取文本。让我们开始吧!
EasyOCR 如何工作
EasyOCR 内部的文本识别过程主要包括三个步骤:特征提取、序列标记和解码。
ResNet和VGG(视觉几何组)等 eep 学习模型从图像中提取关键特征,LSTM(长短期记忆)网络处理序列上下文,CTC(联结时间分类)算法将这些标记序列转换为可读文本。
如何使用 EasyOCR 从图像中提取文本
现在我们已经了解了什么是 EasyOCR 以及它的一些用例,接下来,我们将探索一个编码示例,展示如何使用 EasyOCR 从图像中提取文本。
步骤#1:安装
首先,安装所有必需的库。我们将使用“pip”包安装程序安装 PyTorch 库(核心依赖项)和 EasyOCR 库。打开命令提示符或终端并运行以下命令开始安装。
pip install torch torchvision torchaudio easyocr
步骤2:初始化阅读器
安装依赖项后,我们可以导入 EasyOCR 包并初始化其“阅读器”功能。我们还可以选择要检测和提取的语言。有超过 80 种语言可供选择。在这个例子中,我们选择英语为“en”。
import easyocr
reader = easyocr.Reader(['en'])
在“reader”函数中,我们还可以管理系统规格设置,例如启用或禁用 GPU 或选择自定义目录来存储 EasyOCR 模型。对于 EasyOCR 库,建议使用 GPU 来加快处理速度,但也可以禁用它以在 CPU 上工作。要禁用 GPU 设置(默认情况下设置为“True”):
reader = easyocr.Reader(['en'],gpu=False)
选择自定义目录来存储模型:
reader = easyocr.Reader(['en'],model_storage_directory='path/to/directory'
)
步骤3:在图像上运行EasyOCR
一旦初始化了阅读器函数,模型就会自动下载(如果选择,则下载到自定义目录)。接下来,我们可以初始化“readtext”函数并将输入图像的路径传递给它。
在此示例中,我们将使用包含产品序列号和零件号的图像作为输入。您也可以使用同一图像或任何其他相关图像。
当我们打印出结果时,它将包括图像内检测到的文本的边界框坐标、检测到的文本和置信度分数。
以下是我们输入图像返回的输出:
[([[28, 22], [353, 22], [353, 72], [28, 72]], 'SERIAL NUMBER', 0.8874381662616708), ([[35, 75], [397, 75], [397, 137], [35, 137]], 'AOC1715821', 0.8521895819573561), ([[39, 255], [315, 255], [315, 299], [39, 299]], 'PART NUMBER', 0.9971079202290591), ([[42, 298], [370, 298], [370, 354], [42, 354]], '9-00864-01', 0.8142346378327698)]
首先显示边界框坐标,然后是提取的文本,最后是置信度分数。但理想情况下,我们不需要所有这些数据;我们只需要提取的文本。EasyOCR 允许轻松自定义输出选项。接下来,我们将重点介绍自定义和可视化输出。
步骤#4:配置输出格式
EasyOCR 库提供了许多不同的输出自定义选项。我们可以通过在“readtext”函数中将“detail”参数设置为零来避免检索边界框坐标和置信度分数,如下所示。
import easyocr
reader = easyocr.Reader(['en'])
result = reader.readtext('/path/of/image',detail=0)
print(result)
对于我们的输入图像,这将是打印的结果。如您所见,我们仅过滤掉了检测到的文本。
['SERIAL NUMBER', 'AOC1715821', 'PART NUMBER', '9-00864-01']
我们还可以通过设置“paragraph”为true来将文本分组,如下所示。
result = reader.readtext('/path/of/image',detail=0, paragraph=True)
print(result)
这将是我们输入图像的打印结果。提取的文本现在被分组在一起。
['SERIAL NUMBER AOC1715821', 'PART NUMBER 9-00864-01']
以下是逐行打印结果的代码片段示例:
import easyocr
reader = easyocr.Reader(['en'])
result = reader.readtext('/path/of/image')
for res in result:
coord=res[0]
text=res[1]
cnotallow=res[2]
print(text)
这就是我们输入图像的打印结果。提取的文本按照文档中出现的顺序逐行打印出来。
SERIAL NUMBER
AOC1715821
PART NUMBER
9-00864-01
如果不是打印变量“text”,而是打印变量“coord”和“conf”,我们将获得带有边界框坐标和置信度分数的类似输出。
步骤#5:可视化结果
我们还可以可视化 EasyOCR 模块的预测结果,将其叠加在输入图像之上。使用Supervision Python 包可以轻松完成此操作。Supervision 提供了一系列可重复使用的计算机视觉工具,可用于注释各种计算机视觉模型生成的预测结果等任务。
为了使用该库,我们需要安装 Supervision Python 包,如下所示:
pip install supervision
安装模块后,此代码使用 EasyOCR 检测图像中的文本并使用边界框和标签对其进行注释。它会初始化英语版 EasyOCR 阅读器,处理图像以提取文本、边界框坐标和置信度分数,并将数据存储在列表中。
然后使用 Supervision 的注释器在图像上叠加边界框和文本。最后,注释后的图像会显示并保存为“Output.jpg”,从而为 OCR 和视觉注释提供完整的工作流程。
import easyocr
import supervision as sv
import cv2
import numpy as np
from google.colab.patches import cv2_imshow
# Image path
Image_path = '/path/to/image'
# Initialize EasyOCR reader (English language, CPU)
reader = easyocr.Reader(['en'], gpu=False, model_storage_directory='/path/to/directory')
# Perform text detection on the image
result = reader.readtext(Image_path)
# Load image using OpenCV
image = cv2.imread(Image_path)
# Prepare lists for bounding boxes, confidences, class IDs, and labels
xyxy, confidences, class_ids, label = [], [], [], []
# Extract data from OCR result
for detection in result:
bbox, text, confidence = detection[0], detection[1], detection[2]
# Convert bounding box format
x_min = int(min([point[0] for point in bbox]))
y_min = int(min([point[1] for point in bbox]))
x_max = int(max([point[0] for point in bbox]))
y_max = int(max([point[1] for point in bbox]))
# Append data to lists
xyxy.append([x_min, y_min, x_max, y_max])
label.append(text)
confidences.append(confidence)
class_ids.append(0)
# Convert to NumPy arrays
detections = sv.Detections(
xyxy=np.array(xyxy),
cnotallow=np.array(confidences),
class_id=np.array(class_ids)
)
# Annotate image with bounding boxes and labels
box_annotator = sv.BoxAnnotator()
label_annotator = sv.LabelAnnotator()
annotated_image = box_annotator.annotate(scene=image, detectinotallow=detections)
annotated_image = label_annotator.annotate(scene=annotated_image, detectinotallow=detections, labels=label)
# Display and save the annotated image
sv.plot_image(image=annotated_image)
cv2.imwrite("Output.jpg", annotated_image)
输出图像如下所示:
以下是使用不同输入图像获得的另一个示例输出图像:
OCR 挑战和注意事项
使用 EasyOCR 等 OCR 工具检测和提取图像中的文本并不总是那么容易。为了获得最佳结果,必须考虑几个关键因素。图像的质量至关重要,它需要清晰、光线充足且分辨率高。高质量的图像有助于 OCR 模型准确检测和识别字符,而质量差的图像则会导致误解。
可以使用锐化、降噪、对比度调整和图像规范化等图像预处理技术来增强图像质量。EasyOCR 的另一个需要考虑的因素是语言选择。该库支持 80 多种语言。正确指定输入图像中使用的语言至关重要。
您还可以考虑使用批处理和微调来提高效率。批处理允许您一次处理多个图像,在处理大量文档时节省时间和资源。EasyOCR 的微调选项可用于根据您的特定需求自定义引擎的工作方式。调整设置还可以针对您正在处理的内容类型优化模型,从而提高准确性和性能。
#QuadMamba
新的Mamba架构又双叒来了!上交大 & 华为提出QuadMamba :多个视觉任务SOTA!
该研究通过分析Transformer模型中的反向传播矩阵,提出了一种新的方法来理解语言模型(LM)如何学习和记忆信息。论文提出了将梯度矩阵映射到词汇空间的技术,揭示了LM在学习新知识时的内在机制,并探讨了梯度的低秩性以及“印记与偏移”的知识存储与模型编辑机制。
近年来,状态空间模型(State Space Models)中的Mamba取得了显著的进展,在性能上超过了主导的Transformer模型,尤其是在降低计算复杂度方面,从二次降到了一次。然而,由于视觉数据的独特特性,如图像中的空间局部性和邻接关系以及视觉 Token 的信息粒度变化很大,Mamba从语言任务转换到视觉任务时存在困难。现有的视觉Mamba方法要么将 Token 扁平化为在光栅扫描方式下的序列,这破坏了图像的局部邻接关系,要么手动将 Token 分区到窗口,这限制了它们的远程建模和泛化能力。
为了解决这些限制,作者提出了一种新的视觉Mamba模型,称为QuadMamba,它通过基于四叉树(quadtree)的图像分区和扫描有效地捕获了不同粒度局部依赖性。
具体来说,作者的轻量级四叉树扫描模块学习到在学习的窗口四角内保持空间区域2D局部性。模块根据每个 Token 的特征估计局部性分数,然后适当地将 Token 分区到窗口四角。作者还引入了一种全方位窗口平移方案,以捕获不同局部区域之间的更多完整和有用的特征。为了使离散化的四叉树分区端到端可训练,作者进一步设计了一种基于Gumbel-Softmax及其直接导数序列 Mask 策略。大量实验表明,QuadMamba在各种视觉任务中实现了最先进的性能,包括图像分类、目标检测、实例分割和语义分割。
代码已在https:///VISION-SJTU/QuadMamba。
1 Introduction
结构化状态空间模型(SSMs)的架构在近年来得到了显著的普及。SSMs为序列建模提供了一种灵活的方法,在计算效率和模型灵活性之间实现了平衡。受到Mamba在语言任务中成功的影响,越来越多地使用SSMs进行各种视觉任务。这些应用范围从设计通用的 Backbone 模型 到推进图像分割 和合成(如[17])等领域。这些进步突显了Mamba在视觉领域的适应性和潜力。
尽管在长序列建模方面,SSMs具有令人满意的线性复杂度,但直接将SSMs应用于视觉任务只能带来微小的改进,这相对于常见的CNN和视觉Transformer模型。在本文中,作者试图扩大Mamba模型在计算机视觉领域的适用性。作者观察到语言和视觉领域之间的差异可能会在将Mamba应用于后者时带来巨大的障碍。
这些挑战源于图像数据的两个自然特性:
1)图像数据具有严格的2D空间依赖性,这意味着将图像块平铺成序列可能会破坏高级理解。
2)自然视觉信号具有严重的空间冗余性--例如,无关的图像块不会影响物体的表示。为了解决这两个问题,作者开发了一种专用的扫描方法,为视觉Mamba构建1D Token 序列。通常,视觉Mamba模型需要将2D图像转换为1D序列进行处理。
如图1(a)所示,直接将空间数据平铺成1D Token 会破坏自然局部2D依赖关系。LocalMamba通过将图像分割成多个窗口来提高局部表示,如图1(b)所示。每个窗口在单独扫描后,在窗口之间进行遍历,确保相同2D语义区域内的 Token 被紧密地处理在一起。然而,手工制作的窗口分割缺乏处理不同物体尺度的灵活性,并且无法忽略信息较少的区域。
在本研究中,作者提出了一种名为QuadMamba的新的Mamba架构,该架构通过关注更多具有信息性的区域来提高局部表示,从而实现局部感知序列建模的改进。如图1(c)所示,QuadMamba的核心在于可学习的窗口划分,该划分能够自适应地以粗粒度到细粒度的方式建模局部依赖关系。作者提出在视觉Mamba模型中的多个轻量级预测模块,用于评估每个空间 Token 的局部邻接关系。得分最高的四分之一区域进一步以递归的方式分割为子四分之一区域进行细粒度扫描,而其他区域(可能包含信息性较弱的 Token )保持粗粒度。这一过程导致了从二维图像特征中分得的不同粒度的窗口四分之一区域。
值得注意的是,直接从基于索引的二维窗口图像特征中进行采样是非可微分的,这使得学习窗口选择变得不可行。为了解决这个问题,作者采用了Gumbel-Softmax,从分区间得分映射中生成一个序列 Mask 。然后,作者使用全可微分运算符(即Hadamard乘法和逐元素求和),从序列 Mask 和局部窗口构造一维 Token 序列。这导致了端到端可训练的流水线,计算开销可以忽略不计。对于跨越两个相邻四分之一窗口的有用 Token ,作者在连续块中应用了全方位位移方案。在两个方向上移动二维图像特征允许四分之一窗口分区间在任意位置出现的目标建模更加灵活。
1 相关工作
Generic Vision Backbones
卷积神经网络(CNNs)[10; 30; 31]和视觉 Transformer (ViT)[7]是计算机视觉领域两种主导的后备网络。它们在广泛的计算机视觉任务中,包括但不局限于图像分类[29; 53; 55; 20; 23; 21; 74; 4; 12],分割[44; 19],目标检测[36; 79],视频理解[28; 76],生成[11]等方面,都证明了自己是通用的视觉 Backbone 网络。与CNNs的受限制的感知域不同,视觉 Transformer (ViT)[7; 42; 61]从语言任务中借用,在全局上下文建模方面具有优势。后来,为了更好地适应视觉领域,提出了许多视觉特定的修改,如引入层次特征[42; 61],优化训练[58],以及将CNN元素集成[5; 54]。因此,视觉 Transformer 在各种视觉应用中表现出色。然而,这以注意力操作的平方时间复杂度和内存复杂度为代价,尽管提出了[42; 61; 72; 57]的补救措施,但其可扩展性仍然受到阻碍。
近年来,状态空间模型(SSMs)作为一种强大的范式,在语言任务中建模顺序数据。先进的SSM模型与最先进的视觉 Transformer (ViT)架构相比,在性能上甚至更优,同时具有线性复杂度。它们在视觉任务上的初步成功,更重要的是,惊人的计算效率,暗示了SSM作为CNN和Transformer的有前途的通用后端替代品的潜力。
2 State Space Models
状态空间模型(SSMs)[16; 15; 18; 35] 是一类用于序列建模的完全循环架构。最近的研究 使得 SSMs 的性能达到了 Transformer Level ,同时其复杂度呈线性增长。作为一项重大突破,Mamba [13] 革新了传统的 SSM,采用了输入相关的参数化方法,并支持可扩展的、面向硬件优化的计算,使其在涉及顺序 1D 数据的多种任务中,与高级 Transformer 模型相媲美或表现更优。
随着Mamba的成功,ViM [80]和VMamba [41]将Mamba的1D扫描转换为双向和四向的2D交叉扫描,以便处理图像。此后,SSMs已迅速应用于视觉任务(语义分割[51; 65; 46],目标检测[26; 3],图像修复[17; 52],图像生成[9],等)以及其他模态的数据(例如,视频[67; 32],点云[40; 73],图[2],以及跨模态学习[60; 6]。
在将Mamba适应非一维数据时,一个基本考虑因素是设计一个路径,该路径遍历并映射所有图像块到一个SSM友好的1D序列。在这个方向上,初步的工作包括ViM中的双向ZigZag扫描[80],VMamba中的4个方向交叉扫描[41],以及PlainMamba和ZigMa中的蛇形扫描[66;22],这些工作都是在高度和宽度轴所覆盖的空间域中进行的。其他工作[52;75;33]将扫描扩展到额外的通道[52;33]或时间[75;33]维度。然而,这些扫描策略在遍历块时忽视了空间局部性的重要性。LocalMamba[26]部分地缓解了这一固有弱点,它将块分成窗口并在每个窗口内进行遍历。
然而,由于整个图像域的单一致局部细粒度,由任意的窗口大小控制,很难确定最优粒度。LocalMamba选择DARTS [38]以分别搜索每个层的最佳窗口大小和最佳扫描方向,这使得方法变得更加复杂。另一方面,所有现有方法都涉及硬编码的扫描策略,这些策略可能是次优的。与所有这些方法不同,本文引入了一种可学习的四叉树结构来扫描具有不同局部细粒度的图像块。
3 Preliminaries
状态空间模型(SSMs)[16;15;18;35]本质上是一种线性时不变系统,它通过隐藏状态 (序列长度 和状态大小 )将一维输入序列 循环映射到输出响应序列 (其中 和 分别为序列长度和状态大小)。从数学上讲, 这样的系统可以表示为以下常微分方程(ODEs):
其中, 矩阵 包含了演化参数; 和 是投影矩阵。然而, 在实际中, 通过零阶保持 (ZOH) 规则[16], 方程 1 通常被转化为离散形式[18], 其中 的值在样本间隔 内保持不变。离散化的ODEs可以表示为:
在上述内容中, 和 是 和 的离散表示: , 并且 . 为实现高效计算, 方程 2 中的迭代计算可以并行执行, 同时进行全局卷积操作。
其中 表示卷积运算符, 表示SSM核。
选择状态空间模型(S6)。 传统状态空间模型(SSMs)具有输入无关的参数。为了改进这一点,提出了选择状态空间模型(S6)或“Mamba”,它们具有输入相关的参数,使得 和 变得可学习。为了弥补并行性困难,还进行了硬件感知的优化。在本工作中,作者特别研究了Mamba架构在视觉任务中的有效适应性。
早期的工作,如ViM [80]和V Mamba [41],通过将2D图像转换为以光栅扫描方式的一维序列来探索直观的适应性。作者认为简单的光栅扫描并不是最优设计,因为它破坏了图像的局部邻域。在作者的工作中,提出了一种基于四叉树的新颖可学习扫描方案。
4 Method
General Architecture
QuadMamba 共享了与许多卷积神经网络(CNNs)[20; 64; 23]和视觉 Transformer (Vision Transformers) 相似的多尺度背身设计。如图2所示, 一张大小为 的图像首先被分割成大小为 的patch, 从而得到 个视觉tokens。一个线性层将这些视觉tokens映射到具有维度 的隐藏嵌入,然后被输入到作者提出的基于Quadtree的视觉状态空间(QuadVSS)块中。
与在语言建模中使用的Mamba结构不同, QuadVSS块遵循了 Transformer 块的流行结构 , 68], 如图2(b)所示。QuadMamba由四个阶段的QuadVSS块组成,其中阶段 有 个QuadVSS块。在每个阶段中, 一个降采样层将特征图的空间大小减半, 同时将它们的通道维度加倍。由于Mamba的线性复杂度, 作者可以在前两个阶段中堆叠更多的QuadVSS块, 这使得它们的局部特征保持和建模能力可以充分利用, 同时引入的计算开销最小。
Quadtree-based Visual State Space Block
如图2所示,作者的QuadVSS块采用了视觉Transformer的元架构[68],由一个 Token 运算符、一个 FFN (FFN)和两个残差连接组成。Token 运算符包括一个位移模块、一个分区映射预测器、一个基于四叉树扫描器和一个Mamba Layer。在 Token 运算符内部,一个轻量级预测模块首先在特征 Token 上预测一个分区映射。四叉树策略然后通过递归地将二维图像空间分成四个象限或窗口来对它进行细分。根据粗粒度分区映射的得分,跳过较不具有信息量的细粒度子窗口。
因此,一个多尺度、多粒度的1D Token 序列被构建,在更具有信息量的区域捕获更多的局部性,同时保留其他区域的全球上下文建模。QuadVSS块的关键组件如下:
分区映射预测。图像特征 ,包含 个嵌入 Token,首先被投影为得分嵌入 :
φs 是一个轻量级的 Projector ,具有规范线性 GELU 层。为了更好地评估每个 Token 的局部性,作者利用每个象限内的本地嵌入和上下文信息。具体而言,作者首先在通道维度上对 xs 进行拆分,得到局部特征 xs^local 和全局特征 xs^global:
因此, 作者得到了聚合得分嵌入 , 并将其输入到线性 GELU 层 中, 用于预测分段得分:where Interpolate 是双线性插值运算符,将上下文向量插值到空间大小为 的位置。
从而, 作者得到了聚合得分嵌入 , 并将其输入到线性 GELU 层 中, 用于预测分段得分:
其中 表示在空间坐标 的 Token 的配分。基于四叉树(Quadtree)的窗口划分。在预测每个特征 Token 的划分得分 后,作者应用了一个快速的四叉树基窗口划分策略, 计算成本可以忽略不计。作者构建了双级窗口四象限,从粗粒度到细粒度捕捉空间局部性。
四叉树基策略将图像特征在粗粒度 Level 划分为 个子窗口, 在细粒度 Level 划分为 个子窗口。与Transformer方案不同, 它仅通过将 Query 特征设置为相同大小来保持图像特征的空间形状,而由QuadMamba学习的扫描生成的 Token 序列应该与具有原始空间大小的特征合并。
因此, 作者选择在粗粒度 Level 具有最高平均局部邻域得分的顶点 四象限, 并将其进一步划分为四个子窗口:
其中, 包含在粗粒度窗口和细粒度窗口中的样本,并发送到 SS2D 块进行序列建模。
为了考虑最具有信息量的 Token 跨越相邻的两个窗口四分之一,作者借用了Swin Transformer [42]中的移位窗口方案。不同之处在于,Swin Transformer在窗口内的每个 Token 内部都忽略了空间局部性,而Mamba窗口内的 Token 序列仍然具有方向性。
因此,在后续的VSS模块中,作者添加了额外的移位方向,如图4所示,与Swin Transformer中只有一个方向移位相比。
Model Configuration
值得注意的是,QuadMamba模型的容量可以通过调整输入特征维度和(Q)VSS层数量来定制。在本研究中,作者构建了四种具有不同容量的QuadMamba架构变体,分别为QuadMamba-Li/T/S/B:
值得注意的是,QuadMamba-S在目标检测上比EfficientVMamba-B(一种基于Mamba的 Backbone 网络,以其更高的效率而著称)提高了3.0%的mAP,在实例分割上提高了2.2%,使用相似的参数。此外,QuadMamba-S能够跟上并甚至超越LocalVMamba-T(一种局部Mamba Backbone 网络)的表现,同时避免了表2的复杂性测量所反映的架构和扫描搜索的麻烦。
这些结果表明,QuadMamba可以作为一种实用且功能强大的视觉 Backbone 网络,在计算复杂度、设计成本和性能之间实现平衡。
Semantic Segmentation on ADE20K
如图3所示,在可比的网络复杂度和效率下,QuadMamba相较于基于ConvNet的ResNet-50/101 [20]和ConvNeXt [43],基于Transformer的DeiT [58]和Swin Transformer [42],以及大多数基于Mamba的架构 [80, 49, 66],实现了显著更高的分割精度。
例如,QuadMamba-S在 的mloU下报告了优越的分割精度,超过了Vim-S ( ), LocalVim-S (46.4%), EfficientVMamba-B (46.5%),以及PlainMamba-L2 (46.8%),并且与 VMamba-T ( )具有竞争力的结果。与LocalMamba-S/B相比, QuadMamba-S/B虽然稍逊一筹, 但仍具有不产生额外网络搜索成本的优势。
值得注意的是,LocalMamba是由神经架构搜索(NAS)技术设计的,该技术依赖于数据,并且与其他数据模式和数据源缺乏灵活性。
Ablation Studies
作者从多个角度进行了消融实验来验证QuadMamba设计选择的正确性。除非另有说明,所有实验都使用了QuadMamba-T。
Mamba中局域性的影响。 作者在构建一维 Token 序列时,考虑了粗粒度和细粒度局部性建模对模型性能的影响。具体而言,作者将[80, 41]中的原始窗口无损平铺策略与三个尺度(即28x28、14x14、2x2)的窗口划分(即特征局部性的三个粒度 Level )进行了比较。在实际中,作者将QuadMamba-T模型中的QuadVSS块替换为[41]中的简单VSS块。
为了排除填充操作的负面影响,作者在第一个模型阶段只划分了空间尺寸为56x56的特征。如表4所示,原始扫描策略导致与采用窗口扫描相比,目标检测和实例分割性能显著降低。局部窗口的规模也显著影响了模型性能,这表明在给定图像分辨率的情况下,太大的或太小的窗口可能是次优的。
基于四叉树的分区分辨率。作者探讨了在双层四叉树分区间策略中分区分辨率的选取。表格5中配置的分区分辨率在第一阶段两个模型中应用,特征分辨率为{56×56, 28×28, 14×14}。实验中作者推导出粗粒度窗口和细粒度窗口的最优分辨率为{1/2, 1/4}。这种手工配置的设置可能在未来的工作中被更灵活和可学习的设置所替代。
分层模型阶段的层模式 作者研究了在分层模型 Pipeline 中的层模式设计选择。从图5可以看出,层模式LP2在减少了0.2%的准确率上超过了层模式LP1。这可能是因为局部建模效果在较浅的阶段比在较深的阶段更明显,以及第三阶段的填充操作产生了负面影响。LP3在第一和第二阶段将QuadVSS模块以交错方式放置,实现了最佳性能,并作为作者的模型设计。
必要性多向窗口平移。与Swin Transformer [42]中的单向平移不同,图5显示了在添加互补平移方向时,准确率提高了0.2%。这可以预见,因为Transformer中的注意力是非因果的,而Mamba中的一维序列具有因果性质,因此它们对相对位置非常敏感。在处理信息区域跨越相邻窗口的情况时,多向平移操作也是必不可少的。图6进一步可视化了在不同层级的层次结构中学习的细粒度四象限中的平移,这些四象限在不同层适当地关注不同的空间细节。
每个阶段使用的(Quad)VSS模块数量 作者进行了实验来评估每个阶段不同数量(Quad)VSS模块的影响。表6呈现了遵循图5中设计规则LP3的四个配置,固定通道维度为96。作者发现,庞大的第二或第四阶段会导致与第三阶段设计相比性能下降,而将(Quad)VSS模块在第二和第三阶段之间分配得更加均匀,可以获得与有利的复杂性相当甚至更好的性能。这些证据可以作为未来模型设计的一条基本规则,尤其是在模型扩展时。
6 Conclusion
在本文中,作者提出了一种名为QuadMamba的视觉Mamba架构,作为一种通用且高效的后端,用于诸如图像分类和密集预测等视觉任务。
QuadMamba通过可学习的四叉树扫描有效地捕获了不同粒度的局部依赖关系,同时适应地保留了图像数据的固有局部性,且计算开销极低。
QuadMamba的有效性已经通过大量实验和消融研究得到证明,其性能优于流行的卷积神经网络(CNNs)和视觉 Transformer (ViTs)。
然而,QuadMamba的一个局限性是窗口分级的深度尚未探索,这可能特别适用于处理密集预测视觉任务和高分辨率数据,如遥感图像。细粒度分区的区域刚性且缺乏针对任意形状和大小的区域的灵活性,这留待作者未来研究。
作者希望作者的方法能激发进一步将Mamba应用于更多样化和复杂的视觉任务的研究。
#图像超补全(Outpainting)技术的前沿模型与数据集资源汇总
“lmage outpainting”这一概念是由斯坦福大学 CS230 课程的 Mark Sabini 等人提出,相较于图像修复技术,lmage outpainting 更进一步,能够从给定的图像片段中“补全”出缺失的外延部分,以精妙的方式补全画面,从而构建出一个完整且连贯的视觉世界。
另外,所提出的论文Painting Outside the Box: Image Outpainting with GANs
在吴恩达的斯坦福大学 CS230 课程中获得了期末 Poster 的第一名。
- 论文地址:https://arxiv.org/pdf/1808.08483
- 代码地址:https:///bendangnuksung/Image-OutPainting
本文精心汇总了 Outpainting 技术的前沿开源模型与算法资源,旨在加速开发人员的研究进程,轻松获取所需算法与数据。
PQDiff
PQDiff 方法,用于图像超补全,具有以下创新点:
- Continuous multiples for image outpainting:PQDiff 能够同时学习图像的位置信息和像素信息。在训练阶段,PQDiff 首先随机裁剪给定图像两次,生成两个视图。然后,PQDiff 通过预先计算的相对位置嵌入(RPE)从一个视图学习另一个视图的内容。由于 RPE 能够表示两个视图之间的连续关系,PQDiff可以实现连续倍数的图像超补全(例如1x、2.25x、3.6x、21.8x)。作者称 PQDiff 是首个实现连续倍数图像超补全的方法,而现有的 SOTA 方法 QueryOTR(Yao等,2022)只能进行离散倍数的超补全。
- One-step image outpainting:提出一种基于相对位置嵌入与输入子图像块之间的跨注意力机制,帮助 PQDiff 在任意倍数设置下仅通过一步操作即可完成图像超补全。作者称 PQDiff 是首个实现此功能的方法,而现有的(Yao等,2022;Yang等,2019)只能逐步进行图像超补全,极大地限制了采样效率,即生成效率。在2.25x、5x和11.7x的超补全设置下,PQDiff 仅耗费了QueryOTR(Yao等,2022)所需时间的40.6%、20.3%和10.2%。
- New SOTA performance:在图像超补全的基准测试中(Gao et al., 2023; Yang et al., 2019),实验结果显示,PQDiff 显著超越了QueryOTR(Yao et al., 2022),在Scenery、Building Facades和WikiArts数据集上,PQDiff在11.7倍扩展设置下分别取得了新的最先进FID分数21.512、25.310和36.212。此外,PQDiff在大多数设置下(包括2.25倍、5倍和11.7倍扩展)也取得了新的最先进结果。
- 参考论文:Continuous-Multiple Image Outpainting in One-Step via Positional Query and A Diffusion-based Approach(ICLR 2024)
- 论文地址:https://arxiv.org/pdf/2401.15652
- 开源地址:https:///Sherrylone/PQDiff
QueryOTR
基于 vision-transformer 的图像超补全方法,具有以下创新点:
- 将 Outpainting 问题重新表述为一个基于补丁的序列到序列自回归问题,并开发了一种新的混合 transformer 编码器-解码器框架——QueryOTR,用于基于查询的图像外推预测,同时最小化来自 CNN 结构的归纳偏差所导致的退化。
- 提出 Query Expansion 和 Patch Smoothing 模块,解决纯 Transformer 模型中的慢收敛问题,并生成平滑且无缝的逼真外推图像。
- 与当时及已有的 image outpainting 方法相比,QueryOTR 在one-step 和 multi-step outpainting任务上均达到了SOTA。
- 参考论文:Outpainting by Queries(ECCV2022)
- 论文地址:https://arxiv.org/abs/2207.05312
- 开源地址:https:///Kaiseem/QueryOTR
U-Transformer
此工作是研究一种通用图像超补全问题,旨在全方位地扩展图像中的视觉内容,突破传统方法仅局限于水平方向扩展的局限,实现图像在全方位的无缝延伸与丰富,为图像处理领域带来前所未有的灵活性和广阔的应用前景。
具体创新如下:
- U-Transformer 是首个基于Transformer的图像超补全框架。Swin transformer 模块能够获取全局特征并保持高分辨率。U 形结构和 TSP 模块能够平滑而真实地增强图像的自我重建能力以及对未知部分的预测,从而提升网络的能力。
- TSP 模块连接了编码器和解码器,通过多视角 LSTM 网络和自注意力块,传递考虑潜在时间关系和空间关联的不完整潜在特征。此外,TSP 块可调整被遮掩特征图的预测步骤,从而支持生成任意输出分辨率。
- 创建了三个数据集,
- Scenery:包含约6,000张图像
- Building:包含不同风格的复杂建筑结构。训练集中约有16,000张图像,测试集中有1,500张图像。
- Wikiart:包含45,503张训练图像和19,492张测试图像
- 参考论文:Generalised Image Outpainting with U-Transformer
- 论文地址:https://arxiv.org/abs/2201.11403
- 开源地址:https:///PengleiGao/UTransformer
In&Out
In&Out 是通过 inverting(逆转)GAN 的方式来解决 Outpainting 问题。首先训练一个生成器来合成以其位置为条件的 micro-patches 。在此基础上,提出一个 inversion(逆映射)过程,寻找多个 latent codes(隐藏码)恢复可用区域以及预测 outpainting(补全)区域。
- 参考论文:In&Out : Diverse Image Outpainting via GAN Inversion
- 论文地址:https://arxiv.org/abs/2104.00675
- 开源地址:https:///yccyenchicheng/InOut
- 项目地址:https://yccyenchicheng.github.io/InOut/
- 数据集:https:///file/d/1kYd0qHaMRoqFCsZA50uvNpsyWXya0eOj/view
Wide-Context Semantic Image Extrapolation
网络结构
Wide-Context Semantic Image Extrapolation 是一个基于 PyTorch 的开源项目,旨在通过深度学习技术实现图像的补全(outpainting),可以在图像边界之外扩展语义敏感的物体(如面部、身体)或场景。
- 参考论文:Wide-Context Semantic Image Extrapolation(CVPR 2019)
- 论文地址:https://openaccess.thecvf.com/content_CVPR_2019/papers/Wang_Wide-Context_Semantic_Image_Extrapolation_CVPR_2019_paper.pdf
- 开源地址:https:///dvlab-research/outpainting_srn
#字符缺陷检测--OCV(光学字符验证)介绍
光学字符验证 (OCV) 是一种验证制成品上印刷文本的准确性和质量的技术。制造商和销售商使用 OCV 快速、自动化地检查包装上信息的准确性,从食品标签到药品包装。
OCV 与光学字符识别 (OCR)配合使用,可读取和验证文本。以前,机器读取文本依赖于模式识别、像素匹配和特殊字体,但现在,得益于近期的 AI 进步,任何文本字体都可轻松读取。
OCV 在消费品包装 (CPG) 领域有许多用例。它帮助制造商在贴标过程中保持一致的质量和准确性。他们可以确保满足监管要求并保护消费者安全。
OCV 可用于验证条形码、批号、有效期和其他信息是否正确且准确地打印,这有助于保持可追溯性并使召回管理更容易。
在本文中,我们将深入探讨这个主题,并了解 OCV 的工作原理及其应用。让我们开始吧!
了解光学字符验证 (OCV)
为了更好地理解 OCV 及其功能,我们首先简要介绍一下 OCR。虽然 OCV 有特定的用途,但它通常依赖于 OCR。
光学字符识别是将文本图像(如扫描文档或照片)转换为可操作(编辑或搜索)的数字文本文件的过程。它可以分析和识别单个字符并将其转换为数字形式。
然后,光学字符验证将翻译的数字数据与其参考数据进行比较,以确保其正确无误。对于消费包装商品,OCV 用于检查印刷信息(如有效期和批号)的准确性。它还适用于与质量控制相关的应用,在这些应用中,预期数据是预先知道的。
OCV 在消费包装商品中的优势
让我们来看看OCV在CPG行业的更多主要优势。
质量保证
该系统使用摄像头和软件检查产品上印刷的文字和数字,如有效期和批号。与传统方法相比,它非常快速和可靠。但 OCV 不仅检查拼写错误,还确保字体大小、样式,甚至分析数字的间距。它有助于防止可能导致产品召回或造成安全风险的错误。
监管合规性
确保包装正确准确地贴上标签是法规合规性的重要组成部分,OCV 系统在这里用于提高效率。OCV 系统识别标签的内容和格式,并使用数据库中的数据检查其正确性。它还会检查标签上强制性信息的详细信息,例如成分列表、过敏原警告和营养信息。这些系统可帮助制造商遵守因地区而异的复杂标签法规。OCV 技术节省了大量时间和人工。
品牌保护
OCV 通过检查包装上的独特代码和安全功能来帮助打击假冒产品,确保您购买到正品。OCV 还可以维护品牌的整体形象,确保包装上的字体、徽标和颜色一致且完全符合品牌的意图。消费者可以相信他们在包装上看到的信息是准确的,并且反映了他们所熟知和喜爱的品牌。
运营效率
通过自动化繁琐的手动错误检查,OCV 使检查速度大大加快。这意味着工厂可以更快地发送产品并提高整体产量。此外,OCV 还可以节省成本,因为对人工检查员的需求减少了。OCV 还可以尽早发现错误,因此因印刷错误而浪费的包装材料更少。这对速度和节省来说都是双赢的。
光学字符验证的工作原理
OCV 与 OCR 引擎协同工作。简单的 OCR 引擎通过存储许多不同的字体和文本图像模式作为模板来工作。它使用 OCV 的模式匹配算法将文本图像逐个字符与其内部数据库进行比较。如果系统逐字匹配文本并且正是系统所寻找的内容,则验证通过。让我们看看验证过程涉及的所有步骤:
图像捕捉:高科技相机可在生产的不同阶段捕捉包装的清晰图像。区域扫描和线扫描相机均可用于此目的。适当的照明也是获得良好图像的关键。
图像预处理:拍照后,OCR 会对照片进行一些清理。它可能会调整大小、去除污迹或调整对比度以使文本更加突出。
字符检测:在此阶段,OCR 用于检测和识别各种字体和大小。OCR 系统使用经过训练的机器学习模型,可以分割和识别字符。它分析干净的图像并找出包装上的每个字母和数字。
验证:然后,OCV 系统会根据参考资料(例如预定义的到期日期列表)检查找到的字母和数字。任何不匹配的情况(例如缺少数字或日期错误)都会被标记为错误。
差异标记和警报:如果系统发现错误,它会触发警报,如闪烁的灯光或响亮的蜂鸣声,提醒工厂工人调查问题。
实时反馈:由于 OCV 可以尽早发现错误,工厂可以快速修复错误。修复可能涉及调整打印设置,甚至停止生产线以防止错误再次发生。这一切都是为了保持一切顺利运行并创造高质量的产品。
现在我们已经了解了 OCV 是什么以及它的工作原理。让我们探索它在消费品包装行业中的应用。
OCV 在 CPG 中的应用
食品和饮料公司需要跟踪其产品从工厂到货架的全过程。因此,他们会在从麦片包装盒到果汁瓶等所有物品上打印诸如有效期和批号之类的代码。
这些代码有助于识别产品的生产时间和地点,从而更易于控制质量。代码通常结合了图片和纯文本,这就是 OCV 的作用所在。OCR 可以检测代码的文本部分,而 OCV 可以检查以确保整个代码、图片和文本一起正确打印。
有效期验证:防止产品变质
OCV 会拍摄食品包装上的保质期的高质量照片。然后,它会将这些字符与每种产品的正确保质期列表进行比较。如果任何内容不匹配,OCV 会发出警告。这会提醒工厂工人进一步调查(也可以使用机器人自动进行调查),甚至可能将这些产品从流通中移除,以确保不会有过期食品到达您的手中。
批号验证:简化产品追踪
与有效期验证类似,OCV 系统会拍摄批号图像,并通过将其与系统数据库中的有效批号列表进行比较来验证。通过加强准确的批号跟踪,OCV 有助于在发生召回或质量问题时快速识别和检索产品。
条形码验证:确保产品流通顺畅
与文本识别不同,OCV 不需要字符识别来检测条形码。相反,它使用特殊算法来检查条形码本身是否正确构建,例如是否包含所有正确的部分。如果条形码错误或混乱,OCV 会发出警告以便重新打印。这可以防止结账柜台出现问题,并确保产品在仓库和商店中顺畅流通。
使用 OCV 的挑战
在这些系统面临的主要挑战是,在各种条件下实现准确度。OCV 需要在各种工厂环境中都保持高效。照明、阴影甚至包装上的灰尘颗粒的波动都可能使图像难以清晰显示。模糊的图像可能会导致阅读文本时出错。OCV 系统可以通过使用特殊的照明设置来避免此问题。
另一个挑战是实时验证,不能出现延迟。系统需要实时验证信息,而不会减慢生产线的速度。减慢传送带的速度进行检测会导致整体效率低下。为了避免这种情况,OCV 系统的设计注重效率。它们使用 AI 加速和智能算法快速分析和验证图像,使工厂平稳运行。
管理大规模部署和数据处理也是一个问题。在大型工厂中部署 OCV 系统可能很复杂。管理系统的所有摄像头、处理它们生成的大量数据并高效处理这些数据需要强大的基础设施。解决这一问题可能需要强大的计算机系统和专门的软件解决方案来处理 OCV 收集的所有信息。
除了技术复杂性之外,标签设计也总是随着趋势而变化。新的设计、字体和印刷方法层出不穷。OCV 需要适应这些变化,这可能涉及在新的数据集上训练系统。或者,OCV 系统可以使用灵活的算法来处理包装元素的变化,以便跟上最新趋势。
结 论
边缘计算等新技术使使用 OCV 直接在相机上分析产品变得无缝。减少延迟可加快检查速度并简化生产线。OCV 与其他质量控制 AI 创新结合使用时也会蓬勃发展。例如,对象检测或实例分割等计算机视觉技术可以帮助检查产品在生产线上的位置。在 AI 的帮助下,OCV 只会越来越好,从而带来更高质量的产品。
光学字符验证 (OCV) 是一种必不可少的工具,可帮助仔细检查产品包装上印刷信息的准确性。它使用先进的摄像头和软件来检查诸如有效期、批号和条形码之类的错误。OCV 可帮助制造商保持高质量、满足标签规则、保护其品牌并通过及早发现错误来更高效地运行生产线。随着技术的进步,OCV 将更好地为消费者提供安全准确的产品。