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

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

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

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

Python

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

Q&A

解決済

1回答

2968閲覧

どのようにしてmnistデータやcifar10のピクセルには値が付いているのか

trafalbad

総合スコア303

機械学習

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

Python

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

0グッド

0クリップ

投稿2017/05/23 11:02

編集2017/05/26 01:16

googleから公開されているtensorflowのmnistデータセットやcifar10などの画像データはピクセルから構成されています(mnistなら28×28の784行列)。
質問1:詳細を見てみると画像データの各ピクセルごとに特徴のある値がありますが、googleはどのようにピクセルから値を出しているのでしょうか?

質問2:またmnistのように画像を1次元に変換するにはどうしたいいのでしょうか?

追記

下記はcifar10のdataですが、3072列のベクトルとして、各ピクセルに値が載っています。

unpickle("data_batch_1")['data'][0] >>array([ 59, 43, 50, ..., 140, 84, 72], dtype=uint8) len(unpickle("data_batch_1")['data'][0]) >>3072

おそらくピクセルの輝度値を数値化しているのだと思われるのですが、Qiitaでも同じような記述が出てきます

例えば、5x5の大きさの白黒の画像はこんな感じで表わせます。

[[0 3 3 8 6]
[5 7 8 0 1]
[1 8 7 1 4]
[2 0 8 1 5]
[9 9 5 7 4]]
つまり、画像の縦x横の大きさの配列に、ピクセルごとの明るさを格納すればいいわけです。>

また同様のものを載せたQiitaのページもあります
「特徴」とは画像ベクトルに格納されている数値(おそらくピクセルごとの明るさ)のことです。
このように白黒画像などをピクセルごとに行列に格納するやり方はどのようにすればできるのでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

おそらく以下とほぼ同様の質問(疑問)だと思いますので確認ください。
機械学習用のデータセットについて

上記を踏まえ簡潔に回答しますと

質問1:詳細を見てみると画像データの各ピクセルごとに特徴のある値がありますが、googleはどのようにピクセルから値を出しているのでしょうか?

疑問点がちゃんと把握できているか自信がありませんが。

MNISTの画像はモノクロ8bit階層28×28=784ピクセルで構成されています。
各ピクセルの値は、輝度(明るさ)を表しています。

MNIST For ML Beginners
で用いられている手法では、1画像を784次元(=個の要素を持つ)ベクトルとして扱います。
このベクトルの各要素の値は、ピクセル値=輝度がそのまま入ります。
つまりピクセル値=輝度をそのまま特徴(ベクトル)値として利用しています。

一方、機械学習をこれから始める人に押さえておいてほしいことでのブドウとリンゴの例
では、ピクセルの値をそのまま使うのではなく赤の濃さ青の濃さの2要素の特徴ベクトルで扱う例が挙げられています。
この場合は、画像から赤の濃さ青の濃さを抽出する処理が必要になります。

すなわち、何を特徴ベクトル値として採用するかはgoogle(=MNISTデータ提供者の意味?)ではなく
機械学習実行者が決めるべきことといえます。

質問2:またmnistのように画像を1次元に変換するにはどうしたいいのでしょうか?

コード詳細は
tensorflow/tensorflow/contrib/learn/python/learn/datasets/mnist.py
が参考になるかと思います。
2→1次元変換はnumpyreshapeなりで比較的簡単にできると思います。

投稿2017/05/25 08:27

編集2017/05/26 05:05
can110

総合スコア38262

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

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

trafalbad

2017/05/25 14:33

質問1に関してですがラベルではなく画像データを特徴づけるピクセルの値です。mnistなら各画像に合わせて適切な値が、784次元の各領域で表記されています。 これらは人力ではつけられないと思うので(画像の特徴に合わせてピクセルごとに値を振れない)。mnistにしてもcifar10にしても画像を特徴づけるためのピクセルの値はどのように割り振ってあるのでしょうか?
can110

2017/05/25 14:52

「画像データを特徴づけるピクセルの値」が何を指しているのかが分かりません。 mnistデータで、または万人にも分かりやすい画像データで具体的に示してください。 またその場合の「特徴」とは何かも説明をお願いします。
trafalbad

2017/05/25 23:40

質問欄に追記しました。回答宜しくお願いします
can110

2017/05/26 05:06

質問1の回答を修正しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問