SBC Labo

Media

2020年3月2日

Edge TPU物体検出デモ「どこでもAIポーカー」

金銅 亮弥 社員

こんにちは、新規事業推進センターの金銅(こんどう)と申します。普段はディープラーニングによる物体検知や異常検知に取り組んでいます。好きなディープラーニングライブラリはTensorFlowです。

今年1月24日に行われたNTT DATA Innovation Conference 2020にて、「組み込み型AI画像解析ソリューション Edge AIアクセラレータ活用によるどこでもAI」というタイトルでデモを出展させていただき、多くのお客様にお越しいただきました。本記事ではそのデモの詳細についてご説明します。

目次

背景:エッジサイドAIについて

一般的なAIプラットフォーム:サーバサイド

AI/IoTニーズの高まりにより、現在各社よりAIプラットフォームが提供されています。その多くでAI処理はサーバで行われています。

具体的に「カメラで製造ラインを監視して画像から不良品を検知する」というシステムを考えましょう。このときの処理の流れは以下のようになっていることが多くなっています。

  1. カメラが画像をサーバにアップロードする
  2. サーバでAI処理を実行する
  3. 結果をモニタに表示したり、不良品を検知したときに警告灯を点灯する

クラウドサーバを用いたAIシステムの構成

ここでのポイントはAIの導入のために大量の通信が発生しているということです。カメラの画像や動画はサイズが大きく、大容量で高速な回線が必要になります。クラウドであればインターネット回線の帯域も必要になります。そしてひとたび通信障害が起きればサービスがたちまち停止してしまいます。

さらにクラウドでは、プライバシーの確保という問題も存在します。顔写真や医療データなどの個人情報をクラウドに送信することは難しく、AI活用上課題となっています。製造現場では工場内部の画像データという機密情報をインターネット回線に流すのは禁止されていることもあるかと思います。

工場内に専用サーバを置くことでこういった問題は多少回避することはできます。しかし、製造現場にサーバを設置するのはスペース、コストの問題で難しいことも多いです。それにカメラやセンサからサーバまでの通信が発生してしまう以上、構内ネットワークの保守コストや障害リスクは切り離すことができません。

構内オンプレサーバを用いたAIシステムの構成

エッジAIデバイス

それではどのようにすれば通信にかかるコストをカットできるのでしょう?答えは簡単です。通信せずにその場でAI処理すればよいのです。

ここ数年、センサやカメラと直結できる小型のシングルボードコンピュータ※1 、マイコンが登場しています。Raspberry Pi(最近4が出ましたね)やArduinoが有名です。これらは名刺と同じくらいの大きさでUSBバッテリー程度でも稼働できるため、現場にも簡単に設置できます※2 。ですが、小さいだけあって処理能力は低めで、単体ではリアルタイムな画像解析なんてとてもできません。

そこで、ディープラーニングの各ライブラリに特化した、エッジAIデバイスが登場しました。単体で動作するものや、USBに差して処理能力を増強するものなど、さまざまなデバイスがあります。これらは設置場所も取らず原価も数万円程度と安価なので、手軽に導入できます。

  • ※1 : シングルボードコンピュータは頭文字をとってSBCと呼ばれることがあります。ただし弊社名のSBCはこれと関係はありません。
  • ※2 : IoT導入に関する弊社記事もご参考ください。

デモ

ここからはInnovation Conference 2020にて出展したデモについてご説明します。

デモ内容

サンプルデモとして「どこでもAIトランプ」を作成しました。

カメラに映ったトランプのカードを検出し、絵柄を判定します。システムはこれだけで完結していて、オフラインでも稼働します。

ハードウェア構成

稼働中の様子

技術的内容

TensorFlowとEdge TPU

ディープラーニングライブラリはTensorFlowを使用しました。

TensorFlowはGoogle社のライブラリで、現在さまざまなデバイスで利用できるよう整備が進められています。その中で、スマートフォンやシングルボードコンピュータでも推論するためのTensorFlow Liteというライブラリがリリースされています。そのTensorFlow Liteモデルをより高速に実行するために、CoralというブランドでEdge TPUという専用ハードウェアが販売されています。

今回はRaspberry Pi 4※3と、Edge TPUをUSBで使用できるUSB Acceleratorを使用しました。

モデルの構築にはTensorFlow公式ライブラリの一つであるObject Detection APIを使用しました。

  • ※3 : Raspberry Pi 4は2019年秋ごろに国内発売が開始された最新モデルですが、このモデルからUSB3.0端子が搭載されました。これによってUSBに差すタイプのエッジAIデバイスとの相性が飛躍的に向上し、スタンドアロン型と遜色ない性能を出すことが可能になっています。

データセットについて

当然ですが、データセットがなければAIは始まりません。

しかし、良質なデータセットを集めることは時に困難なことがあります。AIモデルで欠陥を検知するには、その欠陥を再現したデータが必要です。※4 。例えば商品の表面の不良を検出する場合、「線キズが入ったもの」「汚れが付着しているもの」「割れ目が生じているもの」など、あらゆるカテゴリの不良データを、それぞれまとまった枚数用意する必要があります

さらに物体検出のような「画像から点を抜き出す」モデルの場合、画像に加えて物体の位置の情報も与える必要があります(この作業をアノテーションといいます)。それもすべてのデータに対してアノテーションを行わなければなりません。これが膨大な単純作業となるので、AI導入に大きなネックになっています。

  • ※4 : この課題を解決すべく、「正常データのみで異常データがない」「正常データは多数あるが異常データはごくわずかしかない」といった場合でも、正常データのパターンを学習して異常を検知するモデルの研究が進められています。当社でも、このようなモデルに関して調査、研究を進めています。

左の画像に右の画像のようなアノテーションをすべての画像に対して行います。

今回もトランプのデータセット作成は私が1人で担当しましたが、カードが5~10枚映った画像を140枚アノテーションするのが精一杯でした。

モデルの選定と転移学習

データが大量に集められないときの対策として、まず転移学習という手法がよく使われます。転移学習とは、あらかじめほかの大きなデータセット(ImageNet、COCOなど)で学習させたモデルを再利用する方法です。

今回、モデルはCOCOで事前学習されたSSD-MobileNetV1を使用しました。MobileNetV2やV3でも試しましたが、両方精度が上がりませんでした。

データ拡張

転移学習を使っても今一つ精度が上がらないことがあります。これはデータセットの偏りによることがあります。例えば、鮮明な画像だけを使って学習させた場合、実装したカメラがピンボケしていると精度が上がりません。今回の例でいうと、カードの重なりのない画像だけを用意したので、カードが少しでも重なると検出できなくなってしまうという弱点がありました。

そこで、データ拡張(Data Augmentation)という手法を使います。データ拡張とは、画像にノイズを乗せたり、加工したりすることでデータの枚数を増やすことです。先の例でいうと、ぼかした画像を学習に使うことでピンボケに強くなり、一部をマスクした画像を学習に使うと多少の画像の重なりに強くなります。どの手法を使うか選ぶには現場のドメイン知識が必要になります。

今回はノイズマスクと回転、変形、ぼかしで画像データの枚数を10倍の1400枚に拡張しました。

元画像(左)に加えて、それを加工した画像(右)も教師データとして採用する

量子化

以上でモデルの学習はできました。しかし、エッジAIで動かすにはサイズが大きすぎるという問題があります。

そのため、エッジデバイスへの実装のために量子化(quantization)というプロセスを用います。AIモデルは膨大な数のパラメータの集合体ですが、通常すべてfloat32(32ビット浮動小数点型)で記録されます。float32は大きな範囲の数を精度よく表現できますが、サイズも32bit=4byte必要になってしまいます。そこでfloat32をint8(サイズは1byte)に変換して、モデルを小さくします。

Edge TPUでは内部メモリの関係でint8への量子化が必須となっています。TensorFlow Liteでは、モデルを学習後にTensorFlow Lite向けに変換する過程で、同時に量子化することができます。

AI処理を動かす

以上でAIモデルの構築は完了しました。Edge TPUのAPIにモデルをロードすれば推論処理することができます。

動画に対してAI処理をする場合は、1フレームずつ処理する必要があります。複数のEdge TPUを使う場合などは、スレッド並列化といった工夫が必要です。

まとめ

今回はEdge TPUでトランプを使った物体検出デモを実装しました。データ拡張を適切に使うことで、大量のデータセットを集めるのが難しい状況でもそれなりの精度を出すことができました。

Edge TPUには物体検出以外にも画像分類用のエンジンが実装されているほか、それ以外の一般のモデルを動かすエンジンもあります(ただし対応しているレイヤーのみ)。今後もDev Board MiniやAccelerator ModuleといったEdge TPU搭載デバイスの登場が控えており、ますます目が離せなくなりそうです。

商標

  • Edge TPU、TensorFlowはGoogle LLCの登録商標です。
  • Raspberry PiはRaspberry Pi財団の登録商標です。
  • ArduinoはARDUINO SAの登録商標です。

キーワード:エッジAI, edgeTPU

ページトップへ