春季為全家出遊賞花旺季,能夠在小夥伴面前叫出所見植物的名稱在遊園期間就成為一項神技能。為了滿足大眾對植物認知的需求,此前,百度已陸續與國內多家植物園展開合作,並聯合中科院植物研究所等專業機構對植物識別結果進行鑑定,引入350萬專業植物數據進行模型訓練,提升植物識別率。
遊客使用百度 APP 拍照便能識別植物信息,通過百度圖像視覺搜索與植物園實地場景結合,打造出基於 AI 的智慧植物園,為遊客提供植物識別、植物園遊覽資訊、植物地圖精準推薦等應用場景,讓遊客輕鬆領略到一拍即識身邊花草樹木的高科技遊園體驗。
百度已經與中科院北京植物園、北京世界花卉大觀園(4A)、西雙版納熱帶植物園(5A)、武漢植物園(4A)、上海植物園(4A)、興隆熱帶植物園(4A)等12家植物園達成合作,並在今年春天展開了一系列線上線下互動活動,還沒去賞花的小夥伴們快去自己親身體驗下吧。
那麼百度是如何做到通過拍攝花卉照片便能準確識別花卉信息的呢?下面有請來自百度視覺搜索團隊,百度視覺技術部、中科院植物研究所、中國植物園聯盟的大牛們為大家揭露植物識別背後的奧秘,獨家放送,不要錯過哦!
百度視覺搜索總經理彭博表示,百度視覺搜索已涉及生活中多個領域,對於複雜的花卉識別,讓機器進行細粒度模型訓練,結合專業資料庫,大大提高花卉識別精準度,未來也希望能夠有更多領域加入,為用戶帶來更好的服務和便捷的搜索體驗。
1.為什麼要做花卉識別
在日常生活中,花卉不僅可以提高品味,裝飾室內、花園與陽臺,也可以淨化空氣,為我們帶來愉悅的心情和美妙的視覺感受。
圖片來自網絡:室內裝飾/花展/婚禮鮮花
辣麼,全世界有多少種花呢?截止到2010年,據不完全統計,世界上可以開花的植物有將近40萬種。但是,在日常生活中或花卉展覽時我們真正可以見到的僅有上千種花。這麼多種花,總有你一見鍾情的那一款,可是你卻叫不上它的名字,這就好比偶然見到了眼熟的女神或者是男神,卻不知道對方的名字一樣,甚是尷尬。
為了解決大眾這個看似簡單的生活痛點,百度藉助 AI 技術,讓你只需掏出手機從百度搜索框中打開攝像頭,就可以輕鬆知道自己喜歡的花的名稱。可是,面對上千種不同的花,該怎麼做呢?
2.上千種不同花卉識別:
通用分類與細粒度分類
這項技術來自於百度視覺技術部下的細粒度圖像團隊。花卉識別是非常具有針對性與專業性的分類,識別出一朵花不僅需要嚴謹、正確的專家級鑑定,還需要能區分上千種花之間細微差別的能力。因此,花卉識別超越了通用識別的範疇,隸屬於細粒度識別範疇。
通用分類技術,只需讓計算機知道日常生活中常見的事物即可,比如花、狗、貓、房子和汽車等。但是細粒度分類要教會計算機擁有專家級別的能力,不僅需要知道是不是花,而且要準確地告訴我們是什麼品種。
圖1:通用分類
圖2:細粒度分類
3.怎麼做花卉識別
首先,上千種花卉數據信息是如何收集的呢?我們藉助百度的知識圖譜,對世界上的花卉名字進行科學的科、屬、種劃分,建立了一個非常專業的花卉類別庫,支持花卉種類過萬,大大超出了日常生活中常見的花卉種類。
接下來,按照這份列表,藉助百度強大的圖庫,進行文字搜索。累計到目前的最新版本,我們已經從兩千多萬的圖片中篩選出了大量的優質花卉圖片。對於這些圖片,標註人員通過權威樣本庫中的文字描述,並在中科院老師的幫助下,根據花卉的葉子、形狀、顏色等微觀特徵進行挑選與標註。除此之外,還進行了標註質量的檢查,標註準確率在 95% 以上。這個數字意味著,高質量的數據為模型的學習奠定了很好的基礎。
最後聊聊方法。每個用戶在拍攝花卉的時候,雖然都會儘可能地對準目標,但是對同一朵花而言,拍出來的姿勢也會千差萬別。比如,拍攝環境的光線明暗程度、手機抖動帶來的模糊畫面等差別都需要解決。
我們讓計算機在「看」一張花卉圖片的同時,通過算法模擬各種拍攝環境情況,儘可能讓它「看」到同一朵花在更多的情況下的圖片,比如,下圖中我們演示了幾種情況,模型在學習一朵花的同時,還要學習它的各種情況下的模樣,光線、旋轉、以及放大縮小等。這樣,就可以模擬一朵花的各種情況來應對用戶不同拍攝情況的問題。
對於模型上的選擇,我們嘗試了很多方法以及創新。近幾年,在細粒度的分類領域,注意力機制(Attention Mechanism)引起了很大的關注。通過大量的樣本學習,模型會自己注意到一些比較有意義的特徵與紋理。
百度提出了 Fully Convolutional Attention Localization Networks[https://arxiv.org/pdf/1603.06765.pdf],這個方法利用 attention 機制解決了細粒度識別領域中,區分類別之間細微差異的問題。
在過去的工作中,大部分方法都是需要利用人為精確的 part 標註信息,才能教會模型應該「認真地」去關注哪些細節。這種方法缺點在於標註 part 太依賴人的經驗,並且標註成本昂貴。另一個原因是有些細粒度識別任務,憑藉人的經驗不容易知道哪些 part 細節是有用的,比如花卉、菜品或者是動物。因此,讓機器自己去學習一些有用的 part 信息是非常有必要的。如下圖,利用深度學習模型,能夠很好地讓模型通過看海量數據去學習到關鍵的細節。
在訓練時候發現, 模型會「偷懶」, 模型總會過分關注於自己已經識別的花卉,如何讓模型自己能著重學習那些識別不了的花卉呢? 為了更好地解決此類問題,我們將那些做不好的花卉樣本,通過數據挖掘技術,檢索出更多類似的難樣本集。讓模型能夠更加關注於這些難樣本。和人一樣,每次都得學習有難度的知識,才會變得更強。
另外,任何機器算法都不是完美的,有時候也會出現識別的錯誤。為了解決這個問題,我們在後期做了一些嘗試,使用數據回流來不斷提高模型的準確率。越來越多的用戶使用百度 APP 來拍攝花卉,從而留下了大量、真實的花卉圖片,利用這些寶貴的數據,對這些數據進行清洗與標註,反哺給我們的模型,形成一個良性循壞。這樣機器便會對用戶拍攝的花卉越來越自信地給出正確名稱。
春天正是參加踏春、戶外旅遊、參觀花展的最好時期,拿上手機,打開百度 APP 去拍照搜索那些嬌媚花兒的名字吧。如果花旁邊正好有個好看的妹子,也可以用百度 APP 搜索框打開相機,拍妹子旁邊的花,知道花名的同時還能順便悄悄拍下那漂亮妹子也是極好的。