この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
kerasで自前データで機械学習 [2017/08/02] adash333 [1.C:/python/ フォルダ下に、dataフォルダ以下を作成] |
kerasで自前データで機械学習 [2018/10/07] (現在) |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
===== (7)Kerasで自前データで機械学習 ===== | ===== (7)Kerasで自前データで機械学習 ===== | ||
+ | |||
+ | <html> | ||
+ | <iframe width="560" height="315" src="https://www.youtube.com/embed/SEVd0iervv8" frameborder="0" allowfullscreen></iframe> | ||
+ | </html> | ||
http://twosquirrel.mints.ne.jp/?p=19448 | http://twosquirrel.mints.ne.jp/?p=19448 | ||
ライン 40: | ライン 44: | ||
ファイル名はなんでもよい。 | ファイル名はなんでもよい。 | ||
画質もむちゃくちゃ。 | 画質もむちゃくちゃ。 | ||
- | |||
- | |||
- | |||
==== 2.Anaconda Promptを起動後、jupyter notebookの起動 ==== | ==== 2.Anaconda Promptを起動後、jupyter notebookの起動 ==== | ||
ライン 52: | ライン 53: | ||
画面右上の方の、「New」>「Python3」で新しいタブを開く | 画面右上の方の、「New」>「Python3」で新しいタブを開く | ||
+ | ==== 3.fruit.pyのコードをコピペして、Shift+Enter で実行。 ==== | ||
+ | 以下のコードをコピペして、Shift+Enterで実行。 | ||
- | ==== 3.fruit.pyのコードをコピペして、Shift+Enter で実行。\\ ==== | + | https://gist.github.com/adash333/20151dd19e3d3275edbd0b121e036c64 |
- | 以下のサイトの、fruit.py のコードをコピペして、Shift+Enterで実行。 | + | |
+ | 上記コードは、下記サイトの、fruit.py のコードを全部コピペして、最後に、モデル可視化のコードを加えたものです。 | ||
Kerasによる、ものすごくシンプルな画像分類(りんごとオレンジ) | Kerasによる、ものすごくシンプルな画像分類(りんごとオレンジ) | ||
http://qiita.com/hiroeorz@github/items/ecb39ed4042ebdc0a957 | http://qiita.com/hiroeorz@github/items/ecb39ed4042ebdc0a957 | ||
+ | 以上で、\\ | ||
+ | (1)約20枚ずつのりんごとオレンジの画像から学習(train)し、\\ | ||
+ | (2)その学習したモデルから、別の5枚のりんご画像と5枚のオレンジ画像を、りんごかオレンジかを予測させてみた\\ | ||
+ | (3)今回は、その10枚の予測の正解率は100%であった\\ | ||
+ | [[http://twosquirrel.mints.ne.jp/wp-content/uploads/2017/07/image-326.png|結果の図の例]]\\ | ||
+ | ということになります。 | ||
+ | |||
+ | (動画の解説はここまで) | ||
+ | |||
+ | ==== メモ ==== | ||
- | https://gist.github.com/adash333/20151dd19e3d3275edbd0b121e036c64 | ||
さらに、以下を組み合わせたい | さらに、以下を組み合わせたい | ||
ライン 97: | ライン 110: | ||
print(result) | print(result) | ||
</code> | </code> | ||
+ | |||
+ | 上記コードを少し変更 | ||
+ | |||
+ | <code> | ||
+ | # original code from http://yujikawa11.hatenablog.com/entry/2017/01/09/153436 | ||
+ | |||
+ | from keras.preprocessing import image | ||
+ | import numpy as np | ||
+ | import sys | ||
+ | |||
+ | filepath = "./pikachu.jpg" | ||
+ | image = np.array(Image.open(filepath).resize((25, 25))) | ||
+ | print(filepath) | ||
+ | image = image.transpose(2, 0, 1) | ||
+ | image = image.reshape(1, image.shape[0] * image.shape[1] * image.shape[2]).astype("float32")[0] | ||
+ | result = model.predict_classes(np.array([image / 255.])) | ||
+ | print("result:", result[0], "(0:りんご, 1:オレンジ)") | ||
+ | </code> | ||
+ | |||
+ | さらに変更 | ||
+ | <code> | ||
+ | テスト | ||
+ | </code> | ||
+ | |||
+ | https://gist.github.com/adash333/15d9b33eef7a00f993bbc32a168f6ca0 | ||
+ | |||
===== 画像をkerasに読み込ませる方法 ===== | ===== 画像をkerasに読み込ませる方法 ===== | ||
ライン 114: | ライン 153: | ||
これを、numpy配列に直して、数字の配列に変換することにより、初めて、kerasが、画像を認識することができるようになる。 | これを、numpy配列に直して、数字の配列に変換することにより、初めて、kerasが、画像を認識することができるようになる。 | ||
+ | |||
+ | 具体的には、 | ||
+ | |||
+ | from keras.preprocessing import image | ||
+ | import numpy as np | ||
+ | |||
+ | のあと、、、、 | ||
+ | |||
+ | Numpy配列というものを、ある程度、使えるようにしておく必要がある。 | ||
+ | 数学での行列とは微妙にことなるところがあるので、注意。 | ||
+ | |||
+ | Numpy | ||
+ | reshape | ||
+ | transpose | ||
+ | http://www.mathgram.xyz/entry/keras/preprocess/img | ||
+ | |||
+ | |||
+ | |||
+ | ===== 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次元行列の場合 | ||
+ | 2x3行列の場合 | ||
+ | 元の行列のa13を、新しい行列のb31に設定。 | ||
+ | 元の行列の全ての要素について同様の操作を行う | ||
+ | すると、新しい行列のBは、3x2行列として出来上がる。 | ||
+ | (絵の説明を入れたい) | ||
+ | |||
+ | 3次元行列の場合 | ||
+ | 3x2x4行列の場合 | ||
+ | |||
+ | http://qiita.com/secang0/items/1229212a37d8c9922901\\ | ||
+ | 行列による画像処理 基礎編&目次 ~Python画像処理の再発明家~ | ||
+ | secang0 | ||
+ | 2017年04月05日に更新 | ||
+ | |||
+ | 作成中 | ||
+ | |||
ライン 124: | ライン 245: | ||
https://librabuch.jp/blog/2013/05/python_pillow_pil/\\ | https://librabuch.jp/blog/2013/05/python_pillow_pil/\\ | ||
Python 3.5 対応画像処理ライブラリ Pillow (PIL) の使い方 | Python 3.5 対応画像処理ライブラリ Pillow (PIL) の使い方 | ||
+ | |||
+ | http://aokiji.science/blog/?p=219\\ | ||
+ | Pythonで画像処理 | ||
+ | 2015-04-17 画像の切り出しなど | ||
today 2013-05-06 Mon person Takahiro Ikeuchi | today 2013-05-06 Mon person Takahiro Ikeuchi |