騰訊雲技術專家盧萌凱手把手教你Demo一我的臉識別程序!

歡迎你們前往騰訊雲+社區,獲取更多騰訊海量技術實踐乾貨哦~數據庫

本文來自騰訊雲技術沙龍,本次沙龍主題爲Serverless架構開發與SCF部署實踐服務器

盧萌凱:畢業於東南大學,曾就任於華爲,熟悉雲行業解決方案。目前負責騰訊雲中間件產品及無服務器雲函數的技術架構打造,幫助用戶完成方案設計,對雲端存儲產品的使用難點有獨到看法。網絡

你們好。我是騰訊雲中間件及無服務器雲函數架構師。我今天介紹分四部分:第一,對象存儲COS簡介。第二,比較實用的一部分,SCF與COS結合使用的應用場景。第三,比較有意思,人臉識別Demo。調用AI的接口,用幾行代碼就把人臉識別的Demo就實現了。最後一部分是最佳實踐。其實主要是來看一下在COS使用過程中有哪些須要注意的地方。架構

img

咱們先來介紹第一部分,就是騰訊雲存儲平臺發展歷程。首先咱們能夠看到在2006年的時候騰訊雲發佈了第一代分佈式存儲平臺,叫TFS。通過近十年發展到2014年存儲量達到500P,也是在這一年隨着騰訊雲推出,騰訊雲存儲系統開始對外服務。到如今騰訊雲超過EB級存儲,如今對內服務騰訊相冊,QQ以及外部的58同城和大衆點評等。併發

img

對象存儲是什麼?這頁簡單介紹一下對象存儲概念,若是用雲上的話,就是用雲的概念,騰訊雲對象存儲提供的是面向非結構化數據,支持HTTP和HTTPS協議訪問的分佈式存儲服務,它能容納海量數據並保證用戶對帶寬和容量擴充無感知,這裏能夠理解爲基於Serverless架構。同時對象存儲也會對雲上其餘的產品作一些深刻的結合,好比和CDN結合,用戶傳到CDN音視頻能夠選擇CDN進行加速,也能夠跟雲上音視頻轉碼服務相結合,上傳到COS音視頻能夠作轉碼服務。支持萬象優圖服務,能夠對圖片加水印等方面處理。less

這裏列了一個COS對象存儲簡易流程,用戶能夠經過手機APP、網站或者H5頁面能夠方便簡單的訪問。COS會和雲上其餘的應用結合,同時用戶也能夠選擇和COS本地服務相結合。運維

img

這裏給了一個COS應用架構,上面是一個傳輸服務,能夠選擇CDN加速。好比用戶須要上傳到COS延時高的狀況下能夠選擇CDN加速;同時能夠選擇騰訊雲提供的專線服務,能夠保證延時。同時可使用運營商服務。異步

應用接入層能夠選擇應用服務,像圖片智能識別和處理,音視頻處理等。同時COS能夠和雲上一些大數據套件對接。一個簡單的場景,用戶能夠用雲上的Kafka直接寫入COS,COS和大數據對接來作用戶行爲的分析。分佈式

下面是數據接口,這邊是COS底層的一些接入方法。最底層是分佈式數據存儲,咱們能夠經過API或者經過HTTP REST來訪問接口。函數

img

這裏給了一個簡單的應用流程,最左邊能夠看到用WEB服務,或者APP終端,經過運營商網絡接入到對象存儲,作一些簡單的上傳和下載動做;同時,騰訊雲上的COS能夠作CDN分發,或者作格式轉換,或者對接到雲上的雲主機或者私有的客戶本身的雲服務,作一整條流程的打通。

img

把剛纔的應用案例再細化一下的話,這邊給出了一個用戶在實際使用過程中的架構圖。首先,最左邊的用戶能夠經過調API接口,或者本身調雲上封裝好的sdk,在本身代碼裏去讀寫COS。或者經過控制檯很方便的上傳和下載一些文件。這邊是騰訊雲上COS雲存儲,這裏一共給了三種應用:一個是標準存儲,一個是低頻存儲,還有近線存儲。低頻存儲是用於讀寫數據頻率比較低的場景,好比說是網盤的運用。近線存儲主要用於歸檔數據,它多是一些冷數據,不常常用,能夠用近線存儲,它也能夠提供高可靠的數據保存。同時,它的成本也是很是低的。

同時對象存儲能夠對接雲上其餘的服務,並針對不一樣的用戶能夠設置不一樣的訪問權限。我這裏放了一個視頻對應用場景作一個總結和發散。

img

img

我這裏寫了一個簡單的Demo,主要作人臉識別,首先我會建立兩個存儲桶,這兩個存儲桶用來上傳用戶的信息,觸發SCF調用,其中一個作用戶特徵的提取。第二個存儲筒上傳第二張用戶的圖像,和第一個比對,查看是否能夠查到這個用戶信息。SCF裏直接調AI的接口,大概有4、五行代碼就能實現建立用戶的信息,再加一行代碼就能比對用戶信息。這裏用SCF日誌展現輸出。這個流程圖是這樣的,首先我在COS Bucket1裏上傳一張圖片,看他是不是一個新用戶,不是的話就建立一個特徵,若是是,就把這我的像添加到已建立的用戶特徵。另一個Bucket叫這個名字,這個也會觸發相同的SCF,用於查看用戶的特徵,若是查到的話這個用戶能夠獲取權限;若是查不到就會返回到無權限。

img

img

具體的話在控制檯上我這邊已經寫好了這個函數,咱們經過查看函數執行日誌來查看輸出結果。這裏我已經建立好一個bucket,這個用來用戶上傳圖像來提取用戶特徵。我會作一些測試,我已經有一些測試圖片了。我如今在網上隨意下載一個用戶的圖像。咱們看到這個圖片上傳成功了,叫範2,我如今到雲函數控制檯查看一下日誌,這邊能夠看到時間是16點37分。如今是沒有權限的,再上傳一張圖片,在new face提取一下特徵,仍是剛纔那張圖片。已經上傳成功了。因爲剛纔是沒有她的用戶特徵,因此這裏會建立一個新用戶。我在上傳另一張圖片,這兩張圖片是不同的,16點38分剛剛上傳成功。如今再回到控制檯這邊查看日誌,如今看到剛纔範這張照片,能夠查看到她的特徵了。

我再給你們看一下代碼。我剛纔實現的代碼裏,大部分都是從cos裏下載圖片的代碼和邏輯判斷,實際作人像識別的代碼是直接調AI接口。這裏還會對圖片作大小判斷,若是太大的話會作一次裁剪,由於太大的話可能上傳到cos時會報超時。下面我還列了一些對AI接口的操做,這裏有不少的接口都封裝到了SDK,直接調用大概也就幾行就能夠實現,好比人臉檢索,特徵信息建立,人臉比對兩張照片是不是一我的,還有身份證識別,因此使用起來是很方便的。

img

如今回到PPT,這一部分介紹的是COS和SCF結合的應用架構和應用場景。第一頁是放的雲函數架構平臺,這邊是BaaS架構。用戶能夠上傳代碼和作一些配置在雲函數平臺,並選擇COS觸發器,同時也能夠選擇上傳或者刪除事件來觸發這個雲函數。文件上傳到雲函數後,能夠在雲函數裏作不少操做,好比說我能夠作日誌備份,跨區域的文件複製,寫雲數據庫,作一些圖片處理或者語音識別等。或者我能夠用SCF對接IoT平臺,把數據推到IoT終端。大部分的雲服務均可以和雲函數平臺作一個結合。

這樣用的好處是COS這邊能夠提供高併發的場景。雲函數這邊也能夠支持高併發。用戶只用聚焦自身代碼的實現,使服務能夠快速上線,且當用戶的調用量很大的時候,這個架構也能很好的應對,有效的應對波峯和波谷。

img

把才的場景軸象化、簡單化後,能夠看到左邊是COS存儲桶,我能夠作上傳刪除等等,右邊能夠和其餘的產品或者服務作結合,像自定義日誌分析,和消息隊列作事件通知。

img

這裏舉例用戶頭像製做,用戶上傳圖片到COS,觸發SCF運行,SCF對圖片進行處理後發送到客戶端,並寫入COS,刪除原圖。假定我這邊配置SCF內存128MB,單詞執行時間1秒,平均天天被觸發運行5萬次。COS配置觸發SCF運行,用戶上傳到COS的平均文件大小1MB,天天上傳5萬次,被SCF處理後,圖片大小爲100K。這樣算出來SCF是這三部分的加和,由於這裏免費額度的緣由,因此這邊資源使用費用是零,至關因而免費在使用Serverless。這邊調用次數的費用是0.69元,天天觸發調用5萬次,一個月的費用不到1塊錢。另一個費用是由於這邊有外網出流量,每次上傳是多少GB,而後乘以5萬次,再乘30天,每GB0.8元,算出來是144元。若是沒有往客戶端發流量,全部的流量都在平臺內部打轉的話,這個費用也是沒有的,至關用SCF的費用基本上不到兩塊錢。

COS的話這邊也是把免費額度扣除掉以後,每次用戶上傳,存100K的圖片,加上讀寫IO,算出來是一個月14.6。因此這邊加起來一個月不到130塊錢。這是一個實際應用場景裏COS和SCF的價格舉例。

img

這裏我又列舉了一些用戶的實際案例,這邊由於沒有拿到用戶的受權,因此沒有把用戶的名稱放出來。這個案例是視頻文件轉碼,這邊是用戶視頻文件上傳,調用騰訊雲的視頻解碼服務,再根據不一樣碼率寫到COS,COS最後會用CDN,對視頻文件作一個加速。這裏全部的觸發都在雲上,你不須要運維,同時這邊的服務也是很是的便宜。

img

這個是CDN自動刷新,不少用戶會用到COS和CDN,把COS文件作CDN加速,可是這裏有一個問題,每次文件更新都須要手動點擊刷新,如今就不用了,上傳到COS的文件自動觸發SCF,SCF調CDN的API接口,實現自動刷新。

img

這個客戶案例,是作日誌文件分析,客戶的點播平臺每時每刻都在產生大量的日誌,怎樣快速低成本的對這些日誌進行統計分析,篩選出最受歡迎的視頻源,點播峯值時間段等並展現出來成爲客戶面臨的難題。

img

這個案例是一個在線視頻教育的案例,老師和學生會有視頻課程,它們會從視頻課程抓取圖像,而後把這些圖像上傳到COS,而後COS會觸發SCF作一次分析,把這個寫到消息隊列,並通知客戶自身的業務模塊進行分析,從而來判斷老師和學生之間是否有敏感信息產生。

img

這是一個自動災備的案例,客戶是荔枝微課,用戶在APP或者電腦端作文件上傳,文件上傳之後,須要同步到跨區域同跨賬號下的其餘Bucket。

img

最後我說一下最佳實踐。其實只要能爲用戶實際創造價值,它就是一個最佳實踐。這邊我列舉了幾條,主要是在使用COS和SCF過程當中的注意事項。好比COS觸發SCF的流程,首先COS會把上傳和刪除事件寫到本身的消息隊列,和雲函數SCF消息隊列作一個對接,雲函數消息隊列會觸發雲函數執行每次的事件操做。因此這是異步調用。有同窗會問這邊是否是實時的,若是正常狀況下,沒有消息堆積的話是毫秒級。若是某一時刻有大量用戶作上傳視頻或者刪除動做的話,可能會產生消息堆積。若是來不及消費,可能在秒級觸發SCF運行。

COS觸發SCF只支持同地域配置。

COS支持先後綴過濾觸發,以及同一Bucket中多種事件類型觸發SCF。

爲了不COS的事件生產投遞出現錯誤,COS針對每一個Bucket的每一個事件限制只能綁定一個可觸發的函數。主要爲了不用戶出現循環的調用,觸發錯誤。

目前單個雲函數支持綁定2個COS觸發器。

最後一個是列舉了COS Bucket的消息格式,會把什麼樣的信息發給SCF。SCF在這個事件裏把消息拉出來。好比用戶的APPID,用戶上傳的文件名,以及用戶Bucket所在的地域,這邊均可以拿到。因此在SCF這邊能夠拿到用戶上傳到COS大部分的文件信息。

有同窗問到,傳統開發模式和無服務器模式架構的區別,或者說是用傳統開發模式的優點或者二者之間的成本對比。這邊能夠看到對於傳統架構設計,好比買了雲主機,架構分層,功能劃分,模塊通訊等等都須要考慮。用無服務器只須要對函數功能進行劃分,同時把一些具體的功能經過事件觸發的形式去綁定到一塊兒,這邊架構上會減小不少工做量。可是,若是說這個邏輯或者服務計算是很是重的話,其實仍是用傳統開發模式可能會更好一點。另外若是雲主機使用效率在 70%如下的話,其實SCF會便宜不少,同時SCF能夠省去不少運維和環境搭建的工做。

代碼開發,傳統模式要考慮到容災,業務邏輯的對接。雲函數只須要關心本身的業務代碼,把業務代碼寫好後配置相應的觸發器,這邊就能夠運行了。

代碼調試,登錄服務器使用熟悉的工具在本地調試。無服務器目前主要依賴日誌調試。

發佈部署,雲函數這邊可能效率會更高一點,可是差異不是很大。

Q&A

Q:我在更新個人模型文件的時候,會不會對我其餘的文件產生影響?

A:像對COS作熱更新的時候,在那個時刻會有影響,可是在過程當中沒有影響。

Q:SCF究竟是什麼?

A:簡單來講SCF就是一種計算資源。咱們有時候會叫它FaaS。FaaS是一個概念,SCF是一款產品。

本文PPT附件請點擊原文下載。

問答

Serverless:如何刪除一個函數?

相關閱讀

多個場景中的AI落地實踐

低於0.01%的極致Crash率是怎麼作到的?

【每日課程推薦】新加坡南洋理工大學博士,帶你深度學習NLP技術

此文已由做者受權騰訊雲+社區發佈,更多原文請點擊

搜索關注公衆號「雲加社區」,第一時間獲取技術乾貨,關注後回覆1024 送你一份技術課程大禮包!

海量技術實踐經驗,盡在雲加社區

相關文章
相關標籤/搜索