数据集准备完全指南:为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:获取视觉基因组原始数据
视觉基因组数据集的准备需要以下几个关键文件:
- 图像文件:包含108,073张图像,可从视觉基因组官方网站获取
- 标注文件:
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:验证数据集
完成上述步骤后,可以通过以下方式验证数据集是否准备成功:
- 检查生成的文件:确保
VG-SGG-with-attri.h5和VG-SGG-dicts-with-attri.json已生成 - 运行单元测试:项目提供了测试文件
tests/test_data_samplers.py,可验证数据加载功能 - 可视化样本数据:使用项目提供的可视化工具查看标注结果
常见问题解决
Q1:图像文件路径错误
A:确保image_data.json中的图像ID与实际图像文件名对应,检查img_dir配置是否正确。
Q2:属性标注生成失败
A:检查是否已下载所有必要的标注文件(objects.json、attributes.json等),并放置在datasets/vg/目录下。
Q3:内存不足
A:视觉基因组数据集较大,建议使用64GB以上内存,或通过num_im参数限制加载的图像数量。
总结
通过本指南,你已经了解了如何为Scene-Graph-Benchmark.pytorch准备视觉基因组数据集。正确的数据集准备是进行场景图生成研究的基础,它直接影响模型训练的效果和评估的准确性。
准备好数据集后,你可以开始探索项目中的各种场景图生成模型,如基于Motifs的模型、Transformer模型等,这些模型的实现位于maskrcnn_benchmark/modeling/roi_heads/relation_head/目录下。
祝你在场景图生成的研究中取得好成果!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



