謝作如 浙江省溫州中學
邱奕盛 華東師范大學
稻草人是農村常見的“安防設備”。因為有“人”的外形,有風時它會擺動手臂并發出聲音。農民常常在稻田間扎上一個,用于驅趕麻雀之類的鳥兒,避免其偷食莊稼。
科技在不斷發展,稻草人也應與時俱進。在當前的低門檻AI開發工具的支持下,學生完全能夠設計出一款“智能稻草人”作品,讓“它”從僅僅“外表像人”走向“內心也像人”——通過攝像頭,準確判斷是否有鳥兒來偷食或者有野豬來破壞,并且能根據不同的情況發出不同的音效來驅逐,同時通過警報通知主人。當然,也可以用稻草人監視是否有小偷來盜取,或者其他的意外情況,只要通電它就能夠日夜工作,保護農民財產。
“智能稻草人”和傳統稻草人的本質區別在于前者具備視覺識別功能,能夠區分正常和非正常狀態,從而輸出不同的信號。從信息系統的角度看,“智能稻草人”是一款內置了AI識別功能,具備基本傳感和控制功能的簡易信息系統。

圖1
一般而言,對圖像的識別有三種實現方式:第一種是調用現成AI開放平臺的網絡API,如百度、騰訊、商湯的AI平臺的API;第二種是使用本地的AI應用平臺API,如OpenCV、MediaPipe;第三種是自己訓練模型,進行推理。從工程的角度看,三種方式沒有高低之分,只要識別效果好就是好的解決方案。
考慮到稻草人要部署的場景和識別的圖像往往比較個性化,現成API沒有對應的功能,只能選擇自行收集數據訓練模型的方式。因為MMEdu是一個很好的AI模型訓練工具,對學生來說,只要確定好場景,然后根據需求收集相應的數據,就能訓練出合適的AI模型,技術難度并不高。
從原理和功能上看,安防類器材其實都類似稻草人——實時監控并自動報警。因而,我們可以將“智能稻草人”作為現代智能安防設備的形象通俗的名稱。我們設計的“智能稻草人”應用場景也從農村移到都市——用于保護城市的白色墻壁,防止一些調皮的小孩或者行為不羈的“藝術家”的破壞,即涂鴉。其核心功能設計如下。
①基本功能:識別要監視的白色墻壁是否有可疑人群來“涂鴉”。
②根據可疑人群在攝像頭前停留的時間長短,輸出不同的語音提示,并同時保存畫面,留下證據。
③在輸出語音提示的同時,還能用揮動“提示牌”的方式,友好地進行提醒。
“智能稻草人”采用開源硬件行空板,編程語言選擇了Python,其涉及的核心技術如下。
一次泥石流固體沖出物按照《泥石流災害防治工程勘查規范》(DT/T 0220-2006)附錄I提供的計算公式進行計算:
攝像頭控制最好用的庫肯定是OpenCV。OpenCV的全稱是Open Source Computer Vision Library,是一個跨平臺的計算機視覺處理開源軟件庫。
計算機視覺開發工具選擇了MMEdu。MMEdu源于國產人工智能視覺算法集成框架OpenMMLab,是一個“開箱即用”的深度學習開發工具。初學者通過簡潔的代碼即可完成各種SOTA模型的訓練。
為了節省算力和能源,在檢測到有人活動時才打開攝像頭,就需要一個能讀取紅外熱釋電傳感器信息的Python庫,同時,還準備用舵機發出類似“招手”的可愛動作,可見,驅動開源硬件的庫是不可少的。Pinpong是一個基于Firmata協議開發的Python硬件控制庫,能夠獲取傳感器數據,驅動舵機、LED等執行器,執行特定的動作。
除了以上的幾個工具,其實還需要語音合成庫,如Pyttsx3。這是一個Python的文字轉語音庫,支持英文和中文等多種語言,可以調節語速、語調等。如果想同時驅動其他的智能設備,如電燈,那么還需要物聯網MQTT的庫,如siot。
收集數據是最核心的工作。數據收集方式其實很多,如找一個攝像頭軟件,保存攝像頭的畫面,也可以使用OpenCV編寫一個代碼來保存圖片,類似攝像頭抓圖工具。當然,使用數碼相機或者手機直接拍照也是可以的,只不過圖片容量會比較大,造成數據集也會很多,還要找個工具批量轉換。一般來說,攝像頭的畫面用1028*720就差不多了。
MMEdu的圖像分類模塊采用的數據集為ImagesNet格式,按照規范分出訓練集、驗證集和測試集即可。收集數據的工作其實也不難,就是把圖片分為兩類,一類為正常的畫面,即沒有可疑的人在“涂鴉”的畫面,另一類則相反,畫面中有人在做“涂鴉”的動作,或者準備做“涂鴉”動作(如圖2)。

圖2
如果想識別出畫面中的“人”,則需要使用目標檢測的方法,數據集中的每一張照片都要做好標注,相對來說工作量比較大。而OpenInnoLab平臺提供的數據集標注工具,使用起來則比較方便,下頁圖3所示是在OpenInnoLab中標注數據集。

圖3
雖然MMEdu訓練模型的代碼很簡單,但總有人對編寫代碼有一種天然的恐懼。因此,MMEdu團隊準備了一個EasyTrain的小工具,你可以在圖形化界面中正確選擇算法,填寫路徑以及必要的參數,然后自動生成代碼并訓練,即可訓練出一個好模型,圖4所示就是用EasyTrain的訓練模型。

圖4
EasyTrain還能生成可以直接使用的推理代碼。考慮到行空板的性能不是很高,做圖片分類勉強可行,而做目標檢測則有些難度,需要將推理模塊部署為網絡API服務供行空板調用,即將圖片推理放在服務器上,行空板端只要把圖片發送過去就能返回識別結果。EasyTrain也提供了使用Flask模塊生成網絡API的Demo代碼,也能夠直接使用。
在電腦上完成訓練后,要把算法部署到“智能稻草人”上。利用行空板作為主控板,把經過模型訓練生成的權重文件拷貝到行空板上,并寫一段簡單的推理代碼,就完成了AI部分算法的遷移部署。當然,學生可以在EasyTrain生成的推理代碼上修改,實現同樣的效果。
接著,增加紅外人體傳感器喚醒攝像頭拍照的功能——當畫面中出現可疑人員在“涂鴉”時,驅動舵機揮手并語音警告。這些功能都很簡單,只需要簡單的循環和判斷就可以實現(如圖5)。

圖5
為了減少誤報的可能性,我們采用計時器功能,計算如果有人出現在畫面中靜止的時間超過一定時間(如3~5秒)才揮手和報警,并將圖片留存以供日后“取證”。限于篇幅,具體的代碼不在文中提供。
功能部署完成了,外觀的布置自然也少不了,筆者為電子套裝制作了一個可愛的外殼,兩個腮紅和大大的眼睛,讓“智能稻草人”不那么冷冰冰,而人情味十足。
筆者還希望增加一些更加有用的功能,如:增加環境傳感器的數據監測,結合圖像,記錄在日志;增加物聯網設備的“聯動”等。
“智能稻草人”還可以應用于其他場景,如危險河道的“游泳”監視、景區欄桿的跨越提示、車位被惡意侵占等,甚至還可以做成魯迅先生筆下的捕鳥工具。你希望自己設計的“智能稻草人”用于什么場景,解決什么問題,那就去收集相關的圖像數據,設計出屬于自己的個性化的“智能稻草人”作品。