Grounded Language-Image Pre-training

论文地址:GLIPv1GLIPv2
项目地址:https://github.com/microsoft/GLIP

摘要

  1. GLIP提供了一个预训练模型,综合了目标检测phase grounding两个任务,并且以自训练的方式为大量的图像文本对生成框,获取富语义知识
  2. training data: 27million (3M human-annotated + 24M web-crawled 图像文本对)
  3. 在coco和lvis数据集上进行zero shot, fintune和one shot验证,性能超过SOTA

引言

  1. GLIP应细粒度视觉理解的相关任务需求而生,诸如目标检测、分割、人体姿态估计、场景理解、动作识别等
  2. 目标检测和和phase grounding两个任务相结合,因为目标检测可以视为上下文无关的phase grounding任务,以及phase grounding可视为上下文的目标检测任务
  3. 任务统一训练:用词-区域对齐的分数(比如区域(或框)视觉特征和标记(或短语)语言特征的点积)替换其框分类器中的目标分类逻辑;并且使用语言模型来提取语言特征,形成一个双编码器结构。在检测这一侧,grounding数据的引入丰富了视觉概念库。在grounding侧,检测数据引入了更多的边界框注释,有助于预训练新的SoTA模型。
  4. 通过大量图像文本对扩展视觉概念库:利用一个训练好的grounding模型,为大量图像文本对生成候选框来增广GLIP的预训练数据,其中名词短语由NLP Parser 生成。24M web-crawled 图像文本对数据中,包含78.1M
    high-confidence (> 0.5) phrase-box 伪标签, 其中58.4M 为唯一名词短语。

方法: Grounded Language Image Pre-training

统一“度量衡”

Object detection as phrase grounding

目标检测的框分类器损失调整为

object detection loss
S g r o u n d S_{ground} Sground为框中的视觉特征与通过文本prompt提取的文本特征之间的点积, 但是存在一个问题是token数量通常大于prompt中词的数量,原因如下:

(1) phrases 通常包含多个单词

(2) 单词的拆分

(3) special added token, 比如说"Detect: "或者 [NoObj]

做法:扩展 c c c 的长度为 M M M,如果该词为正样本,则其补充的sub words为正样本,添加的tokens全都视为负样本

Equivalence between detection and grounding

可信度验证:SoTA DyHead detector with Swin-Tiny backbone 在目标检测和上述做法中在COCO val2017数据集上得到的性能是一致的

Grounding Formulation

来源于MDETR’s fine-grained contrastive loss

Visual-Language“深度融合”

method
image encoder: DyHead (swin transformer tiny as backbone)
text encoder: Bert
BERTLayer: 在预训练的Bert模型后新加的bert layers
encoder
X-MHA 模块通过与另一个模态的交互,计算该模态下的上下文向量

基于“富语义数据”的预训练

先在目标检测和phase grounding的数据集上进行预训练,然后对大量的图像文本对输出预测框和对应的短语

### 关于 Grounded-Segment-Anything (Grounded-SAM) 模型 #### 功能概述 Grounded-Segment-Anything 结合了多个强大的开源工具,包括 **Segment Anything Model (SAM)** 和 **GroundingDINO**。它不仅能够自动检测和分割图像中的对象,还支持通过文本输入的方式指定特定的目标进行分割[^2]。此外,该项目还可以与其他模型集成,例如 Stable Diffusion 或 Recognize Anything,从而扩展其应用场景。 #### 项目目录结构及说明 项目的官方仓库提供了详细的文档和脚本,帮助开发者快速上手。以下是主要的目录及其用途: - `grounded_sam/`: 存放核心代码逻辑,实现了 SAM 和 GroundingDINO 的融合。 - `weights/`: 预训练权重文件存储位置,其中包含 SAM 的预训练模型权重文件链接[^5]。 - `examples/`: 提供了一些示例脚本,展示如何使用该框架完成不同的任务。 - `requirements.txt`: 列出了依赖项列表,便于安装环境。 可以通过访问项目主页获取更详尽的信息:[Grounded-Segment-Anything](https://gitcode.com/gh_mirrors/gr/Grounded-Segment-Anything)[^3]。 --- #### 安装与配置指南 为了成功部署 Grounded-SAM,需按照以下方法准备开发环境并加载必要的资源: 1. 创建虚拟环境并激活: ```bash python -m venv env source env/bin/activate ``` 2. 安装所需库: ```bash pip install torch torchvision opencv-python-headless numpy transformers ``` 3. 下载预训练权重文件至本地路径下(如 `./weights` 文件夹),具体可参考提供的下载地址。 4. 运行测试脚本来验证安装是否正常工作。如果遇到性能瓶颈,则可能是由于硬件资源不足引起[^4]。 --- #### 实现方式详解 Grounded-SAM 主要分为以下几个模块来实现目标检测与分割功能: 1. **文本到框映射**: 借助 GroundingDINO 将自然语言描述转化为对应的边界框坐标。 2. **实例级掩码生成**: 调用 Segment Anything Model 来基于上述得到的区域建议生产精确像素级别的掩膜。 3. (可选)进一步处理阶段: 如果涉及艺术创作等领域需求的话,可以引入额外组件比如 Style Transfer Networks 对结果做美化调整等操作。 下面给出一段简单的 Python 示例代码用于调用此 API 执行基本的任务: ```python from grounded_sam import SamPredictor, build_grounding_dino_model import cv2 import matplotlib.pyplot as plt # 初始化 DINO 和 SAM predictor dino_model = build_grounding_dino_model() sam_predictor = SamPredictor() image_path = 'example.jpg' text_prompt = "a dog" # 加载图片 image_bgr = cv2.imread(image_path) image_rgb = cv2.cvtColor(image_bgr, cv2.COLOR_BGR2RGB) # 获取 bounding box from text prompt via grounding dino boxes = dino_model.predict_with_caption(image=image_rgb, caption=text_prompt) # 使用 sam predictor 得到 mask for box in boxes: masks, _, _ = sam_predictor.set_image_and_predict_mask(box=box, image=image_rgb) # 可视化最终效果 plt.figure(figsize=(10, 10)) plt.imshow(masks.sum(axis=-1), cmap='gray') plt.axis('off') plt.show() ``` --- #### 性能优化技巧 对于希望提高 Mobile Segment Anything 表现的情况,量化技术是一个值得尝试的方向。例如采用 PyTorch 中内置函数对线性层部分实施动态量化以减少内存占用同时维持较高精度水平[^1]: ```python import torch.nn as nn from torch.quantization import quantize_dynamic model = ... # your original model instance here quantized_model = quantize_dynamic(model=model, qconfig_spec={nn.Linear}, dtype=torch.qint8) ``` 注意这仅适用于某些类型的神经网络架构;实际应用前应充分评估转换后的质量损失情况。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值