从Transformer到场景图:EGTR如何重塑计算机视觉中的关系推理

计算机视觉领域正在经历一场由Transformer架构引领的革命。传统卷积神经网络(CNN)在图像识别任务中表现出色,但在理解复杂场景中物体间关系时往往力不从心。EGTR(Extracting Graph from Transformer)作为CVPR2024最佳论文奖候选作品,提出了一种创新方法,通过从Transformer中提取图结构来解决这一挑战。

1. 场景图生成的技术演进

场景图生成(Scene Graph Generation, SGG)是计算机视觉中一项关键任务,旨在检测图像中的物体并预测它们之间的语义关系。传统SGG方法通常采用两阶段流程:

  1. 物体检测阶段:使用Faster R-CNN等模型定位和分类物体
  2. 关系预测阶段:基于检测结果构建物体对并预测关系

这种方法存在明显局限性:

  • 两阶段流程导致信息传递效率低下
  • 关系预测严重依赖物体检测质量
  • 难以建模长距离依赖关系
# 传统两阶段SGG流程示例
def traditional_sgg(image):
    # 第一阶段:物体检测
    objects = faster_rcnn(image)
    
    # 第二阶段:关系预测
    relations = []
    for i in range(len(objects)):
        for j in range(len(objects)):
            if i != j:
                relation = predict_relation(objects[i], objects[j])
                relations.append(relation)
    
    return objects, relations

EGTR的创新之处在于将Transformer的自注意力机制与图结构学习相结合,实现了端到端的场景图生成。下表对比了几种主流SGG方法:

方法类型代表模型优点缺点
两阶段VRD, MotifNet结构清晰,易于实现效率低,误差累积
单阶段GPSNet, BGNN端到端训练关系建模能力有限
Transformer-basedEGTR, SGTR全局关系建模,高效计算资源需求较高

2. EGTR的核心架构解析

EGTR的核心思想是将Transformer中的注意力权重自然转化为图结构。其架构包含三个关键组件:

2.1 基于Deformable DETR的骨干网络

EGTR采用改进的Deformable DETR作为基础检测器,相比原始DETR具有以下优势:

  • 可变性注意力机制更适应不规则物体
  • 计算效率更高,适合处理高分辨率图像
  • 多尺度特征融合能力更强
# EGTR骨干网络配置示例
config = DeformableDetrConfig(
    num_queries=200,
    num_labels=150,  # Visual Genome数据集类别数
    num_rel_labels=50,  # 关系类别数
    auxiliary_loss=True,
    from_scratch=False
)

2.2 关系感知的Transformer解码器

EGTR的解码器在标准Transformer解码器基础上进行了三项关键改进:

  1. 关系查询机制:引入专门的关系查询向量,与物体查询并行处理
  2. 连通性预测头:预测物体间存在关系的概率
  3. 关系分类头:对确认存在关系的物体对进行细粒度分类

2.3 图结构提取模块

这是EGTR最具创新性的部分,它通过分析Transformer的自注意力权重矩阵,自动推导出场景图结构:

  1. 将物体查询视为图节点
  2. 将归一化的注意力权重作为边权重
  3. 应用可学习的阈值过滤不重要连接
# 图结构提取核心代码
def extract_graph(attention_weights, obj_scores):
    # 计算物体间关联分数
    sub_ob_scores = torch.outer(obj_scores, obj_scores)
    sub_ob_scores.fill_diagonal_(0)  # 避免自连接
    
    # 结合注意力权重和物体分数
    connectivity = attention_weights * sub_ob_scores.unsqueeze(-1)
    
    # 应用可学习阈值过滤
    pred_connectivity = (connectivity > self.threshold).float()
    
    return pred_connectivity

3. EGTR的实战应用与可视化

EGTR在Visual Genome和Open Images等标准数据集上表现出色。以下是如何使用EGTR进行场景图生成和可视化的完整流程:

3.1 环境配置与模型加载

# 创建conda环境
conda create --name egtr python=3.9
conda activate egtr

# 克隆代码库
git clone https://github.com/naver-ai/egtr.git
cd egtr

# 安装依赖
pip install -r requirements.txt
cd lib/fpn
sh make.sh

3.2 数据准备与模型训练

EGTR支持两种主流数据集格式:

  1. Visual Genome:包含108,077张图像,平均每张图像有38个物体和22个关系
  2. Open Images V6:更大规模的数据集,包含1,743,042张训练图像

训练命令示例:

python train_egtr.py \
    --data_path ./dataset/visual_genome \
    --architecture SenseTime/deformable-detr \
    --batch_size 4 \
    --lr 2e-6 \
    --lr_backbone 2e-7 \
    --num_queries 200

3.3 可视化推理

EGTR提供了强大的可视化工具,可以直观展示场景图生成结果:

# 可视化代码核心片段
def visualize_scene_graph(image, objects, relations):
    # 绘制物体边界框
    draw = ImageDraw.Draw(image)
    for obj in objects:
        box = obj['box']  # [x_center, y_center, width, height]
        label = obj['label']
        draw_bbox(draw, box, label)
    
    # 绘制关系连线
    for rel in relations:
        subj_idx, obj_idx, pred = rel
        subj = objects[subj_idx]
        obj = objects[obj_idx]
        draw_relation(draw, subj['box'], obj['box'], pred)
    
    return image

可视化效果通常包含以下元素:

  • 不同颜色的边界框标识不同物体
  • 带箭头的连线表示谓词关系
  • 物体和关系都带有置信度分数

4. EGTR的技术优势与未来方向

相比传统方法,EGTR在多个维度展现出明显优势:

性能优势

  • 在Visual Genome测试集上,关系检测mR@100提升15%
  • 推理速度比两阶段方法快3倍
  • 对小物体和复杂关系的识别更准确

应用场景扩展

  1. 智能图像检索:通过语义关系进行精准搜索
  2. 视觉问答系统:增强对复杂问题的理解能力
  3. 自动驾驶:提升场景理解深度
  4. 内容生成:为AI绘画提供结构化场景描述

未来可能的发展方向包括:

  • 结合多模态信息(文本、音频)
  • 开发轻量级版本适应移动端
  • 探索自监督预训练策略
  • 扩展到视频场景图生成

提示:在实际应用中,适当调整关系预测阈值可以平衡精度和召回率。对于强调准确性的场景(如医疗图像分析),建议使用较高阈值;对于需要覆盖率的应用(如内容检索),可适当降低阈值。

EGTR代表了场景图生成领域的重要突破,它将Transformer的全局建模能力与图结构的显式关系表示完美结合。这种范式不仅限于计算机视觉,也为其他需要关系推理的AI任务提供了新思路。

更多推荐