前言
AI虐我千百遍,我待AI如初戀。什么才是好的AI?答:能落地的AI才是好AI。AI項(xiàng)目從無到有,再到最終落地,無非不是挖坑、踩坑、填坑的過程。本文從筆者的一些經(jīng)歷、經(jīng)驗(yàn)、血淚教訓(xùn)展開,說一下對(duì)AI項(xiàng)目研發(fā)過程中的感想。
被虐的案例
案例1:經(jīng)過N次版本修改與優(yōu)化,最終定稿。支持切換型號(hào)、云端訓(xùn)練、人工調(diào)參等。搞到最后,才發(fā)現(xiàn)別人要求準(zhǔn)確率100%。
案例2:樣機(jī)各種燈光閃來閃去,各種運(yùn)動(dòng)機(jī)構(gòu)群魔亂舞。什么犄角旮旯都覆蓋到,什么劃痕、殘缺、臟污都面面俱到。但是,一個(gè)產(chǎn)品的檢測(cè)竟然要30s。到過一次現(xiàn)場(chǎng)才發(fā)現(xiàn),人工目檢只需要2s。
案例3:光學(xué)、算法、界面都o(jì)k了。在熱火朝天、干勁十足的準(zhǔn)備推廣成千上百套變現(xiàn)的時(shí)候,客戶說只要一套。
案例4:同上,最終客戶說再考慮一下,當(dāng)然是杳無音信。算是被耍呢?還是算是白嫖呢?
案例5:當(dāng)我們正為識(shí)別準(zhǔn)確率是99%的時(shí)候,客戶把一個(gè)識(shí)別成功的和一個(gè)識(shí)別失敗拿到一起,問:這兩個(gè)明明一模一樣,為啥這個(gè)失敗了,這個(gè)成功了?
案例6:我去生產(chǎn)現(xiàn)場(chǎng)培訓(xùn)客戶標(biāo)注。他們非常配合,找來的也是目檢老手。我示范了幾個(gè)后,讓他試試。他就是不肯,搞到最后才知道:額,他不會(huì)用電腦!
案例7:我們的算法好牛掰,我們模型好先進(jìn)。AI+傳統(tǒng)方法一起來搞,完美。不過你需要調(diào)整這20個(gè)超參數(shù)。人呢?別走啊!
案例8:已經(jīng)上線運(yùn)行了,最后發(fā)現(xiàn)某一種型號(hào)的某一種缺陷打光不佳,圖像上很難判斷。最終只能推倒重來。
案例9:沒有意識(shí)到數(shù)據(jù)的重要性,每次都是幾張圖片在測(cè)試,結(jié)果是很完美,最匆匆拍板上線。最終大批量測(cè)試的時(shí)候,發(fā)現(xiàn)不work了。
為啥這么難?
工業(yè)AI,尤其是缺陷檢測(cè)這塊都是硬骨頭。雖然場(chǎng)景非常簡(jiǎn)單,雖然數(shù)據(jù)都是源源不斷,雖然算法都是非常純粹。主要是其需求太分散了,不是不能做,而是值不值得去做。因?yàn)槟阋媾R以下問題:
說不清道不明、模棱兩可的需求標(biāo)準(zhǔn),某些難以量化的標(biāo)準(zhǔn)。
頻繁的變更需求標(biāo)準(zhǔn),難以做到只靠調(diào)后處理參數(shù)就快速響應(yīng)。
頻繁更換型號(hào)的場(chǎng)景,留給你訓(xùn)練的時(shí)間不多。甚至無法提供良好的訓(xùn)練環(huán)境。
立體的產(chǎn)品,各種吃光照,吃視角的缺陷,極其微弱的缺陷。
難以保證的樣本一致性問題。
準(zhǔn)確率能不能到100%?
有沒有人工做的更快?
有沒有人工費(fèi)用更便宜?
需要配合繁復(fù)的硬件設(shè)備,尤其是運(yùn)動(dòng)設(shè)備。如何才能保證整套設(shè)備的穩(wěn)定性?
后期維護(hù)成本問題?由于涉及的環(huán)節(jié)太多,需要“全才”才能搞定。
......
一般流程
AI要敏捷開發(fā),更要方法論,更更要穩(wěn)定成熟的流程。
這里要提的是,工業(yè)場(chǎng)景的AI不過是整套系統(tǒng)中的一個(gè)小小組件,你一定不會(huì)靠單純的AI去make money。即便如此,AI從無到有,依然經(jīng)過以下幾個(gè)環(huán)節(jié):
需求階段
包括場(chǎng)景分析,問題定義,可行性分析。很多任務(wù)都是從該階段直接進(jìn)入end。這個(gè)是好事,一定不要盲目自信和盲目樂觀。所謂一葉障目不見泰山,只看到算法容易實(shí)現(xiàn)就忽略以上的問題,最后只能慘淡收?qǐng)?。最怕投入太多沉沒成本之后,想收?qǐng)鰠s不甘心。
什么是需求,什么是真正需求,什么是隱藏等待發(fā)掘的真正需求。很多時(shí)候,和客戶一起聊需求的時(shí)候,他們給不出明確的需求。最簡(jiǎn)單直接的辦法就是,深入?yún)⒂^他們的生產(chǎn)現(xiàn)場(chǎng)。和工人融到一起,學(xué)會(huì)他們的判斷標(biāo)準(zhǔn)。為他們發(fā)掘需求,尤其是下面幾點(diǎn)必須提前明確清楚:
什么是絕對(duì)不能容忍的錯(cuò)誤,一旦出現(xiàn)就是質(zhì)量事故。我們要知道算法的下限在哪里。
涉不涉及更換型號(hào),能否提供符合模型訓(xùn)練的場(chǎng)景要求,比如至少得有GPU吧,或者可以上網(wǎng)進(jìn)行云端訓(xùn)練。
對(duì)時(shí)間上的要求,很多替換人工工位都要要求比人更快。我們要知道系統(tǒng)的物理極限,例如運(yùn)動(dòng)設(shè)備。
對(duì)于算法難以界定的灰色地帶,接不接受人工二次復(fù)檢。對(duì)于不work的個(gè)例,我們要有backup。
其他都比較直白,對(duì)于第二點(diǎn)說明一下。大家想必都知道,我們做算法復(fù)現(xiàn)的時(shí)候,推理部分比訓(xùn)練部分要容易好幾個(gè)等級(jí)。同理,上線部署的時(shí)候,如果涉及用戶自己訓(xùn)練,那么難度就上來了。要把標(biāo)注、數(shù)據(jù)處理、訓(xùn)練參數(shù)、測(cè)試評(píng)估等都打包在一起,還要實(shí)現(xiàn)全自動(dòng)化。甚至?xí)龅街T如用戶電腦不能上網(wǎng)&沒有GPU,沒有錯(cuò),即便是你提訓(xùn)練必須條件,他也不一定會(huì)給你配到。
以上這幾點(diǎn),一定要仔細(xì)論證,全局論證,反復(fù)論證。論證不是內(nèi)卷,不是效率不高,不是執(zhí)行力不高。沒有詳細(xì)論證而匆匆上馬的項(xiàng)目,一般后期有無數(shù)個(gè)坑在等著你。
打光階段
包括光學(xué)設(shè)計(jì),成像分析,當(dāng)然還包括不是那么AI的結(jié)構(gòu)設(shè)計(jì)等。俗話說:七分靠打光,三分靠調(diào)參。打光非常重要,因?yàn)楹罄m(xù)算法只能為圖片負(fù)責(zé)。一般我會(huì)用“明顯”和“明確”來進(jìn)行可行性分析,“明顯”就是來自光學(xué)。最直觀的判斷就是,人肉眼能否通過圖片進(jìn)行精準(zhǔn)判斷。如果存在模棱兩可的部分,那么它也將成為算法模棱兩可的地方。
數(shù)據(jù)階段
包括數(shù)據(jù)采集,數(shù)據(jù)標(biāo)注,數(shù)據(jù)處理。數(shù)據(jù)的重要性不言而喻,正所謂:七分靠數(shù)據(jù),三分靠trick。數(shù)據(jù)到位了,一切都好說。數(shù)據(jù)的重要性,想必是任何一個(gè)從業(yè)人員都深有體會(huì)的。我們要數(shù)據(jù),要有效的數(shù)據(jù)。沒有數(shù)據(jù)的場(chǎng)景,抱歉請(qǐng)用傳統(tǒng)方法。要記住,模型泛化,沒那么重要,當(dāng)然模型也沒有那么強(qiáng)的泛化能力。它之所以能夠識(shí)別,那是因?yàn)樗娺^。將模型理解成一個(gè)存儲(chǔ)器,而不是泛化器。之前的你,需要建立數(shù)據(jù)庫來存儲(chǔ)數(shù)據(jù)用以測(cè)試時(shí)的比對(duì),現(xiàn)在的你,模型就是你的數(shù)據(jù)庫。
數(shù)據(jù)標(biāo)注就會(huì)涉及標(biāo)準(zhǔn)的定義,很多時(shí)候很難拿到清晰的標(biāo)準(zhǔn)。或者說無法量化為清晰的標(biāo)準(zhǔn)。往往會(huì)存在灰色地帶,這就要提前有一個(gè)清晰的認(rèn)識(shí)。對(duì)于灰色地帶的處理,或者說客戶的容忍,要提前想好策略。這里比較困難的是,灰色地帶可能很難量化出來,我們只是知道這個(gè)樣本是灰色地帶,到底有多灰,have no idea。
另外,比較重要的是盡快建立穩(wěn)定的、有代表性的數(shù)據(jù)集合,尤其是測(cè)試集,這點(diǎn)非常重要??梢詭椭浅C艚葸M(jìn)行后續(xù)的benchmark實(shí)驗(yàn)。如果你不知道你對(duì)什么樣的最終結(jié)果負(fù)責(zé),那么你將永無止境的做下去。
算法設(shè)計(jì)階段
包括任務(wù)定義,任務(wù)拆分,模型選擇。尤其是任務(wù)拆分,你不肯定把所有的大象都裝到一個(gè)冰箱里面,你也不可能把所有的雞蛋放到一個(gè)籃子里面。
杜絕唯模型論 & SOTA 論。我們需要的是在特定場(chǎng)景下解決特定的問題。這里涉及學(xué)院派思維轉(zhuǎn)變,學(xué)院派的高手為imageNet和COCO等數(shù)據(jù)集負(fù)責(zé),而我為我自己的場(chǎng)景和自己數(shù)據(jù)集負(fù)責(zé)。SOTA看中的是模型的上限,而實(shí)際的場(chǎng)景,看中的是模型的下限。
杜絕唯AI論。不管傳統(tǒng)方法還是AI方法,能work的就是好算法。如果傳統(tǒng)方法沒有明顯的缺陷,那么請(qǐng)選擇傳統(tǒng)方案?;蛘吣憧梢赃@么認(rèn)為,當(dāng)前看似高大上的AI并不是真正的AI,或許30年后一天,你會(huì)說:先用傳統(tǒng)方法YOLO V28 來試一下吧!
訓(xùn)練評(píng)估階段
包括模型調(diào)參,模型訓(xùn)練,指標(biāo)評(píng)估。所謂的“煉丹”。前幾步做好了,一般不會(huì)有太大問題,如果有,請(qǐng)向前追溯。這里要說一句,“提前優(yōu)化是萬惡之源“。在保證精度的時(shí)候,再去考慮速度,再去做優(yōu)化。當(dāng)然你靠58個(gè)模型聯(lián)合起來獲取的精度不在該討論范圍。
部署階段
這個(gè)階段坑比較多,基本上都是技術(shù)方面。也是所謂的“臟活”。包括模型優(yōu)化,跨平臺(tái)前向推理,模型加密。終于到部署階段了,也看到了落地的曙光。關(guān)于深度學(xué)習(xí)人工智能落地,已經(jīng)有有很多的解決方案,不論是電腦端、手機(jī)端還是嵌入式端,將已經(jīng)訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)權(quán)重在各個(gè)平臺(tái)跑起來,應(yīng)用起來才是最實(shí)在的。不過依然存在這么多工作需要做:
跨平臺(tái):可跑目標(biāo)硬件上,包括各類cpu/gpu/npu/fpga等等。
高效能:速度快、占用內(nèi)存少等。
精度沒有丟失:經(jīng)過一通量化、剪枝、蒸餾、圖優(yōu)化等操作后,終于滿足時(shí)間要求了,卻突然發(fā)現(xiàn)部署測(cè)試精度掉了一半,WTF。
加密需求:你一定不希望自己辛辛苦苦搞出來的成果被別人白嫖吧!
閉環(huán)生態(tài):當(dāng)然你不能一勞永逸,怎么在應(yīng)用中收集樣本,更新系統(tǒng)。你需要作成實(shí)用、好用的閉環(huán)工具鏈。
運(yùn)維階段
包括運(yùn)行監(jiān)控,模型更新等。你以為可以所以口氣了,并沒有。能不能經(jīng)受海量產(chǎn)能和時(shí)間的考驗(yàn),請(qǐng)瑟瑟發(fā)抖地注視著吧!運(yùn)維的核心就是保證業(yè)務(wù)安全穩(wěn)定運(yùn)行。上面提到,AI泛化能力還是比較欠缺的,所以很可能會(huì)在實(shí)際運(yùn)行的過程中遇到不work的情況。當(dāng)然最最直接的辦法就是持續(xù)不斷擴(kuò)充數(shù)據(jù)。當(dāng)然要保證你的模型有足夠的capacity,如果沒有,那么就是算法設(shè)計(jì)環(huán)節(jié)沒有做好。收集數(shù)據(jù)利用上面部署階段所說的閉環(huán)生態(tài)工具鏈來持續(xù)完成這個(gè)事情。至此,你的AI項(xiàng)目已經(jīng)落地。
責(zé)任編輯:xj
原文標(biāo)題:談一談我對(duì)AI項(xiàng)目落地的看法
文章出處:【微信公眾號(hào):新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
AI
+關(guān)注
關(guān)注
87文章
31126瀏覽量
269447 -
人工智能
+關(guān)注
關(guān)注
1792文章
47422瀏覽量
238943
原文標(biāo)題:談一談我對(duì)AI項(xiàng)目落地的看法
文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論