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

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

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

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

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

Q&A

解決済

1回答

980閲覧

初心者で機械学習でのエラーの解決ができなかったので教えてください!

Yukkiy

総合スコア14

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

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

0グッド

0クリップ

投稿2022/07/18 05:44

前提

Google colaboratryを使用して機械学習を勉強してました。機械学習は始めたてなこともあり、あるサイトを参考にしながらプログラムを書いていました。まだまだ分からないことも多いためエラーを解決することができなかったのでどなたか解決策を教えて頂けると幸いです…

実現したいこと

画像を認識しフォルダー分けをする

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

NameError: name 'pred' is not defined

該当のソースコード

Python

1from keras.models import load_model 2import pickle 3import cv2 4import keras 5 6model = keras.models.load_model('/content/drive/MyDrive/Colab Notebooks/機械学習/model.h5', compile=False) 7classes = pickle.load(open('/content/drive/MyDrive/Colab Notebooks/機械学習/classes.sav', 'rb')) 8 9img = cv2.imread('/content/drive/MyDrive/Colab Notebooks/機械学習/sample/sample.jpg') 10img = cv2.resize(img,dsize=(224,224)) 11img = img.astype('float32') 12img /= 255.0 13img = img[None, ...] 14 15img = cv2.imread('/content/drive/MyDrive/Colab Notebooks/機械学習/sample/sample.jpg') 16cv2.imwrite('/content/drive/MyDrive/Colab Notebooks/機械学習/output/' + str(classes[pred])+ '/sample.jpg',img)

試したこと

エラー内容を調べ理解まではしましたが解決はできませんでした。

補足情報

こちらのサイトを参考にしました。
https://sasuwo.org/image-classification/#toc3

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

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

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

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

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

hoshi-takanori

2022/07/18 06:00

たぶん元の記事のコードに result = model.predict(img) pred = result.argmax() の 2 行が抜けてる気が…。
Yukkiy

2022/07/18 08:06

そうなんですね。定義されてないよって言われてたのでそんな気はしてました。ちなみにどこでその変数指定すればいいですか…?
guest

回答1

0

ベストアンサー

参考サイト見てみましたが、あまり初心者が見るには親切なサイトではないですね。。。
下記で動作すると思います

python

1from keras.models import load_model 2import pickle 3import cv2 4import keras 5 6model = keras.models.load_model('/content/drive/MyDrive/Colab Notebooks/機械学習/model.h5', compile=False) 7classes = pickle.load(open('/content/drive/MyDrive/Colab Notebooks/機械学習/classes.sav', 'rb')) 8 9img = cv2.imread('/content/drive/MyDrive/Colab Notebooks/機械学習/sample/sample.jpg') 10img = cv2.resize(img,dsize=(224,224)) 11img = img.astype('float32') 12img /= 255.0 13img = img[None, ...] 14 15# 追加箇所 16result = model.predict(img) 17pred = result.argmax() 18 19img = cv2.imread('/content/drive/MyDrive/Colab Notebooks/機械学習/sample/sample.jpg') 20cv2.imwrite('/content/drive/MyDrive/Colab Notebooks/機械学習/output/' + str(classes[pred])+ '/sample.jpg',img)

参考サイトとしては、
日本語だとtensorflowの公式。「Run in Google colab」を押せばすでにノートブックが用意されています。
https://www.tensorflow.org/tutorials/keras/classification?hl=ja
英語だと
「keras image classification tutorial step by step」や「keras image classification tutorial beginner」などで
検索してみてください。わかりやすい動画やサイトがたくさん出てきます。
英語がわからなくてもコピペや翻訳サイトで逐次見れば問題ないです。

投稿2022/07/18 08:50

編集2022/07/18 09:18
East_san

総合スコア407

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

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

Yukkiy

2022/07/18 10:40

そうなんですね… あ、あとせっかくプログラムを書いてくださったのに申し訳ないんですが頑張ってエラーを自分で解決できました!! 他の方に ``` result = model.predict(img) pred = result.argmax() ``` これを追加してみ?って言われたので追加していろいろして最終的に ``` from keras.models import load_model import pickle import cv2 import keras from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import accuracy_score model = keras.models.load_model('/content/drive/MyDrive/Colab Notebooks/機械学習/model.h5', compile=False) classes = pickle.load(open('/content/drive/MyDrive/Colab Notebooks/機械学習/classes.sav', 'rb')) choose = input("どの画像を移動しますか:") img = cv2.imread("/content/drive/MyDrive/Colab Notebooks/機械学習/sample/" + choose) img = cv2.resize(img,dsize=(224,224)) img = img.astype('float32') img /= 255.0 img = img[None, ...] result = model.predict(img) pred = result.argmax() names = ['かしゆか','あ〜ちゃん','のっち'] name = names[pred] img = cv2.imread("/content/drive/MyDrive/Colab Notebooks/機械学習/sample/" + choose) cv2.imwrite('/content/drive/MyDrive/Colab Notebooks/機械学習/output/' + name + "/" + choose ,img) print(choose + "を次のファイルへコピーしました。" + '/content/drive/MyDrive/Colab Notebooks/機械学習/output/' + name) ``` このようにしました! 親切に参考サイトまで教えてくださりありがとうございます。本当にEast_sanさんには感謝、感謝で頭が上がりません。また何か僕が分からなくなったらぜひ教えてください!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問