基于INTEL 11代芯片Tiger Lake 在OPENVINO AI 套件上所開發(fā)之LUS.AI即時(shí)互動(dòng)智慧醫(yī)療解決方案
提案動(dòng)機(jī)
在肺部的檢查上,超音波相較X光或電腦斷層掃描,具有無(wú)放射性,操作相對(duì)方便的優(yōu)點(diǎn)。但傳統(tǒng)超音波具有不可攜性,病患須至醫(yī)療院所才能做超音波檢查,對(duì)于偏遠(yuǎn)或醫(yī)療資源匱乏的地區(qū),難以利用。
且超音波在判讀上,具有難解釋性的缺點(diǎn),對(duì)于超音波影像的判讀,往往訓(xùn)練時(shí)間長(zhǎng),判讀時(shí)間也較久,醫(yī)生與醫(yī)生間也存在著主觀判讀的歧異性,在醫(yī)病溝通上,對(duì)于判讀過后的結(jié)果,醫(yī)師也較難與病患說(shuō)明。
基于上述的兩項(xiàng)缺點(diǎn) (不可攜性、難解釋性),本團(tuán)隊(duì)希望能訓(xùn)練AI模型,協(xié)助醫(yī)師做肺部超音波影像的判讀,并利用OpenVINO具有最佳化與壓縮模型的優(yōu)點(diǎn),協(xié)助我們最大化利用現(xiàn)有的硬體資源做模型的推論,讓AI模型在肺部超音波的判讀上更快、更即時(shí),達(dá)到即時(shí)輔助判讀的效果。
另我們也配合可攜式的超音波探頭做測(cè)試,希望往后也能在院外做超音波檢測(cè),達(dá)到遠(yuǎn)距醫(yī)療的愿景。
解決方案
LUS.AI 團(tuán)隊(duì)開發(fā)的移動(dòng)式智能超音波方案,只要帶著一臺(tái)筆電和手持超音波機(jī),不用插電源就可以到處移動(dòng)為病患做檢查。
本團(tuán)隊(duì)開發(fā)用的筆電規(guī)格為 Intel? Core? i7 1165G7 處理器 2.8 GHz,搭配顯卡 Intel? Iris Xe Graphics,16G RAM。簡(jiǎn)單來(lái)說(shuō)這就是一臺(tái) Intel 第11代 CPU 的筆電,平??梢宰饕话闶褂玫挠猛荆热玳_視訊會(huì)議、分享討論案例等等,但如果搭配觸控筆也能方便對(duì)超音波影像做標(biāo)注。
除了在筆電上導(dǎo)入AI功能可以輕松達(dá)成外,即使今天到了收訊不良的地區(qū),因?yàn)锳I在筆電里面跑,所以不需要額外的網(wǎng)路連線,模型推論也非常迅速,能夠即時(shí)提供醫(yī)師第一時(shí)間的判讀參考。
(目前完成的只有AI肺部異常偵測(cè)的模組)
<圖一、 智慧超音波解決方案>
成果說(shuō)明
AI模型的設(shè)計(jì)訓(xùn)練是使用 Tensorflow 2.6 完成,OpenVINO 則是銜接后續(xù)模型布署和推論的部分。以下是本文分享的大鋼,分為四個(gè)項(xiàng)目,2 3 4 項(xiàng) 是比較少文章提到的部分,將無(wú)私與大家分享:
模型開發(fā)的部分,我們選用 Tensorflow 作框架,因?yàn)門ensorflow生態(tài)系是比較完整的,許多工具都有支援。最后將模型存檔為 Saved Model 格式。
OpenVINO? 在安裝上,是比較復(fù)雜的部分,網(wǎng)路上有許多文章介紹如何安裝,但可能因?yàn)?OpenVINO? 持續(xù)改版的關(guān)系,所以建議還是參考官網(wǎng)的安裝說(shuō)明,是最沒問題的方式。
其實(shí)如果不想在本機(jī)安裝的話,其實(shí)還有兩個(gè)選擇,都可以完成 Model Optimizer 的步驟(簡(jiǎn)稱 MO)。這個(gè)MO步驟,將會(huì)把模型轉(zhuǎn)換為 FP32 或 FP16 的 IR 檔案(.xml .bin),也就是OpenVINO?的模型檔案格式:
推論引擎 Inference Engine 的部分(簡(jiǎn)稱 IE),是正式應(yīng)用程式要跑的部分,借由它來(lái)讀取 IR 檔,并選擇在 OpenVINO? 支援的硬體上作快速的模型推論。這部分若想體驗(yàn),其實(shí)也可以使用 CoLab notebook 先做測(cè)試,只需要pip install openvino就可以使用OpenVINO?的 IE推論引擎了,詳細(xì)也可參考這篇文章(內(nèi)有CoLab連結(jié))。
使用者界面 User Application,我們使用 pyQt5 來(lái)建立 windows的簡(jiǎn)單程式。其中影像顯示、模型推論、熱圖顯示是使用兩個(gè)平行處理完成。由于模型推論速度已經(jīng)很快(幾十個(gè)毫秒),所以速度較慢的反而是資料的前處理、后處理和UI的部分,這方面要加速的話,也許可以做更多的平行化的設(shè)計(jì),讓應(yīng)用程式可以更為即時(shí)(real-time)。
1. OpenVINO? 基礎(chǔ)開發(fā)流程
2. 不同精度模型在不同裝置上的推論速度比較
3. 不得已的 CAM
4. OpenVINO? Integration with TensorFlow* (new)
<圖二、OpenVINO? 的應(yīng)用架構(gòu),資料來(lái)源:Intel >
OpenVINO? 基礎(chǔ)開發(fā)流程
如 圖二 所示,最左邊是訓(xùn)練好的模型,藍(lán)色的部分是 OpenVINO? 的區(qū)塊,推論引擎與應(yīng)用程式作互動(dòng)。
[第一個(gè)選擇]是申請(qǐng)使用 OpenVINO DevCloud 來(lái)進(jìn)行MO,線上的虛擬機(jī)器里面都已經(jīng)安裝好相關(guān)的工具,很方便上傳模型后做轉(zhuǎn)換模型(可以參考 MakerPRO的介紹)。
[第二個(gè)選擇]是使用 Google CoLab 的環(huán)境(Ubuntu 18.04)安裝OpenVINO?使用,有一個(gè)優(yōu)點(diǎn)就是:安裝失敗可以重新開一個(gè) notebook重頭開始。最后將轉(zhuǎn)換完成的 IR 檔下載下來(lái)即可。參考這篇文章(里面有CoLab連結(jié)),但連結(jié)中的這個(gè)范例安裝OpenVINO?的版本比較舊,建議參考官方的安裝說(shuō)明作點(diǎn)小修改。
不同精度模型在不同裝置上的推論速度比較
這邊使用 OpenVINO? 的 benchmark 工具,來(lái)評(píng)估模型推論引擎 (IE) 搭配不同裝置的效能,這臺(tái)筆電包含了兩個(gè)可用的裝置(CPU、iGPU)。
以下 圖三 的評(píng)估只有考慮到模型推論的部分,資料前處理、后處理、UI等都沒有納入計(jì)算。淺藍(lán)色為 MO 轉(zhuǎn)換的 FP16 的模型,深藍(lán)為 FP32 的模型。我們可以看到FP16模型在 GPU 的效能為 CPU 的兩倍,同質(zhì)整合CPU和GPU的模式(MULTI)有更佳的表現(xiàn)。但其實(shí) CPU裝置 沒有支援 FP16 的資料輸入,所以效能比直接使用 FP32 略差。異質(zhì)整合(HETERO)模式,將模型拆分為 CPU執(zhí)行的部分和 GPU執(zhí)行的部分,僅供參考。
最后,其實(shí)在 iGPU 上就已經(jīng)足夠快了,我們的應(yīng)用目標(biāo)是包含前處理、后處理、UI 達(dá)到 30 FPS。所以我們決定使用 高精度(FP32)模型在 iGPU 上做推論,然后將 CPU 留做 前處理、后處理、UI 的運(yùn)算上使用。
<圖三、推論引擎使用不同裝置的效能,每秒推論幾個(gè)樣本(FPS) >
不得已的 CAM
CAM (Class Activation Mapping) 是作為分類依據(jù)的可視化方法,也是 圖一 相片中的熱區(qū)圖。CAM(沒有Grad) 的實(shí)作上,我們參考了這篇范例(pneumonia-classification)。如果有使用 DevCloud 的話,也可以在 Sample Applications 當(dāng)中找到這范例。
但這個(gè)范例方法沒有辦法計(jì)算模型的梯度(Gradient),所以沒有辦法算出比較好的熱圖(Grad-CAM等)。分析無(wú)法得到模型梯度是因?yàn)?OpenVINO? 專注在模型布署和推論上(Forward pass);所以如果要監(jiān)看梯度等進(jìn)階需求,可能還是得回到 Tensorflow 的功能來(lái)實(shí)現(xiàn)。
<圖四、Tensorflow 實(shí)現(xiàn)的 Grad-CAM 熱區(qū)顯示比較精確>
OpenVINO? Integration with TensorFlow* (new)
因?yàn)橐龅?Grad-CAM,所以需要進(jìn)階地使用到 Tensorflow。但如何讓 Tensorflow 可以使用到Intel的內(nèi)顯(iGPU) 就需要用到:OpenVINO? integration with TensorFlow (GitHub repo) 。它跟上面提到的 OpenVINO? 運(yùn)作方式上不太一樣,這個(gè)工具提供的是一個(gè) 整合的后端(backend) 讓 Tensorflow 可以直接使用到 Intel? 的裝置 CPU、iGPU、VPU,如圖五所示。
<圖五、OpenVINO? Integration with TensorFlow 應(yīng)用架構(gòu),資料來(lái)源:Intel >
在筆者撰寫此篇的時(shí)候,它在 Windows 上還是 Beta版 (其他作業(yè)系統(tǒng)已經(jīng)是正式版了)。但我們還是依照 互動(dòng)安裝指引 來(lái)安裝這個(gè)工具,如 圖六 所示,Windows版 當(dāng)前只支援 Python3.9。
<圖六、互動(dòng)安裝指引,資料來(lái)源:Intel >
在使用上,出奇的簡(jiǎn)單!如 圖七 的簡(jiǎn)單范例,在定義完 后端(backend) 之后,就繼續(xù)正常使用 Tensorflow 。
結(jié)論
目前嘗試的 OpenVINO? Integration with TensorFlow 在windows上的beta版,后端可以看出有使用到新一代的 Intel oneAPI 的 oneDNN,在硬體的整合運(yùn)用上很值得期待。雖然目前 openvino_tensorflow 在我們模型上的推論效能為 25.27 FPS 表現(xiàn)較為普通,但期待日后正式版的發(fā)布,屆時(shí)若能與 iGPU 整合得更好,想必會(huì)有更佳的體驗(yàn)。
#LUS.AI 團(tuán)隊(duì)
?場(chǎng)景應(yīng)用圖
?產(chǎn)品實(shí)體圖
?展示板照片
?方案方塊圖
?Intel 11 Gen Tiger Lake Spec.
?核心技術(shù)優(yōu)勢(shì)
1. 高效能 CPU 與 GPU 結(jié)合 AI 和深度學(xué)習(xí)功能,能夠在各種用途整合工作負(fù)載,例如電腦數(shù)值控制 (CNC) 機(jī)器、即時(shí)控制、人機(jī)界面、工具應(yīng)用、醫(yī)療成像與診斷(在超音波這類用途),以及需要具備 AI 功能高分辨率 HDR 輸出的其他用途。 2. 顯示芯片、媒體與顯示器引擎可輸出達(dá) 4x4k60 HDR 或 2x8K60 SDR,搭載兩個(gè) VDBOX,可以用 1080p 和每秒 30 個(gè)影格的方式,解碼超過 40 個(gè)傳入的視訊串流。引擎支援各種用途,例如數(shù)位招牌與智能零售(包括專為分析強(qiáng)化的 AI),以及具備推斷功能的電腦視覺,適用于網(wǎng)路視訊錄制器或機(jī)器視覺與檢測(cè)這類用途。 3. 利用在 CPU 向量神經(jīng)網(wǎng)路指令集 (VNNI) 執(zhí)行的 Intel? DL Boost,或是利用在 GPU (Int8) 執(zhí)行的 8 位元整數(shù)指令集,即可實(shí)現(xiàn) AI 與推斷加速。 4. 全新的物聯(lián)網(wǎng)導(dǎo)向軟硬體,實(shí)現(xiàn)了需要提供及時(shí)效能的各種應(yīng)用。適用于可程式化邏輯控制器與機(jī)器人這類用途的快速周期時(shí)間與低延遲。
?方案規(guī)格
* 頻率最高可達(dá) 4.4 GHz *搭載達(dá) 96 個(gè) EU 的 Intel? Iris? Xe 顯示芯片 *最高支援 4x4k60 HDR 或 2x8K60 SDR *Intel? Deep Learning Boost *最高 DDR4-3200 / LPDDR4x-4267 *Thunderbolt? 4/USB4 與 PCIe* 4.0 (CPU) *Intel? Time Coordinated Computing(在精選的 SKU) *頻內(nèi) ECC 與延伸溫度(在精選的 SKU) *Intel? Functional Safety Essential Design Package (Intel? FSEDP)(在精選的 SKU)
評(píng)論