入坑機(jī)器視覺(jué)后,發(fā)現(xiàn)在開(kāi)發(fā)與使用過(guò)程中總有各種bug導(dǎo)致系統(tǒng)的不穩(wěn)定,故總結(jié)之,以此為鑒,謹(jǐn)記勿犯!
設(shè)定明確的邊界條件
機(jī)器視覺(jué)或者說(shuō)現(xiàn)在的人工智能,還沒(méi)有做到完全的智能,所以在生產(chǎn)實(shí)踐中更好的方法是在特定的條件下開(kāi)發(fā)特定的算法,將算法框定在一個(gè)明確的范圍內(nèi)時(shí),那么算法將變的更加robust,否則脆弱不堪,應(yīng)用某visioner的話(huà),這樣的算法非常weak。在此基礎(chǔ)上,小心迭代擴(kuò)大算法的適用場(chǎng)景與范圍是明智之舉。設(shè)計(jì)算法不考慮特定應(yīng)用場(chǎng)景、沒(méi)有明確邊界條件、沒(méi)有前提假設(shè),這是新手常犯的錯(cuò)誤,避之免之。
賦予任何參數(shù)以明確的物理意義
由于機(jī)器視覺(jué)的處理結(jié)果與實(shí)際物理環(huán)境緊密相連,參數(shù)作為設(shè)計(jì)算法時(shí)的重要變量,一定要賦予實(shí)際的物理意義,做到有理可依,有時(shí)候憑借經(jīng)驗(yàn)設(shè)置的參數(shù)值也許僅僅適用于某一物理尺度,當(dāng)環(huán)境改變時(shí),這樣的參數(shù)將失效并且這樣的問(wèn)題也往往不容易察覺(jué),給算法帶來(lái)不穩(wěn)定的隱患。雖然在調(diào)試深度學(xué)習(xí)時(shí),有的參數(shù)確實(shí)是憑借經(jīng)驗(yàn),無(wú)法解釋?zhuān)窃O(shè)計(jì)傳統(tǒng)算法時(shí)還是要遵循此原則。
遵循軟件工程的原則開(kāi)發(fā)
這條規(guī)則不僅僅適用于機(jī)器視覺(jué)軟件、其他軟件開(kāi)發(fā)也同樣適用于非軟件的其他工程項(xiàng)目開(kāi)發(fā)。我在菜鳥(niǎo)季經(jīng)常犯的錯(cuò)誤是,短時(shí)間內(nèi)不斷的在原有算法基礎(chǔ)上增加大量功能,貪圖省時(shí)省事(有時(shí)候是時(shí)間緊急、迫不得已。,沒(méi)有對(duì)每一個(gè)功能模塊進(jìn)行單體測(cè)試,開(kāi)發(fā)完成后直接進(jìn)行結(jié)合測(cè)試。這樣的測(cè)試是低效的、不完整的,日后會(huì)有各種bug暴露出來(lái),按軟件工程原則開(kāi)發(fā)、有節(jié)奏的開(kāi)發(fā),將帶領(lǐng)你走出新手村。
重視現(xiàn)場(chǎng)
機(jī)器視覺(jué)是一個(gè)與現(xiàn)場(chǎng)結(jié)合非常緊密的學(xué)科或者工作,并且相比計(jì)算機(jī)視覺(jué),機(jī)器視覺(jué)需要高度的穩(wěn)定性,所以要充分積累現(xiàn)場(chǎng)的經(jīng)驗(yàn),結(jié)合現(xiàn)場(chǎng)往往會(huì)帶來(lái)算法上的簡(jiǎn)化與穩(wěn)定,帶來(lái)開(kāi)發(fā)效率的提升,所以現(xiàn)場(chǎng)是寶庫(kù),積累經(jīng)驗(yàn)升級(jí)自己,具體實(shí)例等待各位machine visioner去現(xiàn)場(chǎng)體驗(yàn)。
提升創(chuàng)造力
經(jīng)驗(yàn)與創(chuàng)造力是驅(qū)動(dòng)機(jī)器視覺(jué)能力的兩架馬車(chē),如果僅僅只是經(jīng)驗(yàn)的增長(zhǎng),就不能靈活應(yīng)對(duì)未來(lái)各種各樣的任務(wù),在機(jī)器視覺(jué)智能化的道路上不會(huì)走遠(yuǎn)。提升創(chuàng)造力的關(guān)鍵在于涉獵與思考,不斷涉獵與之相關(guān)的大量的知識(shí),各種信息在頭腦中碰撞產(chǎn)生創(chuàng)造力的靈感,思考如何應(yīng)用于實(shí)踐,這將對(duì)提升創(chuàng)造力大有裨益。
選擇好的工具
選擇一個(gè)好的機(jī)器視覺(jué)開(kāi)發(fā)工具會(huì)使工作事半功倍