如何从AWS S3读取存储桶中的图像到Sagemaker Jupyter实例

我对AWS和云环境非常陌生。我是一名机器学习工程师,计划在AWS环境中构建一个自定义的CNN,以预测给定图像中是否存在iPhone。

我已经完成的步骤:

步骤1:

我为iPhone分类器创建了一个S3存储桶,并设置了以下文件夹结构:

 Iphone_Classifier > Train > Yes_iphone_images > 1000张图片                           > No_iphone_images  > 1000张图片                   > Dev   > Yes_iphone_images > 100张图片                           > No_iphone_images  > 100张图片                   > Test  > 30张随机图片

权限设置 – > 阻止所有公共访问

步骤2:

然后我进入Amazon Sagemaker,并创建了一个实例:

我选择了以下配置

 名称: some-xyz, 类型: ml.t2.medium IAM : 创建了一个新的IAM角色(启用了根访问权限。)其他: 所有其他设置保持默认

然后笔记本实例被创建并打开了。

步骤3:

一旦我打开了实例,

1. 我通常选择 - conda_tensorflow2_p36 作为解释器2. 创建了一个新的Jupyter笔记本并开始使用。3. 我查看了图像分类示例,但感到困惑,大多数示例使用的是CSV文件,而我想从S3存储桶中检索图像。 

问题:

1. 如何简单地从Sagemaker的Jupyter实例访问S3存储桶中的图像数据集? 2. 我需要访问S3存储桶图像的具体参考代码。 3. 将数据复制到笔记本是一个好方法,还是直接从S3存储桶工作更好?

我尝试过的方法:

import boto3client = boto3.client('s3')# 我尝试了这个但失败了#path = 's3://iphone/Train/Yes_iphone_images/100.png'# 我尝试了这个但失败了path = 's3://iphone/Test/10.png'# 我将图像文件上传到笔记本实例并尝试读取时可以工作#path = 'thiyaga.jpg'print(path)import cv2from matplotlib import pyplot as pltprint(cv2.__version__)plt.imshow(img)

回答:

如果你的图像是二进制编码的,你可以尝试以下方法:

import boto3 import matplotlib.pyplot as plt # 定义存储桶和键 s3_bucket, s3_key = 'YOUR_BUCKET', 'YOUR_IMAGE_KEY'with BytesIO() as f:    boto3.client("s3").download_fileobj(Bucket=s3_bucket, Key=s3_key, Fileobj=f)    f.seek(0)    img = plt.imread(f, format='png')

在其他情况下,以下代码可以正常工作(基于文档):

s3 = boto3.resource('s3')img = s3.Bucket(s3_bucket).download_file(s3_key, 'local_image.jpg')

在这两种情况下,你都可以使用plt.imshow(img)来可视化图像。

在你的路径示例path = 's3://iphone/Test/10.png'中,存储桶和键将是s3_bucket = 'iphone's3_key=Test/10.png

附加资源: https://boto3.amazonaws.com/v1/documentation/api/latest/guide/s3-example-download-file.html

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注