Python 機械学習 ディープラーニング

ディープラーニングとは

ニューラルネットワーク:人間の脳の神経細胞であるニューロンの動きを元にプログラム化。

ニューロンの動き:複数のデータを入力し、1つの出力結果を出す。それを模したプログラム=パーセプトロン

データ入力するときに重み付けを掛ける。それらを合計し、ある一定値(バイアス)以上なら1を出力、そうでないなら0を出力。

# ANDの例
def and_gate(x1, x2):
	w1  = 0.3 # 重み1
	w2  = 0.3 # 重み2
	b   = 0.5 # バイアス

	a   =  x1 * w1 + x2 * w2

	if  a  <=  b:
		y = 0
	else:
		y = 1

	return y # 出力

print(and_gate(1, 1))
# ORの例
def or_gate(x1, x2):
	w1  = 0.7 # 重み1
	w2  = 0.7 # 重み2
	b   = 0.3 # バイアス

	a   =  x1 * w1 + x2 * w2

	if  a  <=  b:
		y = 0
	else:
		y = 1

	return y # 出力

ディープラーニング

画像は多次元配列(Tensor)と見なすことができる。これを入力とし出力を出す。最終的にはいくつかの箱のうちのどれか1つが1になるように計算を行う。1になったところが正解となる。

例:28×28の画像に書かれた数字を何の数か認識する。28×28=784要素の配列と見なすことが出来る。これを最終的に10個の要素の配列にし、そのうちのどれかが1になる。

これを多重に行っていく。一番最初が入力層、最後が出力層と呼ばれる。中間が中間層(隠れ層)と呼ぶ。この中間層を大量に設けて処理するのがディープラーニング。

例:上の例で最初784要素の配列を4段階の層を使って最終的に10個の要素の配列にする。784→64→32→16→10 のように減らしていく。

画像認識

Tensorflow環境構築

ディープラーニングにも対応した機械学習ライブラリである「Tensorflow」の環境を構築する。

pip install "tensorflow~=2.0"
pip install "tensorflow-hub[make_image_classifier]~=0.6"

画像サンプルのダウンロード

http://download.tensorflow.org/example_images/flower_photos.tgz

以下のコマンドで解凍する。

tar -zxvf flower_photos.tgz

画像認識の機械学習実行

複数行でのコマンド実行のためPowerShellを使用。画像は C:\work\flower_photos にあるものとする。

make_image_classifier `
  --image_dir C:\work\flower_photos `
  --labels_output_file labels.txt `
  --tflite_output_file model.tflite `

labels.txtにラベルが、model.tfliteにTensorFlow Lite用のモデルファイルが出力される

Epoch:1回の学習。回数が多すぎると過学習を起こす。

accuracy 正解率

loss 損失関数の評価値:求めた答えと実際がどれだけずれているか

画像認識の実行

画像認識サンプルプログラムのダウンロード

label_image.py

画像認識の実行

判別したい画像をtest.jpgなどで用意し、label_image.pyのファイル名にセットする。

他画像ダウンロード

google_images_downloadのインストール

google_images_download.py

画像のダウンロード

python google_images_download.py -k "cat"

webでの利用の例

ソース