機械学習TensorFlowを使ったコーヒー豆の分類

機械学習TensorFlowを使ったコーヒー豆の分類

IRU KIKAI
IRU KIKAI (ID4089) 2018/08/25
0

ハンドピック作業の自動化を目指して、コーヒー豆を分類するプログラムを作りました。
Googleが公開している機械学習ライブラリ「TensorFlow」を使って、
「表面xOK」「表面xNG」「表面xOK」「裏面xNG」の4種類の分類に挑戦しました。

元となる画像を集める

独自開発のコーヒー豆画像撮影装置を使って、約3,000枚のコーヒー豆の画像を撮影しました。
裏と表、それぞれのOKとNGの合計4種類に分類し、教師データとして、学習させます。
ちなみに、それぞれの画像数は、
表面xOK :1300枚
表面xNG : 400枚
裏面xOK :1000枚
裏面xNG : 300枚 です。
これらの画像の分類は手作業です。

TensorFlowのコード

教師データをもとに下記コードで学習させます。
コードの中身は完全に理解できているわけではないので説明できません。
それでも、それなりに学習ができました。
500epochでAccuracyが99%近くまで到達しました。

画像サイズ:64x64pxl
使用PC : iMac Mid 2011 2.5 GHz Intel Core i5 メモリ12GB

model = tf.keras.Sequential()
model.add(tf.keras.layers.Conv2D(filters=64, kernel_size=5, padding='same', activation='relu', input_shape=(64, 64, 1)))
model.add(tf.keras.layers.MaxPooling2D(pool_size=2))
model.add(tf.keras.layers.Dropout(0.3))
model.add(tf.keras.layers.Conv2D(filters=32, kernel_size=5, padding='same', activation='relu'))
model.add(tf.keras.layers.MaxPooling2D(pool_size=2))
model.add(tf.keras.layers.Dropout(0.3))
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(256, activation='relu'))
model.add(tf.keras.layers.Dropout(0.5))
model.add(tf.keras.layers.Dense(10, activation='softmax'))

テスト結果

トップの画像が分類前の画像です。
分類前の3000枚を、学習モデルを使って再分類しました。
一部間違って分類されている豆もありますが、初回としては予想を超える結果となり、さすが機械学習と思いました。

参考にしてくれた記事

記事が登録されていません。
この記事を参考にして、新しく記事を投稿しよう!

違反について