客户错误:imread 读取文件的空白无图像- Sagemaker AWS

问题描述

我正在使用我的自定义数据和我的自定义 S3 存储桶跟踪此 tutorial,其中训练和验证数据所在。我收到以下错误

Customer Error: imread read blank (None) image for file: /opt/ml/input/data/train/s3://image-classification/image_classification_model_data/train/img-001.png

我的所有训练数据都在一个名为“train”的文件夹中 我已经按照 doc 的建议设置了我的 lst 文件

22  1   s3://image-classification/image_classification_model_data/train/img-001.png
86  0   s3://image-classification/image_classification_model_data/train/img-002.png
...

我的其他配置:

s3_bucket = 'image-classification'
prefix =  'image_classification_model_data'


s3train = 's3://{}/{}/train/'.format(s3_bucket,prefix)
s3validation = 's3://{}/{}/validation/'.format(s3_bucket,prefix)

s3train_lst = 's3://{}/{}/train_lst/'.format(s3_bucket,prefix)
s3validation_lst = 's3://{}/{}/validation_lst/'.format(s3_bucket,prefix)



train_data = sagemaker.inputs.TrainingInput(s3train,distribution='FullyReplicated',content_type='application/x-image',s3_data_type='S3Prefix')

validation_data = sagemaker.inputs.TrainingInput(s3validation,s3_data_type='S3Prefix')

train_data_lst = sagemaker.inputs.TrainingInput(s3train_lst,s3_data_type='S3Prefix')

validation_data_lst = sagemaker.inputs.TrainingInput(s3validation_lst,s3_data_type='S3Prefix')


data_channels = {'train': train_data,'validation': validation_data,'train_lst': train_data_lst,'validation_lst': validation_data_lst}

我检查了下载的图像并进行了物理检查,我看到了图像。现在确定这个错误被抛出为 blank。任何建议都会很棒。

解决方法

Sagemaker 将您在 s3train 中指定的输入数据复制到 /opt/ml/input/data/train/ 中的实例中,这就是您出错的原因,因为正如您从错误消息中看到的那样,它试图将文件名连接到lst 文件,其中包含期望图像所在的路径。因此,只需将文件名放在您的 lst 中就可以了(删除 s3 路径)。