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

?產(chǎn)品實(shí)體圖

?展示板照片


?方案方塊圖

?Intel 11 Gen Tiger Lake Spec.

?核心技術(shù)優(yōu)勢
1. 高效能 CPU 與 GPU 結合 AI 和深度學(xué)習功能,能夠在各種用途整合工作負載,例如電腦數值控制 (CNC) 機器、即時(shí)控制、人機界面、工具應用、醫療成像與診斷(在超音波這類(lèi)用途),以及需要具備 AI 功能高分辨率 HDR 輸出的其他用途。 2. 顯示芯片、媒體與顯示器引擎可輸出達 4x4k60 HDR 或 2x8K60 SDR,搭載兩個(gè) VDBOX,可以用 1080p 和每秒 30 個(gè)影格的方式,解碼超過(guò) 40 個(gè)傳入的視訊串流。引擎支援各種用途,例如數位招牌與智能零售(包括專(zhuān)為分析強化的 AI),以及具備推斷功能的電腦視覺(jué),適用于網(wǎng)路視訊錄制器或機器視覺(jué)與檢測這類(lèi)用途。 3. 利用在 CPU 向量神經(jīng)網(wǎng)路指令集 (VNNI) 執行的 Intel? DL Boost,或是利用在 GPU (Int8) 執行的 8 位元整數指令集,即可實(shí)現 AI 與推斷加速。 4. 全新的物聯(lián)網(wǎng)導向軟硬體,實(shí)現了需要提供及時(shí)效能的各種應用。適用于可程式化邏輯控制器與機器人這類(lèi)用途的快速周期時(shí)間與低延遲。
?方案規格
* 頻率最高可達 4.4 GHz *搭載達 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) *頻內 ECC 與延伸溫度(在精選的 SKU) *Intel? Functional Safety Essential Design Package (Intel? FSEDP)(在精選的 SKU)
評論