数据集准备完全指南:为Scene-Graph-Benchmark.pytorch构建视觉基因组数据集

数据集准备完全指南:为Scene-Graph-Benchmark.pytorch构建视觉基因组数据集

【免费下载链接】Scene-Graph-Benchmark.pytorch A new codebase for popular Scene Graph Generation methods (2020). Visualization & Scene Graph Extraction on custom images/datasets are provided. It's also a PyTorch implementation of paper “Unbiased Scene Graph Generation from Biased Training CVPR 2020” 【免费下载链接】Scene-Graph-Benchmark.pytorch 项目地址: https://gitcode.com/gh_mirrors/sc/Scene-Graph-Benchmark.pytorch

Scene-Graph-Benchmark.pytorch是一个强大的场景图生成工具包,能够从图像中提取物体、属性及其关系。本指南将帮助你从零开始准备视觉基因组(Visual Genome)数据集,为场景图生成任务奠定基础。

为什么需要视觉基因组数据集?

视觉基因组数据集是场景图生成研究的重要资源,它包含丰富的图像标注信息,包括物体边界框、类别标签、属性描述以及物体间的关系。这些标注数据使模型能够学习图像中物体的空间布局和语义关联,从而生成结构化的场景图。

视觉基因组场景图生成示例 图:视觉基因组数据集上的场景图生成结果对比,展示了有偏生成与无偏生成的差异

准备工作:环境与依赖

在开始数据集准备之前,请确保你的环境中已安装以下依赖:

  • Python 3.6+
  • PyTorch 1.0+
  • h5py
  • numpy
  • PIL
  • tqdm

你可以通过项目根目录下的requirements.txt文件安装所需依赖:

pip install -r requirements.txt

步骤1:获取视觉基因组原始数据

视觉基因组数据集的准备需要以下几个关键文件:

  1. 图像文件:包含108,073张图像,可从视觉基因组官方网站获取
  2. 标注文件
    • objects.json:物体标注
    • attributes.json:属性标注
    • attribute_synsets.json:属性同义词集
    • image_data.json:图像元数据(在项目的datasets/vg/目录下已提供)

提示:项目中已提供部分预处理文件,如datasets/vg/VG-SGG-dicts-with-attri.json,可减少数据准备工作量。

步骤2:数据预处理与格式转换

2.1 生成属性标签

项目提供了专门的属性标签生成脚本datasets/vg/generate_attribute_labels.py,该脚本完成以下工作:

  • 统计每个物体的属性数量
  • 合并相似属性(基于同义词集)
  • 生成包含属性信息的HDF5文件

运行脚本:

cd datasets/vg
python generate_attribute_labels.py

脚本将生成:

  • VG-SGG-with-attri.h5:包含属性信息的标注文件
  • VG-SGG-dicts-with-attri.json:属性字典文件

2.2 数据集类实现

项目中的maskrcnn_benchmark/data/datasets/visual_genome.py文件实现了VGDataset类,负责加载和处理视觉基因组数据。该类提供:

  • 图像加载与预处理
  • 边界框和关系标注解析
  • 数据增强(如水平翻转)
  • 自定义评估接口

关键代码片段:

class VGDataset(torch.utils.data.Dataset):
    def __init__(self, split, img_dir, roidb_file, dict_file, image_file, transforms=None,
                filter_empty_rels=True, num_im=-1, num_val_im=5000,
                filter_duplicate_rels=True, filter_non_overlap=True, flip_aug=False):
        # 初始化参数和加载数据
        ...
        
    def __getitem__(self, index):
        # 获取图像和标注数据
        ...
        
    def get_groundtruth(self, index, evaluation=False, flip_img=False):
        # 构建包含边界框、类别和关系的目标对象
        ...

步骤3:配置数据集路径

为了让Scene-Graph-Benchmark.pytorch能够正确找到数据集,需要配置路径信息。修改maskrcnn_benchmark/config/paths_catalog.py文件,确保视觉基因组数据集的路径正确:

class DatasetCatalog(object):
    DATA_DIR = "datasets"
    DATASETS = {
        "vg_train": {
            "img_dir": "vg/VG_100K",
            "ann_file": "vg/VG-SGG-with-attri.h5",
            "dict_file": "vg/VG-SGG-dicts-with-attri.json",
            "image_file": "vg/image_data.json"
        },
        # 其他数据集配置...
    }

步骤4:验证数据集

完成上述步骤后,可以通过以下方式验证数据集是否准备成功:

  1. 检查生成的文件:确保VG-SGG-with-attri.h5VG-SGG-dicts-with-attri.json已生成
  2. 运行单元测试:项目提供了测试文件tests/test_data_samplers.py,可验证数据加载功能
  3. 可视化样本数据:使用项目提供的可视化工具查看标注结果

常见问题解决

Q1:图像文件路径错误

A:确保image_data.json中的图像ID与实际图像文件名对应,检查img_dir配置是否正确。

Q2:属性标注生成失败

A:检查是否已下载所有必要的标注文件(objects.jsonattributes.json等),并放置在datasets/vg/目录下。

Q3:内存不足

A:视觉基因组数据集较大,建议使用64GB以上内存,或通过num_im参数限制加载的图像数量。

总结

通过本指南,你已经了解了如何为Scene-Graph-Benchmark.pytorch准备视觉基因组数据集。正确的数据集准备是进行场景图生成研究的基础,它直接影响模型训练的效果和评估的准确性。

准备好数据集后,你可以开始探索项目中的各种场景图生成模型,如基于Motifs的模型、Transformer模型等,这些模型的实现位于maskrcnn_benchmark/modeling/roi_heads/relation_head/目录下。

祝你在场景图生成的研究中取得好成果!

【免费下载链接】Scene-Graph-Benchmark.pytorch A new codebase for popular Scene Graph Generation methods (2020). Visualization & Scene Graph Extraction on custom images/datasets are provided. It's also a PyTorch implementation of paper “Unbiased Scene Graph Generation from Biased Training CVPR 2020” 【免费下载链接】Scene-Graph-Benchmark.pytorch 项目地址: https://gitcode.com/gh_mirrors/sc/Scene-Graph-Benchmark.pytorch

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

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

抵扣说明:

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

余额充值