吳學謙 李韻 鄧曉軍



摘要:針對用戶在養殖家庭植物因缺乏養殖經驗而頻頻失敗等問題,采用平臺最新的機器學習技術,設計并實現一款基于平臺集植物識別、健康檢測、疾病預防多功能一體的App。通過大量植物圖片數據集的訓練,機器學習訓練準確性達到73%,訓練有效性達到65%,測試準確性達到72%,總體識別精準率在70%左右。系統能準確并高效地實現植物分類識別、植物相關信息獲取以及植物健康檢測功能,幫助用戶更好地認識身邊的植物,成為公眾科學科普的有效手段。
關鍵詞:Core ML;機器學習;圖像分類;植物檢測
中圖分類號:TP311? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)30-0013-04
開放科學(資源服務)標識碼(OSID):
植物與人類的生存環境息息相關。園林植物為城市增添了新的景色,具有美化環境的作用。植物葉片的光合作用能凈化空氣,蒸騰作用增加空氣濕度,有效地調節和改善環境小氣候。一份由70多個國家250名科學家和專家撰寫的聯合國報告警告稱,地球環境已遭到嚴重破壞,人類健康正受到越來越大的威脅。需要大力改善環境保護工作,到21世紀中葉,亞洲種植植物、合理利用土地資源都是綠色基礎設施建設的重要一環。普通居民也可以通過種植植物的方式對人類生活環境做出自己的一份努力。
在家庭生活中不僅為了踐行低碳生活理念,也為提高居室生活環境質量,綠色植物家庭養殖的想法逐漸流行。而大多數家庭沒有專業的養殖經驗,年輕的工作人群也沒有充足的時間學習照料植物,植物養殖變成為一個難題。而國內植物智能領域軟件市場中并沒有找到行之有效的解決方案,目前基于人工智能技術植物類App主要存在以下問題:
1) 解決植物養護管理的應用較少。
2) 大多數應用僅關注于植物識別。
3) 絕大多數不能幫助判斷植物健康。
針對上述問題,設計一款能幫助用戶關注植物健康狀態并提供疾病預防方案的App已經凸顯。系統采用Core ML機器學習技術實現植物分類識別和植物健康檢查功能,以“簡潔、方便”為目標,通過輕松拍照的方式獲取植物健康評分并生成健康日記,幫助用戶更好地關注植物生長狀態及趨勢。
1 系統架構
系統架構采用MVC架構模式。MVC架構設計模式即模型-視圖-控制器(Model-View-Controller, MVC),是iOS應用程序中最常見的架構,是由模型、視圖和控制器三個部分組成[1]。模型即概念,是應用程序的數據表示,通常使用結構體或類來保存業務對象,是與用戶界面無關的部分;視圖即用戶窗口,是應用程序用戶可以看到并與之交互的對象,視圖對象是重用且靈活的;控制器即通道,是應用模型和視圖的橋梁,使用模型中的數據更新視圖,在用戶與視圖交互時更新模型[2]。
系統架構的詳細設計如圖1所示,模型包括植物信息、文章信息、植物疾病信息,抽象并封裝了相應的數據和操作,以供視圖的查詢和更新需要。視圖包括植物卡片視圖、文章卡片視圖、瀑布流對象視圖等,用于渲染App的各級界面,模型與視圖之間是一對多的關系,通過控制器與模型交互,執行查詢或是更新指令。控制器包括主頁控制器、瀑布流控制器、植物分類識別控制器、健康分類檢測控制器,理解用戶與視圖之間的交互信息,并將之標準化為業務事件提供給模型,促使模型對程序動作進行輸出,最終選擇某個視圖來更新用戶數據。
2 關鍵技術
2.1 機器學習
機器學習是一門多領域交叉學科,涉及概率論、統計學、逼近論、凸分析、算法復雜度理論等多門學科。專門研究計算機怎樣模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身的性能[3]。自20世紀80年代以來,機器學習作為實現人工智能的途徑,相關領域的研究工作發展很快。機器學習不僅在基于知識的系統中得到應用,而且在模式識別、計算機視覺、語言識別、統計學習、自然語言處理等方面大放異彩。
2.2 Core ML框架
Core ML可以將眾多機器學習模型類別整合到開發者的應用中。Core ML通過利用CPU、GPU和神經網絡引擎,同時最大限度地減小內存占用空間和功耗,來優化設備端性能。由于模型嚴格地在用戶設備上,因此無須任何網絡連接,這有助于保護用戶數據的私密性和App的響應速度。Core ML支持使用計算機視覺框架(Vision)分析圖像,使用自然語言框架(Natural Language)處理文本,使用語音框架(Speech)將音頻轉換為文本,以及使用音頻識別框架(Sound Analysis)來識別音頻中的聲音。系統主要使用Core ML框架和計算機視覺框架(Vision)來實現植物分類識別和植物健康檢測功能。開發者通過Python爬蟲工具和手動篩選從百度圖庫,PPBC 中國植物圖像庫,植物數據通,中國自然標本館,花百科網站中合法下載植物數據圖片[4]。在植物分類識別中,需要由示例和標簽組成的訓練數據,涵蓋30種常見家庭養殖植物:生石花、冰玉、菊花、玫瑰、薄荷、滴水觀音等,示例對應的標簽是植物名。
2.3 遷移學習
開發者可以使用遷移學習工具來幫助完成機器學習,遷移學習是指采用現有的預訓練模型并針對自己的數據對其進行自定義,將現在模型的知識遷移到新模型中[5]。Create ML和TuriCreate是蘋果公司提供的遷移學習工具,為了實現植物分類識別,開發者利用Create ML工具選擇圖像分類(Image Classification)任務,Turi Create選擇圖像分類器工具包和已準備好的植物圖片數據集進行遷移學習。進行10次迭代循環訓練得到植物分類的自定義模型,可以得到訓練準確性能到達73%,訓練有效性能達到65%,測試準確性能到達72%。總體植物識別精準率在70%左右。當運行TuriCreate圖像分類器時,會將任務分解成以下步驟:
1) 在大型通用數據集上創建CNN分類器,例如ImageNet,具有1000個類型和120萬張圖片。這些模型被研究人員訓練過,可以有效使用。
2) CNN中每一層的輸出可以視為每張圖片有意義的向量表示,從任務中的每張圖片上的輸出層的上一層提取這些特征向量。
3) 創建一個新的分類器,將這些特征作為自己任務的輸入。
步驟1重用于很多不同的問題,一旦完成就無須再更改。即使在你沒有足夠的數據量來創建深度學習模型的情況下,通過上述步驟執行的結果也無須調整參數,并且擁有更快的訓練速度和不錯的性能。該想法最早由Donahue等人提出[6],并已成為創建圖片分類器模型的最佳方法之一。
當使用遷移學習時,需要選擇一個用于特征提取的基礎模型。可供使用的兩個基本模型是SqueezeNet和VisionFeaturePrint_Screen。數據集的幾乎所有訓練時間都是模型從圖像中提取特征所花費的時間。這些包括低級邊緣、中級形狀和特定高層的特征。提取特征后,Create ML 只花費相對較少的時間來訓練邏輯回歸模型,將植物圖像分成30 類。類似于將一條直線擬合到散點,但在 2,048 個維度而不是兩個維度。對于每個輸入圖像,VisionFeaturePrint_Screen模型生成一個包含2,048個數字的列表,這些數字在高層次上代表圖像的內容。如圖2所示,Create ML使用這2,048個數字作為邏輯回歸模型的輸入,Create ML不是在具有150,000個特征的圖像上訓練一個難度大的模型,而是在VisionFeaturePrint_Screen提取的2,048個特征上訓練一個更簡單的模型。
2.4 邏輯回歸
Create ML訓練的求解器是邏輯回歸分類器,是一種常見的機器學習模型。邏輯回歸的基本步驟:
1) 構造hypothesis函數。
2) 構造損失函數J。
3) 通過損失函數J最小化求目標函數的各個參數。
邏輯回歸的hypothesis函數可以認為是一個線性回歸方程的結果經過sigmoid函數得到的結果,線性回歸方程可以用如公式(1)所示。
sigmoid函數如公式(2)所示,該函數又稱邏輯函數:
將公式(1)通過邏輯函數轉化得到的概率即是hypothesis函數。
函數<表示樣本被預測為正例1的概率,可以得到樣本被預測為正例和負例的概率如公式(4):
公式(4)可以合并為一個公式如(5)所示:
對預測結果的概率表示公式(5)取似然函數,得到如下的似然函數:
由于上式涉及連乘法,對其取對數函數得到對數似然函數如公式(7):
求最大值使用梯度上升法,對似然函數加個負號,通過求等價問題的最小值來求原問題的最大值,利用公式(7)和(8)聯立求得損失函數J如公式(9)所示:
損失函數等價于公式(10)的形式。
利用梯度下降法求參數θ的更新式,推導如公式(11)所示:
θ為最終更新式,α為學習率,求出θ更新過程:
3 系統實現與測試
3.1 植物分類識別功能
開發人員使用Create ML遷移學習工具建立圖像分類任務,分類器訓練30種植物圖片數據集,得到PlantImageClassifier.mlmodel機器學習模型文件并整合在應用中,通過Core ML和Vision框架來實現植物分類識別功能。相機拍照植物或者上傳植物圖片進行植物分類識別,將檢測出的植物的名稱及其他相關信息以文字的形式呈現給用戶,圖3a、圖3b和圖3c分別展示了對薄荷、菊花和龜背竹進行拍照檢測的結果界面,均符合實際照片輸入。
開發人員對植物分類識別功能進行了測試,測試的數據如表1所示,數據表明,檢測時間與圖片像素成反比,置信度與圖片像素成正比,即圖片越清晰,檢測的時間便越短,檢測的準確率便越高。這里的置信度指的是檢測結果同所檢測對象的實際情況一致的概率。
3.2 植物健康檢測功能
植物健康檢測功能同樣使用與植物分類識別功能構建共性的方法。針對30種植物的每一種植物,收集其常見的植物疾病圖片數據集。以菊花健康檢測為例,收集數據集的分類包括白粉病、黑斑病、枯萎病、銹病和健康,利用Create ML工具建立菊花圖片疾病分類任務,判斷待測菊花圖片與哪種標簽分類下的特征相關性更強。從圖4中得到菊花圖片健康置信度為68%,銹病為28%,黑斑病1%,白粉病1%,因此可以推斷菊花暫時處于健康狀態,可能患有菊花銹病。根據圖片健康檢測的結果給植物進行健康分數的評估,提供疾病預防方案,使用戶更好地評估植物生長健康狀態。
在拍照或者上傳植物照片獲取植物分類結果后進一步查看植物健康報告,跳轉頁面期間分別調用相應植物的健康檢測模型,將對植物進行植物健康評分和提供防治方案。圖5a、圖5b和圖5c分別展示了對菊花、龜背竹和桂花進行植物健康檢測的結果,給出的評分分別是100、60、85,基本符合對實際輸入植物圖片的生長健康狀態的判斷。
開發人員對植物健康檢測功能進行了測試,測試的部分數據如表2所示,數據表明植物疾病檢測結果與實際結果匹配程度在85%左右,能較好地評估植物生長健康狀態。
4 結語
系統以踐行種植植物環保理念為出發點,針對人們在家庭植物養殖因缺乏養殖經驗而頻頻失敗等問題,設計并實現一款基于iOS系統的AI智能植物健康檢測App,系統設計目標明確。在系統編碼實現階段,不僅使用iOS原生開發技術,還運用了最新的機器學習技術,如在植物分類識別與健康檢測中使用到了遷移學習、多分類邏輯回歸、神經網絡等知識,通過Create ML工具生成解決問題所需的機器學習模型。在檢測系統功能方面符合預期目標,經過大量的測試和驗證,完成了一定程度上的優化,目前已在AppleAppStore上架,為用戶提供下載服務。
參考文獻:
[1] 胡輝.IOS環境下使用MVC模式進行App開發的設計思路探索[J].數字技術與應用,2015(6):204,206.
[2] 王亞坤,鄭祥盤.基于iOS和百度AI的車牌識別系統設計與實現[J].閩江學院學報,2020,41(5):58-66.
[3] 李昊朋.基于機器學習方法的智能機器人探究[J].通訊世界,2019,26(4):241-242.
[4] 許展慧,劉詩堯,趙瑩,等.國內8款常用植物識別軟件的識別能力評價[J].生物多樣性,2020,28(4):524-533.
[5] 李亞麗,王敏,李靜.遷移學習的研究現狀[J].時代教育,2014(9):222.
[6] 牛伯浩.基于深度學習的植物病害檢測算法研究及系統實現[D].銀川:寧夏大學,2019.
【通聯編輯:朱寶貴】