學會深度學習+農業,助力水培農作物(一)

學會深度學習+農業,助力水培農作物(一)

數據觀世界

在今天的文章中,我們將演示深度學習應用於水培的實際用例,水培法是一種在水溶劑中使用富含礦物質的營養液而無需土壤培養植物或農作物的方法。通過本文,您將學習如何使用Keras訓練卷積神經網絡(CNN),以自動對水培植物根健康進行監控和分類,而無需人工檢查。

本教程的實際實驗設計是由Darrah等人在他們2017年的一篇論文(Real- time Root Monitoring of Hydroponic Crop Plants: Proof of Concept for a New Image Analysis System.)中提出的。這樣的系統可以提高現有水耕農場的產量,使農場更有效和可持續運行。

如何結合深度學習、計算機視覺及水培學?

水培作物的根可以分為兩類:

  • 有根鬚
  • 無根鬚

根鬚越多,代表作物的根越健康,作物吸收養分的效果就越好。

在國外的研究項目中,研究人員首先設計了一個植物根部的檢測系統,用於自動採集作物的根部圖像,而不必"打擾"到植物。然後利用計算機視覺技術,將根分為上面所提到的兩類,這本質上其實就是一個圖像分類問題。

學會深度學習+農業,助力水培農作物(一)

我們首先需要獲得圖片,然後將圖片處理成256X256像素大小的圖片,處理過程為:首先將圖片高度設為256像素,然後從裁剪掉圖片的兩邊,保留中間的256像素部分。因為作物的根位於圖片的中央,所以這種處理效果更好。

學會深度學習+農業,助力水培農作物(一)

可以看出,計算機視覺與水培農作物的結合,其實是利用了根部圖像來反映植物的健康狀況,但是在計算機視覺相關的算法中,深度學習目前最為有效,接下來我們將學習如何利用深度學習對植物根圖像進行分類。

項目結構

本項目結構如下圖所示:

學會深度學習+農業,助力水培農作物(一)

數據集分為有鬚根圖片和無須根圖片,pyimagesearch/目錄是一個包含simplenet.py的Python模塊。SimpleNet架構是我為根健康分類設計的Keras深度學習架構。train_network.py用於訓練我們的網絡,生成plot.png,即我們的訓練圖像。我們將逐行介紹訓練代碼,以便您瞭解它的工作原理。

利用深度學習對根健康進行分類

我們首先要安裝必要的軟件包:

OpenCV:任何版本都適用。記下您安裝OpenCV的Python虛擬環境的名稱,您將希望使用相同的環境來安裝Keras和TF。

Keras和TensorFlow:請參閱使用TensorFlow後端安裝Keras以開始使用。

scikit-learn:使用pip輕鬆安裝到您的虛擬環境中:pip install scikit-learn。

imutils:我可以通過pip install imutils安裝我的圖像處理便利功能包。

matplotlib:Python的繪圖工具 - pip install matplotlib。

已上都成功安裝以後,就可以開始實現我們的卷積神經網絡了。

打開simplenet.py文件,首先添加以下代碼,用於導入所需模塊:

學會深度學習+農業,助力水培農作物(一)

我們通過從keras導入必要類型的神經網絡層來開始我們的腳本。我們還導入了keras後端。 後端將允許我們在下一個塊中動態處理不同的輸入,我們然後定義SimpleNet類和構建方法:

學會深度學習+農業,助力水培農作物(一)

SimpleNet類定義從第11行開始。我們唯一的方法build,在第13行定義。該函數的第一步是初始化Sequential模型(第16行)。然後我們指定inputShape,其中輸入圖像的大小為64×64像素(第17行)。大多數人將使用TensorFlow作為後端,假設"channels_last"最後排序。如果您使用Theano或其他"channels_first"後端,則在第20行和第21行修改inputShape。

讓我們開始向網絡添加層:

學會深度學習+農業,助力水培農作物(一)

第一個CONV => RELU => POOL層(第24-28行)這裡使用較大的過濾器尺寸來幫助檢測較大的根鬚(或缺少根鬚),同時快速減少維數。我們在網絡中更深入地瞭解每個CONV層的更多過濾器(第31-42行)。始終使用RELU激活。

在上面的每個塊中,我們丟棄了25%的節點(斷開隨機神經元)以努力引入正則化並幫助網絡更好地概括。這種方法被證明可以減少過度擬合,提高準確性,並使我們的網絡能夠更好地應用於不熟悉的圖像。

我們的最後一個FC => RELU塊以softmax分類器結束:

學會深度學習+農業,助力水培農作物(一)

全連接層一般位於CNN的末端,這裡我們將dropout設置為0.5。softmax分類器應用於我們的最後一個全連接層,它有2個輸出對應於我們的兩個類別:(1)non_hairy_root(無須根)和(2)hairy_root(有鬚根)。

以上我們簡單瞭解了基於深度學習的計算機視覺技術是如何與農業中水培作物相結合的和本項目的整體框架,並學會了用keras構建CNN神經網絡框架,明天的文章中我們將一起繼續更深入地學習實際訓練模型的構建,並進行基於深度學習的圖像分類。

感謝有你,不見不散!


分享到:


相關文章: