淘新聞

曠視科技孫劍:如何在大公司和創業公司做好電腦視覺的研究(三)

雷鋒網按:本文為曠視科技首席科學家孫劍日前在CCF-ADL上做的題為《如何在大公司和創業公司做好電腦視覺研究》的分享,雷鋒網進行了全文整理。以下是最後一部分。

第一部分傳送門:

曠視科技孫劍:如何在大公司和創業公司做好電腦視覺研究(一)

第二部分傳送門:

曠視科技孫劍:如何在大公司和創業公司做好電腦視覺研究(二)

孫劍博士(攝影:劉芳平)

孫劍,博士,曠視科技(Face++)首席科學家、研究負責人。2003年畢業于西安交通大學人工智慧與機器人研究所,畢業後加入微軟亞洲研究院(Microsoft Research Asia),任至首席研究員。其主要研究方向是計算攝影學(computational photography)、人臉識別(face recognition)和基於深度學習的圖像理解(deep learning based image understanding)。自2002年以來在CVPR、ICCV、ECCV、SIGGRAPH、PAMI五個頂級學術會議和期刊上發表學術論文100+篇,Google Scholar 引用 20,000+次,H-index58,兩次獲得CVPR Best Paper Award (2009, 2016)。孫劍博士于2010年被美國權威技術期刊Technology Review評選為“全球35歲以下傑出青年創新者”。孫劍博士帶領的團隊於2015年獲得圖像識別國際大賽五項冠軍(ImageNet分類,檢測和定位,MS COCO檢測和分割),其團隊開發出來的“深度殘差網路”和“基於區域的快速物體檢測”技術已經被廣泛應用在學術和工業界。同時孫劍帶領的團隊的研究成果也廣泛被應用在微軟Windows, Office, Bing, Azure, Surface, Xbox等多條產品線上。目前孫劍博士正在帶領曠視科技的研究團隊推進電腦視覺技術的進步和探索其在工業和商業上的實踐。

以下為演講內容,主要介紹了近期電腦視覺的發展現狀,ResNet基本原理和設計,曠視科技在電腦視覺的研究進展等。最後他還分享了一些“如何在大公司和創業公司做好研究?”的心得。

如何在大公司和創業公司做好研究?

最後,我想分享下如何大公司和創業公司做好研究,這些都是個人的一些感悟。我經常被問到以下幾個問題:

在創業公司還能否做研究?

在創業公司能否做好研究?

是不是會完全被產品導向?

研究是不是只有用paper來衡量?

研究成果被友商抄去了怎麼辦?

(雷鋒網注:孫劍在演講最後給出了自己的回答。)

大公司和創業公司的研發部門的異同

任何一個研發部門,不管是大公司還是小公司,在我看來,其共同的部分是這三個要素:

部門的定位是怎樣的?

部門的人員組成是怎樣的?

研發方式是怎樣的?

這些對應的就是柳傳志先生的“定戰略、搭班子、帶隊伍”管理三要素。

我自己比較了一下大公司和小公司,特別是微軟研究院和曠視研究院:

我們的使命定位是類似的,但是我們的目標範圍是更小的。我們現在只關心的研究最好的深度學習和電腦視覺技術,讓最好的技術落地,推動公司的快速發展。

在人員組成上,我們也是非常類似的。唯一不同的是,我們只有一個人不寫code。我們曠視研究院員工的平均年齡也非常小,而且管理是非常扁平化的。

研發方式方面,因為規模不同,所以有些不同。我們的範圍更小,更聚焦,我們每個小組的動態性也更強,可以短到3個月,也可以長期下去。

創業公司如何招募人才?

有了以上三個方向之後,接下來就需要招募人才。

大家可以看到,一般的創業公司都是通過什麼方式來招募人才,其實最重要的還是第一條:people bring people(口口相傳)。你可以通過通過個人關係,把最聰明的人引進來。 

當然,公開發表論文這件事情也很重要。因為不管是做深度學習還是人工智慧,最優秀的人才是希望他的成果能夠讓大家看得見的。所以在曠視研究院,我們鼓勵大家發表公開論文。

我們的人才培養大致有這幾個方向:科學家、系統架構師、以及我們自創的全棧人工智慧工程師。

雖然人工智慧很複雜,但是做應用的話還是相對來說沒那麼高的門檻,因為深度學習在一定程度上把這個過程縮短了。所以對系統能力強、工程能力強,同時又想做好研究的人,我們設立了全棧人工智慧工程師這個職位。他們既是人工智慧科學家,也是一個很強的工程師,有很強的解決問題的能力。

創業公司如何做好研究?

我們認為組織建設最重要的是:正直、對自己誠實;平等;安全感、鼓勵嘗試;學習型組織。

曠視公司的使命是“power human with AI”。一個組織要想真正運行下去,運行好,隨著規模的增大,公司的使命是非常重要的。我們目前的願景是:做最好的人工智慧的雲平臺和最好的智慧感知網路。我們的價值觀是:追求極致、簡單、可靠。

有了人,有了環境之後,要做好研究有三個非常重要的元素:需要有清晰的目標,需要motivate每個人,最後把事情貫徹下去。

關於目標設定,大家可能都有自己的標準,我們認為應該要分別設立終極目標、績效目標、以及過程目標。我們希望這些目標是能實現的,但是同時又是有挑戰性的,而且是大家都agree的。一般的話,我們會為2-4個人的組來制定長期和短期的課題。

有了目標之後,最重要的是怎樣讓大家為這個目標投入最大的精力。首先,我們相信任何人都是有巨大的潛能的。當然,每個人都有選擇的自由,也需要他們的專注、以及想贏的心態。這些是我們認為能提高大家士氣的方法。

我們在深度學習訓練平臺、資料標注上的投入是不遺餘力的,希望能夠為研究員、實習生創造最好的訓練環境。

在創業公司到底能不能做好研究?

最後,回到之前的問題:“在創業公司是否能做好研究?”

我的結論是,可以做最好的研究。我們可以在產品和學術之間找到很好的平衡點,我們的研究既可以用paper來衡量,也可以用研究在產品中的落地和給你帶來的成就感來衡量。當然,我們會選擇性地發佈我們的一些學術性成果。

Q&A環節

Q:在面部識別中,有些惡意攻擊能夠繞過活體檢測,現在的技術可以解決這個問題嗎?

A:這實際上是一個安全問題,我之前寫過一篇文章來回答這個問題。任何安全問題,絕對意義的百分之百的解是沒有的,它只能是說比原來的系統更安全。此外我們也有非常多的防止這種攻擊的方式,包括用戶端的、雲端的等等。

客戶對安全問題的承受力是不一樣的:有些客戶希望盡可能獲取更多的用戶,因此安全性較低是可以承受的,比如信用卡欺詐。信用卡簽字每年有很多欺詐案件,但是總體來看,髮卡公司是能夠承受的,因為其帶來的利益遠大於損失,因此可以接受這樣的交易方式。

從大的方面來說,這是非常有效的方式,非常多的客戶對現有的安全程度是認可的。另一方面,從技術上方面來說,會有不斷的新的防活體攻擊的技術研發出來。

Q:目前大多數的活體檢測需要使用者的配合(比如眨眼、張嘴等),未來是否可以不再需要使用者配合,在使用者沒有感覺的情況下,判斷他是不是假體?

A:大家可能已經聽說,iPhone 8要推出前置3D紅外攝像頭,這就是一個非常好的新的發展方向,提供了有著最好用戶體驗的檢測活體攻擊的新思路。

Q:用紅外或者三維這樣的方式,可以解決平面型的,比如列印、視屏的攻擊。但是對於以後可能出現的3D列印的,或者頭套之類的攻擊,這種方法是否還有效?

A:對於頭套攻擊,在業界,包括我們客戶都認為,這種假面具、假頭套超過了現在要考慮的範圍?

Q:您剛才在演講中提到,“深度是決定一個模型學習能力最重要的因素”。那麼這個深度到底有沒有一個上限?對於一般的檢測和識別任務來講,什麼樣的深度就夠了?

因為最近有個技術叫模型蒸餾,有一些可能用了一個50層或者100層的模型,但是最後通過模型蒸餾可以用一個10~20層的模型來表達。那就是說,我們在原始設計這個任務的時候,已經增加了很多的冗餘量進去了,您是怎樣看待模型蒸餾的呢?

A:深度到底要多深跟很多因素有關的。深度最重要的是有很多假設的,當然,跟你的資料量的大小有關,還跟其他因素有關,如果不考慮這些,基本上只要能夠匹配好資料大小,越深越好。

關於模型蒸餾,它實際上是個優化問題。因為模型蒸餾還是需要一個大的模型來帶著小模型的,那麼這個大模型是哪來的?大模型怎樣才能訓練好?這些都是要考慮的,因為大模型訓練好之後才有小模型。蒸餾是一個很好的方法,但是有時候管用有時候不管用。有些資料有關係,包括我剛才介紹的模型簡化,也是去除模型冗餘的方式之一。大模型為什麼能夠被“蒸餾”,其實是因為小模型非常難訓練,而大模型給了充分的自由度,因此可以訓的很好。這意味著,首先需要有一個能訓的很好的系統,才能誘導這個不好訓的系統。如果你直接切換成小模型,以現在的技術來說是很難訓出來的。所以說,至少對訓練來說,深度還是非常重要的。

Q:您在做公共區域的視頻分析的時候,是基於圖像做的,還是訓練資料用一小段視頻去做的?

A:基於圖像做的。

Q:您之前提到的一個檢測region proposals的方法,請問能詳細的解釋一下Faster R-CNN的基本思想嗎?

A:以前的檢測方法是sliding window,每個位置都會去檢查,幾萬個、幾十萬個都有可能,region proposals用一些方法把這個數字降到幾千,這樣就可以很快做evaluation。

Faster R-CNN的思想:以前是在圖像上做sliding window,現在是在feature map上做sliding window,去預測物體可能在哪裡,其實也可以認為它是一種sliding window。

Q:您剛才提到公司產品FaceID可以再雲端實現,也可以在用戶端實現。那麼它在用戶端實現的硬體平臺和主要思路是什麼?

A:我們開發Brian++的一個目的是:一個模型可能需要支援很多平臺,包括自己內部給產品做的SDK同時要支持20多種平臺,包括手機、嵌入式、ARM7、ARM8,甚至包括安卓、Windows等等。我們需要支援非常多的平臺,不同平臺的計算不同,比如手機或者平板上精度model size是一定要比雲端小很多的,主要是看具體業務需要做到什麼地步,然後再去平衡計算複雜度和精度。

Q:關於網路結構學習,以我的瞭解,現在的網路學習一般都是在學習好之後,然後通過剪枝的方式來優化這個網路結構,使得這個網路結構更加精簡。那麼是不是能通過不斷地資料流程入,網路結構不斷學習,實現生長式的學習過程?

A:這方面的文獻目前很少。實際上,通過增強學習方法來不斷調整網路結構目前不是非常成功。目前來說,訓練一個非常有效的網路,週期非常長,因此整個週期也降不下來,所以目前沒有非常好的方式來自動學好網路結構。我自己也不是非常確信能夠學得好。