文章類型
文章類型

【Tutorial】FarmBot AI相機的組裝與植物生長狀態分析

作者:曾成訓(CH.Tseng)

FBTUG的全稱是FarmBot Taiwan User Group,是哈爸發起的另一項眾人矚目的開源專案,他打算導入Rory Aronson的FarmBot設備,除了改良原有機構之外也加入目前最熱門的AI,以便將FarmBot改良成最適合台灣本土的農業自動化方案,看來哈爸在帶起了大眾對PM2.5污染的關注之後,把焦點從肺部移到了胃部,這次要來關心我們所吞下肚的蔬菜的生長和育作情況了。

Farmbot AI Demo相機,應用在農業自動化(圖片來源

 

FarmBot.io的Rory Aronson在他個人的Linkedin頁面是這樣介紹自己:

Rory Aronson is a mechanical engineer and social entrepreneur working to help solve big social and environmental challenges. He aims to benefit humankind and the environment by taking ideas into action via engineering, design, entrepreneurship, and personal lifestyle choices.

Rory Aronson(圖片來源

Rory Aronson希望能透過工程、設計、創業和選擇不同的生活方式,將各種創意轉化為實際行動讓人類和大環境都能受益,這跟大部份Maker的想法是不謀而合啊!

由於2018 FBTUG年會當天我在台北有課程要上,無法應哈爸熱情之邀參與這劃時代的盛會,只得應允做一台FarmBot AI demo相機來展示AI部份功能,希望能為哈爸公益的FBTUG專案盡一點棉薄之力。

FarmBot AI demo相機介紹

Farmbot AI demo相機成品(圖片來源

功能介紹

由於Farmbot相機的機構部份尚在完全成型,因此我先用樹莓派搭配一台web camera來模擬,實際應用時farmbot使用的攝影裝置會有所不同。軟體部份,之前我曾經用Opencv寫了一些影像偵測程式,例如植被比率計算、植栽區域抓取、瓢蟲偵測、NDVI影像分析等等,不過後來發現有些國外的開源軟體寫得更好更完整,例如Plant-detection, Plantcv等等,因此在這AI demo相機上就直接採用它們作示範了。

此外,AI是哈爸目前規劃的一個重點,可說是FBTUG的大腦與靈魂,可惜我只是剛入門的生手,只能玩玩一些基本的影像分類。其實樹莓派也能執行深度學習運算,且相當適合作為邊緣計算以取代部份雲端的功能,不大於200MB的model通常能順利的載入樹莓派執行,像是MNIST、Kaggle上頭的cat dog辨識、植物或葉片分類、手勢辨識..等等,只要不是太複雜或使用過高解析的圖片,訓練完所匯出的模型通常不會超過100MB大小且能順利的載入樹莓派執行。

我打算使用此樹莓相機展示如下的功能,未來若有需要可再增減其它的功能:

NDVI分析:

評估植物生長狀態的歸一化植被指數(Normalized Difference Vegetation Index;NDVI)。

植被區域計算:

分離出相片中植栽的區域並計算其面積比。

作物栽種位置:

圈選出相片中各個作物或種苗的位置。

零件、外殼、及組裝:

需要準備的零件如下。

樹莓相機零組件(圖片來源

相機的部份,您可以選擇web camera或PiCamera,當然PiCamera的像素更高拍照品質更好,但受限於其排線長度不夠,實際應用到Farmbot機器時可能必須遷就樹莓派主機的位置。此外,樹莓派在進行影像分析及機器學習等工作時,基於硬體限制也無法使用太高解析的相片,因此,使用web camera支援的1024×768解析度應該就足夠了。

web camera(圖片來源

成品的外殼一直是最讓人苦惱的地方,每每做了一件滿意的作品卻又僅能衣不蔽體或隨便檢個case將就,不過有了3D printer之後這些困擾都沒有了,我們可以自行設計,或到公開的3D模型網站下載適合的case修改,例如這個外殼便是修改自公開的Raspberry PI case,再修改成可搭配一片2.8吋的TFT模組, 並挖空所需的按鈕位置。

Farmbot相機成品外殼(圖片來源

接線方式如下:

Farmbot相機接線方式(圖片來源

組裝如下,發現樹莓派合體TFT LCD之後的體形並不會太大,甚至可稱嬌小,相當接近一台迷你相機的尺寸了,當然這是尚未考慮到電池尺寸的結果。

樹莓派合體TFT LCD(圖片來源

程式套件

NDVI分析

其原理是透過近紅外線相片來評估植物生長狀態,目前廣泛使用於農業作物種植、以及衛星圖的植被分析判斷,其公式如下:

詳細作法及程式說明可參考我的另一篇文章「ndvi與智慧農業」一文。另外要注意的是,由於我使用的是一般web camera而非NIR相機,因此分析出的NIR相片僅能作為參考,與實際的NIR會有差距。

植被區域計算

此功能我之前曾經利用color space的轉換來分離出需要的綠色及紅色植物, 並分別計算其覆蓋區域,可參考「色彩描述-color-descriptor」一文,不過,有一個Python套件PlantCV (Plant phenotyping using computer vision)寫得更完整,它針對植物的影像處理利用openCV指令寫成一個個基本的動作,我們可以視需要來組合,不需要學習OpenCV或從頭編寫指令。

  • plantCV網址: http://plantcv.danforthcenter.org
  • 使用OpenCV、NumPy、MatPlotLib
  • PlantCV的文件及使用說明: http://plantcv.readthedocs.io/en/latest/
  • 支援三種影像圖片: VIS Image (一般相機拍出的RGB圖片), NIR Image (近紅外線相機拍攝的圖片), PSII Image (飽和螢光脈衝成像的相片)

安裝方式請參考http://plantcv.readthedocs.io/en/latest/installation/,在樹莓派的Resbian安裝及執行VIS pipeline基本上都沒有問題的。另外,雖然plantCV在Q&A上說明尚未支援OpenCV3.X版,不過我在樹莓派上安裝的就是3.X版本,執行一些plantCV的指令倒是沒有什麼問題。

PlantCV對於植物影像的偵測及分析上,無論廣度(對於不同影像類型的支援)還是深度 (提供了相當多的指令來解構相片)都當足夠,未來我們再另外撰文予以說明。

作物栽種位置分析

其實PlanyCV輕易的也能作到圈選蔬菜的裁種位置及區域,不過我介紹另一個套件來作,該套件比起全方位的PlantCV來說算是小而美,它的功能僅有一個,就是在一位非綠色的土壤上偵測綠色的植物。如果你需要的功能僅是框選植物的位置,那麼就不需要那麼麻煩用plantCV,直接使用Plant-detection給它一張圖片及預設參數就可以了。

  • Plant-detection: https://github.com/gabrielburnworth/plant-detection
  • 可在樹莓派成功安裝
  • 使用教學: https://github.com/gabrielburnworth/plant-detection/wiki/Plant-Detection-Image-Processing-Steps

Plant-detection的GUI介面程式(圖片來源

Plant-detection還提供一個如上圖的GUI介面程式讓你調整參數的大小,以便自訂不同的偵測場景。例如上圖, 棕色區域為土地, 綠色為植物, 白色框線代表偵測到的植物,紅色代表框選此植物,可介由調整上方的scroller bar,可得到滿意的結果。

Farmbot AI Camera執行示範:

(責任編輯:周政毅;本文同步發表於CH.Tseng部落格文章連結

曾 成訓

曾 成訓

人到中年就像沒對準的描圖紙,一點一點的錯開,我只能當個Maker來使它復位。
曾 成訓

上一篇: | 下一篇:

468 ad

我想回應

你的電子郵件位址並不會被公開。 必要欄位標記為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料

成城共創股份有限公司版權所有、轉載必究.Copyright(c) 2017 MakerPRO