摘要
本項(xiàng)目對(duì)于目前全球新冠疫情下低收入國(guó)家疫苗接種率不高的問(wèn)題,運(yùn)用AMD-Xilinx提供的KV260硬件平臺(tái)和Vitis-AI開(kāi)發(fā)平臺(tái),基于2D圖像的視覺(jué)AI輔助的疫苗肌肉注射點(diǎn)檢測(cè)技術(shù),結(jié)合輕量級(jí)神經(jīng)網(wǎng)絡(luò)模型,利用量化技術(shù)、后處理技術(shù)等,設(shè)計(jì)了一個(gè)低開(kāi)發(fā)成本、低人力成本、低交叉感染風(fēng)險(xiǎn)的自動(dòng)疫苗接種方案。
項(xiàng)目背景
新型冠狀病毒還在影響著人們生活的方方面面,給公共衛(wèi)生、全球運(yùn)輸系統(tǒng)和許多領(lǐng)域帶來(lái)了前所未有的挑戰(zhàn)。大多數(shù)政府已經(jīng)實(shí)施過(guò)封鎖,限制國(guó)際旅行等各類政策,以減輕病毒的傳播。鑒于目前還沒(méi)有能夠?qū)共《镜奶匦帲臃N疫苗仍然是最有效手段之一。
然而,全球疫苗接種率仍然很低,尤其是在低收入國(guó)家。根據(jù)世衛(wèi)組織的數(shù)據(jù),低收入國(guó)家只有14.5%的人口接種了至少一劑疫苗[1]。許多非洲國(guó)家的疫苗接種率更低,僅在1.5%至4%之間。在這種情況下,如何才能提供一個(gè)低成本的疫苗接種方案是最緊急,但也是極具挑戰(zhàn)性的。因?yàn)殚_(kāi)發(fā)疫苗本身成本很高,接種疫苗這個(gè)過(guò)程也有一定成本,此外,傳統(tǒng)的疫苗接種可能會(huì)增加病毒傳播的風(fēng)險(xiǎn),還有醫(yī)護(hù)人員的工作量。
自主機(jī)器人注射能成為一種安全有效的方案,人們只需走進(jìn)封閉的空間,露出手臂。最近,有兩個(gè)自動(dòng)注射機(jī)器人原型被開(kāi)發(fā)出來(lái)。第一個(gè)是加拿大的初創(chuàng)公司開(kāi)發(fā)的Cobi:是世界上第一個(gè)自動(dòng)無(wú)針注射機(jī)器人,它通過(guò)激光雷達(dá)傳感器和AI位置跟蹤,得以識(shí)別人體識(shí)別。然后, 360度深度感知系統(tǒng)會(huì)引導(dǎo)機(jī)械臂定位,注射藥物[2]。另外一個(gè)是“后羿”,它是由上海同濟(jì)大學(xué)研發(fā)的國(guó)內(nèi)首款自動(dòng)疫苗注射機(jī)器人,它通過(guò)三維人體模型,得以自動(dòng)識(shí)別注射位置。通過(guò)一個(gè)簡(jiǎn)單的三維點(diǎn)云相機(jī)對(duì)人體進(jìn)行拍攝,快速自動(dòng)擬合人體對(duì)應(yīng)部位的三維模型,準(zhǔn)確識(shí)別疫苗注射部位及注射角度。[3, 4]
值得一提的是,這兩種解決方案都采用了無(wú)針注射,確保了安全和無(wú)痛注射。另一個(gè)關(guān)鍵因素是它們檢測(cè)注射部位的方案。為了完成檢測(cè)任務(wù),這兩種機(jī)器人的方案都涉及到復(fù)雜的三維模型識(shí)別算法還有多維度的傳感器。雖然這兩個(gè)機(jī)器人所用的算法可以提供準(zhǔn)確的部位檢測(cè),但它們也涉及大量的開(kāi)發(fā)工作,多維度傳感技術(shù)和昂貴的硬件支持,這些都會(huì)增加這些機(jī)器人的整體成本。所以本項(xiàng)目中,我們認(rèn)為有必要去提出一個(gè)低成本且有效的注射點(diǎn)識(shí)別方案,這樣才將機(jī)器人部署到世界各地。
在正式開(kāi)始項(xiàng)目之前,我們咨詢醫(yī)學(xué)專家得知目前的新冠疫苗主要是靠肌肉注射,因?yàn)榭梢允顾巹┭杆賲⑴c到系統(tǒng)循環(huán)中。綜合考慮下,三角肌是最適合接種的部位,因?yàn)樗┏渥?,面積大。而且不同個(gè)體之間,三角肌差異不大。這啟發(fā)了我們,基于Xilinx KV260,利用視覺(jué)AI輔助技術(shù),實(shí)現(xiàn)2D肌內(nèi)注射部位檢測(cè)方案。
技術(shù)設(shè)計(jì)過(guò)程總覽
我們的目標(biāo)是讓連接 KV260 的顯示器指示患者手臂上的注射部位。由于硬件資源的限制和目前現(xiàn)有的手臂檢測(cè)工作數(shù)量較少,我們決定將問(wèn)題簡(jiǎn)化為人臉檢測(cè)輔助后處理來(lái)指示結(jié)果。對(duì)于我們項(xiàng)目的主體部分,研究重點(diǎn)放在基于 Vitis-AI 的模型選擇和訓(xùn)練策略。而對(duì)于后處理,主要使用OpenCV進(jìn)行代碼編寫(xiě),后使用VVAS進(jìn)行編譯和處理。在測(cè)試階段,我們使用收集到的與我們的應(yīng)用場(chǎng)景相匹配的圖片來(lái)查看模型與后處理模塊結(jié)合下的準(zhǔn)確性,然后相應(yīng)地調(diào)整我們的模型或是后處理模塊的參數(shù)。
基于Vitis-AI的模型準(zhǔn)備
根據(jù)VVAS官網(wǎng)的描述,VVAS支持 Vitis-AI 模型是有限的,對(duì)于我們需要的模型類 FACEDETECT,VVAS 中只有 densebox 可用,并且精度在我們可以接受的范圍內(nèi)??紤]到我們的應(yīng)用場(chǎng)景是疫苗接種。為了降低病毒傳播的風(fēng)險(xiǎn),人們?cè)诖蜥槙r(shí)大多戴口罩。Vitis-AI 中預(yù)訓(xùn)練使用的數(shù)據(jù)集為 WIDER FACE,該數(shù)據(jù)集內(nèi)不強(qiáng)調(diào)佩戴醫(yī)用口罩的人臉。為了確??梢院芎玫貦z測(cè)戴口罩的人臉,尤其是當(dāng)人們?cè)谧⑸溥^(guò)程中將側(cè)臉轉(zhuǎn)向儀器時(shí),我們使用 MAFA(一個(gè)有口罩人臉數(shù)據(jù)集)對(duì)densebox原先自帶的預(yù)訓(xùn)練的結(jié)果進(jìn)行增加性訓(xùn)練。
模型訓(xùn)練、量化與編譯流程
我們采用Vitis-AI里面預(yù)置的Caffe框架,可以使用以下命令在Vitis-AI中啟動(dòng)它:
我們的訓(xùn)練是基于Vitis-AI中預(yù)訓(xùn)練結(jié)果進(jìn)行的,可以訪問(wèn)Vitis-AI的官方repo下載需要的densebox模型相關(guān)文件,并執(zhí)行以下命令:
當(dāng)然,在執(zhí)行以上命令之前,請(qǐng)記得將“train.prototxt”文件中指向數(shù)據(jù)集的path改為MAFA數(shù)據(jù)集所在的路徑。
對(duì)于模型的量化,我們只需執(zhí)行以下命令:
該命令中使用到的“.caffemodel”浮點(diǎn)模型文件可由上一步的訓(xùn)練命令執(zhí)行后得到,也可從我們整個(gè)項(xiàng)目的repo中下載:
https://github.com/iCAS-SJTU/J-eye/tree/main/models/float
為了得到最后能在KV260上執(zhí)行的模型文件“.xmodel”,我們需要對(duì)量化后模型文件進(jìn)行編譯,可采用以下命令:
該命令中使用的文件均可從https://github.com/iCAS-SJTU/J-eye/tree/main/models/quantized下載,其中兩個(gè)“deploy.*”文件均為模型量化后結(jié)果,“arch.json”文件可由KV260的官方源碼repo獲得。
后處理模塊搭建
后處理模塊的搭建中主要運(yùn)用的工具就是VVAS,我們需要將它的整個(gè)repo clone下來(lái)。
(該部分的過(guò)程都假定我們?cè)凇?{PATH_TO_VVAS}/VVAS/”目錄底下,關(guān)于交叉編譯環(huán)境的搭建,由于篇幅原因,詳見(jiàn)我們?cè)趆ackster.io上發(fā)布的文章)。
首先,我們需要先編譯vvas-util里面的文件。這之中的第一步需要我們修改“meson.cross”里面的“SYSROOT”和“NATIVESYSROOT”。接著我們?cè)凇皏vas-utils/”這個(gè)目錄下執(zhí)行以下命令:
在成功編譯之后,將以下文件復(fù)制到指定位置。
同時(shí)也可以把“vvas-utils/”目錄下的所有“.h”文件復(fù)制到“${SYSROOT}/usr/include”這個(gè)目錄下以避免一些后續(xù)的報(bào)錯(cuò)。
結(jié)束了“vvas-utils”部分的編譯之后,我們開(kāi)始“vvas-gst-plugins”部分的處理。我們可以再利用前面編輯過(guò)的“meson.cross”文件(直接復(fù)制到“vvas-gst-plugins/”目錄下),然后執(zhí)行同樣的編譯命令。
成功編譯之后,我們還需要做一些文件復(fù)制。
同時(shí)也同樣需要把“vvas-gst-plugins/”目錄下的所有“.h”文件復(fù)制到“${SYSROOT}/usr/include”這個(gè)目錄下以避免一些后續(xù)的報(bào)錯(cuò)。
最后一步,我們進(jìn)入到“vvas-accel-sw-libs/”目錄下,將其中“vvas_xboundingbox/src”下的“vvas_xboundingbox.cpp”替換成我們修改過(guò)的https://github.com/iCAS-SJTU/J-eye/tree/main/post-processing/src中的cpp代碼。然后執(zhí)行以下命令:
在編譯成功之后,進(jìn)入到“build/vvas_xboundingbox/”下我們可以找到”vvas_xboundingbox.so”文件用于后處理模塊當(dāng)中。
集成于KV260
由于我們的應(yīng)用是基于smartcam的,我們需要先下載基本的smartcam應(yīng)用包。
在/opt/xilinx/share/ivas/smartcam/目錄下,執(zhí)行以下命令。
接著,將
https://github.com/iCAS-SJTU/J-eye/tree/main/models/compiled
中所有的文件下載到該目錄中。我們還需要將后處理模塊要用到的文件
https://github.com/iCAS-SJTU/J-eye/tree/main/post-processing
復(fù)制到/opt/xilinx/lib目錄底下。文件都部署完成后,我們可以執(zhí)行以下命令來(lái)運(yùn)行整個(gè)程序。
結(jié)果演示
患者應(yīng)面朝左側(cè)直立站/坐于相機(jī)前,檢測(cè)結(jié)果將呈現(xiàn)于下圖中顯示器。
當(dāng)患者位于難以進(jìn)行注射的位置時(shí),顯示器上將發(fā)出位置偏離的警告信息。
當(dāng)患者位于可檢測(cè)范圍內(nèi)時(shí),注射點(diǎn)位置將由白色圓圈標(biāo)出。
審核編輯 :李倩
-
機(jī)器人
+關(guān)注
關(guān)注
210文章
28104瀏覽量
205853 -
檢測(cè)技術(shù)
+關(guān)注
關(guān)注
2文章
351瀏覽量
29048
原文標(biāo)題:作品回顧|J-Eye: 疫苗接種機(jī)器人中的肌肉注射點(diǎn)智能檢測(cè)技術(shù)
文章出處:【微信號(hào):gh_2d1c7e2d540e,微信公眾號(hào):XILINX開(kāi)發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論