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

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

新規登録して質問してみよう
ただいま回答率
85.50%
MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

954閲覧

このサイトを使って画像分類器を自作したい

_mini

総合スコア15

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/06/30 13:36

https://techblog.nhn-techorus.com/archives/8349
上記のサイトを参考にラーメンとそれ以外の麺類を判別する分類器を造ってみようと思ったのでまずこのサイトでコスモスとサクラの判別をする分類器のコードを書いたのですが、

PIL.UnidentifiedImageError: cannot identify image file 'sakura/.DS_Store'

とエラーが出て画像の読み込みがうまくいっていないようです。この解決方法がわかりません。またサイトの下の方にグラフが出ているのですが、これはこのコードでうまく動けばグラフも確認できるということなのでしょうか?

使用しているPCは
MacBook Pro (13-inch, 2019, Two Thunderbolt 3 ports)
プロセッサ 1.4 GHz クアッドコアIntel Core i5
メモリ 8 GB 2133 MHz LPDDR3

環境は
vs code
python3.7.6
tensorflow1.14.0

tensorflowはver2.0以降はまたコードの書き方が異なるようなので1.14.0を指定して入れ直しました。

ほとんどサイトと同じですが、下記に自分で書いたコードを載せます

from keras.layers import Conv2D, MaxPooling2D from keras.layers import Dense, Dropout, Flatten from keras.models import Sequential import keras from sklearn.model_selection import train_test_split from keras.preprocessing import image import numpy as np import tensorflow as tf import random as rn import os from keras import backend as K os.environ['PYTHONHASHSEED'] = '0' np.random.seed(0) rn.seed(0) session_conf = tf.compat.v1.ConfigProto( intra_op_parallelism_threads=1, inter_op_parallelism_threads=1) tf.set_random_seed(0) sess = tf.Session(graph=tf.get_default_graph(), config=session_conf) K.set_session(sess) sess = tf.Session(config=tf.ConfigProto(device_count={'GPU': 0})) input_shape = (224, 224, 3) batch_size = 128 epochs = 100 num_classes = 2 x = [] y = [] for f in os.listdir("sakura"): x.append(image.img_to_array(image.load_img( "sakura/"+f, target_size=input_shape[:2]))) y.append(0) for f in os.listdir("cosmos"): x.append(image.img_to_array(image.load_img( "cosmos/"+f, target_size=input_shape[:2]))) y.append(1) x = np.asarray(x) x /= 255 y = np.asarray(y) y = keras.utils.to_categorical(y, num_classes) x_train, x_test, y_train, y_test = train_test_split( x, y, test_size=0.33, random_state=3) model = Sequential() model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=input_shape)) model.add(Conv2D(64, (3, 3), activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.25)) model.add(Flatten()) model.add(Dense(128, activation='relu')) model.add(Dropout(0.5)) model.add(Dense(num_classes, activation='softmax')) model.compile(loss=keras.losses.categorical_crossentropy, optimizer="SGD", metrics=['accuracy']) history = model.fit(x_train, y_train, batch_size=batch_size, epochs=epochs, verbose=1, validation_data=(x_test, y_test))

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

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

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

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

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

guest

回答1

0

ベストアンサー

os.listdir("sakura") はディレクトリ内のファイル名の一覧を取得する関数です。
.DS_Store は Mac OS が勝手に作ってしまうファイルで、これを読み込もうとした際にエラーになっています。(Mac では . で始まる名前は隠しファイル扱いですが、ls とかで確認すれば、たしかにそのディレクトリにそのファイルがあることが確認できるとおもいます)

消しても勝手にまた作られてしまうので、ループ内に名前が .DS_Store だったら無視するという処理を追加してはどうでしょうか

if f == ".DS_Store": continue

変更箇所

python

1for f in os.listdir("sakura"): 2 if f == ".DS_Store": 3 continue 4 x.append(image.img_to_array(image.load_img("sakura/" + f, target_size=input_shape[:2]))) 5 y.append(0) 6for f in os.listdir("cosmos"): 7 if f == ".DS_Store": 8 continue 9 x.append(ximage.img_to_array(image.load_img("cosmos/" + f, target_size=input_shape[:2]))) 10 y.append(1)

投稿2020/06/30 19:27

編集2020/07/01 06:34
tiitoi

総合スコア21956

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

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

_mini

2020/07/01 06:10

for f・・・から始まる構文中に教えていただいた処理を追加してみたのですが、同じエラーが出てきてしまいます…
_mini

2020/07/01 06:27

エラー文の前に "cannot identify image file %r" % (filename if filename else fp) というような文章も書かれていました。
tiitoi

2020/07/01 06:31

質問欄のコードを編集後のコードに差し替えていただけますか? またエラー内容が変わった場合は現在のエラー内容を記載してください
tiitoi

2020/07/01 06:35

質問のエラーは、画像しかない想定のディレクトリ内に画像でない .DS_Store というファイルがあって、それを読み込もうとしてエラーが出てしまうので、 .DS_Store という名前のファイルは無視するというのが回答内容の意図です。 修正箇所を追記しました。
_mini

2020/07/01 08:35

tiitoi様のコードを参考に書き直したら、うまく実行することができました。 質問の部分に載せたサイトの下部分のようなグラフを表示して確認したい場合はコマンドややり方があるのでしょうか? それともそのようなコードがあるのでしょうか?
tiitoi

2020/07/01 08:38

> それともそのようなコードがあるのでしょうか? グラフを描画する処理を matplotlib というライブラリで自分で書く必要があります。 質問のリンク先はその部分のコードは省略されていますね
_mini

2020/07/02 02:59

matplotlibについてわかりやすいようなサイトはありますか? 自分でも調べているのですが、なかなか分かりづらいものが多いので…
tiitoi

2020/07/02 05:46

Qiita に matplotlib の記事が沢山あるので、参考にされてはどうでしょうか https://qiita.com/nkay/items/d1eb91e33b9d6469ef51 ----- 質問の件が解決したようであればこの質問はクローズして、またわからないことがでてきたら、お手数ですが別途質問を立ててください
_mini

2020/07/02 08:42

ありがとうございます。 また質問してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問