ConvLLaVA: Hierarchical Backbones as Visual Encoder for Large Multimodal Models

发表时间:24 May 2024

论文链接:https://arxiv.org/pdf/2405.15738

作者单位:Department of Automation, Tsinghua University

Motivation高分辨率大型多模态模型 (LMM) 遇到了过度视觉标记和二次视觉复杂性的挑战。当前的高分辨率 LMM 仍然生成了过多的视觉标记。然而,视觉token的冗余是关键问题,因为它会导致更多的计算。

解决方法:为了缓解这个问题,我们提出了 ConvLLAVA,它使用 ConvNeXt,一个分层主干,作为 LMM 的视觉编码器来替换 Vision Transformer (ViT)。在层次化骨干网络中,特征在各个阶段逐步被压缩。与 ViT 仅进行14倍压缩相比,它们将视觉特征压缩了32倍。因此,在相同分辨率下,它们生成的视觉标记数量不到 ViT 的四分之一,大大减轻了LLM(大语言模型)的计算负担。此外,层次化视觉编码器通常设计为线性空间复杂度,有效地解决了过多视觉标记和二次视觉复杂度的问题。 作者选择了 ConvNeXt ,因为这个网络有现成的对比学习预训练好的权重(CLIP)。 ConvLLAVA 将高分辨率图像压缩为信息丰富的视觉特征,有效地防止了过度视觉标记的生成。为了提高 ConvLLAVA 的能力,我们提出了两个关键的优化:

  • 由于低分辨率预训练的 ConvNeXt 在直接应用于高分辨率时表现不佳,因此我们对其进行更新以bridge the gap(主流的方法一般都会冻结 vision encoder,但本文作者经过实验发现,更新 ConvNeXt 的参数能获得更好的效果,显著提升其在高分辨率任务中的性能)。

  • 此外,由于ConvNeXt的原始压缩比不足以获得更高的分辨率输入,我们训练了一个连续的阶段(五个阶段)来进一步压缩视觉标记,从而减少冗余。这些优化使 ConvLLAVA 支持 1536×

### HDMNet: Hierarchical Dense Correlation Distillation for Few-Shot Segmentation HDMNet 是一种针对少样本分割任务提出的创新框架,旨在通过分层密集关联蒸馏来提升模型的表现。该方法特别适用于图像分割领域,在仅有少量标记样本的情况下仍能保持较高的准确性。 #### 方法概述 HDMNet 的核心在于引入了一种新颖的分层机制,能够有效地捕捉不同尺度下的特征表示,并利用教师-学生网络结构进行知识迁移。具体来说: 1. **多尺度特征提取**:为了更好地适应目标对象的变化形态,HDMNet 设计了一个可以处理多种分辨率输入的支持向量机(SVM),从而获得更加鲁棒和支持性的特征描述子[^1]。 2. **跨层注意力模块**:借鉴于层次注意原型网络(HAPN)[^3]的设计理念,HDMNet 中加入了跨层注意力机制(Cross-Level Attention Module, CLA),它允许低级别到高级别的逐层交互学习,增强了局部细节与全局上下文之间的联系。 3. **稠密对应关系建模**:不同于传统的一对一匹配方式,HDMNet 提出了稠密对应的策略(Dense Correspondence Modeling, DCM),即在整个支持集中寻找最相似区域并建立一对一或多对多的关系映射表,以此指导查询图片中相应位置像素标签预测过程。 4. **渐进式蒸馏损失函数**:考虑到直接优化整个网络可能会遇到梯度消失等问题,因此采用了自底向上逐步精细化调整的方式定义了渐进式的蒸馏损失(Progressive Distillation Loss, PDL)。这不仅有助于稳定训练过程,而且促进了从简单模式到复杂场景的有效过渡。 ```python import torch.nn as nn class HDMDistiller(nn.Module): def __init__(self, student_net, teacher_net): super().__init__() self.student = student_net self.teacher = teacher_net def forward(self, support_set, query_image): # Extract features from both networks s_features = self.student(support_set) t_features = self.teacher(support_set) # Compute dense correspondence between layers corr_matrix = compute_correspondences(s_features, t_features) # Apply cross-level attention mechanism attended_sfeat = apply_attention(corr_matrix, s_features) # Predict segmentation mask using distilled knowledge pred_mask = predict_segmentation(attended_sfeat, query_image) return pred_mask def progressive_distill_loss(student_output, teacher_output): loss = 0. for level in range(len(student_output)): l2_diff = F.mse_loss(student_output[level], teacher_output[level]) kl_divergence = F.kl_div( F.log_softmax(student_output[level]/T), F.softmax(teacher_output[level]/T)) loss += alpha * l2_diff + beta * kl_divergence return loss ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KKdlg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值