我認為算法工程師的核心競爭力是對模型的理解,對於模型不僅知其然,還得知其所以然。
于是我把目標檢測的經典論文翻來覆去地看,將各種目標檢測模型分解成了N個模塊,針對每個模塊,反復比對各篇論文處理方式的異同,思考各種處理方式各自的優缺點,以及有沒有更好的處理方式,比如:
深度卷積神經網絡中的降採樣總結了降採樣的各種方式;
深度卷積神經網絡中的升採樣梳理了升採樣的諸多方法;
關於物體檢測的思考簡述了anchor free與anchor based的異同、one stage和two stage的區別與聯繫;
深度學習高效網絡結構設計和高效卷積神經網絡一覽總結了高效網絡的設計思路與具體細節;
在anchor free檢測器炙手可熱的時候,Why anchor?分析了anchor free和anchor based的歷史由來,以及各自利弊。
同時對目標檢測實踐中一些開放式的問題也有一些自己的思考,比如:
關於感受野的總結詳述了感受野的計算方式和在應用時需要注意的地方;
目標檢測網絡train from scratch問題猜想了一下目標檢測能夠train from scratch的關鍵,在這篇文章裡我質疑了DSOD和DropBlock這兩篇論文對train from scratch問題下的結論(當時何愷明那篇討論train from scratch的paper還沒出來,從何愷明後來paper的實驗看來,我的質疑是對的)。
上面是把模型揉碎了看,最近開始有更多時間與精力接觸除了目標檢測以外的任務,于是思考如何將各個計算機視覺任務統一起來,最近有了一點小的想法,該想法形成了一篇簡短的文章。
第二階段
這一階段我認為算法工程師的核心競爭力在於代碼功底好,一則知道各個模型的實現細節,二則能即快又好地實現idea。于是我用pytorch手擼了Yolov2和Yolov3。同時看了不少優秀的開源代碼,比如darknet、mmdetection等等。最近正在用pytorch仿照mmdetection擼一個語意分割的訓練框架。
第三階段
最近開始接觸各個行業對計算機視覺的需求,我發現一名優秀的算法工程師僅僅對模型理解不錯、代碼功底不錯是不夠的,還需要對有計算機視覺業務需求的行業有著較深入的理解。恰好最近看了一篇阿里雲機器智能首席科學家閔萬里的專訪文章,專訪裡這幾段話我深以為然:
在阿里雲的時候,我就親自打造了一個崗位:DTC:Data Technology Consultant。DT有兩個含義,一個是數據技術Data Technology,一個是數字化轉型Digital Transformation,一語雙關。他們像大夫,望聞問切,跟客戶一起梳理出業務流程中的痛點,找到優化方式。DTC不只是對行業整體的判斷,還要對賽道中的選手體檢,有開藥的能力。可以把對方的難言之隱梳理出來,定量、優先級排序,然後從整體到細節,一層層結構化分解,最後進入具體執行。你要在傳統行業創造新價值,就要搞清楚:什麼東西制約了你的產能,制約了你的效率,制約了你的利潤率。技術人員今天往產業走,我相信整體遇到的障礙就是如何把技術思維變成以業務需求為導向的技術思維、技術分解思維。
雖然閔萬里這幾段話裡的主體是技術諮詢師,但我覺得這也是成為一名優秀算法工程師的必備品質。
總結一段話就是:
算法工程師往產業裡走,需要把技術思維轉變為以業務需求為導向的技術思維、技術分解思維;
算法工程師需要像大夫一樣望聞問切,跟客戶一起梳理出業務流程中的痛點,找到優化方式;
算法工程師不僅需要有對行業整體的判斷,還需要對客戶有體檢、開藥的能力,可以把客戶的難言之隱梳理出來,定量、優先級排序,然後整體到細節,一層層結構化分解,最後進入具體執行;
要在傳統行業創造新價值就要搞清楚什麼東西制約了產能、效率、利潤率。
僅僅輸出模型的算法工程師比較容易被替代,更高的追求是輸出一整套端到端的系統方案,從與客戶一起梳理業務痛點、硬件選型、模型部署環境的規劃與搭建、數據採集和標注標準制定、模型選型與設計等等。
我認為算法工程師的核心競爭力是對模型的理解,對於模型不僅知其然,還得知其所以然。
于是我把目標檢測的經典論文翻來覆去地看,將各種目標檢測模型分解成了N個模塊,針對每個模塊,反復比對各篇論文處理方式的異同,思考各種處理方式各自的優缺點,以及有沒有更好的處理方式,比如:
深度卷積神經網絡中的降採樣總結了降採樣的各種方式;
深度卷積神經網絡中的升採樣梳理了升採樣的諸多方法;
關於物體檢測的思考簡述了anchor free與anchor based的異同、one stage和two stage的區別與聯繫;
深度學習高效網絡結構設計和高效卷積神經網絡一覽總結了高效網絡的設計思路與具體細節;
在anchor free檢測器炙手可熱的時候,Why anchor?分析了anchor free和anchor based的歷史由來,以及各自利弊。
同時對目標檢測實踐中一些開放式的問題也有一些自己的思考,比如:
關於感受野的總結詳述了感受野的計算方式和在應用時需要注意的地方;
目標檢測網絡train from scratch問題猜想了一下目標檢測能夠train from scratch的關鍵,在這篇文章裡我質疑了DSOD和DropBlock這兩篇論文對train from scratch問題下的結論(當時何愷明那篇討論train from scratch的paper還沒出來,從何愷明後來paper的實驗看來,我的質疑是對的)。
上面是把模型揉碎了看,最近開始有更多時間與精力接觸除了目標檢測以外的任務,于是思考如何將各個計算機視覺任務統一起來,最近有了一點小的想法,該想法形成了一篇簡短的文章。
第二階段
這一階段我認為算法工程師的核心競爭力在於代碼功底好,一則知道各個模型的實現細節,二則能即快又好地實現idea。于是我用pytorch手擼了Yolov2和Yolov3。同時看了不少優秀的開源代碼,比如darknet、mmdetection等等。最近正在用pytorch仿照mmdetection擼一個語意分割的訓練框架。
第三階段
最近開始接觸各個行業對計算機視覺的需求,我發現一名優秀的算法工程師僅僅對模型理解不錯、代碼功底不錯是不夠的,還需要對有計算機視覺業務需求的行業有著較深入的理解。恰好最近看了一篇阿里雲機器智能首席科學家閔萬里的專訪文章,專訪裡這幾段話我深以為然:
在阿里雲的時候,我就親自打造了一個崗位:DTC:Data Technology Consultant。DT有兩個含義,一個是數據技術Data Technology,一個是數字化轉型Digital Transformation,一語雙關。他們像大夫,望聞問切,跟客戶一起梳理出業務流程中的痛點,找到優化方式。
DTC不只是對行業整體的判斷,還要對賽道中的選手體檢,有開藥的能力。可以把對方的難言之隱梳理出來,定量、優先級排序,然後從整體到細節,一層層結構化分解,最後進入具體執行。你要在傳統行業創造新價值,就要搞清楚:什麼東西制約了你的產能,制約了你的效率,制約了你的利潤率。
技術人員今天往產業走,我相信整體遇到的障礙就是如何把技術思維變成以業務需求為導向的技術思維、技術分解思維。
雖然閔萬里這幾段話裡的主體是技術諮詢師,但我覺得這也是成為一名優秀算法工程師的必備品質。
總結一段話就是:
算法工程師往產業裡走,需要把技術思維轉變為以業務需求為導向的技術思維、技術分解思維;
算法工程師需要像大夫一樣望聞問切,跟客戶一起梳理出業務流程中的痛點,找到優化方式;
算法工程師不僅需要有對行業整體的判斷,還需要對客戶有體檢、開藥的能力,可以把客戶的難言之隱梳理出來,定量、優先級排序,然後整體到細節,一層層結構化分解,最後進入具體執行;
要在傳統行業創造新價值就要搞清楚什麼東西制約了產能、效率、利潤率。
僅僅輸出模型的算法工程師比較容易被替代,更高的追求是輸出一整套端到端的系統方案,從與客戶一起梳理業務痛點、硬件選型、模型部署環境的規劃與搭建、數據採集和標注標準制定、模型選型與設計等等。