Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
11
Help us understand the problem. What are the problem?
@akiphumi

がんばらない人のための画像検査機

Microsoft lobeでモデル作ってエクスポートして、SDTestをフロントエンドとして動かす、以上!
と言うわけで、MVTec異常検知データセットをlobeに食わせてみました。
2020-11-07_18h46_47.png
異常検知は@shinmura0さんの記事に触発されたと同時期くらいにSDTestがリリースされたこともあり、ローコストで画像検査機を開発できるなと感じたところから全俺の異常検知歴史が始まりました。

@daisukelabさんのMVTec異常検知データセットへの深層距離学習応用でモデルをいい感じに調教する手法もめっちゃ参考になります。colab上で学習すれば非力なマシンでもちゃんと学習できるし、うまくやれば本当に現場で使えるレベルのものになると確信していたものの、学習コストがやや高めというか、めんどくさいのがいまいちだなと思ってました。

そんな中、lobeのデモ動画をみて、これやんっ:bangbang:
https://youtu.be/Mdcw3Sb98DA

何がすごいって、モデルの作成が完全にノーコード。しかもどの程度の精度で、どの画像が推論ミスってるってところまで、わかりやすく表示される。学習ボタンとかなくて自動で学習始まるのもよき。追加学習も自動なの更によき。
2020-11-07_18h48_56.png
あってたら:white_check_mark:、間違ってたら:no_entry:で勝手に追加学習始まる
作成したモデルはエクスポートして、lobe-pythonで


from lobe import ImageModel
from PIL import Image

model = ImageModel.load('path/to/exported/model')
img = Image.open('path/to/file.jpg')
result = model.predict(img)

とやるだけで推論できちゃうので、勢い余ってSDTestに突っ込んでみました。
2020-11-07_19h04_51.png
lobe-pythonは、Python 3.6 on Windowsで動かなかったので、Anacondaで3.7で環境を作成しなおして、SDTestのrequirementsのバージョンを調整するなど。

###### Requirements with Version Specifiers ######
fbs[sentry] == 0.8.3
PyQt5 == 5.13.*
PyQtWebEngine == 5.13.*
PyInstaller == 3.4
tensorflow == 1.15.*
keras == 2.2.*

lobeはTensorflow-liteもサポートしていて、Raspberry Pi 4で動くと公式にある(Pi3はうまくいくときといかないときあるみたい)。SDTestも非公式だけどPi 4なら動いちゃったりします。

ロボットとかPLCとの連携は、connect_to_dobotブランチのsrc/main/python/model/serving_dobot.pyあたりを参考に、socketライブラリとかで通信すれば、周辺装置の方がたけーよっていうくらい激安かつ汎用性高めな、がんばらない人のための画像検査機、できちゃいます。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
11
Help us understand the problem. What are the problem?