質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

4回答

2998閲覧

Python3 FileNotFoundErrorの原因が分からない

SuzuAya

総合スコア71

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/05/15 06:22

編集2019/05/15 06:24

前提・実現したいこと

512 x 496の画像3万枚をnumpy配列に変換するところでMemoryErrorとなってしまったため、以下の質問を参考にしながらコードを修正したところ、エラーが発生してしまいました。
エラーに記載されている画像は確かに該当フォルダ内に存在しており、また、コードには一切記載していないのですが、なぜこのようなエラーが発生しているのでしょうか。
ご存知の方がいらっしゃいましたらご教示頂けますと幸いです。
https://teratail.com/questions/78986
https://teratail.com/questions/166544
https://teratail.com/questions/78052

発生している問題・エラーメッセージ

FileNotFoundError Traceback (most recent call last) <ipython-input-9-ac9c439a867b> in <module>() 64 continue 65 ---> 66 image_value = np.array(Image.open("./NORMAL_resize_10000/" + filename)) 67 image_list.append(image_value.reshape(1, image_value.size)) 68 /usr/local/lib/python3.6/dist-packages/PIL/Image.py in open(fp, mode) 2528 2529 if filename: -> 2530 fp = builtins.open(filename, "rb") 2531 exclusive_fp = True 2532 FileNotFoundError: [Errno 2] No such file or directory: './NORMAL_resize_10000/./NORMAL_resize_10000/NORMAL-9473882-5_resized.jpeg'

該当のソースコード

from __future__ import absolute_import from __future__ import division from __future__ import print_function from keras.layers import Lambda, Input, Dense from keras.models import Model from keras.models import Sequential, model_from_json from keras.losses import mse, binary_crossentropy from keras.layers import Conv2D, Flatten, Lambda from keras.layers import Reshape, Conv2DTranspose from keras.utils import plot_model, np_utils from keras.utils import plot_model from keras.callbacks import Callback, EarlyStopping, TensorBoard, ModelCheckpoint, LearningRateScheduler, CSVLogger from keras import optimizers from keras import backend as K from keras.preprocessing.image import array_to_img, img_to_array,load_img from keras.preprocessing.image import ImageDataGenerator import numpy as np import matplotlib.pyplot as plt import argparse import os import re import glob import random as rn import tensorflow as tf import cv2 import easydict from PIL import Image from google.colab.patches import cv2_imshow import warnings warnings.filterwarnings('ignore') %matplotlib inline get_ipython().run_line_magic('matplotlib', 'inline') #original dataset #train filenames = glob.glob("./NORMAL_resize_10000/*.jpeg") image_list = [] for filename in filenames: if filename == "Thumbs.db": continue image_value = np.array(Image.open("./NORMAL_resize_10000/" + filename)) image_list.append(image_value.reshape(1, image_value.size)) x_train=np.array(image_list) print(x_train.shape)

補足情報(FW/ツールのバージョンなど)

Google Colab上で実装をしています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

can110

2019/05/15 06:28

確かに「./NORMAL_resize_10000/./NORMAL_resize_10000/NORMAL-9473882-5_resized.jpeg」は存在するのでしょうか? 実際には「./NORMAL_resize_10000/NORMAL-9473882-5_resized.jpeg」に存在するのではないでしょうか?
SuzuAya

2019/05/15 08:15

ご指摘ありがとうございました。確かに、よく見るとパスの設定がおかしなことになっているのが原因のようですね。
guest

回答4

0

パスが2重で入っているように見えるので、こうしてみては如何でしょう。
(未検証)

'''
image_value = np.array(Image.open("./NORMAL_resize_10000/" + filename))

image_value = np.array(Image.open(filename))
'''

投稿2019/05/15 08:17

expy

総合スコア103

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

SuzuAya

2019/05/15 08:18

ありがとうございます!先ほど、コードを修正したところうまくいきました。お手数をおかけしました。
guest

0

ベストアンサー

filenames = glob.glob("./NORMAL_resize_10000/*.jpeg")

でfilehnamesに値を設定し

for filename in filenames:
image_value = np.array(Image.open("./NORMAL_resize_10000/" + filename))

でopenする際、ファイル名の前にさらに"./NORMAL_resize_10000/"を付加しているので、ファイルの存在が確認されていないパスでopenしようとしてエラーになっているのでは?

投稿2019/05/15 08:09

sage

総合スコア1216

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

SuzuAya

2019/05/15 08:16

ありがとうございます!ご指摘の通り、パスの設定がおかしなことになっていたので、修正したところ、うまくいきました。
guest

0

Google Colaboratory上からローカルファイルを参照するには以下のリンクの方法をやってみると良いです。

ローカルファイルを読み込む方法

投稿2019/05/15 06:29

Ryupe

総合スコア426

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Ryupe

2019/05/15 06:32

すみません。 的外れの回答のような気がしますので、忘れてください。
SuzuAya

2019/05/15 08:13

いえいえ、早急にご回答いただきましてありがとうございました。
guest

0

最終的に以下のコードでうまくいきました。

filenames = os.listdir("./NORMAL_resize_10000")#修正 image_list = [] for filename in filenames: if filename == "Thumbs.db": continue image_value = np.array(Image.open("./NORMAL_resize_10000/"+filename))#修正 image_list.append(image_value.reshape(1, image_value.size)) x_train=np.array(image_list) print(x_train.shape)

投稿2019/05/15 08:17

SuzuAya

総合スコア71

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問