各位朋友,你們新年好。git
2015年的第一天,我仍是想繼續談談EasyPR。不過,今天我不想說代碼,也不想聊算法,而是想一想談談數據的事情。尤爲是關於「數據開放」這個對於車牌識別系統將來發展相當重要的主題。github
中國的車牌識別系統的現狀是商業和私有化,不管你願不肯意認可,開源遠遠不是主流。這一方面有歷史發展的緣由,另外一個主要緣由就是車牌數據的稀缺,研究者和團體很難找到開放的數據進行學習與研究。舉個例子,在google和百度裏搜索「車牌數據」,不多能獲得有用的內容。而僅有的一些網站,車牌數據更是被明碼標價。譬如,國內的一個網站「數據堂」(http://www.datatang.com/data/29148 ),對500張車牌圖片的標價是300元,摺合一張圖片就要6毛錢!。算法
圖1 數據堂,一個數據的交易網站,裏面的車牌數據很是「昂貴」 apache
我對這樣標價的感受是「匪夷所思」(若是按照這樣的價格計算,在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,能夠有效地對不一樣的車牌識別系統與算法進行區分與評判。
「開放共享數據集」則包含海量的數據,它的主要目標是提供一個機器學習算法足夠充足的訓練數據。
本篇文章對於「數據開放」的探討僅是一個拋磚引玉,將來「數據開放」的真正形態以及生態圈或模式是否就是如此,如今還沒法肯定。但這是一個嘗試,做者認爲,將來「數據利用」會分化成兩個世界,一個世界是大公司主導的數據界,例如支付寶,微信等等,它們擁有的大量數據來自於民衆,私有而不開放,經過這些海量數據,這些企業會成爲將來世界的掌控者。另一個就是社會圈裏的開放數據,例如政府開放出來的,民衆自發組成的,研究團隊發佈的。這些數據經過再開發,再利用,會產生數據的從新流通價值,促進生產效率的大幅優化。而車牌識別數據,則是屬於第二世界中的一個小者,同時也是數據共享界的一個嘗試。
將來的世界屬於數據的世界。