呂勇 余雷 王詩頌
關(guān)鍵詞:視覺識(shí)別;服務(wù)機(jī)器人;神經(jīng)網(wǎng)絡(luò)
0 引言
高等教育是衡量一個(gè)國(guó)家發(fā)展水平的重要標(biāo)志。隨著社會(huì)的快速發(fā)展以及國(guó)家政策的提出,地方高校需要積極響應(yīng)并作出改變,培養(yǎng)滿足企業(yè)的新型工科人才,在“新工科”背景下進(jìn)行一流本科專業(yè)的建設(shè)。蘇州大學(xué)機(jī)電工程學(xué)院的電氣工程及其自動(dòng)化專業(yè)經(jīng)過不懈努力,已順利通過中國(guó)工程教育專業(yè)認(rèn)證,同時(shí)也是教育部卓越工程師教育培養(yǎng)計(jì)劃專業(yè)、國(guó)家級(jí)一流本科專業(yè)項(xiàng)目、江蘇省一流本科專業(yè)以及蘇州大學(xué)一流本科專業(yè)。
近年來,隨著機(jī)器人技術(shù)的快速發(fā)展,在工業(yè)制造、物流快遞以及安防監(jiān)控等領(lǐng)域的應(yīng)用日趨普遍。在新工科背景下,同時(shí)結(jié)合高等學(xué)校的特點(diǎn),如何培養(yǎng)出具有創(chuàng)新能力并符合企業(yè)需求的高素質(zhì)人才,成為當(dāng)前研究的重要課題。視覺識(shí)別是機(jī)器人智能化必不可少的要素,隨著深度學(xué)習(xí)的不斷發(fā)展,基于深度學(xué)習(xí)的目標(biāo)檢測(cè)進(jìn)一步推動(dòng)了服務(wù)機(jī)器人的發(fā)展。在實(shí)驗(yàn)教學(xué)中,要讓學(xué)生通過具體的實(shí)踐去更好地理解理論知識(shí),并將理論與應(yīng)用相結(jié)合,起到融會(huì)貫通的效果。
機(jī)器人[1]作為電氣工程及其自動(dòng)化專業(yè)的十分重要的課程之一,從類別來看,其主要分為工業(yè)機(jī)器人、服務(wù)機(jī)器人兩種。本文以服務(wù)機(jī)器人[2]作為切入點(diǎn),采用基于深度學(xué)習(xí)的PyTorch框架展開具體的實(shí)驗(yàn)教學(xué)方法研究。實(shí)驗(yàn)教學(xué)不能僅局限于課堂理論知識(shí)的傳授,為了讓學(xué)生更好的提高實(shí)踐能力,本實(shí)驗(yàn)選擇了開源的Python機(jī)器學(xué)習(xí)庫(kù)PyTorch,可以快速搭建簡(jiǎn)潔且高效的框架。該實(shí)驗(yàn)設(shè)計(jì)采用典型的YOLO算法來實(shí)現(xiàn)目標(biāo)檢測(cè),以Python語言作為編程語言,最終在海思芯片上進(jìn)行例程的實(shí)現(xiàn)。
1 實(shí)驗(yàn)平臺(tái)簡(jiǎn)介
本實(shí)驗(yàn)用于深度學(xué)習(xí)模型訓(xùn)練的服務(wù)器平臺(tái)配置如下:處理器為Intel Core i9-9900K CPU3.6GHz, 顯卡為GeForce RTX 2080Ti,顯存容量為11GB,類型為GDDR 6,內(nèi)存為32G,系統(tǒng)為Ubuntu18.04。在編程語言和訓(xùn)練框架方面,本實(shí)驗(yàn)采用Python語言,訓(xùn)練框架主要參考PyTorch、TensorFlow、Caffe、CNTK、Keras以及Darknet等開源框架。這些開源框架集成了很多深度學(xué)習(xí)中的網(wǎng)絡(luò)模塊,使開發(fā)更為便捷。由于Py?Torch入門較易,設(shè)計(jì)人性化,因此本文的實(shí)驗(yàn)采用PyTorch框架,其不僅能夠?qū)崿F(xiàn)強(qiáng)大的GPU加速,同時(shí)還支持動(dòng)態(tài)神經(jīng)網(wǎng)絡(luò)。
實(shí)驗(yàn)中還涉及算法移植芯片海思,Hi3516DV300作為海思系列的一款性價(jià)比極高的芯片,集成了最新的ISP、領(lǐng)先的H.265 視頻壓縮編碼器,并使用了高性能的NNIE(Neural Network Inference Engine) 引擎,使芯片在低碼率、高畫質(zhì)、智能處理和分析、低功耗等方面具備行業(yè)領(lǐng)先水平。該芯片集成了POR、RTC、Au?dio Codec 以及待機(jī)喚醒電路,不僅降低了eBOM 成本,且與海思DVR/NVR 芯片采用類似的接口設(shè)計(jì),便于開發(fā)和量產(chǎn)。芯片的邏輯框圖如圖1所示。
2 目標(biāo)檢測(cè)算法與指導(dǎo)
本實(shí)驗(yàn)采用YOLO算法進(jìn)行目標(biāo)檢測(cè),它將一張圖片劃分為許多合適大小的小塊圖片,通過化整為零,對(duì)每個(gè)小塊圖片分別進(jìn)行預(yù)測(cè),從而實(shí)現(xiàn)整張圖片的目標(biāo)檢測(cè),使得其檢測(cè)速度與之前的算法相比大大增加。YOLOv4算法[3]是在前一版本的YOLOv3算法上改進(jìn)的結(jié)果,其性能有了很大的提升。因此,本文選擇YOLOv4作為服務(wù)機(jī)器人[4]移動(dòng)終端的物體識(shí)別算法。
在進(jìn)行具體的實(shí)驗(yàn)之前,教師對(duì)該算法所涉及的理論知識(shí)做一些必要的介紹,YOLOv4網(wǎng)絡(luò)主要分為三部分,分別是主干網(wǎng)絡(luò)、頸部網(wǎng)絡(luò)以及頭部網(wǎng)絡(luò)。首先,本文介紹主干網(wǎng)絡(luò)CSPDarkNet53,它從Dark?Net53改進(jìn)而來,主要由5個(gè)大殘差塊構(gòu)成,而每一個(gè)大殘差塊又分別由1個(gè)、2個(gè)、8個(gè)、8個(gè)和4個(gè)小殘差塊組成。由于CSP(Cross Stage Partial)可以提高神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)能力,因此將兩者結(jié)合。其次,本文介紹頸部網(wǎng)絡(luò),主要采用了FPN+PANet的結(jié)構(gòu),通過從上到下以及從下到上并加入側(cè)向連接的方式將多尺度特征進(jìn)行融合,實(shí)現(xiàn)了淺層定位信息與深層語義信息的有效提取。最后,本文介紹頭部網(wǎng)絡(luò),該網(wǎng)絡(luò)采用三尺度輸出,對(duì)于不同尺度大小的目標(biāo)進(jìn)行檢測(cè)。其中頭部結(jié)構(gòu)的深度表示邊界框偏移量、置信度、類別以及先驗(yàn)框,且每個(gè)尺度輸出都有三個(gè)不同尺寸的先驗(yàn)框,分別對(duì)應(yīng)了大、中、小三種目標(biāo)的檢測(cè)。YOLOv4的整體網(wǎng)絡(luò)結(jié)構(gòu)圖如圖2所示。
在實(shí)際實(shí)驗(yàn)過程中,由于神經(jīng)網(wǎng)絡(luò)的訓(xùn)練需要耗費(fèi)很長(zhǎng)的時(shí)間,教師指導(dǎo)學(xué)生側(cè)重將YOLO算法的預(yù)訓(xùn)練模型部署到芯片端,在有理解能力的基礎(chǔ)上再深入了解YOLO算法。
3 實(shí)驗(yàn)流程與效果
3.1 劃分小組
為了保證每個(gè)學(xué)生能夠提高實(shí)踐能力,提高團(tuán)隊(duì)協(xié)作能力,首先對(duì)學(xué)生進(jìn)行分組(3~4人每組),并選擇動(dòng)手能力強(qiáng)、有責(zé)任心和集體榮譽(yù)感的同學(xué)作為每個(gè)小組的組長(zhǎng)。在實(shí)驗(yàn)過程中,根據(jù)學(xué)生反饋的問題對(duì)教學(xué)過程動(dòng)態(tài)調(diào)整,一方面對(duì)項(xiàng)目進(jìn)行優(yōu)化,另一方面可以開拓學(xué)生的思路,形成一個(gè)良性循環(huán)。
3.2 項(xiàng)目教學(xué)內(nèi)容
對(duì)于服務(wù)機(jī)器人目標(biāo)檢測(cè)的應(yīng)用方面進(jìn)行知識(shí)的普及,同時(shí)結(jié)合實(shí)驗(yàn)的專業(yè)知識(shí)進(jìn)行講解,并盡量采用可視化的方式便于學(xué)生理解。在實(shí)驗(yàn)過程中,由于硬件[5]只支持Caffe框架,首先指導(dǎo)學(xué)生首先將Py?Torch模型[6]轉(zhuǎn)換為Caffe模型,并替換掉硬件不支持的激活函數(shù),比如將Mish激活函數(shù)替換為ReLU函數(shù);其次在電腦端對(duì)Caffe模型進(jìn)行驗(yàn)證,在保證模型正確的前提下實(shí)行量化;最后將量化的模型燒錄到芯片端,并通過串口指令觀察輸出信息,實(shí)驗(yàn)的整體流程如圖3所示。為了確保在芯片端移植的正確性,老師要求學(xué)生在每一步轉(zhuǎn)換的過程中進(jìn)行可視化,實(shí)驗(yàn)可視化結(jié)果如圖4所示。(a) 圖為Darknet模型的檢測(cè)結(jié)果;(b) 圖為Caffe模型的檢測(cè)結(jié)果;(c) 圖為芯片端的檢測(cè)結(jié)果;(d) 圖為Xshell串口終端的輸出信息,主要包含推理時(shí)間、標(biāo)簽類別以及置信度等信息。
3.3 實(shí)驗(yàn)結(jié)果對(duì)比
當(dāng)指導(dǎo)完學(xué)生將YOLOv4算法運(yùn)行于海思芯片端,教師對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行對(duì)比。由于芯片的算力有限,在移植的過程中需要將模型進(jìn)行量化壓縮,由此不可避免地帶來精度的損失。在服務(wù)器端,目標(biāo)檢測(cè)的精度可以達(dá)到85.96%,如圖5(a)所示;在芯片端,目標(biāo)檢測(cè)的精度有一定的下降,如圖5(b)所示,只有73.48%。通過實(shí)驗(yàn)結(jié)果的對(duì)比,讓學(xué)生有一個(gè)感性的認(rèn)識(shí),從深度學(xué)習(xí)算法(理論)到芯片的實(shí)際應(yīng)用會(huì)存在很多問題,比如代碼如何優(yōu)化?模型如何修改?框架如何設(shè)計(jì)?性能如何提高,這些都將促進(jìn)學(xué)生主動(dòng)學(xué)習(xí)的能力。
3.4 討論與分析
學(xué)生不能僅滿足于項(xiàng)目的完成,還需要分組進(jìn)行討論,分享各自在實(shí)驗(yàn)過程中的收獲與不足,并可以進(jìn)行二次開發(fā)參加競(jìng)賽或者作為畢業(yè)設(shè)計(jì)的一部分。通過實(shí)驗(yàn)教學(xué)將抽象的算法實(shí)際化、具體化,幫助學(xué)生理解和掌握服務(wù)機(jī)器人目標(biāo)檢測(cè)算法實(shí)際部署的關(guān)鍵技術(shù)。最后,鼓勵(lì)學(xué)生大膽創(chuàng)新,開拓新的實(shí)驗(yàn)項(xiàng)目,逐步形成具有遞進(jìn)關(guān)系的教學(xué)實(shí)驗(yàn)內(nèi)容。
4 結(jié)束語
通過以上的具體實(shí)驗(yàn),本實(shí)驗(yàn)以神經(jīng)網(wǎng)絡(luò)算法為核心,在教學(xué)過程中采用了“任務(wù)驅(qū)動(dòng)的自主學(xué)習(xí)”方法,設(shè)置了現(xiàn)實(shí)中的服務(wù)機(jī)器人[6]需要芯片移植這一實(shí)際問題。在完成實(shí)驗(yàn)?zāi)繕?biāo)的過程中,學(xué)生以小組為單位在硬件平臺(tái)上進(jìn)行動(dòng)手能力的實(shí)際操作,從而可以拓展學(xué)生對(duì)機(jī)器人相關(guān)知識(shí)理解的廣度與深度。
此外,本實(shí)驗(yàn)不僅涉及硬件知識(shí)的掌握,還要對(duì)PyTorch相應(yīng)模塊的添加具有一定的編程能力,進(jìn)一步引導(dǎo)學(xué)生在算法上進(jìn)行優(yōu)化,比如YOLOv4算法的輕量化,使其移植更高效。該實(shí)驗(yàn)從實(shí)際應(yīng)用角度鞏固學(xué)生在課堂上所學(xué)的知識(shí),有利于學(xué)生了解行業(yè)需求,并為將來走向企業(yè)打下堅(jiān)實(shí)的基礎(chǔ)。