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

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

新規登録して質問してみよう
ただいま回答率
85.49%
機械学習

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

Python

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

Q&A

解決済

1回答

12545閲覧

機械学習用のデータセットについて

tarou_yamada

総合スコア18

機械学習

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

Python

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

0グッド

4クリップ

投稿2017/05/07 08:24

お世話になります。
現在、機械学習に興味があり勉強中です。

昨今話題になっているディープラーニングを勉強したいと思い、
tensorflowのチュートリアルを試してみました。
tensorflowには予め、mnistやcifar-10などのデータセットが
組み込まれていますが、自分で用意したデータを試してみたいと考えております。

例えば、画像認識をしたい場合、mnistを参考にしますと
「訓練画像と訓練ラベル、テスト画像とテストラベル」が必要であると認識しているのですが、

「訓練画像と訓練ラベル」そして「テスト画像とテストラベル」をそれぞれ具体的にどうやって対応させるのか。
ということが理解できておりません。

何卒ご教示のほどお願い申し上げます。

※色々なサイトを見ていると、この作業を「ラベル付け」と表現されているようですが、具体的にどういう作業を行えば良いのかイメージできておりません。(ラベル付けされたものが何か特別なファイル形式にする必要がある?1フォルダに1画像を入れて、フォルダ名と画像名を対応させる?)

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

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

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

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

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

guest

回答1

0

ベストアンサー

学習対象のデータ構造保存ファイル(データセット)の構造の2つに分けて説明したいと思います。

学習対象のデータ構造とは、機械学習の処理対象のデータ構造です。
MNISTでは「サイズ28*28で白黒256階調」の画像です。
また、1つの画像と1つのラベル(その画像が何を表しているか)は1対1で対応します。
たとえば「1っぽい画像」のラベル値は1になります。
この「画像」と「ラベル値」の対応付けは、一般的には人間が行う必要があります。
この画像とラベルの組が複数まとまったものがデータセットになります。

また、ここでのデータ構造(画像形式)は、全データセットで共通である必要があります。
もし異なるサイズなどの画像を用いたい場合は、あらかじめ28*28のサイズなりに正規化しておく必要があります。

ちなみにTensorFlow : Get Started : ML 初心者向けの MNIST
では、縦横2次元画像を、28*28=784個の要素数の1次元データ(=入力ノード)として扱っています。

次に保存ファイル(データセット)の構造とは、データセットをファイルなどの外部に保存するためのデータ構造です。
これは、データセットの提供者が自由に決めることができます。
たとえば、以下のようなテキストCSVファイルでもよいです。

# 画像データ=28*28=784個の1byte16進値, ラベル10進値 00,01,0F,...,E0,1 # 1画像+ラベルデータ 00,05,08,...,F1,2 :

また、MNINST,CIFAR-10の具体的なデータ(ファイル)構造については以下が参考になります。
MNINST :MNISTにおける入力データの詳細
CIFAR-10:TensorFlowでデータの読み込み ― 画像を分類するCIFAR-10の基礎

たとえばMNISTでは画像とラベルを別ファイルに持たせており、画像とラベルは順序位置で対応しています。

以上より、あなた専用のデータセットの読み書き処理を用意すれば、MNISTと同じように扱うことができることが理解いただけるかと思います。
どのようなコードを書けばよいかは、実際のコードtensorflow/tensorflow/contrib/learn/python/learn/datasets/mnist.pyなどが参考になります。

投稿2017/05/09 04:39

編集2017/05/09 04:50
can110

総合スコア38256

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

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

tarou_yamada

2017/05/10 04:14

ご回答ありがとうございます。 お示し頂いた tensorflow/tensorflow/contrib/learn/python/learn/datasets/mnist.py については、まだ理解に至っておりませんが、 MNISTやCIFAR-10やCSVでのラベル付けは なんとなくイメージが湧いてきました。 また、併せてお教えいただきたいのですが、 今、不良品フォルダと良品フォルダにそれぞれ分けられた JPEG形式の画像ファイルがありまして、 これらの画像にそれぞれ、「不良品」と「良品」のラベル付けをし、 機械に学習してもらいたいのですが、こういう場合はどういった方法でラベル付けができるでしょうか? その場合のコード例も、ご教示頂ければ幸いです。 何卒、よろしくお願い申し上げます。
can110

2017/05/10 04:31 編集

ラベル値は「不良品」=0、「良品」=1でよいと思います。 あとは各フォルダから画像を読込(+必要に応じて画像サイズや色の正規化)、それぞれの画像にフォルダにしたがったラベル値(0 or 1)を対応付けすれよいです。 画像をnumpy配列に読込むコードは [NumPyで画像処理](http://www.mwsoft.jp/programming/computer_vision_with_python/1_3_numpy.html) などが参考になります。
tarou_yamada

2017/05/11 03:11

ご回答ありがとうございます。 ''' あとは各フォルダから画像を読込(+必要に応じて画像サイズや色の正規化)、それぞれの画像にフォルダにしたがったラベル値(0 or 1)を対応付けすれよいです。 ''' のところなのですが、「それぞれの画像にフォルダにしたがったラベル値(0 or 1)を対応付けすれよいです。」というのはpythonのプログラム上で対応付けすればよいということでしょうか? またそうした場合、「どういうコードを書くことで、機械は画像とラベルが対応付けられていると判断できるのか」ということを疑問に感じました。 何卒、ご教示のほど、よろしくお願い申し上げます。 ※Tensorflowではないですが、 例えばkerasの場合(https://keras.io/ja/models/sequential/)fitメソッドというものがあり、その引数に入力データとラベルを指定することができるのですが、それらに画像とラベルのデータを入力することで、プログラム上、画像とラベルが対応付けられたことになるという認識でいいものでしょうか?
can110

2017/05/11 03:48

回答に提示した「Get Started」内のコードで説明すると mnist.train.labels がラベルです。 また、実際には(fitに相当すると思います)以下で対応づけられています。 sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys}) ここで、batch_xsが画像でbatch_ysがラベルです。 バッチなので100個のデータセットをnext_batch関数で一括取得して渡しているので分かりにくいですが。
tarou_yamada

2017/05/11 13:56

おお!ありがとうございます! この処理で対応付けられていたのですね! いろいろなサイトや本を見ても理解できず モヤモヤしていましたがすっきりしました! 他にもいろいろな知見を丁寧にご教示頂き助かりました。 またお世話になるかもわかりませんが、 その際は宜しくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問