[go: up one dir, main page]

⽇本全国に多くの回転寿司の店舗を展開するくら寿司株式会社は業務の効率化のために TensorFlow を⽤いた会計システムを構築しました。



回転寿司はレーンに乗った寿司⽫が客席を回遊し、客は⾷べたい寿司⽫を取るというセルフピックアップ システムの寿司店です。また、客席に備えられたタブレットからも寿司やサイドメニューを注⽂する事ができます。

くら寿司の会計は「回転レーンから取った寿司⽫数」と「オーダーした寿司⽫数」をカウントすることで会計が 決まる仕組みとなっています。

これまでは「回転レーンから取った寿司⽫数」が機械的に取得できず、店員が⼿動かつ⽬視で⽫数の確認を⾏っていましたが、くら寿司では QR コードの識別とTensorFlow を⽤いた画像検知により⾃動で取られた寿司⽫の種類と数をカウントすることで、無⼈で会計確認を⾏う事を実現し、業務コストの削減に成功しました。

システム構成くら寿司ではレーンを流れる寿司には”抗菌寿司カバー「鮮度くん」”という透明なプラスチックのケースが付い ています。これは寿司の鮮度を保ち、誰も触れないことで清潔さを守るためのケースです。

このケース上部には寿司ネタの種類を記載したQRコードを設置しています。

[QRコードの付いた鮮度くんの写真]

⼀⽅、レーンに沿って配置された各テーブルには、レーンの上流と下流に、レーンの直上となる場所にカメラを設置しています。このカメラは TensorFlow の処理を⾼速化する Coral を搭載したRaspberry Pi に付属したもので す。


[レーンに設置された Raspberry Piの写真]

このカメラでQRコードを識別するとともに、TensorFlow を⽤いて鮮度くんから⽫が取られたかどうかを認識しています。


具体的には上流を通過した時点で鮮度くんが閉まっている事を検知し、下流で開いている場合、そのテーブルで鮮度くんから⽫が取られたと判断することができます。ここでQRコードで識別した寿司の種別をあわせることで、どの寿司がどのテーブルで取られたかを識別することができます。

これらの識別や検知のデータは Raspberry Pi 内で⾼速に⾏われ、原則としてその結果のみが店内に設置された サーバに送信されるため、システム全体としてのデータのやりとりは⼩さなものとなります。

検知デバイスとして Raspberry Pi を選んだ理由はくら寿司が持つ経験に基づいています。ローカルで TensorFlow の⾼速処理を実現するために Coral Edge TPU を⽤いていますが、Coral ⽤に設計された Dev Board を⽤いるのではなく、すでに別の⽤途で店舗で数千台稼働させた経験のある Raspberry Pi に Coral を搭載する形態を採⽤しています。



今後の展開
このように⽇々改善されているこのシステムは 2020 年の時点ですでに200ほどの店舗で稼働しています。くら寿司は⽇本国内に450店舗ほどありますが、来年度には全店舗にこのシステムを展開させ、全ての店舗で TensorFlow を⽤いた⾃動の会計システムを稼働させる予定です。


この記事は Daniel Situnayakeによる TensorFlow - Medium の記事 "Build AI that works offline with Coral Dev Board, Edge TPU, and TensorFlow Lite" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

投稿者: Daniel Situnayake(@dansitu、TensorFlow Lite デベロッパー アドボケート)


機械学習を支えるハードウェアと聞くと、どこかのサーバー ファームで無数のプロセッサが大量に電力を消費しながら何テラバイトものデータを消費している様子や、たくさんの GPU を搭載した巨大なデスクトップ コンピュータを思い浮かべるのではないでしょうか。
クレジットカードほどの大きさの開発ボードに取り付けられている 40mm x 48mm の集積回路を想像する方は、あまりいないでしょう。ましてや、ミニカーほどの大きさのなめらかなアルミニウム製の箱が 1 つの USB-C でコンピュータと接続されている姿は論外のはずです。




こういった新しい端末は、Google の新プラットフォーム、Coral によるものです。組み込み製品のデベロッパーは、Coral を使うことで、ローカル AI を活用したすばらしい体験を生み出すことができます。Coral 最初の製品は、Google の Edge TPU チップを搭載し、TensorFlow Lite(モバイルおよび組み込み端末用の TensorFlow 軽量版ソリューション)を実行できるようになっています。デベロッパーの皆さんは、Coral 端末を使って新しいオンデバイス機械学習推論アプリケーションを試作することができます。

Coral の開発ボードは、Edge TPU を搭載したリムーバブル System-On-Module(SOM)を含むシングルボード Linux コンピュータです。そのため、アプリケーションのプロトタイピングを行ってから、独自の端末に SOM を含めて生産用にスケールアップすることができます。Coral USB アクセラレータは、Edge TPU を対応する Linux コンピュータに接続する USB アクセサリです。Raspberry Pi Zero にちょうど合うように設計されています。

このブログ投稿では、「エッジ」(末端)でのおもしろい機械学習活用例や、ハードウェア製品に AI を組み込む際に TensorFlow Lite と Coral がどのように役立つかについて説明します。トレーニング済みモデルを使えば、機械学習の経験がなくても大丈夫なこともわかっていただけるでしょう。独自のモデルをローカル用に最適化する変換ツールについても紹介します。

エッジで推論する

最近まで、本番環境に機械学習モデルをデプロイするということは、何らかのサーバーでモデルを実行するという意味でした。動画中の既知の物体を検出したい場合には、バックエンドにストリーミングし、そこで強力なハードウェアを使って推論(つまり、存在する物体を検出する)して、その結果を端末に知らせる必要がありました。




この方法は多くの用途でうまく動作しますが、サーバーがなく端末上だけで完結させたい場合は、どうすればいいでしょうか。




TensorFlow Lite は、エッジで高パフォーマンス推論を実行することで、これを実現します。そのため、今までにないすばらしい体験を生み出すことができます。

オフライン推論

エッジ推論を使うと、インターネット接続に頼る必要はなくなります。インターネットが遅かったり、コストがかかったりする場合は、見たものを理解して関心のある部分だけを送るスマート センサーを構築できます。
これは、機械学習をまったく新しい状況と場所に導入できることを意味します。離れた場所から野生生物を識別するスマートカメラや、無線インフラストラクチャから遠く離れた場所で医療診断をサポートするイメージング端末について考えてみてください。



スマートカメラで野生生物をモニタリングする

遅延を最小化する

サーバーにデータを送ると、データの往復に時間がかかります。データをリアルタイムに処理する場合にはこれが妨げになりますが、モデルがエッジにあれば、このことは問題になりません。
超高速で推論できれば、パフォーマンスによる問題も解決できます。たとえば、人間がいる場所を移動するロボットにリアルタイム物体トラッキングを追加する場合や、音楽ライブの際に音を合成する場合などです。



ライブで音を合成する

プライバシーとセキュリティ

データがエッジにあれば、個人情報が端末を出ることはないので、プライバシーやセキュリティが向上するというメリットもあります。

そのため、プライバシーに配慮した新しいアプリケーションを実現できます。たとえば、脅威と考えられるものを検知した場合のみ録画するセキュリティ カメラや、クラウドにデータを送らずに個人的指標を分析するヘルス機器などが考えられます。



クラウドにデータを送らずにヘルス指標を分析する

パフォーマンス

こういった新しいアプリケーションは、すべて高パフォーマンス推論を利用します。これを実現できる唯一の方法が Edge TPU によるハードウェア アクセラレーションです。しかし、実際どのくらい速くなるのでしょうか。

いくつかのバージョンの MobileNet を使った内部ベンチマークによると、Edge TPU による推論は、CPU による推論よりも 70 倍から 100 倍高速です。MobileNet は、エッジ デバイスでイメージ分類を行う際によく使われる堅実なモデル アーキテクチャです。

顔検出用の MobileNet では、最大で毎秒 70 フレームから 100 フレームで推論を行えます。食べものの検知では、毎秒 200 フレームを実現できました。これなら、動画のリアルタイム推論にも十分対応できます。複数のモデルを同時に実行しても問題ありません。
次の表は、Coral USB アクセラレータでいくつかのモデルを実行したときのパフォーマンスをまとめたものです。




* デスクトップ CPU: 64-bit Intel(R) Xeon(R) E5–1650 v4 @ 3.60GHz
** 組み込み CPU: Quad-core Cortex-A53 @ 1.5GHz
† 開発ボード: Quad-core Cortex-A53 @ 1.5GHz + Edge TPU
テストしたモデルは、すべて ImageNet データセットでトレーニングしたものです。分類の数は 1,000 個、入力サイズは 224x224(ただし、Inception v4 の入力サイズは 299x299)です。

Coral と TensorFlow Lite を使ってみる

Coral は新しいプラットフォームですが、TensorFlow とシームレスに連携できるように設計されています。Coral で TensorFlow モデルを使う場合は、TensorFlow Lite を使います。TensorFlow Lite は、Edge TPU を含むエッジデバイスやスマートフォン、マイクロコントローラで機械学習推論を実行するためのツールキットです。

トレーニング済みモデル

Coral のウェブサイトでは、Coral ハードウェアでの利用に最適化されているトレーニング済み TensorFlow Lite モデルが公開されています。まだ初めたばかりだという方は、モデルをダウンロードして端末にデプロイしてみてください。Coral の API デモスクリプトを使って、さまざまな種類の物体に対するイメージ分類や物体検知を実行できます。

モデルを再トレーニングする

転移学習と呼ばれる処理を行うと、Coral のトレーニング済み機械学習モデルをカスタマイズし、独自のイメージや物体を認識することができます。これを行うには、既存のモデルを再トレーニングするに記載されている手順に従います。

独自の TensorFlow モデルを構築する

既に TensorFlow モデルがある場合や、ゼロから新しくトレーニングしたい場合は、Edge TPU 用の新規モデルを構築するに記載されている手順に従います。モデルは、モデル要件を満たす必要がありますので、注意してください。
Edge TPU 用のモデルを準備する場合は、まず TensorFlow Lite Converter を使ってモデルをエッジデバイス用に変換し、最適化します。その後、Edge TPU Model Compiler を使って Edge TPU 用にモデルをコンパイルします。

量子化と最適化

Coral のハードウェアに使われている Edge TPU チップは、量子化されたモデルを使うように設計されています。量子化とは、精度への影響を最低限にとどめつつ、ベースとなるデータを圧縮して、小さく高速なモデルにすることを指します。
TensorFlow Lite Converter を使うと、すべてのトレーニング済み TensorFlow モデルを量子化できます。このテクニックの詳細は、トレーニング後の量子化をご覧ください。
次の簡単なコード スニペットは、TensorFlow Lite ナイトリー版と TensorFlow 2.0 アルファ版を使ってモデルを変換し、量子化する方法を示しています。

次のステップ

皆さんが Coral と TensorFlow Lite を活用し、エッジで AI を利用するまったく新しい体験を生み出していると聞いています。試してみたいという方は、以下をご覧ください。
いいアイデアが浮かんできたでしょうか。コミュニティの皆さんが Coral と TensorFlow Lite でどんなものを作るか、楽しみです!Twitter でハッシュタグ #withcoral と #poweredbyTF をつけて、アイデアを共有してください。


Reviewed by Khanh LeViet - Developer Relations Team

この記事は コーラルチーム Billy Rutledge(ディレクター)、Vikram Tank(プロダクト マネージャー)による Google Developers Blog の記事 "Introducing Coral: Our platform for development with local AI" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。


AI はあらゆる人にメリットをもたらします。調査や学習、開発作業を共同で行う場合、特にそれが当てはまります。この目的を実現し、誰でも AI を使った開発ができるようにするため、Google は TensorFlow や AutoML といったツールを開発しています。本日、コーラルが公開ベータ版になり、皆さんがアイデアやプロダクトを構築する方法がさらに広がります。

コーラルは、ローカル AI を搭載したインテリジェントな端末を構築するためのプラットフォームです。


コーラルが提供するのは、簡単にアイデアをプロトタイプから製品へと発展させることができる完全なローカル AI ツールキットです。コーラルには、端末のローカルでニューラル ネットワーク(NN)を作成、トレーニング、実行する際に役立つハードウェア コンポーネント、ソフトウェア ツール、コンテンツが含まれています。私たちはローカルで NN を高速化することに主眼を置いているため、コーラル製品群は優れたニューラル ネットワークのパフォーマンスを発揮でき、プライバシーも強力に保護され、すべてが電力効率のよいパッケージにまとめられています。皆さんがアイデアを市場に出せるように、コーラルのコンポーネントは、高速なプロトタイピングと簡単な生産ラインへのスケーリングができるように設計されています。


最初のハードウェア コンポーネントの特徴は、新しい Edge TPU にあります。これは、Google の設計による小型 ASIC で、低電力端末でも高いパフォーマンスで ML 推論を行えるようになっています。たとえば、MobileNet V2 などの最新のモバイル視覚モデルを、100 fps 以上で電力効率よく実行できます。



コーラルのカメラ モジュール、開発ボード、USB アクセラレータ

コーラル開発ボードは、新しいプロダクトの開発用です。完全に統合されたシステムで、キャリアボードに接続された System on Module(SoM)として設計されています。この SoM は、強力な NXP iMX8M SoC と Google の Edge TPU コプロセッサを組み合わせたものです(Wi-Fi、Bluetooth、RAM、eMMC メモリも含まれています)。コンピュータ ビジョン アプリケーションのプロトタイピングを簡単に行えるように、MIPI インターフェースで開発ボードと接続できるカメラも提供します。


既存の設計に Edge TPU を追加したい場合は、コーラル USB アクセラレータを使うと、USB 2.0 や 3.0 経由でどんな Linux システム(Raspberry Pi ボードも含む)にも簡単に組み込むことができます。PCIe バージョンも近日中に登場する予定で、M.2 または mini-PCIe 拡張スロットにはめ込むことができるようになります。


生産ラインへのスケーリングの準備ができた方のために、開発ボードを元にした SOM と PCIe バージョンのアクセラレータの大量発注も受け付けます。独自のキャリアボードを作ってさらに統合を進めたい方のために、ベースボードの回路図も公開する予定です。
ソフトウェア ツールは、TensorFlow と TensorFlow Lite をベースとしています。TF Lite モデルは、量子化して Google のツールチェーンを使ってコンパイルした上で、Edge TPU で直接実行する必要があります。簡単に試せるように、トレーニングおよびコンパイル済みでコーラルボードですぐに動作させることができる 10 個以上のモデルと、それを再トレーニングするためのソフトウェア ツールを共有しています。


コーラルを使ってネットワーク接続端末を構築したい方は、Google Cloud IoT と組み合わせることができます。Google Cloud IoT は、クラウド サービスと端末上のソフトウェア スタックを組み合わせ、機械学習機能を利用するマネージド エッジ コンピューティングを実現できるようにしたものです。


コーラル製品群は、本日より入手可能です。製品ドキュメント、データシート、サンプルコードは、g.co/coral に掲載されています。今回の公開ベータ版期間中にぜひお試しください。公式リリースの際には、さらに多くの情報を共有できることを楽しみにしています。


Reviewed by Khanh LeViet - Developer Relations Team