🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Keras

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

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

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

Q&A

解決済

1回答

4381閲覧

CNNを用いた2クラス分類の方法について

eight-r

総合スコア9

Keras

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

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

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

0グッド

1クリップ

投稿2019/11/19 18:48

やりたい事

Kerasを用いて2クラス分類のCNNを作成したいと考えています.
対象となる画像データは農作物で,2クラス分類によりその農作物が収穫可能な時期であるかどうかを判別しようと考えています.
CNNの作成を行うにあたりいくつか分からない部分があるのでそこについてお聞きしたいです.

現在把握していること

 現在把握しているCNNモデルの作成手順を以下に示します.
######1. データセットの準備
- 収穫可能な作物の画像(positive)と収穫可能でない作物の画像(negative)の画像を用意する.
- 用意する画像は正方形とする.
- 画像の形式は(bmp/jpg/png)など

######2. ネットワーク構造の設定
- 畳み込み層やプーリング層などの設定を行う

  • model.add()を用いる

######3. モデルの学習を行う

  • model.fit()を用いる

######4. モデルを評価する

  • model.evaluate()を用いる
  • Trainデータとは別のTestデータに対して評価を行うことで汎化性能を評価する

以上,ざっくりと示した内容が私が理解している範囲です.

分からないこと・質問したいこと

現在,データセットの準備を行う段階なのですがそこで分からない点を3つ質問します.

質問1 データセットの画像サイズについて
CNNに入力する画像は正方形であればよいと認識しています.
そのためデータセットの画像サイズが例えば64x64[px]や100x100[px]など複数存在しても,ある一定の〇x〇[px]の正方形の解像度にスケーリングすることによって複数の解像度の画像を入力することは可能でしょうか?

質問2 データセットの分割方法(train/validation/test)について
データセットを分割するにあたってデータセットのディレクトリ構造について疑問が生じました.
ディレクトリ構造は,

イメージ説明
のようにして後からtrain/validation/testに分割


イメージ説明
のようにはじめから分割のどちらにするべきなのでしょうか?

質問3 そもそもvalidationデータとは何なのか
Aidemyでディープラーニング基礎を学習したのですがそのときは,trainとtestしか出てきませんでした.
validationは何に使うのでしょうか?
調査してもいまいち理解できません.

以上,お手数おかけしますがご回答よろしくお願い致します.

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

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

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

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

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

guest

回答1

0

ベストアンサー

複数の解像度の画像を入力することは可能でしょうか?

学習する際は解像度はすべての画像で同じにする必要があります。
画像によってサイズが違う場合はリサイズするのが一般的です。

質問2 データセットの分割方法(train/validation/test)について

フォルダ構成の段階で分割しておいても、1つのフォルダからデータを読み込んでプログラム上で分割してもどちらでも構いません。

質問3 そもそもvalidationデータとは何なのか

validation は、学習するモデルの汎化性能を検証するために使用するデータです。
テストデータは最終的なモデルの性能を評価するのに使用するため、学習中はアクセスしないようにします。

学習/テストの2つでいいのではないかと思うかもしれませんが、例えば、バリデーションデータに対する性能を見て、ハイパーパラメータを調整する場合、バリデーションデータに特化した値を選択してしまう可能性があり、同じデータをテストにも使うとモデルの汎化性能を正しく評価できなくなってしまいます。

machine learning - What is the difference between test set and validation set? - Cross Validated

投稿2019/11/20 03:47

tiitoi

総合スコア21956

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

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

eight-r

2019/11/20 04:00

返答ありがとうございます.データセットの分割方法ですがどちらでも良いのですね.先ほどフォルダ構成の段階で分割しておくとflow_from_directory()が使えると知ったのですがflow_from_directory()を使うことの利点は,Data Augmentationが行えるということで合っていますでしょうか?
tiitoi

2019/11/20 04:06

> Data Augmentationが行えるということで合っていますでしょうか? オーグメンテーションの他に、画像をディレクトリから読み込んでリサイズするといった処理もやってくれます。 flow_from_directory() を使う場合はたしかに予めディレクトリを分けておく必要があります。
eight-r

2019/11/20 04:28

回答ありがとうございます.今後のことを考え予めディレクトリを分けてデータセットを作成したいと思います.ディレクトリの分け方ですが,train・validation・testに格納する画像はそれぞれ同一の画像が存在してはいけないですよね?例えば画像総数が1000枚であればtrain:700枚,validation:200枚,test:100枚のように振分ければ大丈夫でしょうか?
tiitoi

2019/11/20 04:32

> 同一の画像が存在してはいけないですよね? 同一の画像はあってはだめです。 > train:700枚,validation:200枚,test:100枚のように振分ければ大丈夫でしょうか? どのくらいの割合で分けるかは自由ですが、そのような感じで問題ないと思います。
eight-r

2019/11/20 04:35

回答ありがとうございます.現時点での疑問は解消することができました.また何かお聞きする機会があるかもしれませんがその際はよろしくお願いいたします.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問