天天看點

30分鐘快速搭建門店智能監控視訊分析

歡迎大家來到無伺服器(Serverless)程式設計的阿裡雲clouder lab實驗課參與學習。

現在市場競争激烈,在對業務創新周期要求越來越短,業務爆發越來越快的情況下,Severless程式設計模式很好的滿足了業務的快速搭建、快速發展以及快速疊代的要求,對于中小企業以及創業公司,成本也是一個重要的考量。使用者開發server端服務,常常面臨開發效率,運維成本高,機器資源彈性伸縮等痛點,而使用Serverless架構可以很好的解決上述問題。下面是傳統架構和Serverless架構的對比:

Item

Serverless

傳統方式搭建服務

維護成本

維護成本低,無需管理伺服器等基礎設施,隻需編寫代碼并上傳,程式員從底層裝置維護中解放出來,隻考慮實際業務邏輯即可。

維護成本高,自行維護伺服器,需要處理伺服器當機、伺服器擴容等一系列底層瑣碎的事情

可用性

可用性高,函數計算為使用者準備彈性、可靠的計算資源,具有根據流量自動scale特性,對有明顯波峰波谷的運用效果奇佳

伺服器故障會對應用服務産生嚴重影響

費用

按需付費,隻為實際使用的計算資源付費,代碼未運作則不産生費用

需要支付伺服器的費用,代碼運作與否都要收費

為了讓大家深刻體驗serverless的優勢,本教程通過對幾款雲産品的實際上手操作,來與大家分享如何通過函數計算粘合其他雲産品技術來快速搭建門店智能監控視訊分析運用

30分鐘快速搭建門店智能監控視訊分析
30分鐘快速搭建門店智能監控視訊分析

日志中有圖檔的資料資訊,通過觸發器推送到函數計算

函數計算解析出日志中的圖檔資料,将圖檔上傳到oss

函數計算調用IMM服務,擷取上一步解析出來的圖檔的人臉以及分組資訊

函數計算将上一步的人臉以及分組資訊存儲到OTS

使用者通過api網關調用函數計算,函數計算從OTS讀取資訊,并将處理後的資訊傳回給使用者

30分鐘快速搭建門店智能監控視訊分析

<a></a>

1.1 每位觀衆入場都會得到一個雲賬戶

1.2 獲得賬号ID和Accesskeys

1.3 下載下傳文章最後的<code>package</code>附件

注意: 本教程所有的服務均在華東2(上海)region進行,下面每一步建立的阿裡雲資源的名字(阿裡雲AccessKeyId、AccessKeySecret,OTS的instance名字和表格名字,OSS的bucket名字,IMM的project名字和FaceSetId)都需要記錄下來,後面代碼會用到
30分鐘快速搭建門店智能監控視訊分析
30分鐘快速搭建門店智能監控視訊分析

2.2.2 在控制台上建立執行個體,在<code>華東2</code>建立執行個體(比如名字叫szworkshop), 注意:在這裡我們已經預先為您建立好了對應的執行個體是table,請在<code>華東2</code>查找<code>sz-instance</code>開頭的執行個體,點選進去檢視有沒有<code>face_detail</code> 和 <code>face_cache</code>這兩張表,如果沒有,請按照下面的截圖操作自己建立,最後把自己表格存儲的執行個體名字記錄下來。

30分鐘快速搭建門店智能監控視訊分析

2.2.3 進入執行個體,建立兩個table,比如名字叫 <code>face_detail</code> 和 <code>face_cache</code>

主鍵情況如下:

截圖如下圖所示:

30分鐘快速搭建門店智能監控視訊分析
30分鐘快速搭建門店智能監控視訊分析
30分鐘快速搭建門店智能監控視訊分析
也可以利用package 附件的腳本create_tbl.py,修改代碼中的ak, <code>python create_tbl.py</code> 實作建立table <code>face_detail</code> 和 <code>face_cache</code>
30分鐘快速搭建門店智能監控視訊分析
30分鐘快速搭建門店智能監控視訊分析
30分鐘快速搭建門店智能監控視訊分析
其中<code>video1</code> 和 <code>video2</code> : 兩個攝像頭采集的圖像資料會分别寫到這個兩個logstore <code>fc_log</code> 用于記錄後面的函數計算中函數的輸出日志 <code>fc_trigger-log</code> 用于記錄日志觸發器觸發情況

比如建立 一個名叫<code>video2</code> logstore操作如下:

30分鐘快速搭建門店智能監控視訊分析

最後效果如下:

30分鐘快速搭建門店智能監控視訊分析
30分鐘快速搭建門店智能監控視訊分析
30分鐘快速搭建門店智能監控視訊分析

利用<code>package</code> 附件的腳本imm_op.py,修改對應的ak和imm project值 <code>python imm_op.py CFS</code> 就會成功建立一個FaceSet, 記住傳回值中的FaceSetId, 如下面的<code>FACE-0b1fe58b-58b5-44a5-9492-ea6d72918b83</code>

7.1.2 建立service, 選擇<code>華東2</code>,步驟如下圖中的1,2,3,4; 比如建立名叫<code>ls-workshop</code>的service(名字自定義)

30分鐘快速搭建門店智能監控視訊分析

在上圖中點開進階配置,配置日志項目和日志倉庫(這個之前已經建立好了,也可以現在建立),其中第3步的同意授權(授權函數具有通路OTS,OSS,LOG,IMM 的權利)會跳轉到如下頁面:

30分鐘快速搭建門店智能監控視訊分析

點選<code>同意授權</code>:

30分鐘快速搭建門店智能監控視訊分析

點選确定:

30分鐘快速搭建門店智能監控視訊分析
30分鐘快速搭建門店智能監控視訊分析

選擇空白模闆,runtime為<code>python3</code>

30分鐘快速搭建門店智能監控視訊分析
30分鐘快速搭建門店智能監控視訊分析

點選本地上傳,上傳附件中的log_etl.zip,上傳成功後,修改函數入口為<code>log_etl.handler</code>,然後點選<code>下一步</code>

30分鐘快速搭建門店智能監控視訊分析
30分鐘快速搭建門店智能監控視訊分析

建立成功後如圖所示:

30分鐘快速搭建門店智能監控視訊分析

進入代碼編輯界面,修改對應的配置,然後點選<code>儲存</code>按鈕:

30分鐘快速搭建門店智能監控視訊分析
30分鐘快速搭建門店智能監控視訊分析
30分鐘快速搭建門店智能監控視訊分析
30分鐘快速搭建門店智能監控視訊分析
30分鐘快速搭建門店智能監控視訊分析

在這裡一個函數可以對應兩個觸發器

30分鐘快速搭建門店智能監控視訊分析

建立完兩個觸發器後:

30分鐘快速搭建門店智能監控視訊分析
<a href="https://help.aliyun.com/document_detail/60291.html?spm=5176.173847.906745.12.KrpsWz">日志觸發器具體詳情</a> 觸發器名稱:觸發器的名稱隻能包含字母,數字、下劃線和中劃線,不能以數字、中劃線開頭,且長度範圍為1~256位元組。 Project名稱:日志服務Project名稱。 Logstore名稱:日志服務Logstore名稱(資料源)。本觸發器會定時從該Logstore訂閱資料到函數服務進行自定義加工,該參數在ETL Job建立後不允許修改。 觸發器日志:日志服務會定時觸發函數服務的的函數執行,在觸發過程中發生的異常、函數執行統計資訊會記錄到該 Logstore, 您可以為這個Logstore建立索引以備檢視。 觸發間隔:日志服務觸發函數運作的間隔,定義日志服務觸發函數執行的間隔,例如每60秒将logstore的每個shard最近60秒資料位置讀出作為函數event調用函數執行,在函數内有使用者邏輯讀取shard資料做計算。如果logstore的shard流量較大(超過1MB/s或者更高),建議縮短函數的觸發間隔,使得每次函數運作所處理的資料量是合理大小。 重試次數:日志服務根據觸發間隔每次觸發函數執行時,如果遇到錯誤(例如權限不足、網絡失敗、函數執行異常傳回等),該參數定義本次觸發所允許的最大重試次數。對于本次觸發,如果超過最大重試次數仍無法成功的,需要等到下一次觸發間隔到來時,由日志服務再次觸發函數執行。重試對業務造成的影響,因具體的函數代碼實作邏輯而異。 函數配置:日志服務将該配置内容作為函數event一部分傳入函數,如何使用該函數由函數自定義邏輯決定。每一種函數實作所要求的函數配置可能是不同的,絕大部分預設提供的函數模闆也需要參考說明填寫您的參數。預設不傳入任何參數時請填寫:{}。
30分鐘快速搭建門店智能監控視訊分析
30分鐘快速搭建門店智能監控視訊分析
30分鐘快速搭建門店智能監控視訊分析

上傳代碼<code>get_show_info.zip</code>,建立函數<code>get_show_info</code>,函數入口為<code>get_show_info.handler</code>, 截圖如下:

30分鐘快速搭建門店智能監控視訊分析

建立成功後,也需要修改下代碼中對應的配置的值:

30分鐘快速搭建門店智能監控視訊分析
30分鐘快速搭建門店智能監控視訊分析
30分鐘快速搭建門店智能監控視訊分析
30分鐘快速搭建門店智能監控視訊分析
30分鐘快速搭建門店智能監控視訊分析

填寫api網關的請求path,後面對<code>二級域名/請求路徑</code>的http請求就是對函數的通路

30分鐘快速搭建門店智能監控視訊分析

填寫api對應的函數資訊

30分鐘快速搭建門店智能監控視訊分析

填寫api網關的傳回值示例

30分鐘快速搭建門店智能監控視訊分析
30分鐘快速搭建門店智能監控視訊分析
30分鐘快速搭建門店智能監控視訊分析
30分鐘快速搭建門店智能監控視訊分析
30分鐘快速搭建門店智能監控視訊分析

驗證釋出是否成功可以用如下指令(修改成自己的二級域名/請求路徑):

本教程中是<code>http://972ea82cf5334ee8adc7e318efa45455-cn-shanghai.alicloudapi.com/get_show_info</code>)替換掉前端展示頁面中的url(<code>package</code> 附件下client/js 目錄裡面的index.js), 之後打開本地頁面,就可以愉快地看監控詳情了。

30分鐘快速搭建門店智能監控視訊分析

利用函數計算可以快速搭建serverless運用,結合oss,ots,imm和api網關可以豐富server的功能,免伺服器,免運維,成本低,不用擔心流量,隻需要函數就可以實作,你值的擁有!

下來