天天看點

AutoML 應用探索:如何讓 AR 掃福更順滑?

一切都是為了更順滑!

五福已五年陳。除去第一年采用咻一咻方案來完成集福,還未引入圖像識福的方案外,今年已是 AR 掃福鍊路作為識福入口的第四年。有的同學會問,我去年就已經覺得掃福非常順暢、識别非常準确了,為什麼今年還要繼續更新模型呢?這讓我想起逍遙子在雙十一戰場上的一句話,"今年雙 11,我最關心的不是銷售數字,而是技術峰值"。而對應在掃五福的場景上,如何讓使用者在 AR 識福的體驗上更加順滑、如何在極低配的手機用戶端上依舊可以流暢地掃出福來、如何将端上計算的覆寫率觸達更多的使用者甚至接近100%,這是我們每年必須要去重新整理、去突破的方向。

AutoML 應用探索:如何讓 AR 掃福更順滑?

往年的沉澱

在過去三年掃福的視覺算法側,我們可以總結為兩次突破。第一次突破,來自 18 年 xNN 深度學習引擎的引入,支援了識福深度學習網絡在端上的運算,顯著降低雲端服務壓力的同時,更大幅提升了識别算法的精度;第二次突破,來自 19 年雲端服務完成了 xNN - x86 版本的更新,使得在端雲結合的方案背景下,真正地實作端雲一體,端上與雲上模型完全統一。技術上的突破,帶來體感互動更加流暢、識别結果更加準确,就像下面的動圖,如果 17 年他可能還是位"漏洞挖掘專家",但在 18 年以後再想"偷襲",恐怕就很難了。

AutoML 應用探索:如何讓 AR 掃福更順滑?

今年的突破

今年為了在使用者體驗側、研發流程側更加順滑,我們引入了 AutoML。不僅是對訓練超參與網絡結構的搜尋,也是對于整個模型研發流程的自動化。原因可歸為如下兩點:

網絡性能階越式提升,人工成本高

今年在曆年基礎上,為了端側計算觸達更多使用者、端上資源消耗更低、識别效果更準,我們需要網絡模型性能完成進一步的階越式提升。然而當曆年模型已經達到不錯的基準水準時,再想單靠人工設計,使得模型性能、精度大幅提升,是需要付出更大的精力與人工成本的。

KA 商戶需求、輿情需得到更快速響應

随着 AR 掃商業化的豐富,對于福字識别鍊路的模型結果,也要快速相容與滿足 KA 商戶定向識别的個性化需求。并且對于掃福這種全民參與的活動,遇到識别輿情,快速疊代模型的應急能力,是對于掃福這種活動必須具備的能力。我們需要盡可能地縮短模型疊代的周期,所有的操作、時延、訓練時間都是标準可控的,強化模型疊代的應急快反能力。

網絡結構設計的自動化

AutoML 能力特性

我們采用了 xNN-Cloud 平台提供的 AutoML 能力,來完成今年福字模型的結構搜尋。那麼它必須具備如下一些特性:

1)是開箱即用的。在原生的網絡結構代碼上,無需改造很多,即可使得網絡支援搜尋。

2)是能夠兼顧到端側名額的。在比較不同搜尋實驗結果時,不局限于精度,計算量大小 / 參數量大小 / 耗時等因素,也要一同考慮進來。

3)使用者互動是友好的。使用者隻需要關心搜尋過程是否符合預期,搜尋結果名額是否可以快速比較,而具體的資源排程、GPU 使用等使用者無需關心。

下圖展示了在 xNN - Cloud 上的一個 AutoML 任務搜尋過程的流程圖示例,以及名額結果在搜尋過程中的動态變化過程。

AutoML 應用探索:如何讓 AR 掃福更順滑?
AutoML 應用探索:如何讓 AR 掃福更順滑?

網絡與空間設計

識别鍊路

檢測模型先定位候選目标區域,再由識别模型,來判别區域是否為福。由于檢測與識别網絡分開,進而遇到定制識别需求(比如識别馬老師福)需要模型快速遷移的場景裡,可以維持檢測模型穩定,隻需要在識别模型上進行遷移訓練,而不用連帶檢測網絡一同更新。是以總體上,我們有檢測與識别兩個模型,均需要進行 AutoML 結構搜尋。

引入先驗

AutoML 搜尋,如果訓練資源足夠多、時間跨度允許足夠長,我們會願意給予機器盡可能多的自由,進而可以在更複雜的空間内進行搜尋。然而對于掃福這種業務場景,每年從各部門抽同學組成一個臨時的集體,到模型參與測試聯調,無非一個月左右的時間。而在這麼短的時間内,需要對兩個網絡完成結構搜尋。并且還要保證參數量、計算量比往年模型更小,精度比往年更高。是以,我們對于網絡架構上,基于在其他相似業務積累的經驗,做了一些先驗上的選擇。

檢測模型

我們從單階段檢測器(SSD)結構出發,增加了 Pyramid Pooling Network(PPN) 的結構,用于在不增加額外參數的情況下,快速擷取不同尺度空間上的特征。并且在框位置/類别的回歸分支上,使用了權值共享卷積,來将不同尺度上的資訊特征,使用相同的權重進行學習,使網絡能夠對不同尺度下的目标,都有較好的表現。在此基礎上,我們以 MobileNet V1 結構為初始 base network,搜尋各層的通道寬度以及卷積核大小,并且為了預測 head 可以與 base network feature 比對的更好, shared tower 回歸層的通道寬度,也加入到搜尋空間當中。進而使得網絡的特征提取與預測 head,在福字檢測這個場景均達到最佳适配。

識别模型

我們從 MobileNet V2 結構出發,并且參考 EfficientNet 的方式,在一個較小的網絡下搜尋,然後通過網絡寬度、深度、輸入大小的 scaling,來使得基于小模型上搜尋出的優秀結構,可以快速擴充模型的容量。并且 Google 的 Searching for MobilenetV3,也是以搜尋的方式在 MobileNet V2 基礎上,将移動端識别模型做到更加極緻。後文也給出了我們 AutoML 的結果與如果直接使用 MobileNet V3 結構的結果比較。下圖中展示了,最終結構搜尋得到的檢測與識别網絡結構。

AutoML 應用探索:如何讓 AR 掃福更順滑?
AutoML 應用探索:如何讓 AR 掃福更順滑?

搜尋目标

伴随着 AutoML 的搜尋過程,會涉及每個 Trial 的結果好壞比較。進而選擇相對更優的結構,去進一步在此基礎上搜尋或者訓練。比較的目标基準,在掃福這個任務上,我們要考慮的不僅僅是精度。因為模型最終要在用戶端運作,模型的計算量 (FLOPS)、模型的參數量大小 (Model Size),也會成為我們必須關注的名額。是以,在指定比較基準時,我們設計了一個将多種因素同時考慮進來的方式,來對比 AutoML 過程中的不同 Trail。其中 T_f 和 T_s 是期望的目标值,w_f 和 w_s 是用來控制 FLOPS、ModelSize 與 Accuracy 之間的一個 trade-off。

AutoML 應用探索:如何讓 AR 掃福更順滑?

搜尋政策

由于搜尋資源一定是有限的,是以我們選用了資源消耗、搜尋效率上相對最優的 Hyperband 算法。該算法讓前序搜尋的 Trial,先訓練較少步數後比較目标函數,然後從中逐級選擇較優的結構,再使用更大的步數進行訓練,進而能在搜尋結構的訓練步數和整體資源之間找到一個平衡。同時為了防止陷入一定機率的局部最優解,在選擇首次随機的參數空間時,也會采用多級随機選擇。進而整體來看,在保證随機性的同時,也保證了較優結構訓練更大步數,最終得到收斂情況最好的模型。

在搜尋算法實作上,xNN-Cloud 與螞蟻人工智能部 ALPS 團隊合作,完成了 ALPS-AutoML 架構 Python SDK 的內建,其中超參搜尋算法部分,支援 grid、random、bayesian、racos 等各種超參搜尋算法;也支援 hyperband、medianstop 等 EarlyStopping 機制;支援靈活的超參數組合配置。同時 ALPS-AutoML 在機器學習其他場景,也支援 xgboost 模型的元學習、高效的自動特征工程等非常豐富的自動機器學習能力。

模型性能

速度更快,大小更小,精度更高

安卓用戶端上以 19 年的 top50 機型、ios 用戶端上以 19 年的 top20 機型,來作為對比兩年推理耗時的基準。從去年和今年的真實線上環境資料來看,安卓平台上相比去年降低了50%以上,平均耗時達到了 100 毫秒内;ios 上降低了 30% 以上,平均耗時40毫秒以内。模型大小上,較去年進一步減少 80K。在耗時、參數大小都比去年更低的情況下,精度較去年進一步提升了 1.6%。這些均來自于在 AutoML 搜尋過程中,對于精度、參數量、計算量的綜合考慮,使得搜尋得到的最終模型結構,可以在這三方面,均得到兼顧。

AutoML 應用探索:如何讓 AR 掃福更順滑?
AutoML 應用探索:如何讓 AR 掃福更順滑?

識别模型 vs Mobilenet-v3

我們也将搜尋出的識别網絡結構,與 Mobilenet - v3 結構,在福字識别場景做了對比。可以看到當計算量相差不大時(mnv3-small-065),我們 NAS 得到的參數量大小隻有 mn-v3 的結構的 1/10。然而對于集五福這種對端上資源大小,也有非常嚴格限制的業務場景上,原生 mn-v3 的模型大小明顯是不合适的。而如果為了盡量減小mn-v3的模型大小,将一些 advanced blocks 舍去,并且将寬度倍率進一步降低時 (mnv3-small-minimalistic-025),模型計算量的确會進一步減少,但是精度上會引來非常明顯的下降。是以,這也進一步證明了福字識别 AutoML 搜尋結果,對于精度、計算量、參數大小綜合考慮的有效性、以及網絡對于業務場景的更高适配性。

AutoML 應用探索:如何讓 AR 掃福更順滑?

P.S. 上述表格中展示的識别精度,為線下 9 萬張測試用例在 threshold = 0.9 下的圖像級精度。在業務場景實際調用時,是基于視訊流識别的方案,會有多幀結果的融合與校驗,使得總體的線上識别精度幾乎趨近于 1。在整個掃福活動期間,沒有引起任何規模化的識福輿情的産生與傳播。

算法研發流程的自動化

平台基礎

AutoML 應用探索:如何讓 AR 掃福更順滑?

xNN-Cloud 提供了一站式視覺算法研發的能力,提供了豐富的功能與算法開發特性(如上圖),這也給掃福模型研發流程的自動化,提供了巨大的便利與幫助。

算法開發

内置标準的分類、檢測、OCR 等算法包模闆,且配合參數配置,無需任務額外代碼的情況下,就可以訓練得到優質的模型。有定制優化需求時,僅需完成 Common API 的幾個抽象接口開發,即可将自定義的網絡結構、損失函數、優化方法等,應用在模型訓練當中。

模型壓縮

配置化的模型壓縮能力,極大降低使用者感覺模型壓縮能力的成本。內建的 xQueeze 模型壓縮工具鍊,提供強大的自動剪枝、模型量化、定點化的能力。

資料預覽

不局限于看标注結果,同時可以結合模型在資料集的評測結果,做到更多元展示。如分類任務,可以快速檢視預測類别與 GroundTruth 類别之間的交叉結果;檢測任務,能夠直覺展示多組預測結果與 GroundTruth 之間的 IoU 情況。

多機多卡

盡可能降低使用者使用多機多卡能力的複雜度。通過接入 Kubeflow MPI Operator,幫助使用者輕松運作分布式訓練。不管在哪種算法場景類型上,使用者僅需要選擇卡數,即可使用上多機多卡的訓練能力,而無需将額外精力放在代碼如何在多機上運作起來的、各卡上的梯度是如何彙總更新。

模型評測

整個掃福期間,自動化訓練産出上千個模型。如何快速地從這些模型中,選擇出較優的那個,是能夠大大減少時間成本的。通過評測,可以觀察到在獨立測試集上的精度結果、PR 曲線等。而且可以将多個模型的結果,放置在同一個面闆當中。

真機測試

模型要在用戶端側運作,除了模型大小以外,也需要耗時、CPU/記憶體占用等名額,來判斷模型是否滿足端上的運作性能需求。通過接入 EdgePerf 與雲測平台,快速實作真機上的模型實測,提供真實、直覺的運作性能名額。

模型快反

五福活動期間,如果模型上線之後,根據使用者實際掃福的情況,發現需要增加對于定向類别的識别。并且産品還希望在 1 小時内模型能上線。從資料組織到模型訓練到格式轉換再到模型評測,如果有一步不小心人為操作疏漏了,會有很大風險耽誤模型的更新上線時間。然而借助将整個資料準備、訓練、評測流程,全部平台化、自動化,那麼可想到的犯錯機會,與人為離線訓練相比,将大大降低! 進而完成在特殊業務需求下的模型快反。

在掃福模型上線之前,我們在 xNN-Cloud 模拟了根據定向圖檔類型,進行模型快反的訓練流程。隻需要将定向識别的資料集上傳之後,克隆之前的模拟訓練任務,并且将新的資料集添加進來,再加上平台提供的多機多卡的能力,進而最終模型訓練過程,可以控制在 15 分鐘以内。不僅保證了模型結構、大小與預期完全相符,識别結果上也在保持原先其他類别不受影響的前提下,增加了對定向圖檔的識别。整個過程全部在掌控之中,不再有人為失誤的可能,隻需要交給平台。這個能力也在鼠年馬老師福、商家特定福識别的遷移訓練上,得到了應用。在很短的時間内,就在基準模型基礎上,疊代出了最終上線的版本,完成模型的快反。

結語

掃福模型的訓練,依托于 xNN-Cloud 平台,今年在節省大量人力的情況下,産出了比往年都要更優秀的模型。這離不開 xNN-Cloud 平台提供的 AutoML 與自動化訓練的能力。目前 xNN-Cloud 也在将真機測試與搜尋過程直接打通,用最接近真實環境的運作名額,指導 AutoML 的搜尋。

更多關于 xNN-Cloud 平台,可點選閱讀:

不寫一行代碼,完成機器視覺算法的研發