陳治成,孫浩杰,譚展鴻
(佛山科學技術學院,廣東佛山,528231)
中草藥的使用可以追溯到幾千年前,是我們中華民族的寶貴財富。在現代醫學發展的今天,草藥依然發揮著不可替代的作用。據《中華本草》記載,共有8980 種中藥,還有其他少數民族用藥,最新統計是12800 余種[1],專業醫藥人員利用自身豐富經驗,觀察草藥的外部形態特征進行種類識別,但這種方法難以被普通人掌握。所以探索出一條對中草藥的種類分類識別以及用途科普的可靠、快速、便捷的途徑,對中草藥的研究發展以及推動中醫的推廣發展規劃有著重要意義。
通過開發中草藥種類智能識別的嵌入式圖像分類器,可以很大程度地解決以上問題。通過儀器設備,可以讓零經驗的人都可以識別出中草藥的種類,可以快速獲得該中草藥的基本信息和藥用價值,降低中草藥識別門檻,并且可以減少時間成本、節約人力資源和縮短人才培養周期。
本設備硬件設計主要由主控模塊、圖像識別模塊、顯示模塊三大板塊組成。基于邊緣智能計算芯片Kendryte K210 進行電路設計與系統開發。主控模塊采用K210 芯片作為主控芯片,控制其他模塊的設備的運行。其中圖像模塊是利用攝像頭模塊和K210 芯片其內部集成的神經網絡處理器,由機器視覺算法進行圖像處理。
軟件程序系統是設備驅動的核心。在本設計中圖像識別是中草藥智能識別的核心模塊,是整個系統的大腦。其中深度學習框架是識別器設計的基礎,YOLO 算法是本文深度學習的核心算法,模型的預測將影響中草藥識別的準確率。將系統部署到硬件設備上,即可實現識別器的設計。整體設計框圖如圖1 所示。

圖1 中草藥識別器整體框圖
主控模塊的核心為Sipeed M1 芯片加上電源與串口電路。圖像識別模塊的核心為K210 芯片和攝像頭采集電路。顯示模塊的核心為LCD 顯示電路,相關電路設計具體如下。
主芯片Sipeed M1 搭載了高性能的AI 處理器K210。K210 芯片是基于RISC-V 開源指令集架構設計的一款64 位雙核處理器,主頻高達400MHz,擁有強大的性能和低功耗表現。同時,K210 芯片支持多種神經網絡算法,包括本設計所使用的Tensorflow。除此之外,Sipeed M1 還融合了多個硬件加速模塊,如FPU、FFT、DMA、SPI 等,以及多個標準接口,如UART、SPI、I2C、GPIO 等,方便我們進行使用和開發。
電源部分選擇現在最常用的Type-C 接口。Type-C 接口多種多樣,為滿足供電及下載的需要,本設計采用了16Pin 的Type-C 接口。通過查看規格書,設計VBUS 口通過一個F1 保險絲后接5V 電源。CC1、CC2 作為配置端,用Rd=5.1k 下拉電阻接地。另外,用一個被電阻串聯的LED 燈作為接通電源的指示燈。
串口是諸多數據傳輸方式中較為簡單的一種方式,常被用于嵌入式設備中,為保證整體電路的輕量化,串口是不二之選。通過串口芯片把上位機的USB 口映射為串口使用,方便燒錄程序進行調試。
串口芯片我們選擇CH340 系列中的CH340C 芯片,該芯片內置晶振,并且采用SOP16 封裝,體積小,適合小型化、便攜化應用場景。為了方便下載燒錄程序,還需要加上BOOT 和RST 的功能按鍵,用于加載BOOT 和復位。
實時采集圖像是實現圖像處理的關鍵之一,本設計采用CMOS 數字圖像傳感器,型號為OV2640。其使用總線協議SCCB,通過幀同步信號和PCLK 上升沿觸發依次讀取像素。由于OV2640 所需電壓種類有1.2V、1.8V 和2.8V 三種,其中僅1.8V 可通過M1 芯片進行輸出,所以另外需要兩個降壓芯片XC6206-1V2 和XC6206-2V8 來產生OV2640 所需的電壓。將OV2640攝像頭模塊先集成出來到另一塊電路板上,通過杜邦線與主板相連。
在圖像顯示方面,采用的是TFT-LCD,全稱為薄膜晶體管液晶顯示器(Thin-Film Transistor Liquid Crystal Display),是用薄膜晶體管(TFT)作為電子開關,控制液晶分子的方向并使其顯示圖像的一種顯示技術。本文使用的是一款以ILI9341 芯片作為主控芯片的TFT-LCD 顯示屏,通過CS(片選)、RST(復位)、RS(顯示數據/指令數據)、WR(讀寫)、LEDB(背光)等控制引腳來控制LCD 的顯示,并接上8 位數據線實現圖像數據的傳輸。由于該顯示屏使用的是軟排線,所以在電路板上需要使用FPC 連接器進行連接。
本設計采用雙層板結構,頂層和底層均進行GND 敷銅,增大地線面積,提高板子抗干擾能力。電阻電容等封裝選用是0805 貼片封裝。對于VCC 等電流線采用15mil 線寬,其余信號線采用10mil 線寬,全部接線完成后加上淚滴,使得導線與焊盤間接觸面積增大。電路板如圖2 所示。

圖2 硬件電路板預覽
軟件系統設計主要包括深度學習框架的搭建,制作數據集進行模型訓練,集成環境開發,并將模型和程序搭載到中草藥識別器的硬件設備上。
TensorFlow Lite 是基于TensorFlow 框架的輕量級版本,它專注于在小型設備上進行高效的機器學習預測。為此,TensorFlow Lite提供了更加輕量級的模型結構和推理引擎,并且提供了專門的優化策略和工具[3]。例如權重量化、捆綁運行時等,能夠大幅減小模型大小和提升預測速度。支持在嵌入式設備上部署,可以方便地進行開發和部署。因此,選擇TensorFlow Lite 部署深度學習模型,能夠很好地在微小型嵌入式設備實現機器視覺功能。
YOLO(You Only Look Once)是一種基于針對目標檢測任務設計的CNN 進行特征提取的物體檢測算法[2],其主要特點是采用了多個卷積層和池化層,同時在較深的網絡層次上增加了跳躍連接,使用端到端的訓練方式,使得更高層次的特征能夠更好地融合和傳遞到后續的目標檢測網絡中,使得模型更加緊湊輕量化、檢測速度更優,能夠在實際應用中實現實時的目標檢測。
YOLO 網絡的預測流程設計如下:
(1)輸入圖像歸一化:將輸入的圖像歸一化處理,使其像素值在0~1 之間。
(2)特征提取:將歸一化后的圖像送入深度卷積神經網絡中,在網絡的底層提取出圖像的特征。
(3)特征處理:通過多層卷積、池化層和全連接層,將特征圖像轉化成固定大小的網格,每個網格負責預測一個或多個物體。
(4)對每個網格進行預測:對于每個網格,使用多個先驗框(anchor boxes)預測該網格內可能存在的物體。每個框包含物體的邊界框位置(x、y、w、h)、物體類別以及該物體存在的概率得分。
(5)置信度篩選:對于每個預測框,計算其置信度得分,該得分基于框的能力、屬性和定位精度等綜合考慮,得分越高表示該框內可能存在物體的概率越大。
(6)非極大值抑制:將重疊度較高的框進行篩選,保留得分最高的框,并且刪除和其他框重疊度較高的低置信度框。
(7)輸出預測結果:輸出預測結果,通常為預測出物體的概率、物體類別、邊框坐標和置信度,以及通過非極大值抑制之后保留的最優邊框。
YOLO 網絡的預測流程[4]如圖3 所示。

圖3 YOLO 網絡預測流程
總的來說,YOLO 算法引入了anchor boxes 及卷積特征層,能夠檢測更多尺度的物體,并且能夠處理傾斜物體的檢測。同時,通過對特征圖像的處理和增加卷積層,使得YOLO 在檢測速度和準確性方面都有所提升。
中草藥目標檢測的驗證模型訓練流程如下:
第一步:數據集準備。需要將數據集劃分為訓練集、驗證集和測試集,并進行類別標注、圖像預處理等操作。為保證訓練模型的準確性,必須有足夠的數據集樣本,每類圖片不少于800 張,采用labelimg 對圖像進行對數據集進行類別標注。圖像的類別標注如圖4 所示。

圖4 labelimg 對圖像的類別標注
第二步:模型的訓練。根據數據集和驗證集,在Anaconda 中搭建Tensorflow 深度學習框架,采用YOLO算法模型并進行優化調參對數據集進行訓練。
第三步:模型的評估與調優。模型訓練完成后,需要將其在驗證集和測試集上進行評估。通過計算平均精度(mAP)等指標,評估模型的性能和準確性。為了獲得更高的泛化能力,需要對模型進行適當的正則化和優化算法,對模型進行優化,重復調整和訓練過程,直至滿足預期的檢測效果。將訓練最優模型通過Tensorflow Lite 轉化為tfl 格式。搭載到中草藥識別嵌入式設備上。
MaixPy IDE 是一個集成開發環境,可以使用MicroPython 編寫嵌入式系統,用于開發以K210芯片為基礎的硬件設備。通過編寫程序實現各個功能模塊的功能,驅動硬件的運行來實現識別器的系統開發。
訓練指標是檢測訓練模型性能優劣的重要參考指標,主要有損失值、平均準確度、預測正確率。觀察模型訓練生成的訓練指標曲線,損失值指損失函數計算后所得的值,再下降說明模型訓練仍然可以收斂。平均精準度代表在訓練集上的正確率,再上升說明模型正在訓練集上收斂。預測正確率代表在驗證集上的預測結果正確率,用來作為判斷模型訓練效果的依據,實際應用效果則取決于驗證集和實際場景的差距。訓練曲線指標如圖5 所示。

圖5 訓練指標曲線
整體硬件實物圖如圖6 所示。

圖6 整體硬件電路
對中草藥進行分類檢測測試并且在LCD 屏幕打印其置信度如圖7 所示。

圖7 目標識別檢測
實驗結果表明,本文設計的中草藥識別器能夠很好地實現預想功能,能夠達到比較高的識別精度,硬件設計簡約高效,代碼編寫清晰明了。
盡管本文設計的識別器已經取得了一定的成果,但是我們仍然面臨著很多挑戰和問題,這些問題需要我們在未來的研究和應用中不斷探索和解決,以實現更好地服務中藥材行業和消費者的目標。