===== (7)Kerasで自前データで機械学習 =====
http://twosquirrel.mints.ne.jp/?p=19448
自前のデータでKerasで画像分類を写経してみる(1)
2017/7/31
以下のサイトのコードをコピペです。(このような分かりやすい解説に大感謝です。)
Kerasによる、ものすごくシンプルな画像分類(りんごとオレンジ)
hiroeorz@github
2017年02月15日に更新\\
http://qiita.com/hiroeorz@github/items/ecb39ed4042ebdc0a957\\
{{:pasted:20170802-221714.png}}
Google検索でりんごとオレンジの画像をそれぞれ25枚ずつゲット(ダウンロード)してくれば、私にもできました!
(環境)
Windows 8.1
Anaconda 4.4.0
Python 3.6.1
Tensorflow 1.2.1
Keras 2.0.6
==== 手順 ====
1.C:/python/ フォルダ下に、dataフォルダ以下を作成\\
2.Anaconda Promptを起動後、jupyter notebookの起動\\
3.fruit.pyのコードをコピペして、Shift+Enter で実行。\\
http://qiita.com/hiroeorz@github/items/ecb39ed4042ebdc0a957
==== 1.C:/python/ フォルダ下に、dataフォルダ以下を作成 ====
data/train/apple ←りんご画像約20個をダウンロード
/train/orange ←オレンジ画像約20個をダウンロード
/test/apple ←りんご画像約5個をダウンロード
/test/orange ←オレンジ画像約5個をダウンロード
この4つのフォルダを作成し、
Google画像検索で出てきた画像を、
それぞれダウンロード。
ファイル名はなんでもよい。
画質もむちゃくちゃ。
==== 2.Anaconda Promptを起動後、jupyter notebookの起動 ====
WindowsのスタートボタンからAnaconda Promptを起動後、
jupyter notebook
と入力して、jupyter notebookを起動
画面右上の方の、「New」>「Python3」で新しいタブを開く
==== 3.fruit.pyのコードをコピペして、Shift+Enter で実行。 ====
以下のコードをコピペして、Shift+Enterで実行。
https://gist.github.com/adash333/20151dd19e3d3275edbd0b121e036c64
上記コードは、下記サイトの、fruit.py のコードを全部コピペして、最後に、モデル可視化のコードを加えたものです。
Kerasによる、ものすごくシンプルな画像分類(りんごとオレンジ)
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|結果の図の例]]\\
ということになります。
(動画の解説はここまで)
==== メモ ====
さらに、以下を組み合わせたい
Kerasで画像分類を試してみる170109\\
http://yujikawa11.hatenablog.com/entry/2017/01/09/153436\\
{{:pasted:20170802-221804.png}}\\
→求めていたのはこれ!
上記サイトのソースコードを以下にコピペ。
# code from http://yujikawa11.hatenablog.com/entry/2017/01/09/153436
from keras.applications.vgg16 import VGG16, preprocess_input, decode_predictions
from keras.preprocessing import image
import numpy as np
import sys
"""
ImageNetで学習済みのVGG16モデルを使って入力画像を予測
"""
# モデルの読み込み
model = VGG16(weights='imagenet')
# 入力画像のロード
filename = "./dog.jpg"
img = image.load_img(filename, target_size=(224, 224))
# 入力画像の行列化
x = image.img_to_array(img)
# 4次元テンソル
x = np.expand_dims(x, axis=0)
# 予測
preds = model.predict(preprocess_input(x))
results = decode_predictions(preds, top=5)[0]
# 結果出力
for result in results:
print(result)
上記コードを少し変更
# 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:オレンジ)")
さらに変更
テスト
https://gist.github.com/adash333/15d9b33eef7a00f993bbc32a168f6ca0
===== 画像を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
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日に更新
作成中
===== PIL(Pillow) =====
PIL
PIL(Python Imaging Library)
https://librabuch.jp/blog/2013/05/python_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
http://www.mwsoft.jp/programming/computer_vision_with_python/1_1_pil.html\\
Pillow(Python Imaging Library)のインストールと簡単なサンプルコード
http://qiita.com/Tatejimaru137/items/44646c9bb3799768fa81
http://www.lifewithpython.com/2013/09/pil.html?m=1
===== keras, model Predict =====
https://teratail.com/questions/78782\\
kerasで学習したモデルを実際に試す方法
cloudspider
2017/06/02 20:18 投稿
Kerasで画像分類を試してみる170109\\
http://yujikawa11.hatenablog.com/entry/2017/01/09/153436\\
→求めていたのはこれ!
https://www.google.co.jp/url?sa=t&source=web&rct=j&url=https://www.slideshare.net/mobile/yasuyukisugai/3nnkeras&ved=0ahUKEwjjgueEo7bVAhXKJZQKHfoJDMc4ChAWCCwwBA&usg=AFQjCNE5Hev5h7APupU2mfRTOWVW_8-Pdg\\
mnistで、自分の画像を画像処理するコードの記載がある!
http://qiita.com/tsunaki/items/608ff3cd941d82cd656b
keras(tensorflow)で花の画像から名前を特定
tsunaki
2017年02月03日に更新
Keras tips: 様々な画像の前処理をカンタンにやってくれる
20191115\\
keras.preprocessingのまとめ\\
http://www.mathgram.xyz/entry/keras/preprocess/img
【超初心者による】Keras(Tensorflowベース)でCNNを使った画像認識
rinigo
2017年03月29日に投稿\\
http://qiita.com/rinigo/items/66cf94abf7c665a0c7e2
→画像の前処理については、これが一番わかりやすいかも。
KerasでImageNetのハンバーガーと自転車を分類した
http://qiita.com/juntaki/items/9a13a3d2217ca223cf03
KerasによるVGG-16を用いた画像分類
Home keras KerasによるVGG-16を用いた画像分類
最終更新: 2017-03-20 15:40\\
https://kivantium.net/keras-vgg16
===== chainerの場合 =====
chainerで画像を読み込む際のtips\\
http://qiita.com/ysasaki6023/items/fa2fe9c2336677821583
作成中