ディープラーニングを使った異常検知

異常検知はエッジコンピューティング(Vol.6)

  • 2018.10.01
  • 株式会社システムインテグレータ
異常検知はエッジコンピューティング(Vol.6)

Google Cloud Machine LearningやMicrosoft Cognitive Servicesのように、ビッグカンパニーのクラウドAIサービスが競い合っているので、人工知能というとクラウドサービスで提供されるというイメージがあります。でも、これはあくまでも音声認識や機械翻訳、テキスト分析など入力データが”人手”によるものが中心で、IoTとAIという組み合わせで考えた場合、現場のIoTと雲の上のクラウドは距離が離れすぎていていろいろな支障が出てきます。そこでさっそうと登場したのがエッジコンピューティングというわけです。

エッジコンピューティングとは

エッジコンピューティングとは、現場の近くに人工知能処理するコンピュータを置くネットワーク・コンピューティング技法です。雲の上に人工知能処理するコンピュータがあるクラウドコンピューティングと対局にある言葉ですね。

図1は、その2つを対比させたものです。クラウドコンピューティングでは「機械学習」も「判定処理」も「分析」もクラウドで行うのに対し、エッジコンピューティングは「機械学習」と「分析」はクラウドで処理しますが、「判定処理」をエッジコンピュータで行っています。

1

図1:クラウドコンピューティングとエッジコンピューティング

人工知能(AI)に関するお役立ち資料

なぜ、エッジコンピューティングが必要なのでしょうか。その鍵となるキーワードはIoT(Internet of Things)です。すべてのものをインターネットにつなぐIoTの時代となり、体重計やスピーカー、テレビ、カーナビなど私達の身の回りのものが次々とネットにつながり便利になりました。IoTはこうしたB to C(消費者向け)だけでなく、B to B(企業向け)でも急速に広まっていて、工場の中の機械や装置もネット接続型のものが続々登場しています。

AIは大量データが欲しい、IoTは大量にデータを出力する。おお、なんという相思相愛なのでしょうか。まるでハマちゃんとみち子さん、ボルボとジョディー、デヴィ夫人と出川哲朗のようです。ということで相性の良いAIとIoTは、よく組み合わされて使われるようになったのですが、そうなると愛し合っているモノ同士が遠く離れることが許されなくなるのです。

なぜ、遠距離恋愛がダメなのかを画像を使った異常検知の例で説明しましょう。この場合のIoT端末はマシンビジョンカメラで、フレームレートは3FPSだとしましょう。3FPSということは1秒間に3枚ずつ写真が撮られているわけですが、このような大量画像をいちいちクラウドに送っていたら、インターネットトラフィックが膨大になりますし、クラウドコストもかさみます。

また、速度や信頼性(ロバスト性)の面でも不安です。インターネット回線は高速ではないので、「あ、これ異常!」と判定して自動処置をしようとしたときに間に合わない恐れがあります。また、インターネットが不安定になって一時的に異常検知できずに製造ラインを止めたりしていたら大損害です。セキュリティ上、生産ラインの機密データをクラウドに置かないというポリシーの会社もダメですね。遠距離恋愛は続かないとよく言われますが、IoT × AI という組み合わせを考えた場合、インターネット越しの遠距離恋愛も決してうまくいかないのです。

エッジコンピューティングの構成

エッジコンピューティングがどのようなネットワーク構成でどう処理するかを図2の例で説明しましょう。Vol.5で説明したようなマシンビジョンカメラにはUSB端子がついており、これをエッジコンピュータ(エッジ端末)に接続することで電源が供給されつつ画像を送信できます(パソコンにスマホをつないだときと同じ要領です)。

2
図2:エッジコンピューティングの構成例

ここではクラウドとエッジをネットでつなぎ、クラウド上で学習された分類器をクラウドからエッジコンピュータに直接デプロイしている想定ですが、日本では情報をクラウドに預けるのに抵抗のある企業も多いので、クラウドではなくオンプレミスサーバーやプライベートデータセンターで学習しているケースも多くあります。

エッジコンピュータにデプロイ(利用可能な状態にすること)された学習済分類器は、続々と送られてくるカメラ映像から製品をオブジェクト検知し、その製品が正常か異常かを判断します。エッジコンピュータと管理サーバーはLANで接続され、エッジからサーバーにオブジェクト検知画像、オリジナル画像、ヒートマップ画像、正常異常判定などの情報が渡されます。

異常発見時にラインを止めたり、異常品をはじき飛ばしたりする制御装置に対して、ここでは管理サーバーから異常品対処コマンドを出していますが、エッジコンピュータから直接制御装置にコマンドを出す方式も一般的です。

ここで示した構成はあくまでも1つの例です。管理サーバーを置かずにエッジコンピュータだけで処理する場合もあれば、複数ラインを1つのエッジコンピュータで対応する場合もあります。現場ごとに最適なネットワーク構成は異なるのですが、ソフトウェアをきちんとコンポーネント化しておくことにより柔軟な対応が可能となります。

【麻里ちゃんのAI奮闘記】エッジコンピュータってなんなの? 

img

麻里:異常検知に使うカメラのとき普通の一眼レフカメラを想像していたらマシンビジョンカメラだったでしょう。エッジコンピュータってのもなんか特別のコンピュータなのかしら。
先輩:いや、画像分析するので処理能力は高くなければならないけど、取り立てて特別ってことはないよ。
麻里:じゃあ、先輩のコンベアの横に付いているのは、どんなエッジコンピュータですか。
先輩:うちで実証実験に使っているのは2種類あるんだ。1つはNVIDIAのJetson TX2というモデルで、NVIDIAのGPUを搭載しているAIスーパーコンピューターだよ。
麻里:おお~、ジー・ピー・ユー!なんかAIっぽいですねぇ。
先輩:Developer Kitと呼ばれる開発者キットも用意されているので、実証実験などでああだこうだ使うのにはピッタリのモデルと言えるかな。
麻里:そういえば、先輩、いつもぶつぶつ言いながらああだこうだしていますね。
先輩:ほっといてくれ。で、もう1つがIntel のNUCというモデル。電源を入れるとこんなふうにスカルが浮き上がってくるのが遊び心あるよね。
麻里:キャー、なに、このドクロ。かっこいい!
先輩:ふふ、JetsonがLinuxベースなのに対し、こちらの標準OSはWindows10でコンシューマー向きマシン。AIの計算に使うようなGPUは搭載していないけど、かなり高スペックで値段もお手頃だよ。
麻里:え、エッジコンピュータってGPUじゃないの?
先輩:ち、ち、ち。そういう思い込みはいけないなぁ。学習と推論は分けて考えようよ。確かにパワーの必要な学習プロセスはGPUの方がいいと思うけど、エッジで使う推論プロセスはCPUでも間に合うケースもあるんだ。
麻里:ふ~ん、そうなんだ。あ、うちってクラウドで学習してたよね?
先輩:うん。今はマイクロソフトのAzure Machine Learning Serviceを使って学習しているけど、ここではGPUを使っている。
麻里:最近、クラウドではFPGAもよく使われているって聞きました。
先輩:うん、FPGAは省電力だからクラウドに向いているんだ。でも、最近はエッジコンピュータにFPGAを使うという流れも出ていて、エッジでも有力候補になりそうな勢いなんだ。
麻里:エッジコンピュータはGPUとCPUとFPGAか。このみつどもえの勢力争いがちょっと面白そう。
先輩:エッジ君は私のものって3人の女性が主張して争っているみたいだね。
麻里:え、なんでエッジ君? 私はエッジさんを3人の男性が争っているイメージが浮かんだのに…。
先輩:麻里ちゃん、それは古き良き時代の発想。今は、草食系男子に女性が積極アプローチしないといけない時代になったんだよ。
麻里:え~、そんなのやだ~。

管理サーバーによるモニタリングと確認

図3は異常検知のモニタリング画面の例です。Vol.5の写真でベルトコンベアに乗っかっていたワッシャーは、カメラの動画から1つ1つのオブジェクトとして認識され、こんなふうにモニタリングされています。ここではエッジコンピュータで異常と判定した画像だけ確認するモードで表示しています。Vol.2で、異常検知では不良品の再現率を高めて”疑わしきは不良とする”と説明しましたが、それでも分類器の正常判定が完全に信用できない場合は、正常判定も含むすべての画像を送付して確認するケースもあります。

3

図3:異常検知のモニタリング画面(例)

人が監視していて「うん、これは違うぞ!」と思ったものは、クリックすると左のようなポップアップウィンドウで拡大表示します。右側に縦に並んでいるサムネイル画像は、上部からオリジナル画像、ヒートマップ画像、オブジェクト検出画像の順に並んでいてクリックすると拡大画像が切り替わります(図3はヒートマップ画像)。

分類器が異常とした製品の拡大画像を人が見て、「うん、これはやっぱ正常だな」って判断した場合は左下の「正常」「異常」ボタンで判定を覆すことができます。このようにAIの判定ミスを正したデータはサーバーに蓄積されたのちに、クラウドにバッチ転送され、クラウドの機械学習機能により追加学習して分類器の精度を高めます。このように運用しながらAIの分類精度を高める仕組みがアクティブラーニングです。

lights.pngIoT機器とエッジコンピュータとの相性

”先輩”は、エッジコンピュータは特別なものではないと言っていましたが、いざIoT(カメラ)とエッジ端末とアプリケーションを接続しようとしてうまくいかない場合があります。例として当社のぶち当たった障害をちらっと紹介します。

JetsonのCPUは組み込み系に向いているARMを採用していますが、ARMはアーキテクチャー名であって、ライセンス供与を受けて製造している会社ごとに別々のCPUとなります。そのため、当社の選んだカメラをJetsonと接続しようとした際に、NVIDIAのARMに対応したドライバがないという事態が発生しました。そこで、カメラメーカー(海外)に依頼してドライバを作ってもらったのですが、今度はアプリケーション(Python)からドライバーを読み出すのがうまく行きませんでした。

一般に、Pythonでマシンビジョンカメラから画像を取得する場合、 OpenCV(Open Source Computer Vision Library)と呼ばれるオープンソースのライブラリーがよく使われます。しかし、 OpenCVがこのカメラのドライバをうまく認識できず、 OpenCVの代わりにドライバを読み出せるラッパーを開発する必要が生じてしまったのです。

IoT×AIは新しい技術分野なので、IoTとエッジとアプリケーションそれぞれの接続がうまくいくかどうかを確認しつつ、場合によってはドライバを追加開発したり、ラッパーを作ったりする必要があることも覚悟してください。

まとめ

今回は、異常検知ならエッジコンピューティングということで、エッジコンピューティングを実現するための具体的なネットワーク構成や役割分担について解説しました。巷でも「IoT × AI」という表現がよくなされますが、そんなときには”長距離恋愛はうまくいかないよ”っておせっかいおばさんのように声をかけてあげてください。

梅田弘之 株式会社システムインテグレータ :Twitter @umedano

AIをビジネスに活用するための基礎知識

新規CTA