スポンサーリンク

自前のデータでKerasで画像分類を写経してみる(2)

前回はりんごとオレンジの画像をGoogle画像検索で25枚ずつダウンロードして、Kerasで機械学習してみた。

http://twosquirrel.mints.ne.jp/?p=19448

今回は、画像の読み込み方法が、具体的にどのように処理されているのか見てみたい。
上記コードでは、読み込んだ画像を25×25 pixelに変換して、それをRGBのnumpy配列というものに変換しているらしい。
25x25x3の数字の配列を見るのは、ちょっと無理なので、簡略化のために、今回は、5×5 pixelにリサイズして機械学習を行い、実際に画像がどのような配列に変換されているのか、見てみる。

(参考)

Kerasによる、ものすごくシンプルな画像分類(りんごとオレンジ)
hiroeorz@github
2017年02月15日に更新
http://qiita.com/hiroeorz@github/items/ecb39ed4042ebdc0a957

(環境)
Windows 8.1
Anaconda 4.4.0
Python 3.6.1
Tensorflow 1.2.1
Keras 2.0.6

http://twosquirrel.mints.ne.jp/?p=19448

今回は、前回(上記)(1)~(3)の続きから行う。

(1)C:/python/ フォルダ下に、以下のフォルダを作成
data/train/apple   ←りんご画像20個をダウンロード
/train/orange  ←オレンジ画像20個をダウンロード
/test/apple   ←りんご画像5個をダウンロード
/test/orange   ←オレンジ画像5個をダウンロード

(2)Kerasで機械学習

下記コードをコピペして、Shift+Enter で実行。

https://gist.github.com/adash333/9a5f1df82169c3dd7c9218111d4cbd05

 

 

 

1分くらい待つ

前回、25×25 pixelに画像を変換していて、今回、5×5 pixelに変換したが、正解率は90%を維持。ほとんど、色しか見てないのかも。。。

で、とりあえず、画像処理をどのように行っているか可視化にトライしてみる。

numpy, transpose, reshape について、いろいろググってみて、以下のコードの結果を見て、なんとなく、少しだけ、雰囲気をつかむことが出来た気が、、、、、

(3)画像の読み込みと、予測。その経過の配列も記載。

mikan.jpg と、tomato.jpgをGoogle画像検索してダウンロードして保存。

以下のコードをコピペしてShift+Enter。

https://gist.github.com/adash333/fcf40b9f9b68b2da5701d6bfc4cfac9f

 

途中。

 

(参考)

Kerasによる、ものすごくシンプルな画像分類(りんごとオレンジ)
hiroeorz@github
2017年02月15日に更新
http://qiita.com/hiroeorz@github/items/ecb39ed4042ebdc0a957

(参考2)

画像をkerasに読み込ませる方法

画像をコンピューターに認識させるとき コンピューターが理解できるように変換する必要がある

画像の大きさ 例えば、縦24×横24の小さな正方形の集まりとして

それぞれの小さな正方形について、RGB red green blue の値が、0から255まで、256段階

これを、numpy配列に直して、数字の配列に変換することにより、初めて、kerasが、画像を認識することができるようになる。

具体的には、

from keras.preprocessing import image import numpy as np

のあと、、、、

Numpy配列というものを、ある程度、使えるようにしておく必要がある。 数学での行列とは微妙にことなるところがあるので、注意。

Numpy reshape transpose

編集

numpy

NumPyで画像処理
http://www.mwsoft.jp/programming/computer_vision_with_python/1_3_numpy.html

http://qiita.com/supersaiakujin/items/c580f2aae90818150b35
[Python]Numpyデータの並べ替え

https://deepage.net/features/numpy-transpose.html
2017-06-23 配列の軸の順番を入れ替えるNumPyのtranspose関数の使い方

Python – NumPyで画像を配列として取得する 投稿者: edo1z 投稿日: 09/27/2015
https://endoyuta.com/2015/09/27/python-numpyで画像を配列として取得する/

numpyのテンソル(配列)関係
http://oppython.hatenablog.com/entry/2014/01/05/004454

numpyの多次元配列の「軸を入れ換える」ということについての学習 ラベル: Python 2015年10月03日20時00分公開 2016年11月30日08時27分更新
https://p–q.blogspot.jp/2015/10/numpy.html?m=1
この解説が具体的で分かりやすい!しかし、これでと、軸とかいまいちよくわからない、

http://discexuno.wp.xdomain.jp/2016/10/21/pythonnumpytransposeを用いた3次元のデータの転置/
PYTHON [Python+Numpy]transposeを用いた3次元のデータの転置 2016年10月21日 ばいろん

http://python-remrin.hatenadiary.jp/entry/2017/05/10/183809
2017-05-10 NumPyの使い方(4) 形状変換と転置

http://sleeping-micchi.hatenablog.com/entry/2014/04/18/003935

多次元行列の転置 多次元行列の軸の入れ替え 多次元行列の軸の入れ換えとは、該当する要素の軸を入れ替えた新しい行列を作成すること

2次元行列の場合 2×3行列の場合 元の行列のa13を、新しい行列のb31に設定。 元の行列の全ての要素について同様の操作を行う すると、新しい行列のBは、3×2行列として出来上がる。 (絵の説明を入れたい)

3次元行列の場合 3x2x4行列の場合

http://qiita.com/secang0/items/1229212a37d8c9922901
行列による画像処理 基礎編&目次 ~Python画像処理の再発明家~ secang0 2017年04月05日に更新