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