无法使用 Fiftyone 加载 "open-images-v6" 的子部分
Fail to load a subpart of "open-images-v6" with Fiftyone
上下文
我正在尝试检索大量数据来训练 CNN。
更具体地说,我正在寻找游泳池的图片。
我在 Google 制作的 open-images-v6 数据库中找到了很多。
所以现在,我只想下载这些特定的图像(我不希望 900 万张图像最终出现在我的下载文件夹中)。
问题
为了做到这一点,我仔细按照下载页面上给出的说明进行操作(参见:https://storage.googleapis.com/openimages/web/download.html)。
因此,我安装了“fiftyone”,尝试了“测试”程序(这将加载“快速启动”数据集并浏览数据)并且到目前为止没有遇到任何问题。
但是当我尝试使用以下代码检索游泳池图像时,遇到了很多问题:
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 错误。
由于这是 fiftyone 本身的一个错误(我将创建一个 pr 来修复该错误),您需要自己修改 fiftyone。
转到您的 python 站点包目录,然后打开 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"))
这确实解决了我的问题。
上下文
我正在尝试检索大量数据来训练 CNN。 更具体地说,我正在寻找游泳池的图片。 我在 Google 制作的 open-images-v6 数据库中找到了很多。 所以现在,我只想下载这些特定的图像(我不希望 900 万张图像最终出现在我的下载文件夹中)。
问题
为了做到这一点,我仔细按照下载页面上给出的说明进行操作(参见:https://storage.googleapis.com/openimages/web/download.html)。 因此,我安装了“fiftyone”,尝试了“测试”程序(这将加载“快速启动”数据集并浏览数据)并且到目前为止没有遇到任何问题。
但是当我尝试使用以下代码检索游泳池图像时,遇到了很多问题:
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 错误。
由于这是 fiftyone 本身的一个错误(我将创建一个 pr 来修复该错误),您需要自己修改 fiftyone。
转到您的 python 站点包目录,然后打开 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"))
这确实解决了我的问题。