演講實錄丨侯曉迪 機器視覺:從跑分到跑路
機器視覺:從跑分到跑路
侯曉迪
圖森互聯CTO、聯合創始人
侯曉迪:大家好!今天非常高興能跟各位在這分享我們公司圖森互聯,大概成立一年,我在這一年裏麵有很多想法,今天借此機會講一講。我們圖森互聯在北京有分布,我們在北京主要負責工程和技術,北美純粹研究院,常年在北美,第一次回國做公開分享。標題是機器視覺、從跑分到跑路,跑分什麼意思?因為現在很多公開數據集,很多大公司、小公司說你的算法很厲害,你在什麼數據集上?你在分數線上跑了多少分,大概就是123。
我們前一段在有些朋友會了解到,我們拿到各種世界級第一。從跑分真正無人車跑起來還是有很長的距離。2006年我剛入行的時候,我們今天做一個算法,幾乎沒有網上代碼或者是文檔能夠公開,都是靠自己重新造輪子,當時隻是用C++等等。多虧了兩個小動物,我們在2016年回頭看這個世界時候發現,隨著開元運動展開,隨著新的形式,有了很多數據、文檔以及代碼各種共享。
同時,除了像MST和MCT(音譯),在構造上變的非常容易。今天能夠看到北美舉辦各種各樣的黑客馬拉鬆,一個周末黑客馬拉鬆他們就能實現產品級的項目。所以回過頭來看從2006年到2016年,從自己小作坊生產到現在,軟件工程開發體係的工程實踐。unit test,我需要做一些測試,對於各個模塊來講。我們要做的東西會在一個公開公平環境下,這個數據本身我們知道,用戶使用情景也是知道,最後把算法扔進去,測試看看能不能達到我們的標準。
跑分,我們在前一段在數據機上跑分過程,這個數據題2015年奔馳和幾個大學一起合辦,這個數據集裏麵有很多標定過的圖片,標定者都是人類,自然知道標準答案。這個數據集目的希望能夠讓攝像機有鏡頭了解象素代表什麼?有的象素行人,有的象素汽車。經過一段時間刷分,我們知道世界第一的好成績。
我們總共進行了大量的實驗,這隻是當時跑分時候,我們有很長的一個EXEL。一大堆我們跑出來的心得,包括我們有很多失敗的經驗,最後跑成功了。這個過程中有兩部分,我們保證我們每一步工作正確的,我們把我們算法分成非常小的步驟,每一步分進去實現一遍,放到係統裏麵看,看看這個係統跟去年結果一樣不一樣。真正的實踐過程當中發現可能別人有一個地方,有一個小地方沒有講,你這個結果跟別人差很多。第一屆刷分連結果做不到的時候,就需要用Benchmarking。
第二步,首先一開始設計很多新的網絡結構,或者新的處理模式,無論設計什麼模式,說的天花亂墜。在實踐過程當中寫代碼,跟他們說我有一個好想法,說實現一下,實現以後發現不好,具體來說這個事情大概發生了,我們總共做了80多個實驗。Benchmarking是一個非常重要的事情,如果想刷分分布Benchmarking是必不可少的階段。
這是美國標準跟國標一樣機構,他們去開發這樣一個Benchmarking,這個意思說我現在有很多郵件,用人工來分檢,希望用計算機係統,讓它實現郵編。一共有6萬張字符的圖片,目的做字符識別。這個在98年的時候,朱瓏老師發明一個卷積網絡,可以用這個網絡做這個事情。就是因為有6萬張圖片數據庫孕育了卷積網絡發明。
還有一個這是加州大學搞了一個數據,叫Berkeley segmentation,這是2011年一個數據集。2014年最著名的算法之一。這個成就本身到最後應用反倒不僅在這個數據集上。接下來2015年,之前大家看到6萬張圖片,大家應用領域非常窄,2015年的時候我們有3000張圖片大數據數據集,這個名字叫 PASCAL VOC,識別人,識別杯子,識別汽車等等。
接下來大家非常熟悉的imagenet,這個一方麵算法如何做的更聰明,使得識別效率更高,如果隨便猜從1000類猜到正確類幾乎不可能。第二個,同時挑戰了傳統對於計算能力的一個認知,如果用幾千張圖片一分鍾搞一個圖片可以忍受,如果用百萬張,除非有超級計算機。數據集大家很了解,識別字符都是很自然的過程,還有人臉。不是那麼大眾的數據集,有一個眼洞數據集,給你一張圖片問你比較有意思的是什麼?人很難用語言描述數據集標準答案給出來,所以算法沒有標準答案,這種情況下研究人員想了新的方法,找了一些人給做背試。右下角給人眼球運動的時候,看人眼睛到底在什麼位置看,這個數據集因為采集起來請人到實驗室看眼球運動。業外人士不清楚眼動數據,也是微小的工作。
每個數據集長什麼樣?每個數據影響到哪個後續工作誕生。數據集越來越多,但是這麼多數據集是不是我們隻要學術圈盯準了數據集,刷一刷推動整個領域進步呢?我的答案不是。數據集我們就想知道數據集作為一把尺子衡量東西什麼?每個數據集都有一些類別,有一類數據集它要衡量東西是一個客觀指標。
比如說,如果我要做深度視覺,用兩個攝像頭分析我看到的一個點到我的距離,我的距離是物理量可以精確衡量。同時還有像光流算法,人臉識別大不了拿DNA可以驗證身份,身份可以可測量的量,帶來客觀指標。根據眼球運動然後判斷出到底哪個區域是一個人都比較感興趣的區域,這種主觀任務。這個眼球運動之外,比如什麼樣的圖片比較容易讓人記住,或者說剛才也有其他嘉賓提到,每張照片給你一個圖片,寫一個文字說明,看圖說話的任務,這種任務變成非常主觀的任務。我的觀點,對於客觀任務而言,計算機視覺最終目標是要盡可能還原物理世界。對於主觀首先不存在物理世界給你客觀還原,我們衡量人與人之間的一致性。對於主觀任務計算機麵臨是一個圖林測試,它的輸出表現出來的行為和人的行為沒有區別,說明這個計算機達到非常好的。
舉個例子,計算機寫一篇文章,讓你看不出這個文章是計算機寫的,這個是主觀任務。對於客觀任務而言,用一個精準尺子量,這個尺子誤差就是我的上限。每個人對於問題有不同的理解,人與人之間的差異上限,這就是主觀任務衡量的任務上限。因為Benchmarking很多,每個Benchmarking都是不完美的。討論擇偶問題,高富帥很多,ABC這三個人,哪個更好,大家都不知道情況。計算的時候都有優勢和劣勢,有一個算法識別車非常準,識別鳥比較準,哪個物體算法識別最準,其實沒有標準答案。
我們在每次做Benchmarking的時候,都是要把非常多個方麵的量縮減成一個量,最後有一個分數,做排序一樣。舉個例子,比如說我現在有兩條線,這是一個學術圈裏麵常用一個圖,如果這張圖的點越朝右上角方向走越好,或者橫軸一定越好,這樣問你到底紅色算法比較厲害,還是藍色比較厲害,如果按照麵積來算,藍色算法比較好。如果按照一個特定點,就想關注橫軸0.6的時候,那你就很可能選擇紅色算法。每個Benchmarking都是不完美。
Benchmarking還有一個問題,每個Benchmarking都有自己的壽命。這麼多Benchmarking在每個Benchmarking誕生的時候,Benchmarking發明人逃路都是這樣,每年做一個廣告,歡迎大家來關注我的Benchmarking,因為比較新,所以你很容易拿到世界第一的好成績。而這個新的成功Benchmarking都是針對一個新的問題,學術上並不存在一個傳統或者大家通用解決方案,才能稱之為是新問題,因為沒有一個通用解決方案。在每個Benchmarking生命中期大家會看到各種各樣的方法,大家會有很大膽的創新,對於Benchmarking不同有非常多的價值理論。
當然Benchmarking不知道數據在哪?但是Benchmarking到晚年時候體現疲態,這些疲態有一些現象。在2012年的時候Benchmarking主流操作幾乎排名靠前的組都是用這個來做,是不是Benchmarking這麼大物體識別我們走到了盡頭。突然有一天一個小孩說有一個新的東西,用卷積神經網絡來做。2015年的穀歌和VGG,GOOGLENET - RESNET。2008年的時候所有公司都使用RES NET(音譯),到底08年的時候我們出現一個大家都沒有見過的算法,大家誰都不知道。
第一,它的競爭變的非常飽和,0.1競爭是非常大的競爭。很多做人臉就是LFW一個數據集,現在最好的成果是0.9978加減萬分之七。第二個,就是遷移性,這件事情經濟學圈子裏麵談這個事情,我還少看到跟著Benchmarking一起去談,光流算法07年有一個學校搞了一個光流數據集,於是開始了熱核戰爭。最後有一個無人駕駛Bility出來了。Benchmarking有兩類,一個是客觀,一個是主觀,對於主觀的Benchmarking來講,如果Benchmarking人與人之間的相關度特別低,14年火了一陣子看圖說話,這類工作一個鑒定指標就是說他用幾個人寫幾個答案,然後拿算法結果跟人的結果對比,看看是不是有非常高的相關性。Bleu scores。
下麵說一說Benchmarking和自動駕駛之間一些關係,現在最著名兩個一個KITTI,一個是SCAPES。Netection,第二個tracking,第三,stereo、flow。第四,slam,第五,semantic sngmnntation,他們都是百分之百傳統的任務。我們在傳統任務拿到了非常高的分數,我們是不是能從這個分數意味著我們能夠自動駕駛了呢?還是還沒有那麼大的恒心。對於自動駕駛來講,這種非常罕見情況是一個巨大的挑戰。
舉個例子,像特斯拉行駛了一億公裏,出了幾起事故。如果我撞車了或者死人了,這些情況非常難得獲得的證例。我們汽車保證不死人,並不意味著我們壓死幾個人來證明。我們一定要使用因變量模型來實行建模。數據集一定存在知道每輛車的車速,以及距離,以及運行軌跡,這些能夠做出合理的推測,什麼時候情況危險,什麼時候撞車。
講個故事,Challenge,1:Rare cases。它是非常罕見的事件,怎麼確認發現這個事件,通過一種(嘎瑪波音譯)的共振,在實驗上發現了產嘎瑪波生了3000的觀測,他們通過這個證明發現這樣一個例子。無人駕駛來說,對於我們數據集走了14英裏發現了三次加車,而是通過不斷的進行更精細的測量,其他車的速度,我再開就危險了。
Challenge 2:Error metrics。還有一種情況,30公裏時速在開,遠遠兩公裏看一個車在開,這個檢測非常難的。所以說有些錯誤比另外一些錯誤更致命,對於錯誤衡量不是說每個框算平均,而是有更精細的算。視頻是一個連續的過程,第一幀沒有檢測到,可能第二幀檢測到,這樣就可以進行操作了。但是我們最重要對於自動駕駛來講,最終目標是0疏忽。以事件對於Benchmarking進行區分。
第三個標準,叫structured prior。端到端學習的好處完全不用去管理中間實現過程,隻需要把你需要數據和需要的圖象標簽打上,輸出的時候直接拿結果就可以了。但是端到端學習有很多問題,其中最大問題比如說我遇到紅綠燈怎麼辦?端到端有一個好處,所謂隱性鮮豔,圖象上人長這個樣子,狗長這個樣子,鮮豔知識可以通過圖象可以給機器學習出來。另外一類鮮豔,就是汽車肯定不會飛,第二個就是紅綠燈,紅燈停,綠燈行,這些是顯眼的。給你一大堆視頻,有的時候司機開車,有的司機不開車,在遠處掛著紅綠燈,讓算法自己發現這個現象,對於今天還是不可能。我們做的係統同時結合隱性鮮豔,圖象裏麵包含的特征,以及語音描述的鮮豔進行融合,今天所有數據集幾乎都是說針對都是隱性鮮豔,並沒有把交通信息類似於顯示鮮豔放到學習係統裏麵。
我們需要建立這樣一個數據集,使得它有傳統圖象,基於圖象走出去,做顯示鮮豔的信息做到學習係統裏麵。
本文來源於"中國人工智能學會",原文發表時間" 2016-10-26 "
最後更新:2017-05-23 16:32:43