無人コンビニ「AmazonGo」を実現している技術について、どの日本語記事よりも詳しく調べてみる

## 記事の概要
巷で話題になっている無人店舗「Amazon　Go」。「コンビニの店員いらなくなるんちゃう？」と話題になっているので、技術者の端くれとして、それを可能にしている技術について知るべく、日本語でいろいろ調べてみたのですが、参考になる記事が全く出てきませんでした。

なので、Re:MARSというAmazonのカンファレンスイベントの記事や、その他英語・日本語、さまざまな技術系記事を参考に、解説記事を書いてみました。(引用記事は一番下を参照)

技術系の話ですが、細かいことは端に置いて、大枠だけ理解できるように書いたので、ぜひ最後まで読んでみてください。

**※重要**
記事内の情報は、Amazon Goの内外の方が発信してくださった情報をもとに僕が推測したものです。誤りがある可能性が十分にありますので、ご承知おきください。

また、著作権には最大限注意して執筆しましたが、もし万が一修正が必要な点がありましたら、お手数ですがご連絡いただけると幸いです。

## AmazonGoとは
Amazonが2016年にオープンした「無人コンビニ」で、「**レジに並ばず、商品を手にとってお店を出るだけで決済ができる」**というのが特徴です。

具体的には、
1. Amazon Goアプリをダウンロードする
2. アプリ内にあるQRコードをかざして入店する
3. 普段の買い物と同じように、店内を回り、ほしい商品を手にする
4. そのままゲートを出る
5. Amazonのアカウントに紐付けられたクレジットカードに自動で請求、決済完了

という流れで利用できるみたいです。Amazonはこれを、**「Just Walk out Technology」**というふうに評しています。


実際に利用している様子は、こちらの動画がすごくわかりやすいです↓

[![ビデオが開けなかった場合に表示されるテキスト](http://img.youtube.com/vi/NrmMk1Myrxc/0.jpg)](http://www.youtube.com/watch?v=NrmMk1Myrxc)




このまさに魔法のような店舗AmazonGo。利用するのは簡単ですが、実際にこの店舗を実現するためには、ディープラーニング、コンピュータビジョン、センサー・フュージョンなど、最先端かつとても高度な技術が必要になります。

ここからは、実際にどのようにしてこのような魔法の店舗が実現されているのか、その詳細な技術について追っていきたいと思います。


## "Just walk out" を実現するための6つの技術的課題

まずはじめに、このJust Walk outにはどのような技術が必要なのか、AmazonGoの全体の作り（アーキテクチャ）を確認してみます。

顧客の行動と、その際に必要なシステムをまとめた図が以下のものになります。

ここから、大きく
**・誰が何を手に取ったかの解析
・顧客の映像データと決済アカウントの紐付け
・決済**
の大きく3つの問題を解決しなければいけないことがわかります。


![1_KLzUxq629Dqu6BDEN0zUPA.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430338/b7ca3a9f-26d7-674e-bdb1-cf8cf2d57224.png)

<span style="font-size: 80%">Amazon Go のシステムアーキテクチャ1</span><span style="font-size: 80%">(*1参照)</span>

この問題を、もう少し細かくしてみたものがこちら。
「誰が何（商品）を手に取ったか」を特定するためには、個人と商品を別々に特定し、それらの情報を紐付ける必要があることがわかります。
![1_6jodjYyk2OnOtAQRStbAFg.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430338/f13d186c-8cf9-6359-41e6-dd38c78a37d9.png)
<span style="font-size: 80%">Amazon Go のシステムアーキテクチャ2</span><span style="font-size: 80%">(*1参照)</span>


これらの情報から、AmazonGoの”Just Walk Out ”を実現するためには、大きく６つの課題を解決する必要があることがわかります。それがこちら。

![1_FXDFf76Obp-7_SCCldv9-g.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430338/dbeba85c-9538-42a5-aeeb-d3ba0386792e.png)
<span style="font-size: 80%">Just Walk Outを実現するための6つの技術課題</span><span style="font-size: 80%">(*1参照)</span>



英語でなにを言っているのかわからないので、以下１つずつ詳しく見ていきます。


## 個人識別

まず重要なのは、ストア内で行動をする顧客一人一人を、別々に認識し追跡することです。

Amazon Goでは、この課題を解決するために、天井に無数のカメラが搭載されています。

![tc_amazon_go-1180007.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430338/28707bfe-2529-1a61-b139-d482846ee5bb.jpeg)
<span style="font-size: 80%">天井にある黒いボックスのようなものがすべてカメラ</span><span style="font-size: 80%">(*2参照)</span>


この無数のカメラによって、店舗のあらゆる場所を、あらゆる方向から撮影しています。

そして、この個別のカメラが撮影した映像は1つに統合され、店舗内での顧客の行動データをマッピングします。


最終的には、以下のように、店舗内での顧客の行動をまとめて認識することができるようになります。
[![ビデオが開けなかった場合に表示されるテキスト](http://img.youtube.com/vi/KnTGFWthufc/0.jpg)](http://www.youtube.com/watch?v=KnTGFWthufc)
<span style="font-size: 80%">店舗内の顧客ログデータのマッピング</span><span style="font-size: 80%">(*1参照)</span>

Amazon Goで非常に優れている点は、この個人識別の技術を、**"「顔認識」なし"**で実現しているところです。

プライバシーの観点から、顔認識を用いる危険性を理解していたため、顔認識を用いないという制約条件の中で個人識別の技術を確立した技術者の方の能力の高さが垣間見れます。




## アイテムの識別

次に重要なのは、どんな商品を、いくつ手に取ったかです。Amazon Goでは、天井のカメラ、棚の奥に設置してあるカメラ、棚に設置してる重量センサーを用いて、アイテムの識別を行っているようです。

まず商品の識別（どのアイテムが手に取られたか）について。こちらは、天井に付けられたカメラの画像処理によって、アイテムが認識されているようです。（商品バーコードを使用しているという記事もありましたが、詳しくはわかりませんでした）

次に個数について。こちらは、天井のカメラに加えて、棚の奥に設置してあるカメラや棚に設置してある重量センサーを用いて識別を行っているようです。

システムは各アイテムの正確な重量を把握しており、重量の変化量を比較することで、商品が何個手に取られたかを検知するというわけです。

これらの情報を機械学習によって処理することで、どの商品が、いくつ取られたかを解析しているようです。(*2参照)

![tc_amazon_go-1180015.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430338/889ddf02-bb06-b3b6-f1eb-eeaf6cf2baf9.jpeg)
<span style="font-size: 80%">棚に付けられた重量センサー</span><span style="font-size: 80%">(*3参照)</span>

![b12_m.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430338/dcb119a0-1760-52ca-644d-10bcfea50c7d.jpeg)
<span style="font-size: 80%">棚の奥に設置されたカメラ</span><span style="font-size: 80%">(*4参照)</span>




## Who took what?(誰が何を取ったか)

「誰が」「何を」とったか、これらの情報を組み合わせることで、最も重要な「Who took what?」、すなわち、誰が何を取ったのかを認識することができます。

実際に、「誰が」が「何を」取ったのか、その両者の情報を紐付けるためには、商品と顧客の間の関係、すなわち「腕」をトレースする必要があります。

そこでAmazon Goでは、人間を棒人間のように見立てて行動を解析する、「スティックフィギュアモデル」によって、「誰が何を取ったか」を認識しているようです。

顧客が商品を取るときの姿勢（ポーズ）について、膨大な量のデータにて学習を行い、実際に商品が取られたのか、正しく解析できるようにしたそうです。

[![ビデオが開けなかった場合に表示されるテキスト](http://img.youtube.com/vi/9LTHGgYBs8U/0.jpg)](http://www.youtube.com/watch?v=9LTHGgYBs8U)
<span style="font-size: 80%">スティックフィギュアモデルによる購買行動の推定</span><span style="font-size: 80%">(*1参照)</span>

この解析によって、顧客情報と商品情報を紐付けることができ、「誰が何を取ったか？」を認識することができるようになります。

最終的には、以下のように、顧客の行動と、商品の出し入れの様子を統合して可視化することに成功しています。

顧客の移動だけでなく、「腕」までキャプチャされている、非常に感動する視覚データなので、ぜひ見てみてください！(8:27からです)
[![ビデオが開けなかった場合に表示されるテキスト](http://img.youtube.com/vi/Lu4szyPjIGY/0.jpg)](http://www.youtube.com/watch?v=Lu4szyPjIGY)
<span style="font-size: 80%">顧客の行動ログと商品の出し入れのリアルタイム可視化データ</span><span style="font-size: 80%">(*5参照)</span>

## データ転送

これらの個別のカメラによってキャプチャされた映像や、重量センサーにてキャッチしたデータは、店舗からクラウドに転送され、統合して処理される必要があります。

これを可能にするために、

・個別のカメラでの基本的な前処理と、データ量の削減
・ビデオのデータを正しくクラウドに転送するための、ネットワークやデータ形式
・ビデオデータを保存するためのクラウド上のビデオサーバー

など、さまざまな技術がAmazon Goでは活用されているようです。これらの技術によって、通信障害を適切に処理し、店舗内のデータをクラウドと通信させることが可能になっています。


![ダウンロード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430338/cbbfabea-1a10-99d1-d6b1-d758826aa81a.png)
<span style="font-size: 80%">AWSの代表的なストレージ・データベースサービスである、S3とDyanamo</span><span style="font-size: 80%"></span>



## 出入り検知

次の課題は、どのように顧客の出入りを検知し、ショッピングの決済処理を行うかどうかです。

Amazon Goでは前述の通り、QRコードによってこれを実現しています。顧客が店舗に入店したと同時にカメラにて顧客の行動を捉え、入り口にてQRコードがスキャンされた際に、カメラ上の顧客とアカウントの情報を関連付けます。

また、家族連れ等、複数人で入店するが決済者が１人の場合に対処するために、決済者が同じ場合には同じQRコードで入店する仕様になっているようです。

![a13_m.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430338/eeb7e2d7-ca52-b5a6-6fed-fd9d12d948f7.jpeg)
<span style="font-size: 80%">QRコードのスキャンによる、アカウント情報の紐付け</span><span style="font-size: 80%">(*4参照)</span>


## カード、支払い、領収書

ここまでできれば、あとはECのAmazonと同様に決済を行うだけです。実際には、店舗を出た瞬間ではなく、出たあと10-15分経ってからアプリ上にレシートが表示されるようです。



## まとめ

このように、Amazon Goのような画期的な、魔法とも思えるような世界を実現するためには、センサー、カメラ、ネットワーク、クラウド、ディープラーニング、コンピュータビジョン、センサー・フュージョン等、本当に様々な技術が必要で、それらが適切に組み合わされることで実現されているみたいです。

不可能にも思える「レジなしコンビニ」という全く新しい概念を、意志と多様性の力で数多くの壁を乗り越えて実現したAmazonの技術者の方々に深く感動した、そんなまとめでした。

以上、なにか参考になれば幸いです！

### ※補足
誤り・修正が必要な点があれば、お手数ですがご連絡いただけると幸いです。

## 資料一覧

- *1[How the Amazon Go Store’s AI Works](https://towardsdatascience.com/how-the-amazon-go-store-works-a-deep-dive-3fde9d9939e9)
- *2[Is Amazon Go shutting down the checkout for good?](https://www.digitalpulse.pwc.com.au/amazon-go-strategy-retail-grocery/)
- *3[Amazonの、監視カメラだらけのレジ無しコンビニエンスストアにて](https://jp.techcrunch.com/2018/01/23/2018-01-21-inside-amazons-surveillance-powered-no-checkout-convenience-store/)
- *4[レジなしコンビニ「Amazon Go」で「レジ・フリー」の新しいショッピング体験をしてみました](https://gigazine.net/news/20181112-amazon-go-seattle/)
- *5[【re:MARS 2019】M26 – Amazon Go: Origins and a Peek Under the Hood](https://dev.classmethod.jp/report/remars2019-report-m26-amazon-go-origins-and-a-peek-under-the-hood/)