===== (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 作成中