• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于離線手部檢測(cè)的智能小車(chē)遙控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

      2024-12-01 00:00:00蔣葦
      電腦知識(shí)與技術(shù) 2024年31期

      摘要:借助基于多傳感器或云服務(wù)的目標(biāo)跟隨方法成本較高,不利于普通場(chǎng)景下工業(yè)級(jí)目標(biāo)跟隨應(yīng)用的發(fā)展。結(jié)合移動(dòng)設(shè)備發(fā)展現(xiàn)狀,文章設(shè)計(jì)了一種基于離線手部檢測(cè)的智能小車(chē)遙控系統(tǒng),利用移動(dòng)端設(shè)備自帶的攝像頭、藍(lán)牙模塊與運(yùn)算能力在離線狀態(tài)下完成手部檢測(cè),并將結(jié)果轉(zhuǎn)換為運(yùn)動(dòng)指令以實(shí)現(xiàn)靈活的遠(yuǎn)程控制。該系統(tǒng)成本低廉,適用于STEM教具等場(chǎng)景。

      關(guān)鍵詞:手部檢測(cè);圖像識(shí)別;智能小車(chē)遙控系統(tǒng);移動(dòng)開(kāi)發(fā)

      中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A

      文章編號(hào):1009-3044(2024)31-0096-03

      開(kāi)放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):

      0 引言

      在工業(yè)應(yīng)用中,物體自動(dòng)跟隨方案往往借助單一的超聲波模塊完成跟隨動(dòng)作,但只能完成直線跟隨和障礙物跟隨動(dòng)作,運(yùn)動(dòng)姿勢(shì)有限;而借助基于多種傳感器或基于云服務(wù)的目標(biāo)跟隨方法(涉及目標(biāo)記憶、目標(biāo)位置感知、目標(biāo)標(biāo)定等工作要求)成本高昂,在智能小車(chē)STEM教具、日常行李箱跟隨等場(chǎng)景難以形成工業(yè)級(jí)的應(yīng)用。目前,大多數(shù)移動(dòng)設(shè)備已具備足夠的圖像傳感器和圖像處理能力,本文設(shè)計(jì)了一款充分利用手機(jī)性能的智能小車(chē)遙控系統(tǒng),可利用攝像頭拍攝實(shí)時(shí)畫(huà)面,使用設(shè)備自身計(jì)算能力完成離線手部檢測(cè)并轉(zhuǎn)換為相應(yīng)的車(chē)輛運(yùn)動(dòng)指令,通過(guò)藍(lán)牙模塊發(fā)送至小車(chē)端,無(wú)須增加額外的硬件模塊或云服務(wù),有效降低物體跟隨及遙控的成本和開(kāi)發(fā)難度。

      1 整體設(shè)計(jì)

      該遙控系統(tǒng)原理框圖如圖1所示,為滿足離線手部檢測(cè)需求,手部檢測(cè)模型將被部署在應(yīng)用內(nèi),相機(jī)模塊采集的實(shí)時(shí)畫(huà)面被送入手部檢測(cè)模型開(kāi)展推理計(jì)算,若檢測(cè)結(jié)果的置信度高于設(shè)定值,應(yīng)用將會(huì)根據(jù)算法將其轉(zhuǎn)換為具體遙控指令并通過(guò)手機(jī)藍(lán)牙模塊發(fā)送至小車(chē)藍(lán)牙模塊;小車(chē)藍(lán)牙模塊通過(guò)串口將數(shù)據(jù)傳達(dá)給小車(chē)運(yùn)動(dòng)控制模塊驅(qū)動(dòng)電機(jī)運(yùn)動(dòng),使小車(chē)按照應(yīng)用發(fā)出的遙控指令運(yùn)動(dòng)。

      1.1 遙控應(yīng)用總體設(shè)計(jì)

      遙控系統(tǒng)需完成視頻拍攝、手部檢測(cè)及藍(lán)牙匹配、指令發(fā)送等工作,因此移動(dòng)遙控應(yīng)用由4大模塊構(gòu)成,如圖2所示。

      物體檢測(cè)模塊負(fù)責(zé)加載手部檢測(cè)模型、讀取設(shè)備攝像頭模塊采集的實(shí)時(shí)圖像數(shù)據(jù),利用設(shè)備自身的計(jì)算能力提供手部檢測(cè)推理結(jié)果。收到推理結(jié)果后,前端模塊會(huì)顯示實(shí)時(shí)畫(huà)面與識(shí)別結(jié)果框;遙控服務(wù)模塊負(fù)責(zé)將推理結(jié)果轉(zhuǎn)換為遙控指令并控制藍(lán)牙信號(hào)發(fā)送。藍(lán)牙服務(wù)模塊負(fù)責(zé)與智能小車(chē)建立藍(lán)牙連接、執(zhí)行發(fā)送遙控指令。

      軟件工作流程如圖3所示。App啟動(dòng)時(shí)須判斷移動(dòng)設(shè)備是否具備攝像頭和藍(lán)牙模塊、用戶(hù)是否愿意提供攝像頭、藍(lán)牙和定位等模塊權(quán)限。在初始化階段,程序?qū)⒃O(shè)置圖像采集參數(shù)、加載手部檢測(cè)模型并設(shè)置應(yīng)用界面。在檢測(cè)階段,以畫(huà)面幀為單位持續(xù)進(jìn)行手部檢測(cè)工作。當(dāng)用戶(hù)開(kāi)啟遙控,如已成功創(chuàng)建藍(lán)牙連接,App會(huì)向小車(chē)發(fā)送遙控指令,如未匹配設(shè)備,則提醒用戶(hù)進(jìn)行匹配。

      1.2 手部識(shí)別

      在iOS或Android操作系統(tǒng)體系下,部署機(jī)器學(xué)習(xí)模型需要借助特定軟件接口接收和輸出模型進(jìn)行運(yùn)算,TensorFlow Mobile框架[1]精簡(jiǎn)了完整的TensorFlow 框架,去除分布式執(zhí)行等對(duì)端設(shè)備無(wú)用的業(yè)務(wù)功能,僅保留核心計(jì)算功能,增加移動(dòng)端操作系統(tǒng)應(yīng)用支持,開(kāi)發(fā)者可以部署符合自身業(yè)務(wù)需求的模型,通過(guò)接口調(diào)用模型反饋結(jié)果到應(yīng)用層(軟件)。

      由于遙控App根據(jù)手部檢測(cè)結(jié)果遙控小車(chē)運(yùn)動(dòng),物體檢測(cè)模型只須精確識(shí)別手部即可。圖像分類(lèi)遷移學(xué)習(xí)可以利用特定圖像數(shù)據(jù)集對(duì)CNNs的輸出層進(jìn)行再訓(xùn)練,在保留其他層權(quán)重不變的情況下,訓(xùn)練所需時(shí)間較短,準(zhǔn)確率與重新訓(xùn)練整個(gè)網(wǎng)絡(luò)結(jié)果沒(méi)有太大差異,且重新訓(xùn)練原有分類(lèi)模型對(duì)數(shù)據(jù)集要求較低,為模型提供數(shù)千張的特定種類(lèi)目標(biāo)圖像即可獲得更優(yōu)的輸出結(jié)果[2]。本文采用物體檢測(cè)模型ssd_mo?bilenet_v1_coco作為預(yù)訓(xùn)練模型和經(jīng)過(guò)處理的手部數(shù)據(jù)集進(jìn)行遷移學(xué)習(xí),得到了遙控系統(tǒng)中所使用的手部檢測(cè)模型,遷移學(xué)習(xí)可借助TensorFlow物體檢測(cè)API[3]完成。

      1.2.1 手部數(shù)據(jù)集處理

      EgoHands數(shù)據(jù)集[4]是美國(guó)印第安納大學(xué)IU計(jì)算機(jī)視覺(jué)實(shí)驗(yàn)室提供的一個(gè)以手部畫(huà)面為中心的復(fù)雜交互場(chǎng)景下專(zhuān)用、免費(fèi)數(shù)據(jù)集,該數(shù)據(jù)集以圖為單位記錄了一連串沿手部輪廓記錄的高精度值標(biāo)注坐標(biāo),以matlab格式記錄。本文在該數(shù)據(jù)集的基礎(chǔ)上,通過(guò)計(jì)算將原輪廓型標(biāo)注轉(zhuǎn)換為矩形識(shí)別標(biāo)注以滿足遷移學(xué)習(xí)訓(xùn)練數(shù)據(jù)集的格式要求。處理規(guī)則如下:一張圖內(nèi)可能有多個(gè)手部,須依次處理;每個(gè)手部分別取輪廓型標(biāo)注數(shù)據(jù)中的[minx,miny ]及[maxx,maxy ]為該手部矩形標(biāo)注框左上角及右下角的坐標(biāo)值。

      1.2.2 模型訓(xùn)練及結(jié)果

      在API提供的遷移學(xué)習(xí)腳本中設(shè)定訓(xùn)練與測(cè)試數(shù)據(jù)集文件路徑、分類(lèi)標(biāo)簽文件路徑、預(yù)訓(xùn)練模型資源路徑及訓(xùn)練輪數(shù),執(zhí)行腳本即可開(kāi)始訓(xùn)練。為了獲得穩(wěn)定輸出效果,訓(xùn)練輪數(shù)設(shè)為15萬(wàn)輪。實(shí)驗(yàn)中,約1萬(wàn)步左右時(shí)模型loss逐步降至2.5,隨著訓(xùn)練輪次增加在2.0 附近趨于穩(wěn)定;經(jīng)過(guò)測(cè)試集驗(yàn)證,mAP@0.5IOU 為0.960 8,表明當(dāng)前模型識(shí)別手部效果較好,可以將其部署在遙控應(yīng)用中。此外,訓(xùn)練所得的模型網(wǎng)絡(luò)計(jì)算圖結(jié)構(gòu)model.ckpt文件還需凍結(jié)為可用于部署的pb格式。原訓(xùn)練結(jié)果ckpt格式文件約90MB,經(jīng)凍結(jié)操作后獲得pb格式文件僅23MB。

      2 軟件實(shí)現(xiàn)

      2.1 手部檢測(cè)模型推理與遙控指令生成

      TensorFlowInferenceInterface 接口負(fù)責(zé)處理數(shù)據(jù)輸入輸出工作,接口利用模型圖Graph對(duì)象和名稱(chēng)構(gòu)建指定節(jié)點(diǎn)Operation對(duì)象,分別為一個(gè)輸入節(jié)點(diǎn)和四個(gè)輸出節(jié)點(diǎn),輸出結(jié)果分別給出檢測(cè)物體識(shí)別框位置、分類(lèi)信息、分類(lèi)概率與物體數(shù)量信息。相機(jī)采集得到幀畫(huà)面為YUV格式,須先轉(zhuǎn)換為RGB格式像素圖對(duì)象送入網(wǎng)絡(luò)輸入節(jié)點(diǎn),模型推理結(jié)果(識(shí)別種類(lèi)和位置等信息)將返回至輸出節(jié)點(diǎn)。模型可以返回多個(gè)手部識(shí)別結(jié)果,為確保指令清晰,需選取概率數(shù)值最大的結(jié)果作為唯一輸出,因此在閱覽區(qū)至多只有一個(gè)結(jié)果框。如圖4所示,AB框?yàn)閹?huà)面中手部物體檢測(cè)結(jié)果矩陣框。實(shí)際情況中,AB框可能涉及多個(gè)區(qū)域,為得到明確的遙控指令,需利用AB框中心點(diǎn)(下稱(chēng)中心點(diǎn))坐標(biāo)確定具體的指令。定義閱覽區(qū)起點(diǎn)坐標(biāo)為(0,0),中心點(diǎn)坐標(biāo)計(jì)算方法為:

      Centralx = top + (button - top) /2

      Centraly = left + (right - left) /2

      遙控指令與中心點(diǎn)所在位置有關(guān),規(guī)則如下:1)中心點(diǎn)在左部區(qū)域,即其坐標(biāo)滿足(x < 150,y 任意),小車(chē)向左前方行駛;2)中心點(diǎn)在右部區(qū)域,即其坐標(biāo)滿足(x > 330,y 任意),小車(chē)向右前方行駛;3)中心點(diǎn)在上方區(qū)域,即其坐標(biāo)滿足(x ≥ 150,y ≤ 330),小車(chē)向正前方行駛;4)當(dāng)中心點(diǎn)位于以上其他區(qū)域之外,即其坐標(biāo)位于其他區(qū)域,小車(chē)后退。

      2.2 消息傳遞機(jī)制

      遙控App須監(jiān)聽(tīng)用戶(hù)點(diǎn)擊遙控按鈕操作、及時(shí)創(chuàng)建定時(shí)執(zhí)行的遙控服務(wù),還涉及手部檢測(cè)、遙控指令生成、根據(jù)藍(lán)牙連接狀態(tài)決定是否發(fā)送藍(lán)牙信號(hào),這些涉及多個(gè)Activity、Service等組件及其后臺(tái)線程的通信,實(shí)現(xiàn)難度較大。EventBus事件驅(qū)動(dòng)框架[5]使用訂閱/發(fā)布模式降低Activity、Service等組件的耦合度、消除復(fù)雜的依賴(lài)關(guān)系,是一種簡(jiǎn)潔、開(kāi)銷(xiāo)較低的實(shí)現(xiàn)方式。在該框架下,Activity和Service可同時(shí)具備事件發(fā)布者和訂閱者兩種身份;總線程會(huì)在發(fā)布者發(fā)布消息事件后將其轉(zhuǎn)發(fā),注冊(cè)了相關(guān)事件的訂閱者即可接收到有關(guān)該消息事件的數(shù)據(jù)。依靠上述設(shè)計(jì)實(shí)現(xiàn)定時(shí)發(fā)送遙控信號(hào)功能相關(guān)方法如下:

      1)在活動(dòng)中注冊(cè)消息機(jī)制,利用定時(shí)任務(wù)方法發(fā)布EventBus消息事件。一旦監(jiān)聽(tīng)到用戶(hù)點(diǎn)擊遙控按鈕,當(dāng)前活動(dòng)將新增定時(shí)任務(wù)(發(fā)布定位事件,內(nèi)含識(shí)別結(jié)果坐標(biāo)和匹配設(shè)備信息)并指定發(fā)送間隔,使遙控服務(wù)定期執(zhí)行任務(wù)。當(dāng)用戶(hù)在界面點(diǎn)擊“開(kāi)始遙控”按鈕,每3秒向EventBus總線程發(fā)布一次消息。

      2)遙控服務(wù)在收到定位消息事件后,將其攜帶的中心點(diǎn)坐標(biāo)轉(zhuǎn)換為遙控指令、發(fā)送藍(lán)牙信號(hào)并以消息彈窗形式顯示指令內(nèi)容和當(dāng)前連接狀態(tài)。該服務(wù)需要先獲得手部檢測(cè)結(jié)果和藍(lán)牙連接設(shè)備信息才能執(zhí)行后續(xù)操作,因此需要將這兩種信息包裝成一個(gè)消息事件供活動(dòng)和服務(wù)共同使用。

      2.3 藍(lán)牙服務(wù)

      在現(xiàn)實(shí)場(chǎng)景中,小車(chē)端需使用低功耗藍(lán)牙模塊來(lái)獲得更低的電量消耗,因此應(yīng)用需與小車(chē)建立BLE藍(lán)牙連接,通過(guò)應(yīng)用全局類(lèi)單例對(duì)象創(chuàng)建并管理藍(lán)牙管理器,根據(jù)小車(chē)藍(lán)牙模塊設(shè)定相應(yīng)服務(wù)與特征UUID。當(dāng)用戶(hù)在藍(lán)牙匹配彈出對(duì)話框中選中智能小車(chē)并確認(rèn)連接,藍(lán)牙服務(wù)將與選中的BLE 藍(lán)牙設(shè)備創(chuàng)建GATT連接。GATT連接單次發(fā)送的數(shù)據(jù)不能超過(guò)20 字節(jié)[6];智能小車(chē)端運(yùn)動(dòng)控制模塊需要Hex類(lèi)型數(shù)據(jù),因此遙控指令(字符串)需轉(zhuǎn)換為Hex字符串后再轉(zhuǎn)為Byte數(shù)組,當(dāng)數(shù)據(jù)超過(guò)20 字節(jié)時(shí)需分批(以20字節(jié)為一組)發(fā)送,該過(guò)程將循環(huán)執(zhí)行直至全部發(fā)送完畢。

      3 測(cè)試結(jié)果

      通過(guò)測(cè)試驗(yàn)證,手機(jī)藍(lán)牙功能正常開(kāi)啟時(shí)在應(yīng)用內(nèi)點(diǎn)擊“藍(lán)牙遙控”按鈕可以查看手機(jī)5~10米范圍內(nèi)所有BLE藍(lán)牙設(shè)備,可選擇小車(chē)藍(lán)牙設(shè)備并成功匹配;檢測(cè)到手部時(shí)閱覽區(qū)會(huì)出現(xiàn)手部識(shí)別框,閱覽區(qū)下方會(huì)出現(xiàn)對(duì)應(yīng)的遙控指令提示文字。如圖5所示,手部識(shí)別框中心點(diǎn)在閱覽區(qū)下方時(shí)小車(chē)遙控指令為“go down”。通過(guò)串口調(diào)試助手進(jìn)一步檢查小車(chē)藍(lán)牙模塊所收到的數(shù)據(jù),確認(rèn)App向小車(chē)藍(lán)牙模塊發(fā)送的數(shù)據(jù)均被正常接收且遙控指令與人物手部運(yùn)動(dòng)情況一致。結(jié)合多種手部姿態(tài)和復(fù)雜背景進(jìn)一步開(kāi)展測(cè)試,發(fā)現(xiàn)App仍能實(shí)時(shí)識(shí)別出不同姿態(tài)的手部并給出相應(yīng)運(yùn)動(dòng)方向的遙控指令。目前,該模型在測(cè)試設(shè)備上完成單幀檢測(cè)時(shí)間在250ms~380ms之間浮動(dòng),F(xiàn)PS 均值約為3。

      4 結(jié)束語(yǔ)

      本文設(shè)計(jì)并實(shí)現(xiàn)了一種基于離線手部檢測(cè)模型的智能小車(chē)遙控系統(tǒng),該系統(tǒng)利用移動(dòng)端設(shè)備硬件模塊可實(shí)現(xiàn)離線手部檢測(cè),并將其轉(zhuǎn)換為智能小車(chē)的運(yùn)動(dòng)指令,通過(guò)低功耗藍(lán)牙連接發(fā)送至小車(chē)端。該方法經(jīng)過(guò)適當(dāng)調(diào)整(如通過(guò)遷移學(xué)習(xí)調(diào)整識(shí)別物體種類(lèi))可適配工作性質(zhì)類(lèi)似的應(yīng)用場(chǎng)景,對(duì)推動(dòng)基于圖像識(shí)別的遙控低成本工具發(fā)展有一定的實(shí)際意義。

      參考文獻(xiàn):

      [1] TAKAWALE H C,THAKUR A.Talos app:on-device machine learning using TensorFlow to detect android malware[C]//2018Fifth International Conference on Internet of Things:Systems,Management and Security.October 15-18,2018,Valencia,Spain.IEEE,2018:250-255.

      [2] JEFF TANG.Intelligent Mobile Projects with TensorFlow[M].Birmingham, UK: Packt Publishing Ltd., 2018.

      [3] AL-AZZOA F,MOHAMMED A,MILANOVAB M.Human related-health actions detection using android camera based on TensorFlow object detection API[J].International Journal of Ad?vanced Computer Science and Applications,2018,9(10):9-23.

      [4] BAMBACH S,LEE S,CRANDALL D J,et al.Lending A hand:de?tecting hands and recognizing activities in complex egocentric interactions[C]//2015 IEEE International Conference on Com?puter Vision (ICCV). December 7-13, 2015, Santiago, Chile.IEEE,2015:1949-1957.

      [5] Greenrobot. EventBus: Events for Android[EB/OL].[2023-10-20].https://greenrobot.org/eventbus/.

      [6] Punch Through. How GAP and GATT Work-Bluetooth Low En?ergy Basics[EB/OL]. [2023-10-20]. https://punchthrough. com/products/bean/guides/everything-else/how-gap-and-gattwork.

      【通聯(lián)編輯:代影】

      连州市| 长阳| 扎兰屯市| 淮滨县| 高邑县| 刚察县| 清苑县| 泗洪县| 仪征市| 兴文县| 敦煌市| 遵化市| 电白县| 富蕴县| 溧阳市| 龙海市| 荆门市| 乡城县| 巩留县| 沽源县| 海林市| 南靖县| 茂名市| 诸暨市| 虞城县| 丹寨县| 罗山县| 彭山县| 仁寿县| 江安县| 娄底市| 伽师县| 潼南县| 霞浦县| 沈丘县| 正阳县| 新化县| 达孜县| 汉源县| 渑池县| 永胜县|