python - 无法使用 Fiftyone 加载 "open-images-v6"的子部分

标签 python amazon-web-services dataset

上下文

我正在尝试检索大量数据来训练 CNN。 更具体地说,我正在寻找游泳池的图片。 我在Google制作的open-images-v6数据库中找到了很多。 所以现在,我只想下载这些特定的图像(我不希望 900 万张图像最终出现在我的下载文件夹中)。

问题

为了做到这一点,我仔细遵循了下载页面上给出的说明(请参阅:https://storage.googleapis.com/openimages/web/download.html)。 因此,我安装了“fiftyone”,尝试了“测试”程序(将加载“quickstart”数据集并浏览数据),到目前为止还没有遇到任何问题。

但是当我尝试使用以下代码检索游泳池图像时,我遇到了很多问题:

import fiftyone as fo
import fiftyone.zoo as foz

dataset = foz.load_zoo_dataset(
    "open-images-v6",
    split="validation",
    label_types="detections",
    classes="Swimming pool"
)
session = fo.launch_app(dataset)

我将直接跳到我无法解决的问题: 当我运行代码时,它会正确下载一堆 .csv 文件,但是当它尝试下载数据(图像)时,它会显示一个非常糟糕的错误:

botocore.exceptions.ClientError: An error occurred (404) when calling the HeadObject operation: Not Found

最先进的技术

经过几个小时的搜索错误根源,我最终发现它与 AWS 有某种联系,但我完全不知道我可以在这个领域做什么。

我在互联网上看到一个随机教程,建议通过 PIP 安装“awscli”,但没有任何改变。 我尝试使用相同的过程导入其他数据集(即 foz.load_zoo_dataset("coco-2017")),它似乎有效(至少下载开始了,但我提前停止了)。

感谢您的宝贵时间。

最佳答案

感谢您的 aws 提示,这终于让我走上了正确的道路。

Fiftyone 使用 python os.path.join() 功能,该功能将在运行 Windows 时创建 Windows 样式路径。 s3 blob 存储无法使用这些 Windows 路径,因此会引发 404 错误。

由于这是五十一本身的一个错误(我将创建一个公关来修复该错误),因此您需要自己修改五十一。

转到您的 python site-packages 目录,然后打开 fityone/utils/openimages.py

在此文件中,将以下代码添加到导入语句中:

import re

然后搜索 _download_images_if_necessary 方法并替换此行:

fp_download = os.path.join(split, image_id + ".jpg")

这个:

fp_download = re.sub(r"\\", "/", os.path.join(split, image_id + ".jpg"))

这确实解决了我的问题。

关于python - 无法使用 Fiftyone 加载 "open-images-v6"的子部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68229288/

相关文章:

r - 找到相反的条件(使用 R tidyverse)以便将数据集分割为 2

python - 即使重新安装 matplotlib、libpng 和 brew 后,导入 pylab 也会失败

python - 想要找到与 pandas dataframe 相对应的元素的列表索引(np.where 和 .index())

python - 在 SWIG 中,如何在没有 typemaps.i 的情况下使用 int * 变量

ruby-on-rails - 测量 SAAS 应用带宽使用情况

sql - Postgres : dropping huge AWS hosted table doesn't free up space

amazon-web-services - 将 API 网关主体中的 JSON 对象添加到 Kinesis 代理?

c# 强类型数据集,其表适配器未返回预期结果

python - 在Python中合并2个字典

python - 微调超参数不会提高分类器的分数