WAIC 2021 | 思謀科技劉樞:賦能制造業(yè)需要什么樣的算法平臺?
在 WAIC 2021 AI 開(kāi)發(fā)者論壇上,思謀科技聯(lián)合創(chuàng )始人兼技術(shù)負責人劉樞帶來(lái)題為《智能制造中的算法平臺》的精彩分享。在演講中,他主要介紹了在制造業(yè)中,什么樣的算法平臺能為客戶(hù)與自己降本增效。
以下為劉樞在 WAIC 2021 AI 開(kāi)發(fā)者論壇上的演講內容,機器之心進(jìn)行了不改變原意的編輯、整理。
今天非常高興有機會(huì )在這個(gè)地方分享我們的思考,也讓大家看一下我們怎么從深度學(xué)習前邊走到后邊,來(lái)到了這個(gè)后深度學(xué)習的 AI 時(shí)代。我相信,很多 ToB 公司初心為客戶(hù)降本增效,其實(shí)作為 ToB 公司也可以對自己好一點(diǎn),為自己降本增效。
我來(lái)自思謀科技,創(chuàng )始人及董事長(cháng)是賈佳亞博士,他是香港中文大學(xué)終身教授、電氣和電子工程師協(xié)會(huì )(IEEE)院士、業(yè)內頂級期刊 TPAMI 副主編、計算機視覺(jué)、人工智能與計算機影像學(xué)等領(lǐng)域權威專(zhuān)家。思謀科技成立于 2019 年 12 月,現在已經(jīng) 1 歲半,像剛剛出生的嬰兒一樣,成長(cháng)非常迅速。最近已經(jīng)完成 2 億美元 B 輪融資,2020 年 10 月,完成超億美元 A 輪融資。之所以得到資本市場(chǎng)的青睞,也是因為短短一年半時(shí)間,(我們)做成了許多標桿案例項目交付以及軟硬一體標準產(chǎn)品的打磨。
一、為什么是制造業(yè)?
我們所關(guān)注的領(lǐng)域是制造業(yè),歷經(jīng)機械自動(dòng)化、電子化,(制造業(yè))現在迎來(lái)智能化時(shí)代。思謀科技致力于研發(fā)新一代 AI 技術(shù),打磨全棧交付能力,通過(guò)標準化軟硬件一體產(chǎn)品以及端到端的解決方案,推動(dòng)整個(gè)制造業(yè)智能化轉型升級。
制造業(yè)發(fā)展趨勢非常好,不管是全球還是中國市場(chǎng),發(fā)展速度均遠超 GDP 增長(cháng)率。就國內來(lái)講,由于受到「智能制造 2025」以及新基建利好政策影響,增長(cháng)趨勢遠超國外。同時(shí),隨著(zhù)人工智能計算機視覺(jué)技術(shù)不斷成熟與發(fā)展,現在可以解決許多之前機器視覺(jué)所解決不了的需求,增長(cháng)也迎來(lái)爆發(fā)點(diǎn)。
舉個(gè)簡(jiǎn)單例子。提到制造業(yè),人們的第一反應都會(huì )想到怎么把這個(gè)東西生產(chǎn)出來(lái)。這個(gè)過(guò)程自動(dòng)化程度已經(jīng)非常高。每一件產(chǎn)品生產(chǎn)出來(lái)之后,有一個(gè)必不可少的環(huán)節是什么?一定要做產(chǎn)品的質(zhì)量檢測(不管物理的、化學(xué)的還是外觀(guān)檢測)。比如,手機生產(chǎn)完之后表面有沒(méi)有劃痕,(檢測)有沒(méi)有缺陷,往往是人力參與最多的環(huán)節。
舉一個(gè)具體例子。產(chǎn)線(xiàn)女工要看芯片是不是平整,怎么做?拿一個(gè)小東西往里戳,戳不進(jìn)去就是平的,戳進(jìn)去就是不平。這里存在很多問(wèn)題。首先是速度非常慢,效率非常低。其次,這樣做是非常主觀(guān)的事情。男、女工人去戳同一塊芯片,結果可能不一樣。這個(gè)環(huán)節往往效率最低,結果也最不可靠。
我們提供了一套解決方案。用 3D 激光做線(xiàn)掃,很多芯片可以一次性?huà)呙璩鰜?lái),檢測上面是不是平的、有無(wú)缺陷等,給客戶(hù)提供效率更高、結果更靠譜的方案。
把視角放大一點(diǎn),看一下每個(gè)人都會(huì )用的手機。手機里面有幾百種零件,幾百個(gè)供應商,每個(gè)零件都要做檢測。有些零件組裝之后也要做檢測,看有沒(méi)有引入新的缺陷。每個(gè)零件本身可能有幾十種缺陷要做檢測,僅僅是一部手機就需要做上萬(wàn)種缺陷檢測。市場(chǎng)需求非常大,這是非常好的事情。但是,這里面也有些痛苦。
每個(gè)零件都不一樣,每個(gè)缺陷都不一樣,項目需求非常碎片化。同時(shí),上線(xiàn)之前數據很少,怎么用比較少的數據快速得到還能夠上線(xiàn)的模型去迭代?隨著(zhù)產(chǎn)線(xiàn)良率的變化,最后驗收標準也會(huì )發(fā)生調整,有點(diǎn)像薛定諤的需求一樣,時(shí)時(shí)刻刻摸不準,但還是要去滿(mǎn)足它。性能要求高就不用說(shuō)了,迭代速度快是什么意思?在一個(gè)產(chǎn)線(xiàn)上會(huì )混線(xiàn)生產(chǎn)不同廠(chǎng)商的產(chǎn)品,算法要同時(shí)兼容它們,生產(chǎn)線(xiàn)怎么快速迭代到新產(chǎn)品里面?這都是具體技術(shù)問(wèn)題。
我相信在座的各位都是做技術(shù)的同學(xué),有一個(gè)很重要的點(diǎn)就是怎樣把客戶(hù)紛繁復雜的需求抽象成通用技術(shù)問(wèn)題,用更高的交付效率和更低交付成本完成項目交付,這是最大價(jià)值。
我們自己開(kāi)發(fā)了一套完整的覆蓋所有應用以及上下游工具鏈的算法平臺,Smore AI Platform(SMap)。通過(guò)平臺完成了所有項目交付以及打通所有產(chǎn)品,所有工程師一起使用和維護這套平臺。接下來(lái),我按照我們內部時(shí)間演進(jìn)順序、從四個(gè)維度闡述我們認為需要什么樣的算法平臺。
二、「降本增效」需要什么樣的算法平臺?
首先,最簡(jiǎn)單的是工具化。它能夠被不同工程師快速使用,如果用得比較好,不同工程師可以互相遷移,它本身可以作為知識沉淀、知識傳播的載體。
與之相對的是,可能有不同算法工程師,每個(gè)人有自己祖傳的代碼,雖然里面加了非常多好用的東西,但是不同工程師不共享,很多東西還要重新開(kāi)發(fā),沒(méi)辦法用起來(lái),這就非常痛苦了。
為了解決這個(gè)問(wèn)題,這是第一代算法平臺大概架構圖。第一代把不同應用做了單獨代碼庫,比如檢測、分類(lèi)、分割等等,做相同方向的同學(xué)可以快速復用起來(lái)。比如,A 同學(xué)做了一些長(cháng)尾問(wèn)題解決方案,B 同學(xué)做了其他方案,只要做同一個(gè)方向大家都可以用起來(lái)。
問(wèn)題是,當我們希望把模型做得更快時(shí),用到蒸餾或者量化技術(shù),因為代碼庫是完全割裂開(kāi)的,在檢測、分類(lèi)、分割應用時(shí),都要重新開(kāi)發(fā)一遍,非常浪費。
而且不同人設計不同代碼庫,設計理念和設計語(yǔ)言也不一樣,比如同樣一個(gè)術(shù)語(yǔ)在不同代碼庫可能引起混淆,這就帶來(lái)第二代的架構,一定是平臺化東西。
不同應用以及上下游工具鏈一定是依照同樣優(yōu)秀的抽象,它定義了數據流、架構應該長(cháng)什么樣子,不同模塊長(cháng)什么樣子等等。有了比較好抽象以后,不同模塊以插件形式融入到一起,非常簡(jiǎn)單地加以調用。同樣,依賴(lài)于比較好的抽象,以后不斷衍生的新技術(shù)也可以很快用起來(lái)。
這是我們的第二代架構, 我們把整個(gè)代碼抽象成三個(gè)層級。中間是最核心的模塊(Core),承載不同應用 、上下游工具鏈抽象的總接口,同時(shí)沉淀了所有共享的東西。
它的上面鏈接了應用層,比如檢測、分類(lèi)、分割、關(guān)鍵點(diǎn)、機器學(xué)習的技術(shù)以及機器視覺(jué)技術(shù)等等。算法同學(xué)只跟核心模塊交互,通過(guò)核心模塊調用不同應用,就可以非常簡(jiǎn)單用起來(lái)。
第三層是插件層,通過(guò)統一抽象(因為我們數據已經(jīng)完全抽象好了),開(kāi)發(fā)一次就能支撐所有應用。除此之外,我們還封裝了對應的解決方案,針對不同方向,比如 3C、半導體,打包不同技術(shù)點(diǎn)成為一些方向性的解決方案,幫助我們快速復用。
這是一個(gè)比較簡(jiǎn)單的例子。我們做了抽象之后,算法工程師只用跟核心模塊打交道,因為這一套所有交互都是完全一致的,遷移起來(lái)去做檢測分割、分類(lèi)等,就沒(méi)有遷移的成本。同時(shí),因為是可插拔設計,后續需要任何工具鏈上東西,都可以通過(guò) Core 快速組裝起來(lái),直接得到想要的模型。
簡(jiǎn)單地講一點(diǎn)不同的東西。思謀的 SMap 在設計之初就是定位面向工業(yè)界交付的代碼庫,跟面向學(xué)術(shù)界或者網(wǎng)上開(kāi)源代碼庫有一些不同點(diǎn)。比如,網(wǎng)上開(kāi)源的 OpenMMLab 是一套非常好的代碼庫,是面向學(xué)術(shù)界的,不會(huì )有上下游工具鏈的一套支撐,而 SMap 具有這些優(yōu)勢。同時(shí) OpenMMLab 也比較開(kāi)放,方便大家所以去做一些修改。
但是面向工業(yè)界的東西,要以某種方式約束代碼庫,不能太過(guò)于隨便。舉個(gè)例子。做研究生或者做項目交付時(shí),可能會(huì )遇到這種問(wèn)題。這個(gè)模型訓練好了,過(guò)兩三個(gè)月之后,客戶(hù)或者研究生導師突然要求復現這個(gè)模型,這個(gè)時(shí)候可能會(huì )復現不出來(lái),為什么?
大家平時(shí)都是通過(guò) config 去定義怎么訓練模型,但是,模型的產(chǎn)生不僅僅依賴(lài) config 所定義的訓練方法,還依賴(lài)于模型運行環(huán)境以及模型所依賴(lài)的代碼版本。過(guò)兩個(gè)月代碼庫變了,再去訓練它可能就沒(méi)有辦法保證得到同樣的模型。
為了去滿(mǎn)足這個(gè)問(wèn)題,我們也加了一些限制,比如用另外一套文件去定義到底在什么運行環(huán)境下,依賴(lài)于哪一個(gè)分支得到模型,保證每個(gè)模型都是可以嚴格復現出來(lái)的。
再比如,大家之前可能覺(jué)得 configuration 比較隨意、比較開(kāi)放,最好用。但我們做了一些操作,比如,default value 或者會(huì )限制數據類(lèi)型等,去做一些防呆的設計。封閉是一方面,開(kāi)放這個(gè)東西也不能丟。我們的解決方法是加了一個(gè) customize 模塊。通過(guò)一套統一接口,只要能把接口設計得比較符合邏輯,將這個(gè) customize 模塊、訓練 configuration 以及對環(huán)境的定義放在同一個(gè)文件下,就可以完整定義出一套自己的實(shí)驗,同時(shí)也通過(guò)這種方式允許大家去開(kāi)發(fā)自己的東西。開(kāi)發(fā)好后,如果是比較好的解決方案,就可以直接納入到核心代碼庫里。就算嘗試失敗,也不會(huì )對核心代碼庫造成任何影響。
除了細節設計,單點(diǎn)的技術(shù)也有突破。比如,蒸餾是非常重要的模塊,蒸餾是希望把大模型的一些 dark knowledge 放到小模型里,讓小模型速度既快、性能又好。下面是比較常見(jiàn)的一套方法。
后來(lái),我們發(fā)現在小模型里面,如果在其高層同時(shí)學(xué)習所有前面的 teacher 層,可以得到非常好的效果,有點(diǎn)像考試之前要復習一下,臨時(shí)突擊一下也可以學(xué)到很多東西,溫故而知新嘛。如果 student 每一層都去學(xué)習前面一層,也能得到非常好的效果,但是也會(huì )非常笨拙。我們最后做了一些精簡(jiǎn),得到一個(gè)簡(jiǎn)單架構,效果也很好。這個(gè)發(fā)表在了 CVPR,已經(jīng)開(kāi)源了,感興趣的同學(xué)可以用一下。
這是簡(jiǎn)單的結果。跟其他方法相比,在任務(wù)集上都有非常大的提升,同時(shí)可以應用在不同場(chǎng)景里面,比如檢測、分割、分類(lèi)數據集等等,效果不錯,也已經(jīng)被廣泛地應用到了我們的項目交付里面。
這個(gè)東西做完,可以看到,訓練往往不需要開(kāi)發(fā)一套新的東西,因為沉淀了非常多標準工具,大家直接調用就可以了,節省了非常多重復開(kāi)發(fā)、反復 debug 的時(shí)間。但是,算法工程師還是需要花費一些時(shí)間在選擇用什么方法、調整超參、網(wǎng)絡(luò )結構等等,這就跟前面幾位嘉賓講的很像,需要 automl 的加持(在后面做演講有非常好的地方,總是可以發(fā)出英雄所見(jiàn)略同的感慨)。
第三個(gè)維度叫范式化。我們希望實(shí)現項目流程范式化,快速把類(lèi)似東西復制到不同項目去,極大實(shí)現模型自動(dòng)化生產(chǎn),減少算法同學(xué)調整模型、超參的時(shí)間。
還是這個(gè)圖。我們在這個(gè)基礎上跟 Core 打交道,加了自監督學(xué)習、超參自動(dòng)優(yōu)化、NAS 搜索網(wǎng)絡(luò )結構、損失函數等等。
但是,跟之前嘉賓講的不一樣,我們不是為了去用 automl 而去用,而是會(huì )結合自己的實(shí)際應用,核心點(diǎn)在于用 automl 多快好省地解決客戶(hù)問(wèn)題。所以,對搜索空間、時(shí)間成本都做了非常大的精簡(jiǎn),基于我們的經(jīng)驗 know-how 約束了搜索成本和時(shí)間。大家知道,通過(guò) automl 可以節省算法工程師很多時(shí)間,但是電費也很貴,能省一點(diǎn)也是好的。
加了 automl 之后,可以看到調用的邏輯會(huì )變得復雜一點(diǎn)。通過(guò)對 Core 的調用,比如我們現在選擇兩個(gè)模塊,可以用 HPO 自動(dòng)優(yōu)化,可以用 NAS 去搜索結構。
大家還記得剛才提到的,我們遇到的項目數據量不是很大,但是,我們一直持續接項目,一年半時(shí)間接觸幾百個(gè)項目,如果把這么多項目數據全部放在一塊,本身量就很大。怎么樣能夠把數據利用起來(lái)呢?這就是一件非常有意思的事情。
雖然項目可能對應不同零件、不同缺陷,但都有某些工業(yè)場(chǎng)景下的共性,都是希望找一些不同。在這種情況下,自監督學(xué)習就是非常好的模式。用自監督學(xué)習把不同數據放在一塊,進(jìn)行預訓練,用已經(jīng)知道的知識幫助模型快速收斂,在數據比較少的時(shí)候也收斂到比較好的狀態(tài)。
解決小數據問(wèn)題,這只是其中一個(gè)點(diǎn),也還有很多其他的方法。
這邊有一些具體數字,有了這套代碼庫后,我們 POC 基本只要半天就可以得到還不錯的模型;平均而言,整個(gè)模型迭代速度有三倍提升,尤其對于比較難的項目,對于模型的性能,推理速度要求比較高,可能 5-10 倍的提升,收益非常大。同時(shí),還有單點(diǎn)的技術(shù),比如 NAS、HPO,即使只是用其中一個(gè)小塊,也能帶來(lái)一些提升。
這里有兩個(gè)比較有意思的漫畫(huà)。左邊說(shuō),當模型訓練不是特別好的時(shí)候,要看看數據是不是對的。我們現在也是往這個(gè)方向邁進(jìn),大家想一想,這個(gè)現象的原因是什么,是因為后面框架已經(jīng)足夠優(yōu)秀,大家的時(shí)間更多花在前端處理數據上。這也是大家需要關(guān)注的點(diǎn),從客戶(hù)拿的數據怎么樣達到要求,理清楚客戶(hù)需求,這個(gè)占用的時(shí)間會(huì )越來(lái)越多,也是后面要做一些探索的。比如,之前嘉賓也分享過(guò)一些技術(shù)(比如 active learning)幫忙去做。
另一幅漫畫(huà)上,可以看到研究員合理摸魚(yú)、劃水的理由是什么?答案是,我的模型在訓練。這也是一個(gè)現實(shí)狀態(tài),模型訓練占了絕大多數時(shí)間,當然,算法工程師也不是在摸魚(yú),而是在仰望星空看下一代需要做什么東西。
簡(jiǎn)單再介紹一個(gè)小技術(shù),就是我們的自監督方法。我們拿到兩張圖做一個(gè)切分,把不同的圖拼在一起,拼成新的圖,把他們丟到神經(jīng)網(wǎng)絡(luò ),學(xué)習怎么把之前的圖恢復出來(lái)。跟之前的方法不同,我們不需要同時(shí) forward 兩倍數量的圖片,這樣可以加速訓練速度和減少顯存的占用,同時(shí)還把定位信息加進(jìn)去了。這也是很有意思的工作,是 2021CVPR 的一個(gè) Oral,代碼開(kāi)源了,感興趣同學(xué)可以看一下。
最后一個(gè)維度是產(chǎn)品化。剛剛講了我們的算法平臺本身一定是面向交付的。什么叫面向交付?開(kāi)源代碼庫往往是訓練完這個(gè)模型就結束了,對于公司來(lái)講,還差一公里,模型要工程化變成 SDK 交付給客戶(hù),產(chǎn)生價(jià)值?,F在,算法這一側已經(jīng)跟工程側完全打通,同樣一個(gè) configuration,定義的不僅僅是怎么去訓練模型,同時(shí)也定義了推理時(shí)需要怎樣前后的處理。通過(guò) configuration,就可以自動(dòng)化把 SDK 組裝起來(lái),得到可以到線(xiàn)上去部署的推理 SDK。
我相信,很多公司也會(huì )給客戶(hù)提供一套通用性算法平臺,但可能會(huì )有一個(gè)問(wèn)題,提供給客戶(hù)的平臺,跟自家算法工程師用的平臺是兩個(gè)東西,怎么去保證給到客戶(hù)東西真是一套好用的東西?我們的做法是將內部算法平臺與提供給客戶(hù)的產(chǎn)品完全打通,打通以后也有非常多好處。
首先給到客戶(hù)的服務(wù)一定有保證的,這是我們自己平時(shí)用的東西。另外,研發(fā)做出所有新技術(shù)、提升能夠非??焖俚貍鲗Ыo客戶(hù),做到工程、產(chǎn)品以及算法三位一體協(xié)同,極大加速了價(jià)值傳遞。得益于優(yōu)秀的代碼結構抽象,我們通過(guò)核心模塊,就可以跟 SDK 側、產(chǎn)品側完全打通。
這里簡(jiǎn)單展示一下現在做出來(lái)標準化產(chǎn)品。左手邊都是軟件平臺,比如 ViMo 允許客戶(hù)自己收集數據、標注數據、訓練模型、部署模型,所用到的算法模塊就是我們自己內部在用的算法平臺。
右邊是軟硬一體硬件體系,比如智能掃碼器、智能硬件,以及有機械功能、能夠幫助客戶(hù)端到端解決問(wèn)題的智能機臺,都是我們已經(jīng)推出的產(chǎn)品。
三、落地案例
最后跟大家分享已經(jīng)做出來(lái)的標桿案例。首先是芯片工藝分析項目。芯片非常小,需要檢測里面的電路結構。之前靠人手工打磨,磨了一層后,使用電子顯微鏡成像,成像之后可以得到灰度、顏色不一樣電路圖,然后去做結構化。
大家知道,到了百萬(wàn)、千萬(wàn)門(mén)的這個(gè)級別,不可能再靠人工做這樣的事情,有迫切自動(dòng)化需求。聽(tīng)起來(lái)很簡(jiǎn)單,但要處理非常多的問(wèn)題。比如成像模糊、制程不同(28 納米跟 14 納米成像出來(lái)都是不一樣的),或者有一些噪聲等等。思謀推出了對應的全棧解決方案,并實(shí)現了億級晶體結構的自動(dòng)結構化,最后檢出率非常高,超過(guò) 99.99%,處理效率超過(guò) 96%。
另外一個(gè)是汽車(chē)行業(yè)案例,做軸承檢測。不只是輪子,汽車(chē)有很多地方都要用到軸承,軸承質(zhì)量跟行車(chē)安全關(guān)聯(lián)度非常高。思謀的軸承 AI 檢測一體機已在某世界 500 強汽車(chē)部件廠(chǎng)商正式上線(xiàn),極大地縮短了原有產(chǎn)線(xiàn)的檢測流程,實(shí)現了 0.001 毫米的極限曲線(xiàn)檢測,質(zhì)檢效率提升超過(guò) 80%,檢測準確率接近 100%。據悉,這也是該企業(yè)首次在其主流乘用車(chē)產(chǎn)線(xiàn)上引入 AI 產(chǎn)品。
還有 3C 行業(yè)的產(chǎn)品。思謀為某全球市值最高的智能手機品牌商提供了無(wú)線(xiàn)充電線(xiàn)圈檢測一體化設備。我相信在座各位肯定有人有這款手機,元器件檢測就是我們在做,已經(jīng)交付落地。新一代產(chǎn)品復制的訂單也是在生產(chǎn)過(guò)程中,我們做了 30 多種高難度缺陷(檢測),也得到非常好的檢出率,超過(guò) 99.8%,人力成本削減 80%。
總結一下,我們認為需要有一個(gè)工具化、平臺化、范式化、產(chǎn)品化的算法平臺,完成流水線(xiàn)式模型自動(dòng)化生產(chǎn),幫助我們自己和客戶(hù)降本增效。最后,也非常歡迎感興趣同學(xué)加入我們,一起在「中國制造 2025」發(fā)揮作用。
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。