0

我使用了来自开放图像数据集 v6 的图像和注释数据。

我能够检索图像,但不能检索注释信息。

你能告诉我该怎么做吗?

当前状态

我在GoogleColaboratory上运行了代码,参考了五十一个的演示。

我能够将它运行到以下几点

dataset = foz.load_zoo_dataset(
    "open-images-v6",
    split="validation",
    label_types=["detections", "classifications"],
    classes=["Bottle"],
    max_samples=250,
    seed=51,
    shuffle=True,
    dataset_name="open-images-sample-mix-data",
)

person_subset = foz.load_zoo_dataset(
    "open-images-v6",
    split="validation",
    label_types=["detections", "classifications"],
    classes=["Person"],
    max_samples=250,
    seed=51,
    shuffle=True,
    dataset_name="Person-subset",
)

can_subset = foz.load_zoo_dataset(
    "open-images-v6",
    split="validation",
    label_types=["detections", "classifications"],
    classes={'Tin can'},
    max_samples=250,
    seed=51,
    shuffle=True,
    dataset_name="Tin_can-subset",
)

box_subset = foz.load_zoo_dataset(
    "open-images-v6",
    split="validation",
    label_types=["detections", "classifications"],
    classes=["Box"],
    max_samples=250,
    seed=51,
    shuffle=True,
    dataset_name="Box-subset",
)

_ = dataset.merge_samples(person_subset)
_ = dataset.merge_samples(box_subset)
_ = dataset.merge_samples(can_subset)

但是,从这里我想打开文件 detections.csv 并将坐标信息输入到生成的文本中,但是文件太大而无法打开。

你能告诉我如何获取坐标信息吗?

4

1 回答 1

1

基本的 Open Images 注释 csv 文件非常大。访问边界框坐标的最佳方法是直接迭代FiftyOne 数据集并从FiftyOne 检测标签对象中访问坐标。

bboxes = []

for sample in dataset:
    for detection in sample.detections.detections:
        bbox = detection.bounding_box
        bboxes.append(bbox)

在此循环中,您还可以访问其他信息以存储在文本文件中,例如示例 ID 和分类注释。虽然此循环是从数据集中获取所需其他信息的最灵活方法,但如果您只需要边界框坐标,则获取该信息的最有效方法是使用dataset.values()

bboxes = dataset.values("detections.detections.bounding_box")

无论哪种方式,您都会以编程方式将这些框坐标列表写入文本文件。

于 2021-08-18T21:31:09.453 回答