各位朋友,大家新年好。
2015年的第一天,我還是想繼續談談EasyPR。不過,今天我不想說程式碼,也不想聊演算法,而是想想談談資料的事情。尤其是關於“資料開放”這個對於車牌識別系統未來發展至關重要的主題。
中國的車牌識別系統的現狀是商業和私有化,無論你願不願意承認,開源遠遠不是主流。這一方面有歷史發展的原因,另一個主要原因就是車牌資料的稀缺,研究者和團體很難找到開放的資料進行學習與研究。舉個例子,在google和百度裡搜尋“車牌資料”,很少能得到有用的內容。而僅有的一些網站,車牌資料更是被明碼標價。譬如,國內的一個網站“資料堂”(http://www.datatang.com/data/29148 ),對500張車牌圖片的標價是300元,摺合一張圖片就要6毛錢!。
圖1 資料堂,一個資料的交易網站,裡面的車牌資料非常“昂貴”
我對這樣標價的感覺是“匪夷所思”(如果按照這樣的價格計算,在EasyPR裡已經開放的100多張測試圖片豈不是價值60元人民幣?每個下載了EasyPR的人實際上都掙得了60元錢 :) )。從這裡可以看出車牌資料是多麼的不易弄到,相當稀缺。相反,資料開放的價值也就更大。
一個車牌識別系統的核心分為機器學習演算法與車牌訓練資料兩個部分。目前機器學習演算法已經相當成熟(有很多現成的開源庫可以使用),但是,資料仍然是一個從0到1的問題。對於沒有資料的人來說,開發一個車牌識別系統是“無米之炊”。而對於有資料的人來說,他們不想開發,也不願將之分享。於是車牌識別界進入了一個怪圈:大量的人擁有資料但不利用這些資料,想利用這些資料的人找不到資料,而一些稍微能夠利用這些資料的人,則趕緊開發一個系統,然後圈上一大筆錢,再然後把演算法閉源,資料閉源,不斷坐吃山空。從發展趨勢來說,這些是不利於中國的車牌識別系統長遠發展的。
我在六個月前釋出了EasyPR這個開源車牌識別系統,意圖打破閉源體系的第一部分--程式碼體系,但是第二部分--資料仍然是未解決的問題。從某種程度上來說,實現了程式碼開源,那就OK了,為什麼還要需要做資料開源?根本原因在於,決定你係統好不好的,不是取決於演算法,而是取決於資料。這個論斷,已經在“從機器學習談起”裡論述過。在很多地方已經體現的非常明顯(例如搜尋引擎),在很多地方即將體現(例如金融與社交)。
隨著我對EasyPR工作研究的進一步深入,我越來越發現兩個重要的問題。一個是訓練的資料永遠不夠,無法跟上演算法的需要,另一個是不同識別系統使用的資料不同,無法進行比較。就第二點而言,哪怕是同一個系統,不同人開發的演算法所針對的測試資料不一樣,都無法進行比較。因此,如果想從根本上改變目前車牌識別系統的效果,讓開源車牌識別系統可以發展的更加好,開放的資料集是必要的。這個資料集應該包括兩個部分:一個是通用的測試系統效果的資料集用來橫向比較不同系統或者縱向比較新老演算法的區別差異,這些資料集不必非常多,但要有足夠大代表性以及區分度;另一個是訓練用的資料集,這些資料集用來提供足夠多的訓練資料,這個資料集要足夠的大,足夠的全。
當然,要想收集這些資料是很困難的,尤其是一個人的情況,但眾多集力就不會那麼困難了。假設一個閉源的系統有100萬的訓練資料,那麼只要我們有1000個人,每個人貢獻1000張圖片就可以超過它。但是,為了把大家的力量集合到一起,首先就不能基於商業目的。如果為了商業目的,那麼主流的思想是競爭與壟斷,而不是共享。因此必須非商業化。同時大家之間的關係應該是以學習,研究為主,這樣才能夠充分發揮網路協作的精神。
毫無疑問,我一個人來是肯定不夠的。但即便是一個團隊,也很難收集與處理這麼多的資料。因此,它應該是一個眾籌專案。為了保證這樣的一個過程,需要一個合理的協議來約束。
這也是我在EasyPR中提出GDSL(General Data Share License,通用資料共享協議)的原因。相比開發一個專案,完成一個協議的困難更大。但這個過程相當有必要,因為這是開源車牌識別系統想在國內茁壯發展下去,基於資料分析的思想在國內能夠廣泛流傳的基石。一個協議需要考慮多種因素,目前的協議也僅僅只是0.1版本,還有很多待完善的空間,歡迎任何有想法的朋友跟我交流。
從無到有的建立一個協議的困難是難以想象的,而且也會拋棄掉很多前人的精華。基於他人的經驗才是“從機器學習談起”中智慧的方式。如果前人已經有相似的協議,那麼拿來直接用是最好的了。既然是參考開源專案,自然首先看的就是開源協議,例如apache,mit,GPL等。但是,開源協議保護的物件一般是程式碼,或者通過這些程式碼產生的“work”(可以理解為訓練出的模型)。開源協議並沒有提及對資料的保護。那麼資料界是否已經有了成熟的開放資料相關的協議內容?國外有一個開放資料的協議ODL(http://opendatacommons.org/licenses/),裡面有不少借鑑的內容,但那個協議的保護物件主要是結構化資料,而非圖片這種非結構化資料,再加上ODL協議對“商業”友好。因此這是我起草一個新協議的原因,當然這個新協議應該充分借鑑原先協議的優點。
圖2 ODL官網,國外的很早提倡資料開放的一個協議,其資料以格式化資料為主
在協議起草過程中,我參考了ImageNet(一個知名的測試機器學習與影像識別的圖片庫,http://www.image-net.org/ )裡資料使用的方式。在ImageNet裡儲存有1400萬圖片,但這些圖片的版權都不屬於ImageNet本身。使用者必須同意一些非商用的條款並且通過“研究人員認證”才能下載這些圖片。
ImageNet通過嚴格的稽核保證了資料的有效使用,但也因此限制了很多業餘開發者的機會。我決定讓GDSL協議面向業餘開發者友好。
圖3 ImageNet,深度學習近年來的多項進展離不開ImageNet裡的資料
綜合了以上的資訊,GDSL協議的一個初稿誕生了。在這個初稿中,借鑑了GPL協議的“傳染性”以及ODL協議的“開放性”,同時,由於資料是網友“捐贈”過來的,因此資料的使用者擁有複製與分享的權利(但是商用目的仍然是不允許的)。對於資料的“商用”的解釋為通過這些資料牟利,例如像上文提到的“資料堂”那樣將資料兜售,或者將資料作為車牌識別產品的贈品(產品本身要收錢)。與之相對的是,資料的“非商業使用”則是例如通過機器學習演算法通過這些資料訓練出一個模型或者系統,然後銷售這個模型,這個屬於GDSL協議允許的範疇。從這個角度上說,本協議鼓勵對於資料的研究利用,而不是對資料的轉賣。當然,車牌圖片有一定的隱私性,這也是前面若干資料擁有者不開放資料的一個原因,因此GDSL協議對於資料的隱私有一定的處理要求與策略,具體可以看協議內部的說明。
最後,簡單介紹一下基於GDSL協議的“通用資料測試集”(GDTS)和“開放共享資料集”。
“通用資料測試集”(GDTS)是一個包含各類車牌圖片的資料集。它的目標是提供一個判斷車牌識別系統的通用集合。因此,集合裡的圖片來源廣泛,包括各種環境下,不同角度裡,以及惡劣環境下的車牌圖片。通過GDTS,可以有效地對不同的車牌識別系統與演算法進行區分與評判。
“開放共享資料集”則包含海量的資料,它的主要目標是提供一個機器學習演算法足夠充足的訓練資料。
本篇文章對於“資料開放”的探討僅是一個拋磚引玉,未來“資料開放”的真正形態以及生態圈或模式是否就是如此,現在還無法確定。但這是一個嘗試,作者認為,未來“資料利用”會分化成兩個世界,一個世界是大公司主導的資料界,例如支付寶,微信等等,它們擁有的大量資料來自於民眾,私有而不開放,通過這些海量資料,這些企業會成為未來世界的掌控者。另外一個就是社會圈裡的開放資料,例如政府開放出來的,民眾自發組成的,研究團隊釋出的。這些資料通過再開發,再利用,會產生資料的重新流通價值,促進生產效率的大幅優化。而車牌識別資料,則是屬於第二世界中的一個小者,同時也是資料共享界的一個嘗試。
未來的世界屬於資料的世界。