MENU

2021-02-01から1ヶ月間の記事一覧

アフィン変換 opencv

アフィン変換とは画像を回転させたり、拡大縮小させたり、平行移動をまとめて3✖️3の行列を使って変換することをアフィン変換という。 opencvのcv2.getRotaionMatrix2D()ではアフィン変換に使用する、画像の回転に必要なアフィン行列を作成している。引数には…

画像データの水増し opencv

写真のデータ数が少なく判定精度が悪くなってしまう場合には画像データを回転させたり、反転させることでデータを水増しできる。コンピューターにとっては元の画像と全く異なる画像と認識される。 実行結果 このプログラムでは一つの画像を回転させて描画し…

Flickr APiで取得した画像データをCNNを利用して判定

hanamichi-sukusuku.hatenablog.com 今回は上記でnumpy形式に変換したFlickr APIで取得した画像データを使って、CNNで機械学習にかけていく。 モデルを別ファイルに定義 cnn_model.py モデルでは畳み込み、畳み込み、プーリング、ドロップアウト、この流れを…

Flickr APIで取得した画像データをNumpy形式に変換してファイルに保存

Flickr APIで取得した画像データから関係のない画像を削除してクリーニングしたデータをnumpy形式のデータに変換してファイルに保存していく。 Flickr APIを使用して画像の取得に関しては下記の記事で取得している。 hanamichi-sukusuku.hatenablog.com 実行…

python Flickr APIの使用

前提として、yahoo.comのアカウント作成とFlickr APIのページでKeyとSecretを生成し、FlickrAPIを使用するのに必要なモジュール(flickrapiモジュール)をインストールした状態で始める。あと、imageディレクトリも作成しておく。 実行結果 imageディレクトリ…

作成したデータベースのデータを機械学習にかける

モデル構築 実行結果 MLPモデルのファイルが保存される。 hanamichi-sukusuku.hatenablog.com 扱うデータは上記で作成。 in_sizeで入力数を定義。ラベルデータとして体型の値を使用するので出力数に6を定義。 モデルの重みファイルの保存 実行結果 学習済み…

python データベース(RDBMS)を作成しデータを格納。

実行結果 hw.sqlite3というデータベースファイルが生成される。実際の機械学習のプログラムにおいてはデータベースでのデータを使用することがほとんどなのでデータベースを連携させ、機械学習を行えるようにデータベースの生成から学んでいく。 上記コード…

webサービスにおける学習データについて

webサービスにおける学習データについて 現在では多くのサービスで機械学習システムを導入しているが、そのシステムが活躍する上で一番難しいところが「一度作って終わりではない」という点にある。日々、新しい投稿が行われ、分類精度が低下してしまうから…

APIを呼び出すwebアプリの作成

index.html 実行結果 今回のプログラムでは hanamichi-sukusuku.hatenablog.com 上記で作成した機械学習の機能を持つwebサーバーを使用して、APIを呼び出すwebアプリを作成していく。 webサーバーでは既にURLで渡されたパラメーターを機械学習にかけるように…

機械学習の機能を持つwebサーバーの作成

webサービスに機械学習のシステムを組み込むためにはwebサーバーと機械学習サーバーを異なる形で動かすことやwebサーバー内で機械学習のシステムを持たせる方法になどによってwebサービスに機械学習のシステムを組み込むことができる。 今回はまず、pythonで…

文章を指定してTF-IDFに変換しディープラーニングで判定

実行結果 このプログラムではMLPを利用して文章を指定しどんなジャンルの文章なのか判定するプログラム。 インポートしているtfidfモジュールは下記のリンクで作成したものを使用する。 TF-IDFの手法でモジュール作成 - hanamichi_sukusukuのブログ 独自テキ…

NaiveBayesでTF-IDFで作成したデータベースを学習

実行結果 このプログラムではNaiveBayes(ナイーブベイズ)を利用してTF-IDFのデータベースを学習している。 TF-IDFのデータベースを読み込む data = pickle.load(open("text/genre.pickle", "rb")) y = data[0] # ラベル x = data[1] # TF-IDF hanamichi-suk…

文章をTF-IDFのデータベースに変換

このプログラムではlivedoorニュースコーパスを利用する。 スポーツ、IT、映画、ライフの4つに分けたデータベースを生成する。 実行結果 genre.pickleというファイルにTF-IDFに文章を変換したデータを格納し保存する。 tfidfモジュール内で生成した単語辞書…

TF-IDFの手法でモジュール作成

TF-IDFとは BOW(Bag-of-Words)のように文章をベクトルデータに変換する手法のこと。BOWの手法では単語の出現頻度によって文章を数値化していた。TF-IDFでは単語の出現頻度に加えて、文章全体における単語の重要度も考慮するもの。TF-IDFは文書内の特徴的な単…

CNNでカタカナ文字の分類

MLPでの学習結果と見比べてみる。 hanamichi-sukusuku.hatenablog.com 上記の記事でMLPの簡単なモデルでの結果を出力している。 実行結果 MLPでの評価結果は約90%だったのに対してCNNでの評価結果は約96%と高いものになった。 必要な値の定義と画像データの…

カタカナ画像のデータを簡単なニューラルネットワークで分類

実行結果 比較的高い結果を得ることができた。 必要な値の定義、画像データ読み込み import numpy as np import cv2, pickle from sklearn.model_selection import train_test_split import keras # データファイルと画像サイズの指定 --- (*1) data_file = …

ETLデータベースの画像をラベルデータと画像データに分けて保存

実行結果 hanamichi-sukusuku.hatenablog.com このプログラムでは上記でETL1のデータベースから読み込んだカタカナ手書き文字のデータをラベルデータと画像データに分けて保存していく。 保存先や画像サイズの指定 out_dir = "./png-etl1" # 画像データがあ…

ETL文字データベースを画像に変換

実行結果 実行するとカタカナの画像データが複数のディレクトリに保存されている。 保存先のディレクトリの作成 outdir = "png-etl1/" if not os.path.exists(outdir): os.mkdir(outdir) ETLデータの中身のファイル名を全て取得 files = glob.glob("ETL1/*")…

CNNを利用して作成した重みデータを保存し、そのデータで画像の判定

from keras.models import Sequentialfrom keras.layers import Dense, Dropout, Activation, Flattenfrom keras.layers import Conv2D, MaxPooling2Dimport matplotlib.pyplot as plt im_size = 32 * 32 *3num_classes = 10im_rows = 32im_cols = 32in_shap…

CIFAR-10の分類をCNNで判定

MLPを使った分類では0.47の正解率だったので、2回に1回以上は期待と違う答えが出ることになる。そこで畳み込みニューラルネットワークを使って、分類問題を解いてみる。 import matplotlib.pyplot as plt import keras from keras.datasets import cifar10 f…

MLPでCIFAR-10のデータを分類

CIFAR-10はkerasでダウンロードできるデータセットで、飛行機や車、鳥、猫などの10カテゴリーの写真6万枚が入っている。約8000万枚の画像が「80 Million Tiny images」というWEBサイトで公開されているが、そこから6万枚の画像を抽出し、ラベル付けしたデー…

CNNの仕組みを使ってMNISTのデータを機械学習にかける

import kerasfrom keras.models import Sequentialfrom keras.layers import Dense, Dropout, Flattenfrom keras.layers import Conv2D, MaxPooling2Dfrom keras.optimizers import RMSprop from keras.datasets import mnistimport matplotlib.pyplot as pl…

CNN(畳み込みニューラルネットワーク)

hanamichi-sukusuku.hatenablog.com 上記ではMLPを使用することで比較的高い正解率を叩き出すことができた。しかし、CNN(畳み込みニューラルネットワークを利用することで、より高い精度を出すことができる。 CNNとは畳み込み層(convolution layers)とプーリ…

MLP(多層パーセプトロン)のアルゴリズムを利用してMNISTの分類

# MLPでMNISTの分類問題に挑戦 import keras from keras.models import Sequential from keras.layers import Dense, Dropout from keras.optimizers import RMSprop from keras.datasets import mnist import matplotlib.pyplot as plt # 入力と出力を指定 …

kerasで手書き数字の判定

実行結果 このプログラムではTensorFlowを用いて手書き数字の判定を行っていく。 MNISTデータの読み込み import keras from keras.datasets import mnist from matplotlib import pyplot (X_train, y_train), (X_test, y_test) = mnist.load_data() for i in…

TensorFlowでアヤメ分類

実行結果 このプログラムではTensorFlowを用いてアヤメのデータを学習させて、その結果を出力するもの。 アヤメデータの読み込み iris_data = pd.read_csv("iris.csv", encoding="utf-8") pandasモジュールはデータ処理の利用するライブラリーで、ここではcs…

TensorFlowでニューラルネットワークのモデルを視覚化

hanamichi-sukusuku.hatenablog.com tensorflowにはニューラルネットワークのモデルを視覚化するための便利なツールも用意されており、今回はこれを利用して作成したデータを図で確認してみる。 上記のリンクで作成されているプログラムにコードを書き加えて…

TensorFlowを使ってジャンケンデータを学習する

実行結果 hanamichi-sukusuku.hatenablog.com このプログラムではTensorFlowを用いて上記で作成したジャンケンの勝敗データを学習させるプログラムである。 tensorflowとは 機械学習を行うライブラリーで、機械学習やディープラーニングが実践できるが、それ…

ジャンケンの勝敗データ作成

このプログラムではジャンケンの勝敗データを作成し、データファイルに保存するもの。 ジャンケンの公式を定義 judge = lambda a, b: (a - b + 3) % 3 lambdaは無名関数。 lambda 引数: 返り値 という形で書く。 これを関数で表すと def func(引数): return …