手把手教你36小時搭建無人超市系統 !(附程式碼)
來源:QbitAI
編譯:夏乙 問耕
本文經AI新媒體量子位(公眾號ID:qbitai )授權轉載,轉載請聯絡出處本文共1635字,建議閱讀5分鐘。
本文手把手教大家用程式碼工具搭建亞馬遜無人商店。
無人超市,未來趨勢。
上面這段視訊,展示了逛亞馬遜的Amazon Go無人超市是種怎樣的體驗。毫無疑問,一個完善的無人超市需要複雜的技術支撐。
現在,挑戰來了。
你能不能在一天半的時間裡,從零著手搭建出一個基本的Amazon Go無人超市系統?讓客戶可以體驗無縫銜接的購物體驗?
當然可以。
有個四人小組就在最新的一次黑客馬拉松中,完成了這樣一次挑戰。他們只用了不到36個小時,就搞定了一切,而且還把整個教程公佈了出來。
首先,得有一套文件,列出全部需要做/可以做的事情;然後就是根據文件,去分模組實現。他們給自己的“山寨”Amazon Go起名叫EZShop,由這六大模組構成:
EZShop的六大元件
量子位來分別介紹一下他們用到的些模組:
Kairos人臉識別API
這是EZShop的一個基本元件,能夠識別、儲存特定的人臉資訊。EZShop用了它兩個API:/enroll和/verify。
/enroll的意思是“拍張照,找到裡邊的臉,然後把這張臉存到你建立的相簿裡。”
這個小組就為顧客們建立了一個相簿,也叫EZShop。顧客註冊時,臉就會存到這個相簿裡,系統的實時資料庫也會向這個顧客的註冊資訊返回並儲存一個face_id。
當要驗證顧客的照片時,就需要把它送到/verify終端那裡,終端返回一個匹配可能性最高的face_id。
在實際應用中,自己用TensorFlow搭一個人臉識別應用可能比用這種API更好,但是36小時hackathon嘛,API挺好用的。
實時Firebase資料庫
這也是一個非常基本的元件,整套EZShop裡,所有其他的元件都得和它實時互動。Firebase支援在資料庫裡的任何資料上建立定製化的變化監聽器,這樣一個特性再加上簡單的設定流程,用起來簡直毫不費力。
整個計劃很簡單,資料庫儲存一組商品、一組顧客,如下面的JSON檔案架構所示:
{
"items": [
{
"item_id": 1,
"item_name": "Soylent",
"item_stock": 1,
"price": 10
}
],
"users": [
{
"face_id": 1,
"name": "Subhan Nadeem",
"in_store": false,
"cart": [
1
]
}
]
}
新顧客通過Kairos API註冊之後,就會被新增到users那一組。當顧客出入時,他的in_store布林值會更新,在商店經理和個人App介面上都有所體現。
顧客拿起商品時,items那組資料會有更新。系統能夠識別出哪個顧客拿了哪件商品,商品的ID會被新增到顧客的cart欄。
經理App和顧客App
團隊裡的iOS開發者John只用了12小時,就寫完了這兩個App。
經理app
經理App是iPad版的,能將新使用者新增到Kairos API和Firebase資料庫中,也能顯示店裡顧客的列表和貨物的庫存清單。商店經理能用這個App操作Firebase資料庫、檢視資料庫發生的變化。
這個App還能追蹤店內當前的所有使用者,並獲取他們的姓名和照片。當使用者離開時,這個系統也能實時更新店內當前使用者列表。
顧客app
另一個App是供商店顧客用的。
顧客要進店,需要先上傳自己的照片,註冊成為可以在無人店內購物的使用者。圖片通過API上傳到Imgur(一家國外圖片分享網站),並與使用者名稱相關聯。
EZShop會根據這個照片來識別顧客。顧客進入商店之後,它們購物車的更新會立刻顯示在這個App上。顧客離開商店時,手機上還會收到一條推送通知,顯示著他們花了多少錢。
貨架、感測器和攝像頭
這些東西由Soheil和Ruslan負責,他們設計了貨架,寫了相關的Pi Python指令碼。
貨架大致長這樣:
在貨架上,三件商品並排放著,中間的塔上安裝監控攝像頭(就是圖上那個手機),兩排商品後邊還裝有超聲波感測器。超聲波感測器和樹莓派相連線,樹莓派執行的Python指令碼處理感測器與貨架上物體之間的距離讀數。
商品被拿起來的時候,感測器的讀數就會變化,觸發資料庫中商品庫存的更新。
塔頂上綁著的手機(攝像頭)也會探測到場景的變化,還會識別拿商品的顧客。然後,這件商品會被放到顧客的虛擬購物車裡。
出入口的攝像頭
在商店的出口和入口,這個小組使用了Android手機作為面部識別攝像頭。
兩部手機被安裝在一個三腳架上,分別衝著相反的方向,一個方向用來識別入店的顧客,另一個方向用來識別出店的顧客。
至於人臉檢測技術,Google有一套非常棒的API,能夠很好地檢測出人臉。
API地址:https://developers.google.com/vision/
特別的是,這個API還能提供從相機到人臉之間的大致距離,一旦顧客的距離足夠近,攝像頭就會拍照並使用Kairos API進行驗證,然後與Firebase資料庫同步,更新顧客在店內的狀態。
在客戶識別之外,系統還增加了個性化的語音問候,這進一步提升了使用者體驗。
效果是這樣的:
一旦顧客離開商店,Android應用程式將會檢測顧客購買了什麼商品,並計算消費總額,並通過Firebase雲訊息向顧客的個人App推送賬單明細。
總結
在36個小時的黑客馬拉松中,這個專案的團隊大概只睡了6個小時,期間克服了許許多多的障礙,也有一些還未解決的問題。
他們的努力也沒有白費,這個專案最後奪得了第一名。
有上百人進入了這個快速搭建的無人超市,拿起商品,然後離店,隨即完成結算並獲得賬單。整個過程中不需要收銀員、不需要排隊……
這個專案是開源的,想自己動手玩一下的話……
GitHub地址在此:https://github.com/subhan-nadeem/EZShop
原文地址:https://www.docdroid.net/file/download/Dh4A6aQ/amazon-go-implementation.pdf
相關文章
- 手把手教你搭建微信小程式伺服器(HTTPS)微信小程式伺服器HTTP
- 超市管理系統原始碼 超市進銷存管理系統原始碼 (CS架構)原始碼架構
- 手把手教你入門Hadoop(附程式碼&資源)Hadoop
- 36小時,造一個亞馬遜無人商店亞馬遜
- 機器學習博士手把手教你入門LSTM(附程式碼資料)機器學習
- 手把手教你自制程式設計AI:訓練2小時,RNN就能寫自己的程式碼程式設計AIRNN
- 手把手教你在小程式裡使用 ReduxRedux
- 手把手教你用SonarQube+Jenkins搭建--前端專案--程式碼質量管理平臺 (Window系統)Jenkins前端
- 微信小程式掃碼點餐系統怎麼搭建微信小程式
- 手把手教你使用OpenCV庫(附例項、Python程式碼解析)OpenCVPython
- 手把手教你用python搶票回家過年 !(附程式碼)Python
- 手把手教你用Prophet快速進行時間序列預測(附Prophet和R程式碼)
- 手把手教你搭建Windows環境微信小程式的本地測試伺服器Windows微信小程式伺服器
- 手把手教你搭建Mac環境微信小程式的本地測試伺服器Mac微信小程式伺服器
- 手把手教你在多種無監督聚類演算法實現Python(附程式碼)聚類演算法Python
- 用程式碼手把手教你使用MVVMMVVM
- 房產小程式搭建 房產報備系統原始碼的使用原始碼
- 手把手教你用Python庫Keras做預測(附程式碼)PythonKeras
- Smartbi手把手教你如何搭建企業大資料BI平臺系統大資料
- 手把手教你搭建mongodb副本集MongoDB
- 手把手教你搭建部落格
- 手把手教你搭建 Ceph+JuiceFSUI
- 手把手教你搭建Docker Registry私服Docker
- 微商城小程式系統原始碼開發搭建前景和公司原始碼
- 社交新零售模式小程式商城搭建(原始碼系統)模式原始碼
- 手把手教你開發CNN LSTM模型,並應用在Keras中(附程式碼)CNN模型Keras
- 手把手教你,如何在windows系統搭建mysql主從複製的環境WindowsMySql
- 手把手教你開發微信小程式中的外掛微信小程式
- 手把手教你寫一個微信小程式日曆元件微信小程式元件
- 手把手教你構建一個音視訊小程式
- 手把手教你除錯構建一個Vue/小程式商城專案原始碼除錯Vue原始碼
- Linux系統下手把手完成無人值守安裝服務Linux
- [手把手教你] 1分鐘搭建Hyperf
- 手把手教你快速搭建React元件庫React元件
- 手把手教你搭建OpenDRIVE道路模型(上)模型
- 手把手教你搭建OpenDRIVE道路模型(下)模型
- 手把手教你用Spuernova生成flutter程式碼Flutter
- 手把手教你如何進行 程式碼版本控制