画像異常検知のデモ機「AIビー玉選別機」を作ってみた
この正月休みの3日間を費やし、タイトルにあるようなマシーンを構築してみました。
なんだか妙なマシンですが、なにせ百均+自宅にある余りもので製作したマシンなので、手作り感満載です。
使った電子機器は、Raspberry Pi 4とPCA9685。Raspberry Piで10個のサーボモーター動かしてみた: EeePCの軌跡の記事以来、お世話になっているボードです。
で、今回使ったのはこれ。
単色のビー玉と、模様付きのビー玉。
これを、画像認識でより分けます。
が、ごらんの通り、単色ビー玉の方が数が多い。
この不均質な画像データで、単色ビー玉に混じった模様付きビー玉を選り分けよう、というのが今回の狙い。
というわけで、せっせと撮影して教師データを作ります。単色ビー玉が88枚、模様付きビー玉が15枚でした。
ちなみに、ベースにしたコードは、以下にあります。
GitHub - chocolat-nya/Imbalanced_Image_Anomaly_Detection
例えば、1000個に一個の不良しか出ない製品の不良品検知をやろうと思ったら、どうしても画像が不均質になります。つまり「正常」の写真ばかりの中に、「異常」が少し、という状態に。
こういう課題を解決するのに、使えるコードです。
もっとも、ここから推論用コードも作り、かつRaspberry Pi 4で制御する形にするにはいろいろとやったのですが・・・今回、省略します。
いくつか、工夫のいくつかを見せます。まずは、ビー玉を受け取り、カメラで撮影するカップの中身。
ここには、円すい型のプラバンを入れております。
これで、安定してビー玉が真ん中に来ますね。
ついでに言えば、教師データを変えれば、ビー玉以外にも使えそう。汎用性の高さというのも、今回の工夫の一つです。
ビー玉を供給するところは、子供のおもちゃの廃品を使いました。
こんな感じにビー玉を装填し、
まず一つ目のサーボがオレンジ色のゲートを開けて、
2つ目のサーボが赤色のゲートを開けることで、一つのビー玉だけを送り込むことができます。
で、「正常」品である単色ビー玉が来ると、カップが左に回り、
「異常」品の模様ビー玉が来ると、カップは右に回ります。
何度か試しましたが、ほぼ100%識別できました。
ちなみに、推論時間は7、8秒です。もうちょっと速いといいんですけどね。
Raspberry Pi用カメラがしょぼいので、昼夜の明るさ違いでかなり色合いが変わって識別しづらくなったため、明るさ違いをなくすためにLEDライトをつけてみたり、Raspberry Piでも現実的に動くようにパラメータをいじってみたりと、いろいろやりました。
また、ビー玉を送るところは、例の廃品おもちゃを継ぎ足して、10個程度を装填できるようにしてます。
いずれは会社に持ち込んで、何かのデモンストレーション用にと考えております。
AIだのなんだのと言われても、ピンとこない人が多いですからね。
なので、物で見せるというというのが一番効果的じゃないかと。
Raspberry Pi用に作ったので、他にもいろいろと転用できそうです。しかも、安さもアピールできます(合計で1万円以下です。一番高いのは、Raspberry Pi 4の7700円)。
ここでは4を使いましたが、3 B+でもいけそう。ただし、速度がちょっと遅くなりますが。
果たしてこのデモ機、日の目を見るのか見ないのか・・・
« AKIBA PC Hotlineの2019年のアクセスランキング発表 | トップページ | 小学館Neoメーカー »
「Raspberry Pi・Arduino・電子工作」カテゴリの記事
- 名古屋 大須へ行ってきました(2024.04.28)
- Raspberry Pi 5用電源購入(2024.04.19)
- Interface 2024年5月号はRaspberry Pi 5特集(2024.03.26)
- Raspberry Pi 5とPCがつながらなかった理由は「プライバシーセパレーター機能」のせいでした(2024.03.12)
- Raspberry Pi 5に日本語LLM(ELYZA-Japanese-Llama-2-7b-fast-Instruct)を入れてみた(2024.03.10)
コメント
« AKIBA PC Hotlineの2019年のアクセスランキング発表 | トップページ | 小学館Neoメーカー »
頭であれやこれやと思う事も大事ですが
アウトプットして実際にどうなるかの経験値は
はるかに大きいものですよね。いくら説明しても
土台の無い方々へはインパクト大事ですものね。
OKだったビー玉にマジックで少し色をつけたり
してもらってどう動くかなんかを見せれば自動化
されているのも納得してもらえそうです。
投稿: mokekyo | 2020年1月10日 (金) 21時10分
あぁっ!
コレですよ!
コレ!
均一な傾斜のV字溝に「対象の粒」を転がす>
対象の粒を撮影>
V字条件に適合しない>圧縮空気で吹き飛ばす
V字溝を飛ばされなかった粒:適合
飛ばされた粒:不適合
という選別が出来るはずです。
たとえば、
虫食いの小豆粒や大豆を弾き分ける
温暖化で白濁した米粒を分ける
珈琲豆(生豆、焙煎後)を形状や色で分ける
等々数をこなすと人間にはつらい仕事。
機械に向いた仕事と思います。
AIを加えなければ判別が難しいと思います。
投稿: enutea | 2020年1月11日 (土) 01時13分
> mokekyoさん
そうですよね、百聞は一見にしかず、です。というわけで、作ってみました。
今考えているのは、「ビー玉以外にも使える」構想ですね。個人的にやってみたいのは、米粒を分けることです。綺麗な米粒だけで炊いたご飯は美味い、という話らしいので。
他にも、コーヒー豆やナットなど、カップに収まりさえすればなんでもできそうです。供給側の装置の工夫をしないといけませんが。
投稿: arkouji | 2020年1月11日 (土) 06時58分
> enuteaさん
実は一番やりたいのが、米粒なんです。昔、美味しんぼでやってたらしいですが、米粒の揃ったお米でご飯を炊くと美味いらしいです。
https://www.google.co.jp/amp/s/rocketnews24.com/2014/11/14/509472/amp/
それを実際にやったサイトがこちら。手作業でやることの大変さはよく伝わってきます。
実はすでに自動化されてます。
https://twitter.com/kawanky/status/1157588617671270400?s=21
が、私のマシーンの売りは、ビー玉でもコーヒー豆でもお米でも使えるというところなんですけど。教師データと供給装置があれば、の話ですが。
投稿: arkouji | 2020年1月11日 (土) 07時07分