李晉
摘要:圖像識別技術(shù)的普及和應(yīng)用在工程技術(shù)領(lǐng)域扮演很重要的角色,受制于硬件方面的限制,過去圖像識別大多停留在理論研究環(huán)節(jié),隨著高性能微控制器芯片的誕生以及圖像識別研究的成功,越來越多的工程應(yīng)用將涉及這一技術(shù)。為了提高高等教育在工程技術(shù)教育的先進性,可以直接使用已有開源技術(shù)實現(xiàn)圖像識別在教學上的應(yīng)用。
關(guān)鍵詞:工程技術(shù),圖像識別,微控制器,高等教育
中圖分類號:G640? ? ? 文獻標識碼:A? ? ? 文章編號:1009-3044(2018)31-0197-03
Exploration of Creative Practical Course on AI Mechanical Arm with Openmv
LI Jin
(National Experimental Teaching Demonstration Engineering Technical Training Center, Shanghai University, Shanghai 200444, China)
Abstract: The popularity and application of image recognition technology plays an important role in the field of engineering technology. Image recognition almost stays in the theoretical research in the past,due to the limitation of hardware.With the birth of high-performance microcontroller chips and the success on image recognition field, Engineering applications will involve this technology increasincreasingly. In order to advance higher education in engineering technology education, it is possible to directly use open source technology to realize the application of image recognition in teaching.
Key words: engineering technology; image recognition; microcontroller; higher education
我國工程技術(shù)教育領(lǐng)域一直秉承實踐為主,理論為輔的教學理念。然而實際要開發(fā)出一門既可以結(jié)合理論研究,又可以有效鍛煉實踐技術(shù)能力的課程往往具有一定難度。很大程度上在于理論研究不夠成熟完善,或者實驗設(shè)備器材受制于經(jīng)費預(yù)算,人員技能素質(zhì)等因素。過去人工智能學科中圖像識別技術(shù)在工程技術(shù)教育領(lǐng)域的推廣發(fā)展就比較遲緩,缺乏具體可以讓學生使用并進行二次開發(fā)的實驗套件。本文旨在介紹一種符合圖像識別研究并可以廣泛用在工程技術(shù)教學中的實驗?zāi)P头桨?,為工程技術(shù)教學在創(chuàng)新課程上提供一定參考。
1 圖像識別在工程技術(shù)教學中現(xiàn)狀
1.1 工程教育在圖像識別應(yīng)用中的困境
圖像識別一般包含三種文字數(shù)字識別,圖形識別,圖像識別,物體識別。其中物體識別是所有識別技術(shù)中最復(fù)雜的一部分,不僅需要大量可靠的算法,對底層硬件要求也很高,傳統(tǒng)研究中,對圖像識別也進行了“分門別類”,學術(shù)界就具體哪種算法更有效并沒有統(tǒng)一的說法。在實踐中,通常也沒有一種可以包含將幾種算法集合到一起的教學模型。
圖像識別在實踐課程的應(yīng)用中需要具備一定的理論研究基礎(chǔ),目前我國高等教育一般要求在大學二三年級就必須完成修滿實踐課程的學分,從這個意義上,學生在一年級就要學會甚至理解圖像識別的算法的核心,放眼從全球的高校來看,大多數(shù)學生并不具備這種能力,因此,要完成學分上的要求又要在實踐環(huán)節(jié)加入所需的圖像識別是必須考量的問題之一。因此需要開發(fā)一種最直觀便于入門的實驗課程。
1.2 openmv和圖像識別
上文提及圖像識別對教學模型要求較高,因此只要找到一款可以應(yīng)用在圖像識別,又可以一定程度“忽略”對理論知識高度要求,也就可以是一款合適的教學模型。從這點上,opemmv具備這樣的優(yōu)勢。openmv是一款低價,可擴展支持Python的機器視覺模塊。[1]低價主要體現(xiàn)在相對其他硬件資源定價并不高昂,可擴展則體現(xiàn)在該模塊包含通用的擴展接口引腳可以直接與Arduino進行對接,也可以對接至其他微控制器芯片,這就為更多創(chuàng)新實踐課程提供更多選擇的機會。其核心是使用Python語言開發(fā)的機器視覺模塊,Python在編寫算法上應(yīng)用比較廣泛,這主要是由于其最大程度上精簡了一些數(shù)據(jù)類型的表示方法,在圖像識別算法中,經(jīng)常會反復(fù)調(diào)用和圖像有關(guān)的數(shù)據(jù)。Python在調(diào)用過程中將這些數(shù)據(jù)進行“打包”在使用它們的時候就可以以“包”的形式來傳遞它們。這樣在代碼上可以更直觀地認識這些數(shù)據(jù)。此外,openmv外形體積小巧搭載了圖像識別所必須的攝像頭,并可以根據(jù)識別的不同需求更換鏡頭。其外觀如圖1。
圖像識別上,openmv封裝了用戶想要使用的算法,如與二進制字符串特征描述子有關(guān)的BRIEF算法和BRISK算法。這是在應(yīng)用方面最重要的部分,實際教學應(yīng)用中,可以最大限度地減少實驗結(jié)果對算法高度要求,教學目標可以最有效的化繁為簡使用到圖像識別技術(shù),當然如果對于一些高級用戶或研究人員,也可以使用openmv進行算法的優(yōu)化。
2 智能機械手臂實驗?zāi)P驮O(shè)計
2.1 實驗?zāi)P透艣r
創(chuàng)新實踐課程既要體現(xiàn)圖像識別但又要包含傳統(tǒng)工程技術(shù)課程的部分元素,如果脫離當前具備已有的實驗器材重新設(shè)計開發(fā)新的實驗?zāi)P蛯⒑馁M大量資源,從實現(xiàn)效率的角度,可以在原有的實驗?zāi)P蜕线M行改動,就可以快速地開發(fā)出新的課程。當前工程技術(shù)課程包含機械部分和電子電路控制部分,就6舵機自由度機械手臂分析,只是將預(yù)執(zhí)行的動作程序存儲在控制器(arduino_uno)中,課程一般將花大量時間在機械結(jié)構(gòu)設(shè)計,電子電路設(shè)計以及程序調(diào)試的工作中。如圖 2虛線框外部分
新的課程在保留原有內(nèi)容基礎(chǔ)上加入openmv也就可以應(yīng)用圖像識別的有關(guān)實驗,由于openmv使用了stm32f765微控制器芯片,其本身具備了有線串行通信的接口,這樣通過Tx發(fā)送數(shù)據(jù)線和Rx接收數(shù)據(jù)線就可以和原有系統(tǒng)進行通信。模型的實質(zhì)是通過openmv實現(xiàn)識別系統(tǒng),arduino實現(xiàn)控制系統(tǒng)。整體實驗?zāi)P?,如圖2。
2.2 簡單的圖形識別實驗設(shè)計與實現(xiàn)
使用openm的主要目的是讓學生接觸圖像識別中一些基本數(shù)據(jù),并可以通過合理的編程實現(xiàn)圖像識別的應(yīng)用。智能機械手臂實驗最終要實現(xiàn)的是,通過openmv來獲取用戶輸入信息,并對不同位置的物塊進行識別抓取。其主要通過openmv對幾個不同位置的物塊進行形狀(物料塊的橫截面形狀設(shè)定為正方形,三角形,圓形)識別,當識別完成后通過機械手臂進行抓取并放置在指定的位置,所要抓取物塊的形狀信息來源于用戶的二維碼。機械手臂在完成一個位置識別后判斷其是否滿足匹配用戶二維碼信息,如果匹配則進行抓取,不匹配則切換至下一個位置進行判斷。如果所有位置的物料塊都不滿足二維碼信息,那么機械臂復(fù)位至初始位置待用戶掃描二維碼信息。其程序工作流程,如圖3:
完成程序流程圖后就可以進行代碼編寫,openmv提供了易于調(diào)試的IDE工具并使用micropython完成整個代碼,據(jù)程序流程圖識別部分的偽代碼如下:
import sensor,image
LAB_threshold=(minL,mixL,minA,maxA,minB,maxB)
#初始化openmv,LAB參數(shù)是色彩空間的一種表示方法,形狀識別前設(shè)置LAB參數(shù)通過黑白來辨識色彩
sensor.reset()
...
#初始化攝像頭
def expand_roi(roi):
# 設(shè)置采樣窗口大小 QQVGA 160*120 ,roi為攝像頭感興趣區(qū)域變量
extra = 5
win_size = (160, 120)
(x, y, width, height) = roi
new_roi = [x-extra, y-extra, width+2*extra, height+2*extra]
#擴展感興趣區(qū)域
...
return tuple(new_roi)
scaned_qrcode=None #初始化二維碼信息變量
while(1):
for code in img.find_qrcodes():
#img.find_qrcodes()獲取掃到二維碼信息(正方形,圓形,三角形其中之一)
scaned_qrcode=code[4] #賦值給二維碼變量
...
if is_rect==scaned_qrcode:#攝像頭識別到的圖形是否為正方形與二維碼信息匹配
servo_seize() #執(zhí)行舵機抓取并放置物料至指定區(qū)域
servo_ShifttoReset()#舵機復(fù)位至帶掃二維碼區(qū)域
if is_cir==scaned_qrcode:#是否為圓形
servo_seize()
servo_ShifttoReset()
if is_triangle==scaned_qrcode:#是否為三角形
servo_seize()
servo_ShifttoReset()
else
servo_ShifttoNext()#舵機切換至一個區(qū)域進行識別
position++;
if position==destination:#當前識別所在區(qū)域是否為最后一個識別區(qū)域
servo_ShifttoReset()
break;#跳出本次for循環(huán)在下一個區(qū)域重新獲取識別信息
2.3 實驗?zāi)P驼f明及探索
由于實驗?zāi)P蜕婕暗?個舵機的控制,在調(diào)試的過程中應(yīng)注意舵機轉(zhuǎn)動角度過大避免發(fā)生舵機內(nèi)部齒輪過載導(dǎo)致燒毀,其次,舵機的每個動作使用了arduino進行控制,要執(zhí)行的每個動作取決于來自openmv識別的結(jié)果,在通過串行通信時還要注意兩者在時間上的銜接,識別系統(tǒng)和控制系統(tǒng)不能相互干擾,尤其還要注意舵機轉(zhuǎn)動一次的響應(yīng)時間,必須等待舵機一次動作完成后,openmv在發(fā)出下一條命令實現(xiàn)整套系統(tǒng)準確無誤工作。實驗中openmv僅嘗試了二維碼掃碼獲取用戶輸入信息對物塊的形狀進行識別,除此之外opmv還可以對條形碼進行識別,實驗只是簡單地對三種形狀進行識別,在進階的實驗環(huán)節(jié)可以利用其提供的庫函數(shù)設(shè)計加入其他復(fù)雜圖形的識別,在代碼開始處關(guān)閉了色彩識別是通過設(shè)定LAB色彩閾值實現(xiàn),實驗調(diào)試時物料塊的顏色必須與背景有較大反差(實驗中使用白色背景板),同樣也可以在后續(xù)實驗中加入色彩識別的實驗環(huán)節(jié),最終測試結(jié)果符合預(yù)定的實驗?zāi)繕私Y(jié)果,智能機械臂可以識別出用戶需要的物塊,實驗?zāi)P蛯嵨锶鐖D4。
3 結(jié)論
本文在工程技術(shù)課程中原有實驗?zāi)P突A(chǔ)上加入了與人工智能學科有關(guān)的圖像識別技術(shù),文章介紹了openmv識別系統(tǒng)中一個圖形識別功能,并使用該功能完成三種形狀的識別,同時介紹了openmv其他圖像識別的功能為工程技術(shù)創(chuàng)新實驗提供必要的研究基礎(chǔ),通過本文研究可以深入開展人工智能機器識別方面的入門認知課程,也可以進一步利用實驗中未用的功能完成創(chuàng)新課程的開發(fā)。
參考文獻:
[1] 梅妍玭,傅榮.基于OpenMV的3D定位識別系統(tǒng)[J].新技術(shù)新工藝,2018(2).
[2] STMicroelectronics,STM32F765XX Datasheet-production data rev6[Z].2017.
[3] Kenneth Reitz,Tanta Schlusser《Python編程之美:最佳實踐指南》[M].2018.
[4] 周莉莉,姜楓.基于FAST和BRIEF的圖像匹配算法[J].計算機工程與設(shè)計,2015(5).
[5] 曲智國.基于圖理論的圖像結(jié)構(gòu)化描述與匹配方法研究[D].國防科學技術(shù)大學,2013.
[6] 時磊,謝曉方,喬勇軍.基于SURF算法和OpenCV的人臉特征檢測技術(shù)研究[J].計算機與數(shù)字工程,2010(2).
[7] Herbert Bay,Andreas Ess,Tinne Tuytelaars,Luc Van Gool. Speeded-Up Robust Features (SURF) . Computer Vision and Image Understanding[J].2007(3).
[8] 米歇爾,麥克羅伯茨,楊繼志,等.Arduino從基礎(chǔ)到實踐[M].北京:電子工業(yè)出版社,2013.
[9] 惠記莊,羅麗,楊永奎,等. 基于SURF-BRISK的目標識別匹配與定位方法研究[J].長安大學學報:自然科學版,2016(3).