やりたいこと
以下のテキストでは、AIを用いた画像認識により対象物を分類し、ロボットアームにより仕分けを行っています。
上記テキストでは、仕分けを行う環境上で判別する対象物の学習データの収集を行っていますが、AIによる画像識別では、実動作環境以外で収集した画像データを学習に含めることもあると思います。
今回は、スマホのカメラで撮影した実動作環境ではない画像を学習データとし、判別が可能かを検証しました。
前提条件
- 以下の記事で修正したプログラムを使用し、カメラ画像全体を学習済モデルに入れて、判別結果を出力する形式を取っています。
- 対象物を置く位置(=DOBOTが対象物を拾いに行く座標)は固定
※ 切り出しをしない(領域を取得しない)ので対処物のカメラ座標が取得できないため
できたもの
判別対象
今回は対象物として、3種類の板ガムを使用しました。
学習データとして、以下のような画像を各種30枚程度集めました。
動作
問題なく判別は出来ていますが、やや確率が低めです。
学習データを増やすことで改善できるかもしれません。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F145092%2Fcc53958d-c1db-ec90-581a-4e602c4cded1.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=bfaead39676637fe9faf5c7af9cca6a2)
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F145092%2F767c5416-585b-7b31-5281-abf4582e15de.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=f025e60b92cc4fbe2dbf6041ca693b34)
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F145092%2F21d7e855-8977-01e1-83a9-d76ab5a88ea0.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=33d2b45613f55c1c5988a992c46aaa9a)
プログラム
撮影した画像の拡張子がjpgだったため、jpg画像も学習データとして読み込めるように以下の部分を追加しました。
(元々のプログラムではpng画像のみ)
train.py
+ print("png : ", len(glob.glob(dir1 + "/*.png")))
+ print("jpg : ", len(glob.glob(dir1 + "/*.jpg")))
files = glob.glob(dir1 + "/*.png")
+ files += glob.glob(dir1 + "/*.jpg")
random.shuffle(files)