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

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

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

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Python

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

Q&A

0回答

1218閲覧

CNN オリジナル画像で画像認識

退会済みユーザー

退会済みユーザー

総合スコア0

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Python

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

0グッド

0クリップ

投稿2020/11/20 01:54

編集2022/01/12 10:55

前提・実現したいこと

CNNで画像認識を行っています。
そこで2つの入力を使って画像認識をしているのですが、
以下のコードでどのように書けばよいかわからない部分があります。
教えていただきたいです。

任意の2つの画像を2つの入力としたいと思っています。

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

x_train1 = x_train2 = の部分にどのように記入すればよいのでしょうか?

該当のソースコード

import keras from keras.layers import Conv2D, MaxPooling2D, Input, Dense, Flatten, Dropout from keras.models import Model, Sequential from PIL import Image import numpy as np from keras.models import load_model import glob from sklearn.model_selection import train_test_split from keras.utils import np_utils classes = [ "カップ","グラス","コップ", ] X = [] Y = [] for index, classlabel in enumerate(classes): dir = "./" + classlabel files = glob.glob(dir + "/*.jpg") for i, file in enumerate(files): image = Image.open(file) image = image.convert("RGB") image = image.resize((64, 64)) data = np.asarray(image) X.append(data) Y.append(index) X = np.array(X) Y = np.array(Y) X = X.astype('float32')/255.0 Y = np_utils.to_categorical(Y, len(classes)) x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.10) x_train1 = x_train2 = y_train = np_utils.to_categorical(y_train) y_test = np_utils.to_categorical(y_test) input_1 = Input(shape=(64,64,3)) input_2 = Input(shape=(64,64,3)) merged = keras.layers.Concatenate(axis=-1)([input_1,input_2]) x = Dense(145, activation="relu")(merged) x = Dropout(0.5)(x) output = Dense(145, activation="softmax")(x) model = Model(inputs=[input_1, input_2], outputs=output) model.summary() opt = keras.optimizers.Adam(lr=0.0005, decay=1e-5) model.compile(loss='categorical_crossentropy', optimizer=opt, metrics=['accuracy']) hist = model.fit([x_train1,x_train2], y_train, batch_size=200, verbose=1, epochs=5)

試したこと

"Keras 複数入力"など検索して、様々なサイトを見たのですが、
オリジナル画像を使っているものがないので、よくわからなくなってしまいました。

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

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

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

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

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

meg_

2020/11/20 02:04

> 2つの入力を使って画像認識をしている どのようなモデルになっているのでしょうか?
退会済みユーザー

退会済みユーザー

2020/11/20 02:48 編集

すみません。初心者なもので、 モデルとは、何を示している言葉ですか?
toast-uz

2020/11/20 03:09

「任意の2つの画像を2つの入力としたい」とは、なぜ、何のためにしたいのでしょうか? この手の話は、やりたいことそのものが目的にあっていないことがよくあるため、目的を確認したいです。
退会済みユーザー

退会済みユーザー

2020/11/20 03:20 編集

画像認識と言っていますが、正確には画像を使った位置推定をしようと思っています。そこで自分から見た正面と背面の画像の2つを入力することでより精度が良くなるのではないかと 考えたためです。目的はこれです。 そしてこれはあくまでできるかどうかを確認したいからやってみるので、やる必要がわからないというのは言わないで頂けるとありがたいです。
toast-uz

2020/11/20 03:24 編集

2つの画像を横につなげた画像を入力して、学習してみるのはどうでしょうか? CNNだと画像が少し「にじむ」ので間に緩衝帯を設けたほうがよいかもです。「前後」を入れ替えることで学習データを増やすことが可能です。また、カメラの数がさらに増えても応用可能です。 モデルではなく前処理の問題に帰着させる、という発想です。
退会済みユーザー

退会済みユーザー

2020/11/20 03:25

ありがとうございます。 それもやってみよう思っています。 しかし今は重みを共有する事でそれが出来るのであればそちらもやってみたいと考えています
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問