方梓鋒,張 鋒
(廣東石油化工學(xué)院 電子信息工程學(xué)院,茂名525000)
近年來(lái),中國(guó)正從國(guó)家層面加速推進(jìn)垃圾分類的進(jìn)程,現(xiàn)已取得巨大成就,但有些民眾的分類意識(shí)和能力仍比較薄弱。在這個(gè)背景下各類垃圾分類平臺(tái)層出不窮,而如何實(shí)現(xiàn)全程智能化、自動(dòng)化的高效精準(zhǔn)分類成為了一個(gè)比較熱門的研究方向[1],但受限于傳統(tǒng)MCU 的機(jī)器學(xué)習(xí)能力較低, 邊緣計(jì)算的概念在環(huán)保行業(yè)仍鮮為提及。
眾所周知,邊緣計(jì)算能帶來(lái)更快速的服務(wù)響應(yīng)和更優(yōu)質(zhì)的實(shí)時(shí)業(yè)務(wù)體驗(yàn),而目前環(huán)保領(lǐng)域主要的研究方向集中在圖像處理算法和過(guò)程自動(dòng)化上,如文獻(xiàn)[2]通過(guò)CNN+ReLU 對(duì)垃圾圖像識(shí)別分類,擁有80%左右的準(zhǔn)確率、文獻(xiàn)[3-4]均使用了vgg16 神經(jīng)網(wǎng)絡(luò)分類算法對(duì)日常垃圾進(jìn)行識(shí)別分類,能夠?qū)崿F(xiàn)88%以上的識(shí)別準(zhǔn)確率,文獻(xiàn)[5]則采用雙目立體視覺(jué)+DCNN 的方案。采用優(yōu)秀卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行垃圾的識(shí)別分類無(wú)疑能提高系統(tǒng)整體的分類準(zhǔn)確值,但其訓(xùn)練與識(shí)別過(guò)程需要較高的算力支撐,這一部分往往采用云端算力進(jìn)行彌補(bǔ),在實(shí)際使用中可能會(huì)受制于網(wǎng)絡(luò)環(huán)境和云端負(fù)載,導(dǎo)致識(shí)別等待時(shí)間較長(zhǎng),而使用輕量級(jí)神經(jīng)網(wǎng)絡(luò)結(jié)合較高算力的邊緣終端[9]則能夠在實(shí)際使用中更具人性化和實(shí)用性。
本文結(jié)合國(guó)產(chǎn)芯片行業(yè)崛起的大背景,設(shè)計(jì)了一款具有垃圾種類判別、智能分類、語(yǔ)音播報(bào)、自動(dòng)開(kāi)合箱蓋、紫外線消殺以及人體靠近檢測(cè)、箱體負(fù)載云檢測(cè)等功能。這款智能垃圾分類平臺(tái)將不受制于上位機(jī)的整體負(fù)載和通信環(huán)境,能自主完成識(shí)別和分類操作,從而縮短整個(gè)垃圾回收流程的等待時(shí)間。
本平臺(tái)采用基于RISC-V 框架的勘智K210 作為本地識(shí)別的邊緣計(jì)算模塊, 通過(guò)UART 與Arduino 相連接,能夠?qū)崿F(xiàn)本地?zé)o感識(shí)別分類?;驹O(shè)計(jì)思路如下:
針對(duì)目前市面上的智能回收垃圾平臺(tái)的問(wèn)題[9]進(jìn)行了分析和研究,結(jié)合國(guó)外在垃圾分類的經(jīng)驗(yàn)[6-7]。本文提出一款利用智能垃圾分類回收平臺(tái),將邊緣計(jì)算、人工智能和互聯(lián)網(wǎng)+特性集于一體,最終達(dá)到垃圾智能化、自動(dòng)化的分類回收。在設(shè)計(jì)箱體時(shí),基于不同的使用場(chǎng)景,會(huì)有不同風(fēng)格的設(shè)計(jì),例如在戶外場(chǎng)景,需優(yōu)先考慮惡劣環(huán)境適應(yīng)性,擁有不間斷電源和太陽(yáng)能充電板的配置,而在室內(nèi)場(chǎng)景下本設(shè)計(jì)則重點(diǎn)考慮箱體占用體積和使用安全性等,如圖1所示。
圖1 投放于公共場(chǎng)所的平臺(tái)模型設(shè)計(jì)Fig.1 Platform model design for public places
本設(shè)計(jì)的實(shí)現(xiàn)主要依托于勘智Kendryte K210核心模塊、Arduino 控制模塊、工業(yè)級(jí)大扭力舵機(jī)等元器件。硬件框圖如圖2所示。
圖2 系統(tǒng)硬件框架圖Fig.2 System hardware framework
本設(shè)計(jì)所使用的Kendryte K210 模塊,搭載FreeRTOS 操作系統(tǒng)。K210 采用了RISC-V 雙核64 位處理器,并有專用電路實(shí)現(xiàn)CNN 加速,在400 MHz 的基準(zhǔn)速率下,INT16 測(cè)試擁有300 GMAC/s 的性能表現(xiàn),且整機(jī)耗能小于1 W。其優(yōu)秀的AI 性能,足以勝任本平臺(tái)的算力核心。
本設(shè)計(jì)所使用的副控制板為Arduino UNO,采用ATmega328P 的IC。有14 個(gè)數(shù)字輸入/輸出引腳,其中有6 個(gè)可用于PWM 輸出、6 個(gè)模擬輸入引腳,一個(gè)16 MHz 的晶體振蕩器, 一個(gè)USB 接口, 一個(gè)DC 接口,一個(gè)ICSP 接口和一個(gè)復(fù)位按鈕。
對(duì)于機(jī)器視覺(jué)來(lái)說(shuō),擁有一雙慧眼則如虎添翼。在攝像頭傳感器上選用了CSP3 封裝的OV2710,采用DVP-10bit 并行數(shù)據(jù)接口。能夠?qū)崿F(xiàn)1080p@30fps的視頻捕獲,為后期KPU 處理提供了一個(gè)辨別度較高的輸入值。
采用了工業(yè)級(jí)40 kg 大扭力舵機(jī),接入Arduino控制板的PWM 接口,由PID 算法進(jìn)行控制,投放不同的垃圾時(shí)會(huì)采用相應(yīng)的PWM 波信號(hào)對(duì)舵機(jī)進(jìn)行操作, 實(shí)現(xiàn)在開(kāi)蓋速度和角度的人性化和智能化。為確保機(jī)械臂的高強(qiáng)度和耐用性,在材質(zhì)上選用了建材行業(yè)常用的6063 鋁合金, 擁有優(yōu)秀的抗風(fēng)壓性能、裝配性能、耐蝕性能和裝飾性能。且在頂部設(shè)置有太陽(yáng)能電池板為箱體蓄電池組提供互補(bǔ)供電。
垃圾智能分類平臺(tái)的軟件設(shè)計(jì)主要包括K210和Arduino 上的分類算法設(shè)計(jì)、攝像頭控制、舵機(jī)控制、傳感器控制和通信協(xié)議。
垃圾分類的核心是圖像的處理和識(shí)別,本平臺(tái)以Darknet 為深度學(xué)習(xí)開(kāi)發(fā)框架、利用YOLOv2 模型[8]對(duì)投放物進(jìn)行檢測(cè)和分類,以達(dá)到智能化垃圾分類的目的。本平臺(tái)所使用的YOLOv2 模型,網(wǎng)絡(luò)簡(jiǎn)單,處理量小,而且擁有不錯(cuò)的mAP 和FPS 性能指數(shù),如表1所示[4]。
表1 YOLOv2 性能指數(shù)Tab.1 Efficiency of YOLOv2
首先從模型建立開(kāi)始,由于使用的是random 模式(多角度訓(xùn)練),需要采集不同種類垃圾多角度的圖像,并在相應(yīng)的樣本標(biāo)注信息中記錄好各個(gè)角度下的5 組數(shù)據(jù):對(duì)象索引號(hào)、對(duì)象中心坐標(biāo)XY 軸、對(duì)象的寬和高。將YOLO 訓(xùn)練的batches、subdivision等參數(shù)配置完畢后, 便可以開(kāi)始模型訓(xùn)練步驟,在平均損失率達(dá)到0.060730 avg 左右且不再下降時(shí)即可以停止訓(xùn)練,隨后開(kāi)始進(jìn)行模型的分類準(zhǔn)確率測(cè)試,測(cè)試流程如圖3所示。
圖3 YOLOv2 模型分類流程Fig.3 Flow chart of YOLOv2 model classification
完成了模型的訓(xùn)練和測(cè)試,還需要考慮針對(duì)后期的模型優(yōu)化,以適合用于K210 等輕量級(jí)終端上,本平臺(tái)采用了剪枝項(xiàng)目[9]的理論基礎(chǔ),對(duì)YOLOv2模型進(jìn)行了稀疏訓(xùn)練[10],其原理為每個(gè)通道引入一個(gè)比例因子γ,并將其乘以通道的輸出。將比例因子與訓(xùn)練網(wǎng)絡(luò)的權(quán)值相結(jié)合,通過(guò)稀疏的正側(cè)化處理,最后直接去除比例因子通道,得到微調(diào)剪枝網(wǎng)絡(luò)。
培訓(xùn)目標(biāo)被定義為
式中:x,y 代表訓(xùn)練數(shù)據(jù)和標(biāo)簽;W 是網(wǎng)絡(luò)可訓(xùn)練參數(shù);第一項(xiàng)為訓(xùn)練的loss 函數(shù);第二項(xiàng)的g(γ)為比例因子上的參數(shù);λ 是稀疏系數(shù)。當(dāng)選取即為廣泛應(yīng)用于稀疏化操作的L1-Norm (L1 正則化)。經(jīng)過(guò)優(yōu)化后的模型有效的降低了內(nèi)存占用和模型存儲(chǔ)空間[11],將有利于在K210 上實(shí)現(xiàn)高效的部署、運(yùn)行和維護(hù)。
導(dǎo)入訓(xùn)練完畢的模型到K210 上運(yùn)行測(cè)試時(shí),需要調(diào)用其內(nèi)置的神經(jīng)網(wǎng)絡(luò)處理器KPU,通過(guò)加載和運(yùn)行內(nèi)構(gòu)建的算法模型來(lái)實(shí)現(xiàn)目標(biāo)檢測(cè),分類流程如圖4所示。
圖4 智能垃圾分類流程Fig.4 Flow chart of garbage classification
攝像頭與K210 通過(guò)DVP 并行接口相連接,在驅(qū)動(dòng)中額外添加了超時(shí)待機(jī)和臨近喚醒的中斷函數(shù),在空閑時(shí)段將攝像頭關(guān)閉,不進(jìn)行實(shí)時(shí)捕獲,等待傳感器返回參數(shù)告知攝像頭開(kāi)始工作。在實(shí)際工作中,攝像頭負(fù)責(zé)傳輸畫(huà)面至識(shí)別程序指定的接口上,識(shí)別程序在該接口內(nèi)進(jìn)行逐幀的目標(biāo)檢測(cè)。在K210 內(nèi)的主體函數(shù)中有一個(gè)鉤子函數(shù),當(dāng)系統(tǒng)級(jí)捕獲到屬于person 索引(主要為手部)中的內(nèi)容時(shí),會(huì)對(duì)除person 索引內(nèi)容以外的進(jìn)行目標(biāo)檢測(cè),從而指引Arduino 副主控對(duì)對(duì)應(yīng)箱體進(jìn)行開(kāi)關(guān)操作, 檢測(cè)流程如圖5所示。
圖5 攝像頭捕獲流程Fig.5 Flow chart of camera capture
舵機(jī)在本平臺(tái)中用于處理需要機(jī)械化控制的部分,對(duì)不同種類的垃圾以及不同體積的投放物采用不同的處理時(shí)間(即打開(kāi)角度),通過(guò)PID 控制算法完成, 具體實(shí)現(xiàn)為在Arduino 控制板中編寫(xiě)舵機(jī)的PWM 波函數(shù),對(duì)K210 返回不同種的類參數(shù)進(jìn)行對(duì)應(yīng)處理。由接口發(fā)生PWM 信號(hào),與舵機(jī)相連,舵機(jī)再帶動(dòng)井蓋控制臂,實(shí)現(xiàn)開(kāi)蓋功能??刂屏鞒倘鐖D6所示。
圖6 舵機(jī)控制流程Fig.6 Flow chart of steering control
傳感器的控制主要由Arduino 副主控板進(jìn)行,負(fù)責(zé)采集箱體內(nèi)外的環(huán)境數(shù)據(jù), 實(shí)現(xiàn)人體靠近檢測(cè)、聯(lián)動(dòng)自動(dòng)開(kāi)蓋、箱體滿載檢測(cè)等功能。人體靠近檢測(cè)程序設(shè)定2 m 為標(biāo)志位, 采用PIR 熱電傳感器,設(shè)定連續(xù)檢測(cè)模式,工作流程為當(dāng)在檢測(cè)范圍內(nèi)捕獲到人體10 μm 紅外線時(shí)會(huì)保持持續(xù)高電平,K210 得到SensorState 參數(shù)為1 后通知攝像頭開(kāi)始工作,同時(shí)Arduino 等待K210 分類結(jié)果,打開(kāi)對(duì)應(yīng)箱體。
超聲波模塊放置在箱體頂蓋中,以箱內(nèi)垃圾最高面到頂部距離為檢測(cè)標(biāo)準(zhǔn),消去內(nèi)箱體至頂層的距離N,實(shí)際的Distancce 應(yīng)該為[pluseIn(echo,HIGH)/60.00]-N, 設(shè)定Distance 閾值來(lái)實(shí)現(xiàn)對(duì)箱體的容量監(jiān)測(cè),傳感器反饋流程如圖7所示。
圖7 傳感器反饋流程Fig.7 Flow chart of sensor feedback
本設(shè)計(jì)使用的是DTU 模塊與上位機(jī)進(jìn)行數(shù)據(jù)交互, 采用TCP 協(xié)議的串口數(shù)據(jù)流傳輸, 使用SOCKET 方式連接上位機(jī), 實(shí)現(xiàn)上位機(jī)的通信。而K210 與Arduino 經(jīng)過(guò)UART 串口進(jìn)行通信,編寫(xiě)自定義通信協(xié)議, 當(dāng)K210 發(fā)送AA0301020306 的數(shù)據(jù),即告知協(xié)議首部AA,指令長(zhǎng)度為03,控制指令010203,即為設(shè)備類別為01,第2 號(hào)設(shè)備,端口03,這三個(gè)校驗(yàn)和06,然而還需要一個(gè)Protocol Parser類庫(kù)來(lái)解析字段義,才能實(shí)現(xiàn)通信,其流程如圖8所示。
圖8 設(shè)備經(jīng)由DTU 的上位機(jī)通信流程Fig.8 Flow chart of communication with DTU
測(cè)試用的圖像數(shù)據(jù)集依照VOC 數(shù)據(jù)集格式構(gòu)建,通過(guò)labelimg 標(biāo)記工具進(jìn)行圖像目標(biāo)區(qū)域登記,完成相關(guān)配置后使用darknet 對(duì)YOLOv2 進(jìn)行訓(xùn)練,最終得到多次迭代后保存的訓(xùn)練權(quán)重模型,將train_log_loss 中的數(shù)據(jù)可視化得到圖9曲線,可見(jiàn)損失變化曲線在經(jīng)22 萬(wàn)次迭代后基本達(dá)到平均損失率。
圖9 模型訓(xùn)練平均損失率結(jié)果Fig.9 Average loss rate of model training
將迭代權(quán)重模型導(dǎo)入SD 卡中, 放置入測(cè)試用的Sipeed M1 荔枝丹K210 開(kāi)發(fā)板,使用KPU 加速YOLOv2 目標(biāo)檢測(cè)算法, 對(duì)四類垃圾進(jìn)行識(shí)別的準(zhǔn)確率如表2所示,雖在過(guò)程中出現(xiàn)了個(gè)別物品名稱識(shí)別錯(cuò)誤的情況,但所屬大類仍在正確的范疇之內(nèi)。
表2 識(shí)別準(zhǔn)確率結(jié)果統(tǒng)計(jì)Tab.2 Statistics of recognition accuracy results
同時(shí)舵機(jī)的響應(yīng)時(shí)間也在程序設(shè)定的范圍之內(nèi),對(duì)不同尺寸的投入物響應(yīng)時(shí)間和箱蓋打開(kāi)角度如表3所示, 設(shè)定了超時(shí)時(shí)間對(duì)箱蓋進(jìn)行狀態(tài)檢查,人體傳感器保持高電平時(shí)設(shè)定為無(wú)效。
表3 舵機(jī)響應(yīng)時(shí)間Tab.3 Response time of steering engine
綜上圖像數(shù)據(jù)和表格結(jié)果表明,本平臺(tái)能夠準(zhǔn)確識(shí)別人體靠近并開(kāi)始工作,物品分類平均識(shí)別準(zhǔn)確率達(dá)92.4%,并且能夠準(zhǔn)確打開(kāi)對(duì)應(yīng)種類箱體,并能夠判斷和上傳垃圾箱余量信息。箱體監(jiān)測(cè)的傳感器也能對(duì)高溫、煙霧等異常狀態(tài)正常告警。PIR 熱電傳感器維持高電平時(shí),箱體開(kāi)蓋后的防夾傷機(jī)制也正常工作,能夠確保使用的安全性,較好的完成設(shè)計(jì)初提出的各項(xiàng)功能指標(biāo)。
本文提出利用K210 開(kāi)發(fā)板協(xié)同Arduino 進(jìn)行智能垃圾分類的設(shè)計(jì)方案, 運(yùn)用邊緣計(jì)算+機(jī)器視覺(jué)賦能傳統(tǒng)產(chǎn)業(yè),充分發(fā)揮邊緣計(jì)算的優(yōu)勢(shì),極大的縮短了分類等待時(shí)間,具有個(gè)性化、模塊化等特點(diǎn),但目前在識(shí)別過(guò)程中對(duì)小種類的判別仍存在誤差,受訓(xùn)練參數(shù)的影響較大等問(wèn)題,后續(xù)工作將繼續(xù)對(duì)目標(biāo)檢測(cè)和剪枝算法進(jìn)行優(yōu)化,尚有較大的改進(jìn)空間。本設(shè)計(jì)通過(guò)套入不同模型亦可適用于其余的智能化分類領(lǐng)域,助力其余傳統(tǒng)行業(yè)升級(jí)轉(zhuǎn)型為互聯(lián)網(wǎng)+智能化的產(chǎn)業(yè)。