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