胡啟迪,熊 剛
(楊凌職業(yè)技術學院,陜西 楊凌712100)
在果蔬銷售前,對其進行分類分級,可以顯著提高收益。然而,大量的果蔬人工分類分級工作是非常費力、耗時且枯燥的,且持續(xù)工作時間與精確度負相關,從而難以提升效率,進一步降低成本。隨著我國人口紅利的逐步降低,人工的使用成本也會逐步提升,逐步降低人工的參與度是目前的主流趨勢。隨著人工智能,尤其是機器視覺方面的發(fā)展,使用機器代替人工完成果蔬自動化分類分級工作成為了可能。文中對相關技術進行分析研究,探索其在果蔬分類分級工作中的具體應用。
目前可用于果蔬分類的機器視覺的技術有很多,這里重點討論Python、OpenCV、OpenMV 三種技術。
Python 是一種原本用于程序測試的腳本語言,因此非常易于理解及使用,隨著多年的優(yōu)化發(fā)展,目前已成為人工智能領域的基礎開發(fā)語言。其強大性主要得益于具備極為強有力的社區(qū)支持,也就是會衍生出功能極為全面,效率極高的應用庫,從而大幅降低開發(fā)者的時間成本。隨著應用范圍的不斷擴大,促使人們對其不斷改進,從而衍生出了更具針對性的版本,比如MicroPython。這是為了解決原 Python 版 本無法對底層硬件進行操作的問題,而推出的一個Python 子集,其在簡化原有Python 庫的同時,有效地優(yōu)化和改善了對底層硬件的支持。因此,使用MicroPython 能夠在保留Python 語法習慣的同時,對諸如LED、電機、傳感器、存儲卡等底層硬件進行控制。
總而言之,當前的Python 首先是實現(xiàn)人工智能的通用性語言,其次可以像C、匯編語言一樣控制底層硬件,綜合起來就是既可以實現(xiàn)大腦,也可以運動四肢。
OpenCV 實際上是一個開源且支持跨平臺的機器視覺庫,可運行在如Linux、Android、Windows 以及Mac OS 等常見的操作系統(tǒng)上,并且這一特性也在不斷加強。得益于由大部分的C 函數(shù)及少部分的C++類構成,OpenCV 的量級很輕,運行效率也很高。在提供了Python、Ruby、MATLAB 等語言的接口后,大大提升了其通用性,可以實現(xiàn)圖像處理和機器視覺方面的很多通用算法。這些特性使其快速擁有了大量的用戶,開源加上廣泛的用戶,使其可以在未來很長的一段時間里不斷的進化,已然成為目前最值得期待的機器視覺庫之一。
OpenCV 目前的可應用領域非常廣泛,總體可以歸為人機互動、物體識別、圖像分割、人臉識別、動作識別、運動跟蹤、機器人、運動分析、機器視覺、結構分析、汽車安全駕駛等11個領域。果蔬分類分級就屬于其中的物體識別。
總而言之,OpenCV 是一個強大的機器視覺庫,在其基礎上稍加修改便可以實現(xiàn)當前能夠見到的大部分機器視覺功能,且可以和Python、C、JAVA 等語言完美結合,其必須依托于某個操作系統(tǒng),需要固定使用于某個硬件體系下。
OpenMV 是一個開源,低成本,功能強大的微型機器視覺模塊。其硬件部分可以簡單的理解為一個MCU 加上一個CCD 傳感器,軟件部分則是類似于OpenCV 的機器視覺庫。OpenMV 中配備了一個 MicroPython 解釋器同時提供Python 編程接口,通過 Python 腳本語言的程序編制來完成各項功能的設計,其中就包含了IO 端口的操控以及讀取文件系統(tǒng)等一系列基本的操作功能,以及OpenMV 提供的機器視覺功能。其硬件在不斷的升級,庫也在不斷地豐富。
目前,OpenMV 上的機器視覺算法包括尋找色塊、人臉檢測、眼球跟蹤、邊緣檢測、標志跟蹤、殘次品篩選等??梢杂脕韺崿F(xiàn)非法入侵檢測、產品的殘次品篩選、跟蹤固定的標記物等。其設計小巧,便于應用到很多嵌入式產品上。
總而言之,OpenMV 是一個專門用于實現(xiàn)機器視覺的功能模塊,使用方便且靈活,非常適合應用于特定的嵌入式設備上,真實性能受限于其硬件體系,就目前的發(fā)展情況上來看并不適合應用圖像精度要求很高的場合,相信隨著新版本的推出,會逐漸改變這一現(xiàn)狀。
這里根據(jù)分類所要達到的不同目的,將其分為三種場景。結合以上技術的特點和各場景下的實際需求,討論各場景下各種技術的適用性。
果蔬的分類方式是針對保鮮期。果蔬的腐敗是具有一定傳導性的,將新鮮的和即將腐敗的果蔬放在一起,會加速新鮮果蔬的腐敗,從而造成一定的經濟損失。同時,新鮮果蔬與即將腐敗的果蔬在銷售策略及定價上也有很大的差異。因此,這種分類工作是有一定需求的。
果蔬的保鮮期是需要從多個維度進行判斷的,大致可分為經驗、機械、視覺三個維度。經驗是根據(jù)生長特性去預估,機械是通過掐捏等動作物理感知,視覺則是通過外顯特征來判斷。可以看出,機器視覺只能從事其中視覺維度的工作,且需要很高的精確度,投入成本過大,因此并不適合。實際上也大多采用經驗這一維度進行分類。
果蔬分類方式是針對大小及形狀的。通過形狀的規(guī)則度,半徑的大小分類是果蔬常用的一種分類方法,這種分類方法主要是針對于不同的終端市場,比如個人與企業(yè),從而提升收益。
利用機器視覺實現(xiàn)這種分類方法,對其中視覺傳感器CCD 的精度要求不高,但是識別效率要求較高。前面提到的OpenCV 以及OpenMV均可以達到這一要求,但從最終的設備成本上來說,OpenMV 更為適合。
果蔬分類方式是針對品相的。這種分類方式其實就是在場景2 的基礎上增加色澤這一判斷維度,主要針對高端市場,也就是將半徑、形狀、色澤都趨近完美的個體挑選出來,通過精致的包裝,作為禮品銷售,可以大幅提高收益。
可以看出,該場景下對機器視覺系統(tǒng)色域識別精度要求是很高的,因為可以大幅提高收益,因此在效率和設備成本上可以做出適當讓步。OpenMV 由于硬件的限制,目前配備的CCD器件在色域識別精度表現(xiàn)上一般,并不適用與這種應用場景,相較之下,OpenCV 在硬件上沒有限制,通過合理的硬件搭配,是能夠勝任該場景工作的。
基于前面的分析討論,這里基于Python、OpenCV、OpenMV 三種技術,結合設計思路中的場景2 和場景3 分別給出兩種果蔬分類系統(tǒng)的系統(tǒng)框架。
圖1基于OpenMV的系統(tǒng)框架
如圖1所示。適用于場景2的系統(tǒng)框架是基于OpenMV 的。OpenMV 本身就是一個嵌入式系統(tǒng),且預留有一定功能的IO口,可以方便的擴展顯示及鍵盤,并且同時控制多個IO設備。
整體上看,該系統(tǒng)框架是一個典型的嵌入式系統(tǒng),可以獨立運行,且成本較低。其中Python 語言用來控制OpenMV 模塊,再由OpenMV 模塊協(xié)調其它部分完成分類工作。鍵盤用來給系統(tǒng)輸入分類過程中的相關參數(shù),顯示器用來顯示分類過程中的相關信息,傳送帶用來運送逐個果蔬,舵機用來根據(jù)識別結果決定當前果蔬去向。
圖2 基于OpenCV的系統(tǒng)框架
如圖2 所示,適用于場景2 的系統(tǒng)框架是基于OpenCV的。OpenCV本身是一個機器視覺庫,因此需要一個其支持的操作系統(tǒng)運行,這里選擇較為通用的PC 平臺。PC 本身不便于控制外圍設備,因此通過一個MCU來完成這些工作。
整體上看。該系統(tǒng)框架是一個典型的上下位機相結合的復合式系統(tǒng),雖然上下位機都可以用其他設備替代,但是不能獨立運行,且成本較高。其中Python負責從OpenCV中調用合適的模塊完成攝像頭捕獲圖像的識別工作,PC將識別結果通過串口發(fā)送至下位機,下位機MCU根據(jù)結果控制傳送帶以及舵機完成最終的分類工作。該系統(tǒng)中的攝像頭和PC 配置均可以根據(jù)實際需要隨時調整,雖然相對復雜,但適應性很強。
本文對可用于果蔬分類的機器視覺中的三項技術進行了分析研究。綜上所述,在Python 語言的強大支持下,通過OpenCV 和OpenMV 可以勝任不同場景下的分類工作,該方向的進一步研究具有一定的經濟價值。