在與大家交流的過程中,發現了乙個問題,一直想說出來。可是通常實話都不會那麼順耳,所以總有些猶豫。可後再一想,既然大家來此的目的不過是為了討論問題、互通有無,那麼說了也應無妨。這個問題就是:我發現國內80%搞這行(機器視覺)的朋友所走的路子是錯的。
於是在國外,從事這一行業的人現在也就可以簡單而清楚地分成三種人:
1,底層開發的人(從事底層開發工作的人)。 2,二次開發的人(從事二次開工作的人)。
3,使用及操作機器視覺系統的人(從事最終使用工作的人)。
第一類人。就是我們常說的,開發通用視覺系統(如:dvt,西門子,歐姆龍,evision,cognex等等)的開發人員,也就是dvt,cognex這些公司開發部的技術職工。
第二類。就是大家所說的oem使用者。是專門用第一類人所開發出的系統,給第三類人搞二次開發,開發各種專為第三類人所用的系統。第三類人,就是使用者(end user)。這類人是真正將機器視覺系統應用到各個領域中的人,他們不僅在各自的行業中使用種種已經開發成型的機器視覺系統。而且負責對各類系統進行測試及評估。
舉個實際例子,這裡有不少朋友問過這類問題:如何檢測某一工件;檢測光碟表面的系統該如何配置ccd相機、鏡頭及燈源等。問這些問題的朋友應該算是第三類人。他們公司要他們尋找乙個系統可以用來檢測本公司的產品。但由於第一類人所開發的,只是通用的系統以及視覺系統開發工具的軟體包。並沒有哪家公司專門開發一套系統來檢測光碟或是某種特定的工件。所以,這些朋友就應該來找我,因為我是第二類人。
我的工作就是,專門用dvt,evision,cognex等的視覺卡,以及視覺系統開發工具軟體包為他們專門開發一套他們所需要的光碟檢測系統或是工件檢測系統。 但是,我在這裡所看到奇怪的現象卻是,這些第三類的朋友一直問的,都是第二類人所問的問題。如:問應該用哪家公司的開發軟體;用什麼樣的ccd;如何標定等等。我真的不知道如何回答你:你明明是第三類人,要找第二類人幫忙。現在卻以第二類人的身份甚至是以第一類人的身份問問題。繞了老大一圈,其實要說的問題就是乙個—-我所發現的問題:這裡80%以上朋友把自己的身分混淆了,越俎代庖。
或許有的朋友會這樣說:我雖然是第三類人,但我對機器視覺有興趣,想自己學習啊!。這就是我想討論的:到底如何學習機器視覺?我個人認為,應該先確定自己的身份,從自己具體的需要入手來學習。舉個例子:大家一定都有學習英文的經驗,而且也一定都有同樣的感覺—-怎麼學也學不好—-我就是這樣。我們拋開所謂的語言天分不說,大家學不好的原因其實很簡單:沒有語言環境。一語中的啊!學而不用,怎麼也不會學好。
同樣,學習機器視覺,無論你在書本上看了多少理論,你自己若沒有實際動手操作、程式設計的經驗也是枉然。還不如從你每天能接觸得到的東西開始學習。教游泳的教材隨手可得,但為什麼並非人人都下得了水呢?!不客氣的說,目前國內搞這行的朋友似乎都有些好高騖遠。不少從事第二部分工作朋友(搞二次開發的第二類人)對於機器視覺有關知識的了解,尚不如國外第三類人的知識水平(我是從大家所問的問題感覺到的)。而國內第三類朋友知識水平就更可想而知。
可是奇怪的是,每個人所問的卻都是第二類人要問的,有些甚至是一類人才會問的問題。好象,機器視覺是個十分簡單的技術,憑大家隨便問幾個「關鍵性」的問題,再由所謂的「專家」三言兩語的回答一下。大家就一夜之間都可以自己搞底層開發,成第一類人了。
要成為第一類人,又分硬體及軟體兩種。要對自己所負責的這個模組非常了解,搞軟體要知道演算法及執行速度;搞硬體要明白公司所選用晶元的特點等等。同時還要清楚對手公司的優缺點以及機器視覺這一行的種種動態和最新技術。
想成為第二類人,你一定要是個通才。就是說什麼都要知道一點。不僅要了解第三類人的要求,而且也要知道各種第一類人(不同品牌的視覺卡及軟體包)的水平。
要成為第三類人,不僅要有機器視覺基本的相關知識。而且,要對自己所工作的行業及領域的機器視覺系統非常熟悉。專作你這行的機器視覺公司有哪幾家?各有什麼優缺點等等。總結一下。這三種人相比,第一類人一定要專業,對機器視覺的某一領域非常非常了解;第二類人雖比不上第一類人那麼專業,但更加全面;第三類人更熟悉各個應用系統開發公司(第二類人)的優缺點。
現在大家可以看得出,機器視覺發展到今天,其分工已經越來越細,每個部分的工作其實是很難相互取代的。大家不要以為第三類人就比第一類人低一等,這是乙個錯誤的等級概念。我本人過去曾屬於第一類人,現在作的是第二類工作。而我的幾個「師弟師妹」(當初曾一起作第一類人時的同事)現在就在幹第三類工作。大家別小看第三類工作,以為這是小兒科,你能真作好這一行也不是很容易。畢竟這也是一門行當也是乙個飯碗!另外,以我個人來看:以國內現在機器視覺的水平,對於那些想作第一類人的朋友我在這裡勸一句:還是算了吧。
國內的機器視覺水平打根子上就差,您還打算搞底層?演算法本身都是抄人家的,就只能和對手拼程式的寫法了。不過我覺得那更沒戲。這樣說我絕沒有看不起初學者的意思。我說過:所問的問題再簡單,我都不會笑話你。對於每樣事物我們都是從無知開始的。但是,對於那些極不實際的好高騖遠的問題,我還是要說,希望大家踏實下來,戒浮躁,從最基本地學起—-先確定自己的身份。
.以上所講,是從工程(engineering)以及實際應用的角度來談如何學習機器視覺。如果是想作學問,寫**的博士、碩士們就不太適合了。且全是本人一家之言,實話實說,言語間若有得罪各位之處,請原諒。
**:
機器學習 四 之如何學習機器學習
推薦一篇很好的文章,本文部分借鑑於 kaggle的 手寫識別 首先 我們要了解 什麼是tensorflow?其次 我們要學會一些概念 再其次 我們要學會整個機器學習的思路 建立乙個機器學習的model 1 制定乙個model是線性的還是非線性的 2 使用乙個最簡單的單層的神經網路進行學習 3 選擇l...
機器學習 機器學習目錄
注 後期有時間的話會對每乙個演算法進行講解。1 普通線性回歸 2 廣義線性模型 3 邏輯回歸 4 線性判定分析1 決策樹基本原理與構建 2 cart演算法 3 回歸決策樹 4 分類決策樹1 貝葉斯定理與樸素貝葉斯 2 高斯貝葉斯分類器 3 多項式貝葉斯分類器 4 伯努利貝葉斯分類器 5 遞增式學習1...
機器學習 機器學習概論
3 模型評估與模型選擇 4.具體應用 統計學習 是關於計算機基於 資料 構建概率統計模型並運用模型對資料進行 分析 統計學習的三要素 模型在監督學習中,模型就是所要學習的條件概率分布或決策函式。這在後面的章節中會重點介紹。策略 評價模型的標準 用損失函式和代價函式來度量 錯誤的程度。1 幾種損失函式...