【开放词汇分割】Side Adapter Network for Open-Vocabulary Semantic Segmentation

论文链接:Side Adapter Network for Open-Vocabulary Semantic Segmentation

代码链接:https://github.com/MendelXu/SAN

作者:Mengde Xu,Zheng Zhang,Fangyun Wei,Han Hu,Xiang Bai

发表单位:华中科技大学、微软亚洲研究院

会议/期刊:CVPR2023 Highlight

一、研究背景

ImageNet 上的分割结果。对于每个图像,将其类别与 coco 类别结合起来作为推理过程中的词汇表,并且仅可视化注释类别的掩码

现代语义分割方法依赖于大量标注数据,但数据集通常只包含数十到数百个类别,数据收集和标注成本高昂。近年来,大规模视觉-语言模型(如CLIP)在图像分类任务中取得了巨大成功,但在像素级别的语义分割中应用这些模型面临挑战,因为这些模型的训练侧重于图像级别的对比学习,它学习到的表示缺乏语义分割所需的像素级识别能力。弥补表示粒度差距的一种解决方案是在分割数据集上微调模型。然而,分割数据集的数据量远小于视觉语言预训练数据集,因此微调模型在开放词汇识别上的能力常常受到损害。

将语义分割建模为区域识别问题绕过了上述困难。早期尝试采用两阶段训练框架。

在第一阶段,训练一个独立模型来生成一组蒙版图像作物作为蒙版建议。

在第二阶段,使用视觉语言预训练模型(例如 CLIP)来识别蒙版图像裁剪的类别。然而,由于掩模预测模型完全独立于视觉语言预训练模型,它错过了利用视觉语言预训练模型强大特征的机会,并且预测的掩模图像裁剪可能不适合识别,这会导致模型笨重、缓慢且性能低下。

SAN 概述

为了实现这一目标,提出了一个新的框架(上图所示),称为侧适配器网络 (side adapter network, SAN)。由于端到端训练,它的掩模预测和识别是 CLIP 感知的,并且由于利用了 CLIP 的特性,它可以是轻量级的。

红色虚线表示训练期间的梯度流。在框架中,冻结的 CLIP 模型仍然充当分类器,并且侧适配器网络生成掩码提案和注意偏差,以指导 CLIP 模型的更深层来预测提案明智的分类逻辑。在推理过程中,将 mask proposal 和proposal logits 结合起来,通过 Matmul(矩阵乘法函数)得到最终的预测。

二、整体框架

本文提出了一种新的开放词汇语义分割框架——Side Adapter Network (SAN)。该方法将语义分割任务建模为区域识别问题。SAN附加在冻结的CLIP模型上,具有两个分支:一个用于预测掩码提案,另一个用于预测应用在CLIP模型中的注意力偏差,以识别掩码的类别。整个网络可以端到端训练,使附加的侧网络能够适应冻结的CLIP模型,从而使预测的掩码提案对CLIP感知。

作者证明这种解耦设计提高了分割性能,因为用于 CLIP 识别掩模的区域可能与掩模区域本身不同。为了最大限度地降低 CLIP 的成本,进一步提出了单前向设计:将浅层 CLIP 块的特征融合到 SAN,并将其他更深的块与注意力偏差相结合以进行掩模识别。

因为用于 CLIP 识别掩模的区域可能与掩模区域本身不同的理解:CLIP模型主要是通过对比学习在图像级别进行训练的,其学习到的特征更偏向于全局或大范围的图像特征,而不是具体的像素级别特征。当CLIP模型应用于掩模识别时,它的注意力机制可能会关注到一些与掩模区域有重叠但并不完全一致的区域。这种不完全一致性是因为CLIP的注意力机制可能会将注意力分散到整个图像中一些相关的部分,而不仅仅是掩模的边界或内部区域。

假设有一张图像,其中有一只狗在草地上。CLIP模型可能会关注到整只狗以及周围的草地作为特征进行分类,而语义分割任务仅需要标注出狗的具体轮廓区域。这时,CLIP的识别区域(整只狗和部分草地)与实际需要的掩模区域(狗的轮廓)并不完全一致。

出于公平性和可重复性的目的,该研究基于官方发布的 CLIP 模型。重点关注已发布的 ViT CLIP 模型,因为视觉 Transformer 事实上已经取代 ConvNet 成为计算机视觉社区的主导骨干网,并且为了概念的一致性和简单性,侧适配器网络也由视觉 Transformer 实现。

准确的语义分割需要高分辨率图像,但已发布的ViT CLIP模型是针对低分辨率图像(例如224×224)设计的,直接应用于高分辨率图像,性能较差。为了缓解输入分辨率的冲突,在 CLIP 模型中使用低分辨率图像,在侧适配器网络中使用高分辨率图像。作者证明这种不对称输入分辨率非常有效。此外,还探索仅微调 ViT 模型的位置嵌入并注意改进。

三、核心方法 Side Adapter Network

3.1 架构介绍

Side Adapter Network (SAN) 是一个端到端的框架,旨在充分利用CLIP模型在开放词汇语义分割中的能力。SAN由一个轻量级的视觉Transformer实现,可以利用CLIP的特征,并且有两个输出:掩码提案和用于掩码识别的注意力偏差。这些注意力偏差应用于CLIP的自注意力机制,以识别掩码提案的类别。

### 关于 YOLO-World 的实时开放词汇对象检测 YOLO-World 是一种先进的开放词汇对象检测框架,它结合了预训练的语言模型和视觉特征提取器来实现跨类别的目标识别能力[^1]。该方法的核心在于利用大规模语言模型中的语义信息增强传统计算机视觉模型的表现力。 #### 复现 YOLO-World 的主要步骤概述 为了成功复现 YOLO-World 模型,可以参考以下技术要点: 1. **数据准备** 需要收集并处理用于训练的基础图像数据集以及对应的标签文件。通常使用的公开数据集包括 COCO 和 ImageNet 等。这些数据集提供了丰富的标注信息,有助于构建高质量的训练环境。 2. **模型架构设计** YOLO-World 使用了一个融合模块将 CLIP(Contrastive Language–Image Pre-training)或其他多模态模型生成的文字嵌入向量与卷积神经网络提取的空间特征相结合。这种结构允许系统理解未见过的新类别名称而无需重新训练整个体系。 3. **代码库推荐** GitHub 上存在多个基于 PyTorch 或 TensorFlow 开发的相关项目可供学习借鉴。例如,“openvocabulary-detection”仓库提供了一套完整的解决方案,涵盖了从基础组件搭建到最终推理部署的所有环节。 4. **性能优化技巧** 在实际操作过程中,可以通过调整超参数、引入注意力机制等方式进一步提升检测精度。此外,还可以尝试迁移学习策略以减少计算资源消耗的同时获得更好的泛化效果。 以下是简单的 Python 脚本片段展示如何加载必要的依赖项并与自定义配置一起初始化一个基本版本的对象探测实例: ```python import torch from yoloworld.model import YoloWorldModel device = 'cuda' if torch.cuda.is_available() else 'cpu' model = YoloWorldModel(pretrained=True).to(device) def detect_objects(image_path): image_tensor = preprocess_image(image_path) # 定义自己的图片前处理函数 outputs = model(image_tensor.unsqueeze(0)) predictions = postprocess_outputs(outputs) # 同样需自行编写后置处理逻辑 return predictions ``` > 注:上述仅为示意代码,具体实现细节可能因不同开发者的设计思路有所差异,请参照官方文档或社区贡献者分享的最佳实践案例深入研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值