謝作如 浙江省溫州中學(xué)
邱奕盛 華東師范大學(xué)
稻草人是農(nóng)村常見的“安防設(shè)備”。因?yàn)橛小叭恕钡耐庑?,有風(fēng)時(shí)它會(huì)擺動(dòng)手臂并發(fā)出聲音。農(nóng)民常常在稻田間扎上一個(gè),用于驅(qū)趕麻雀之類的鳥兒,避免其偷食莊稼。
科技在不斷發(fā)展,稻草人也應(yīng)與時(shí)俱進(jìn)。在當(dāng)前的低門檻AI開發(fā)工具的支持下,學(xué)生完全能夠設(shè)計(jì)出一款“智能稻草人”作品,讓“它”從僅僅“外表像人”走向“內(nèi)心也像人”——通過(guò)攝像頭,準(zhǔn)確判斷是否有鳥兒來(lái)偷食或者有野豬來(lái)破壞,并且能根據(jù)不同的情況發(fā)出不同的音效來(lái)驅(qū)逐,同時(shí)通過(guò)警報(bào)通知主人。當(dāng)然,也可以用稻草人監(jiān)視是否有小偷來(lái)盜取,或者其他的意外情況,只要通電它就能夠日夜工作,保護(hù)農(nóng)民財(cái)產(chǎn)。
“智能稻草人”和傳統(tǒng)稻草人的本質(zhì)區(qū)別在于前者具備視覺識(shí)別功能,能夠區(qū)分正常和非正常狀態(tài),從而輸出不同的信號(hào)。從信息系統(tǒng)的角度看,“智能稻草人”是一款內(nèi)置了AI識(shí)別功能,具備基本傳感和控制功能的簡(jiǎn)易信息系統(tǒng)。
圖1
一般而言,對(duì)圖像的識(shí)別有三種實(shí)現(xiàn)方式:第一種是調(diào)用現(xiàn)成AI開放平臺(tái)的網(wǎng)絡(luò)API,如百度、騰訊、商湯的AI平臺(tái)的API;第二種是使用本地的AI應(yīng)用平臺(tái)API,如OpenCV、MediaPipe;第三種是自己訓(xùn)練模型,進(jìn)行推理。從工程的角度看,三種方式?jīng)]有高低之分,只要識(shí)別效果好就是好的解決方案。
考慮到稻草人要部署的場(chǎng)景和識(shí)別的圖像往往比較個(gè)性化,現(xiàn)成API沒有對(duì)應(yīng)的功能,只能選擇自行收集數(shù)據(jù)訓(xùn)練模型的方式。因?yàn)镸MEdu是一個(gè)很好的AI模型訓(xùn)練工具,對(duì)學(xué)生來(lái)說(shuō),只要確定好場(chǎng)景,然后根據(jù)需求收集相應(yīng)的數(shù)據(jù),就能訓(xùn)練出合適的AI模型,技術(shù)難度并不高。
從原理和功能上看,安防類器材其實(shí)都類似稻草人——實(shí)時(shí)監(jiān)控并自動(dòng)報(bào)警。因而,我們可以將“智能稻草人”作為現(xiàn)代智能安防設(shè)備的形象通俗的名稱。我們?cè)O(shè)計(jì)的“智能稻草人”應(yīng)用場(chǎng)景也從農(nóng)村移到都市——用于保護(hù)城市的白色墻壁,防止一些調(diào)皮的小孩或者行為不羈的“藝術(shù)家”的破壞,即涂鴉。其核心功能設(shè)計(jì)如下。
①基本功能:識(shí)別要監(jiān)視的白色墻壁是否有可疑人群來(lái)“涂鴉”。
②根據(jù)可疑人群在攝像頭前停留的時(shí)間長(zhǎng)短,輸出不同的語(yǔ)音提示,并同時(shí)保存畫面,留下證據(jù)。
③在輸出語(yǔ)音提示的同時(shí),還能用揮動(dòng)“提示牌”的方式,友好地進(jìn)行提醒。
“智能稻草人”采用開源硬件行空板,編程語(yǔ)言選擇了Python,其涉及的核心技術(shù)如下。
一次泥石流固體沖出物按照《泥石流災(zāi)害防治工程勘查規(guī)范》(DT/T 0220-2006)附錄I提供的計(jì)算公式進(jìn)行計(jì)算:
攝像頭控制最好用的庫(kù)肯定是OpenCV。OpenCV的全稱是Open Source Computer Vision Library,是一個(gè)跨平臺(tái)的計(jì)算機(jī)視覺處理開源軟件庫(kù)。
計(jì)算機(jī)視覺開發(fā)工具選擇了MMEdu。MMEdu源于國(guó)產(chǎn)人工智能視覺算法集成框架OpenMMLab,是一個(gè)“開箱即用”的深度學(xué)習(xí)開發(fā)工具。初學(xué)者通過(guò)簡(jiǎn)潔的代碼即可完成各種SOTA模型的訓(xùn)練。
為了節(jié)省算力和能源,在檢測(cè)到有人活動(dòng)時(shí)才打開攝像頭,就需要一個(gè)能讀取紅外熱釋電傳感器信息的Python庫(kù),同時(shí),還準(zhǔn)備用舵機(jī)發(fā)出類似“招手”的可愛動(dòng)作,可見,驅(qū)動(dòng)開源硬件的庫(kù)是不可少的。Pinpong是一個(gè)基于Firmata協(xié)議開發(fā)的Python硬件控制庫(kù),能夠獲取傳感器數(shù)據(jù),驅(qū)動(dòng)舵機(jī)、LED等執(zhí)行器,執(zhí)行特定的動(dòng)作。
除了以上的幾個(gè)工具,其實(shí)還需要語(yǔ)音合成庫(kù),如Pyttsx3。這是一個(gè)Python的文字轉(zhuǎn)語(yǔ)音庫(kù),支持英文和中文等多種語(yǔ)言,可以調(diào)節(jié)語(yǔ)速、語(yǔ)調(diào)等。如果想同時(shí)驅(qū)動(dòng)其他的智能設(shè)備,如電燈,那么還需要物聯(lián)網(wǎng)MQTT的庫(kù),如siot。
收集數(shù)據(jù)是最核心的工作。數(shù)據(jù)收集方式其實(shí)很多,如找一個(gè)攝像頭軟件,保存攝像頭的畫面,也可以使用OpenCV編寫一個(gè)代碼來(lái)保存圖片,類似攝像頭抓圖工具。當(dāng)然,使用數(shù)碼相機(jī)或者手機(jī)直接拍照也是可以的,只不過(guò)圖片容量會(huì)比較大,造成數(shù)據(jù)集也會(huì)很多,還要找個(gè)工具批量轉(zhuǎn)換。一般來(lái)說(shuō),攝像頭的畫面用1028*720就差不多了。
MMEdu的圖像分類模塊采用的數(shù)據(jù)集為ImagesNet格式,按照規(guī)范分出訓(xùn)練集、驗(yàn)證集和測(cè)試集即可。收集數(shù)據(jù)的工作其實(shí)也不難,就是把圖片分為兩類,一類為正常的畫面,即沒有可疑的人在“涂鴉”的畫面,另一類則相反,畫面中有人在做“涂鴉”的動(dòng)作,或者準(zhǔn)備做“涂鴉”動(dòng)作(如圖2)。
圖2
如果想識(shí)別出畫面中的“人”,則需要使用目標(biāo)檢測(cè)的方法,數(shù)據(jù)集中的每一張照片都要做好標(biāo)注,相對(duì)來(lái)說(shuō)工作量比較大。而OpenInnoLab平臺(tái)提供的數(shù)據(jù)集標(biāo)注工具,使用起來(lái)則比較方便,下頁(yè)圖3所示是在OpenInnoLab中標(biāo)注數(shù)據(jù)集。
圖3
雖然MMEdu訓(xùn)練模型的代碼很簡(jiǎn)單,但總有人對(duì)編寫代碼有一種天然的恐懼。因此,MMEdu團(tuán)隊(duì)準(zhǔn)備了一個(gè)EasyTrain的小工具,你可以在圖形化界面中正確選擇算法,填寫路徑以及必要的參數(shù),然后自動(dòng)生成代碼并訓(xùn)練,即可訓(xùn)練出一個(gè)好模型,圖4所示就是用EasyTrain的訓(xùn)練模型。
圖4
EasyTrain還能生成可以直接使用的推理代碼??紤]到行空板的性能不是很高,做圖片分類勉強(qiáng)可行,而做目標(biāo)檢測(cè)則有些難度,需要將推理模塊部署為網(wǎng)絡(luò)API服務(wù)供行空板調(diào)用,即將圖片推理放在服務(wù)器上,行空板端只要把圖片發(fā)送過(guò)去就能返回識(shí)別結(jié)果。EasyTrain也提供了使用Flask模塊生成網(wǎng)絡(luò)API的Demo代碼,也能夠直接使用。
在電腦上完成訓(xùn)練后,要把算法部署到“智能稻草人”上。利用行空板作為主控板,把經(jīng)過(guò)模型訓(xùn)練生成的權(quán)重文件拷貝到行空板上,并寫一段簡(jiǎn)單的推理代碼,就完成了AI部分算法的遷移部署。當(dāng)然,學(xué)生可以在EasyTrain生成的推理代碼上修改,實(shí)現(xiàn)同樣的效果。
接著,增加紅外人體傳感器喚醒攝像頭拍照的功能——當(dāng)畫面中出現(xiàn)可疑人員在“涂鴉”時(shí),驅(qū)動(dòng)舵機(jī)揮手并語(yǔ)音警告。這些功能都很簡(jiǎn)單,只需要簡(jiǎn)單的循環(huán)和判斷就可以實(shí)現(xiàn)(如圖5)。
圖5
為了減少誤報(bào)的可能性,我們采用計(jì)時(shí)器功能,計(jì)算如果有人出現(xiàn)在畫面中靜止的時(shí)間超過(guò)一定時(shí)間(如3~5秒)才揮手和報(bào)警,并將圖片留存以供日后“取證”。限于篇幅,具體的代碼不在文中提供。
功能部署完成了,外觀的布置自然也少不了,筆者為電子套裝制作了一個(gè)可愛的外殼,兩個(gè)腮紅和大大的眼睛,讓“智能稻草人”不那么冷冰冰,而人情味十足。
筆者還希望增加一些更加有用的功能,如:增加環(huán)境傳感器的數(shù)據(jù)監(jiān)測(cè),結(jié)合圖像,記錄在日志;增加物聯(lián)網(wǎng)設(shè)備的“聯(lián)動(dòng)”等。
“智能稻草人”還可以應(yīng)用于其他場(chǎng)景,如危險(xiǎn)河道的“游泳”監(jiān)視、景區(qū)欄桿的跨越提示、車位被惡意侵占等,甚至還可以做成魯迅先生筆下的捕鳥工具。你希望自己設(shè)計(jì)的“智能稻草人”用于什么場(chǎng)景,解決什么問題,那就去收集相關(guān)的圖像數(shù)據(jù),設(shè)計(jì)出屬于自己的個(gè)性化的“智能稻草人”作品。