三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

一文读懂GRES:从论文到代码的通用指代表达式分割完整指南

一文读懂GRES:从论文到代码的通用指代表达式分割完整指南

一文读懂GRES:从论文到代码的通用指代表达式分割完整指南

【免费下载链接】ReLA[CVPR 2023 Highlight & IJCV 2026] GRES: Generalized Referring Expression Segmentation项目地址: https://gitcode.com/gh_mirrors/re/ReLA

GRES(Generalized Referring Expression Segmentation)是CVPR 2023 Highlight论文提出的通用指代表达式分割技术,能够处理任意数量目标对象的指代表达,包括多目标和无目标场景。本文将从核心原理、安装部署到实际应用,为你提供一份完整的GRES技术入门指南。

🚀 GRES核心优势:超越传统指代表达分割

传统指代表达分割(RES)仅支持单一目标对象的表达式,而GRES通过创新架构实现了三大突破:

  • 多目标支持:可处理"所有的人"、"站着的人"等复杂指称
  • 无目标识别:能正确识别"除穿白衣服的孩子外所有人"等排除性表达
  • 更高精度:在标准数据集上实现62.42%的cIoU和63.60%的gIoU指标

图1:GRES与传统RES的性能对比,绿色对勾表示正确分割结果

🔧 环境准备与安装步骤

基础依赖要求

  • Python 3.7-3.9
  • PyTorch 1.11.0
  • CUDA 11.8
  • Detectron2 0.6

四步安装流程

  1. 安装Detectron2框架按照官方文档完成基础框架安装

  2. 编译变形注意力模块

    sh gres_model/modeling/pixel_decoder/ops/make.sh
  3. 安装依赖包

    pip install -r requirements.txt
  4. 准备数据集遵循datasets/DATASET.md说明下载并配置gRefCOCO数据集

💻 快速上手:从模型下载到推理实践

模型下载

GRES提供三种不同 backbone 的预训练模型:

BackbonecIoUgIoU资源需求
Resnet-5039.5338.62
Swin-Tiny57.7356.86
Swin-Base62.4263.60

模型权重可从Google Drive下载

推理命令示例

python train_net.py \ --config-file configs/referring_swin_base.yaml \ --num-gpus 8 --dist-url auto --eval-only \ MODEL.WEIGHTS [path_to_weights] \ OUTPUT_DIR [output_dir]

📊 训练自定义模型

准备预训练权重

以Swin-Base为例:

wget https://github.com/SwinTransformer/storage/releases/download/v1.0.0/swin_base_patch4_window12_384_22k.pth python tools/convert-pretrained-swin-model-to-d2.py swin_base_patch4_window12_384_22k.pth swin_base_patch4_window12_384_22k.pkl

开始训练

python train_net.py \ --config-file configs/referring_swin_base.yaml \ --num-gpus 8 --dist-url auto \ MODEL.WEIGHTS [path_to_weights] \ OUTPUT_DIR [path_to_weights]

配置文件说明

基础配置文件位于:

  • configs/referring_R50.yaml
  • configs/Base-COCO-InstanceSegmentation.yaml

可通过命令行添加自定义配置:

SOLVER.IMS_PER_BATCH 48 SOLVER.BASE_LR 0.00001

📚 技术架构解析

GRES的核心架构位于gres_model/GRES.py,主要包含:

  • 骨干网络:支持ResNet和Swin Transformer

    • gres_model/modeling/backbone/resnet.py
    • gres_model/modeling/backbone/swin.py
  • 像素解码器:采用多尺度变形注意力机制

    • gres_model/modeling/pixel_decoder/msdeformattn.py
  • Transformer解码器:处理语言查询与视觉特征

    • gres_model/modeling/transformer_decoder/referring_transformer_decoder.py

🤝 项目贡献与引用

GRES基于多个优秀开源项目构建,包括:

  • refer
  • Mask2Former
  • Detectron2

如果你的研究使用了GRES,请引用以下论文:

@inproceedings{GRES, title={{GRES}: Generalized Referring Expression Segmentation}, author={Liu, Chang and Ding, Henghui and Jiang, Xudong}, booktitle={CVPR}, year={2023} }

🔄 项目更新与未来发展

  • 2023/08/29:更新数据集文件,优化ref_id和sent_id编号
  • 2023/08/16:发布视频指代表达分割数据集MeViS

未来GRES将继续优化模型效率,拓展更多应用场景,敬请关注项目更新。

通过本文的指南,你已经掌握了GRES的核心概念和使用方法。无论是学术研究还是实际应用,GRES都为指代表达分割任务提供了强大的解决方案。现在就开始你的GRES之旅吧!

要获取完整代码,请克隆仓库:

git clone https://gitcode.com/gh_mirrors/re/ReLA

【免费下载链接】ReLA[CVPR 2023 Highlight & IJCV 2026] GRES: Generalized Referring Expression Segmentation项目地址: https://gitcode.com/gh_mirrors/re/ReLA

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

← 返回列表