詳解 Amazon Go 三大核心技術

2021-09-23 07:12:52 字數 3343 閱讀 3380

12月5日,亞馬遜發布 amazon go 震驚業界,我們第一時間研究了專利檔案,並採訪資深計算機視覺演算法工程師,最終出文從2份專利檔案,一窺amazon go到底藏了什麼黑科技?

今天特地採訪了無人零售商店創業者陳維龍為大家更加詳細地解讀 amazon go 以及無人零售商店專案。陳維龍畢業於中山大學,曾親自參與並實施過多套類似的無人零售解決方案系統,對整個專案的流程化體系有著較深的認知和實踐經驗。

amazon go 系統構成

陳維龍把 amazon go 系統「拆分」為三部分:人/貨架/進出口。其中硬體軟體構成如下表:

布局如下圖所示:

貨架牆壁上安裝多個攝像頭,多種感測器埋在每層貨架的底部或頂部。攝像頭負責拍照,光幕/紅外感測器負責製造乙個水平面,如果使用者的手穿過此面表示使用者開始實施某種動作,提高影象分析效率。壓力/紅外感測器用來表示商品的位置和狀態,為使用者的行為提供資料。

利用這些資料進行深度學習,建立商品—動作—人的判別模型,提高系統反作弊/識別能力。

amazon go 的核心技術是什麼?

陳維龍透露,其實 amazon go 的核心技術是反作弊/識別系統,不管它能提供多強大的商業功能,作為無人超市系統,反作弊/識別是它存在的第一要素。

在現有超市,通過便衣巡邏和監控攝像頭識別顧客行為是否合法,例如是放在購物袋/車還是放在衣服裡,將使用者的行為規範到指定的範圍,最後通過收銀員識別商品和顧客的對應關係,成功解決了誰對什麼商品幹了什麼,從而達成交易。

其中人防和機防是反作弊系統,負責解釋顧客行為,從而保證商品與顧客的關係,而收銀員負責確認商品和顧客關係。在 amazon go 中,系統也要解決誰對什麼商品幹了什麼的問題。

接下來的內容分為大三塊,詳解 amazon go 是如何做的。

一、如何檢測和識別顧客的行為:拿走或放回?

陳維龍指出,顧客購物行為非常豐富,從貨架的角度來看,核心動作只有拿走或放回兩種。

不論如何,商品被從貨架拿走了,最大的可能就是被買走了,而被放回來就是你不需要了。如果能識別拿走或放回,那麼就解決了核心問題。根據 amazon go 專利顯示,它是這樣做的:

• 採集使用者的手進入貨架平面前的影象。

• 採集使用者的手離開貨架平面後的影象。

• 兩者對比,可以知道是拿出貨物還是放入貨物。

如果是拿起,進入前的手和進入後的手及手中的物品等特徵是可區分的,這個特徵與放入是相反的。簡單說,如果是拿起,進入之前手是空的,沒有商品的,離開後是手裡有物品的。放入則相反。那麼如何識別手呢?從形狀和顏色(膚色)可以辨別。在貨架前利用光幕或者紅外形成乙個平面,就可以知道使用者的手到了那裡。

除了分析,感測器也可以提供這樣的資料。多種資料結合,可判斷使用者行為是拿走還是放回。

二、如何準確識別出被拿走的物品和被放回的物品?

我們知道,有了顧客動作,還要識別動作承受的商品,不然會出現張冠李戴的現象。陳維龍繼續解釋到,這部分分成兩個步驟來處理:識別被拿走的物品和識別放回的物品。

識別被拿走的物品

• 因為物品是被雇員人工放置的,所以該物品可以直接標記到系統中,因此不用影象識別是何種物品(它已經被人工識別了)。用感測器表示它被拿走即可。

• 在某些情況下,商品可能沒有被提起設定或者設定後被混亂了,那麼此時需要影象識別該位置現有的商品與應該有的商品是否一致。例如,物品 a 被放在 b 物品處,如果只有上面提到的那種方式處理,就會被當成物品 b,不過這種情況較少。

• 如果是高置信度事件,可直接確認,更新(增加)物品清單,否則還有顧客協作確認的環節。

識別被放回的物品

• 在放回物品前,可以通過物品清單確定使用者與物品的關係,這些物品的被儲存在系統內。

• 檢索,與被放回物品進行比較,識別物品。

• 高置信度即可判斷物品正確,更新(刪除)物品清單,否則還有顧客協作確認的環節。

• 被放回的物品會存在錯放位置的情況,識別後通知雇員整理。

• 不管是拿走還是放回,如果是低置信度事件,會被系統記錄分析。

對於正常的購物,在固定區域的商品種類單一,容易識別。對於被錯放的物品,因為概率較少識別難度和計算量不會顯著增加。但是對於故意作弊的行為,需要極大的計算資源識別。這個問題後面討論。

三、對某商品進行了某動作的人是誰?

從問題可以發現,解決這個問題的關鍵還是要在貨架上入手,因為任何人對商品實施動作的時候必須在貨架前。關於這部分細節,amazon go 專利給出的解釋是利用使用者位置資訊定位進行識別。

例如,張三站在貨架 a 前,此時 a 貨架商品被取走,那麼就認定張三購買了商品。這裡存在很大的隱患是張冠李戴問題,因為僅通過位置定位顧客,只要在此區域的使用者都可能被當成購買者,從而形成商品和顧客一對多的關係。如果這個位置定位區域限制在足夠小的區域,就能實現一一對應關係。

amazon go 使用的影象分析和音訊分析。通過攝像頭可檢測使用者及其方位,天花板或貨架裡的多個音訊可根據時差分析使用者位置。此外,天花板上的天線可用三角測量確定位置,使用者手機 gps 也能提供定位。

關於室內定位或擁擠區域定位問題,一般的定位技術是無法解決的。目前國外有 gps 定位到公釐級別,但是費用極高,應用很少。ibeacon 技術也可以用於室內定位,可達到厘公尺級別,但是僅限於 ios 裝置。

總的來說,amazon go 反作弊/識別系統是通過「商品—識別動作—識別承受動作的商品—商品與使用者清單/使用者關聯」進行運作的。

對 amazon go 反作弊/識別系統而言,它只需要知道哪些商品被拿走或放回了,並且知道是誰實施的,那麼就知道是誰購買/放回了什麼商品。最後在出口(轉移區),顧客刷卡確認顧客與商品的關係即可。

商品識別問題討論

此時有個疑問:故意作弊的行為,能識別動作,但是識別商品難度較大,因為大型超市商品種類有 10 萬種,依據現有的水平是無法解決的。

陳維龍就這一問題給出以下解決方案:

• 特殊人群跟蹤。上面提高使用者行為被系統判定為低置信度事件會被記錄跟蹤分析,這部分人群需要單獨的技術限制和人工干預。

• 容忍作弊行為,加強非技術反作弊手段。雖然討論的是高科技含量的東西,但是就目前階段結合必要的人工手段能提到較好作用。

Linux核心詳解(三)

linux中斷處理中斷使硬體發出通知給cpu,cpu接收到中斷後即停止當前工作並立刻向作業系統告知此訊號的到來 中斷控制器連線著多路中斷管線,當接收到乙個中斷後,中斷控制器便向cpu傳送乙個電訊號 硬體裝置生成中斷並不考慮與處理器的時鐘同步 中斷隨時可以產生,核心隨時被中斷。不同的裝置對應不同的中斷...

docker 三大核心概念

映象 容器 倉庫是docker的三大核心概念。docker映象類似於虛擬機器映象,你可以將其理解為乙個唯讀模板。docker容器類似於乙個輕量級的沙箱,docker利用容器來執行和隔離應用。容器是從映象建立的應用執行例項。可以將其啟動 開始 停止 刪除,而這些容器都是彼此相互隔離的 互不可見的。映象...

angular 三大核心函式

1 watch angular監聽 由於angular一直在實時監聽,所以比react和vue效率要低 scope.watch amodel function newvalue,oldvalue 2 digest 遍歷 修改變化的值 另外,本人就額外再說點,其實 nood裡面jade ejs是渲染模...