基於INTEL 11代晶片Tiger Lake 在OPENVINO AI 套件上所開發之LUS.AI即時互動智慧醫療解決方案



提案動機

肺部的檢查上,超音波相較X光或電腦斷層掃描,具有無放射性,操作相對方便的優點。傳統超音波具有不可攜性,病患須至醫療院所才能做超音波檢查,對於偏遠或醫療資源匱乏的地區,難以利用。

超音波在判讀上,具有難解釋性的缺點,對於超音波影像的判讀,往往訓練時間長,判讀時間也較久,醫生與醫生間也存在著主觀判讀的歧異性,在醫病溝通上,對於判讀過後的結果,醫師也較難與病患說明。

基於上述的兩項缺點 (不可攜性、難解釋性),本團隊希望能訓練AI模型,協助醫師做肺部超音波影像的判讀,並利用OpenVINO具有最佳化與壓縮模型的優點,協助我們最大化利用現有的硬體資源做模型的推論,讓AI模型在肺部超音波的判讀上更快更即時,達到即時輔助判讀的效果

另我們也配合可攜式的超音波探頭做測試,希望往後也能在院外做超音波檢測,達到遠距醫療的願景。

解決方案

LUS.AI 團隊開發的移動式智能超音波方案,只要帶著一台筆電手持超音波機不用插電源就可以到處移動為病患做檢查。

本團隊開發用的筆電規格為 Intel® Core™ i7 1165G7 處理器 2.8 GHz,搭配顯卡 Intel® Iris Xe Graphics,16G RAM。簡單來說這就是一台 Intel 第11代 CPU 的筆電,平常可以作一般使用的用途,比如開視訊會議、分享討論案例等等,但如果搭配觸控筆也能方便對超音波影像做標註。

除了在筆電上導入AI功能可以輕鬆達成外,即使今天到了收訊不良的地區,因為AI在筆電裡面跑,所以不需要額外的網路連線,模型推論也非常迅速,能夠即時提供醫師第一時間的判讀參考。

(目前完成的只有AI肺部異常偵測的模組)


                                   <圖一、 智慧超音波解決方案>

成果說明

AI模型的設計訓練是使用 Tensorflow 2.6 完成,OpenVINO 則是銜接後續模型佈署和推論的部份。以下是本文分享的大鋼,分為四個項目,2 3 4 項 是比較少文章提到的部份,將無私與大家分享:

  1. OpenVINO™ 基礎開發流程
  2. 不同精度模型在不同裝置上的推論速度比較
  3. 不得已的 CAM
  4. OpenVINO™ Integration with TensorFlow* (new)




                       <圖二、OpenVINO™ 的應用架構,資料來源:Intel >

OpenVINO™ 基礎開發流程

圖二 所示,最左邊是訓練好的模型,藍色的部分是 OpenVINO™ 的區塊,推論引擎與應用程式作互動。

  1. 模型開發的部份,我們選用 Tensorflow 作框架,因為Tensorflow生態系是比較完整的,許多工具都有支援。最後將模型存檔為 Saved Model 格式。
  2. OpenVINO™ 在安裝上,是比較複雜的部份,網路上有許多文章介紹如何安裝,但可能因為 OpenVINO™ 持續改版的關係,所以建議還是參考官網的安裝說明,是最沒問題的方式。
  3. 其實如果不想在本機安裝的話,其實還有兩個選擇,都可以完成 Model Optimizer 的步驟(簡稱 MO)。這個MO步驟,將會把模型轉換為 FP32 或 FP16 的 IR 檔案(.xml .bin),也就是OpenVINO™的模型檔案格式:

[第一個選擇]是申請使用 OpenVINO DevCloud 來進行MO,線上的虛擬機器裡面都已經安裝好相關的工具,很方便上傳模型後做轉換模型(可以參考 MakerPRO的介紹)。

[第二個選擇]是使用 Google CoLab 的環境(Ubuntu 18.04)安裝OpenVINO™使用,有一個優點就是:安裝失敗可以重新開一個 notebook重頭開始。最後將轉換完成的 IR 檔下載下來即可。參考這篇文章(裡面有CoLab連結),但連結中的這個範例安裝OpenVINO™的版本比較舊,建議參考官方的安裝說明作點小修改。

  1. 推論引擎 Inference Engine 的部份(簡稱 IE),是正式應用程式要跑的部份,藉由它來讀取 IR 檔,並選擇在 OpenVINO™ 支援的硬體上作快速的模型推論。這部分若想體驗,其實也可以使用 CoLab notebook 先做測試,只需要pip install openvino就可以使用OpenVINO™的 IE推論引擎了,詳細也可參考這篇文章(內有CoLab連結)
  2. 使用者介面 User Application,我們使用 pyQt5 來建立 windows的簡單程式。其中影像顯示、模型推論、熱圖顯示是使用兩個平行處理完成。由於模型推論速度已經很快(幾十個毫秒),所以速度較慢的反而是資料的前處理、後處理和UI的部份,這方面要加速的話,也許可以做更多的平行化的設計,讓應用程式可以更為即時(real-time)。

不同精度模型在不同裝置上的推論速度比較

這邊使用 OpenVINO™ 的 benchmark 工具,來評估模型推論引擎 (IE) 搭配不同裝置的效能,這台筆電包含了兩個可用的裝置(CPU、iGPU)。

以下 圖三 的評估只有考慮到模型推論的部份,資料前處理、後處理、UI等都沒有納入計算。淺藍色為 MO 轉換的 FP16 的模型深藍為 FP32 的模型。我們可以看到FP16模型在 GPU 的效能為 CPU 的兩倍同質整合CPU和GPU的模式(MULTI)有更佳的表現。但其實 CPU裝置 沒有支援 FP16 的資料輸入,所以效能比直接使用 FP32 略差。異質整合(HETERO)模式,將模型拆分為 CPU執行的部分和 GPU執行的部分,僅供參考。

最後,其實在 iGPU 上就已經足夠快了,我們的應用目標是包含前處理、後處理、UI 達到 30 FPS。所以我們決定使用 高精度(FP32)模型在 iGPU 上做推論,然後將 CPU 留做 前處理、後處理、UI 的運算上使用。


                          <圖三、推論引擎使用不同裝置的效能,每秒推論幾個樣本(FPS) >

不得已的 CAM

CAM (Class Activation Mapping) 是作為分類依據的可視化方法,也是 圖一 相片中的熱區圖。CAM(沒有Grad) 的實作上,我們參考了這篇範例(pneumonia-classification)。如果有使用 DevCloud 的話,也可以在 Sample Applications 當中找到這範例。

但這個範例方法沒有辦法計算模型的梯度(Gradient),所以沒有辦法算出比較好的熱圖(Grad-CAM等)。分析無法得到模型梯度是因為 OpenVINO™ 專注在模型佈署和推論上(Forward pass);所以如果要監看梯度等進階需求,可能還是得回到 Tensorflow 的功能來實現。

 
                     <圖四、Tensorflow 實現的 Grad-CAM 熱區顯示比較精確>

OpenVINO™ Integration with TensorFlow* (new)

因為要做到 Grad-CAM,所以需要進階地使用到 Tensorflow。但如何讓 Tensorflow 可以使用到Intel的內顯(iGPU) 就需要用到:OpenVINO™ integration with TensorFlow (GitHub repo) 。它跟上面提到的 OpenVINO™ 運作方式上不太一樣,這個工具提供的是一個 整合的後端(backend) 讓 Tensorflow 可以直接使用到 Intel® 的裝置 CPU、iGPU、VPU,如圖五所示。


          <圖五、OpenVINO™ Integration with TensorFlow 應用架構,資料來源:Intel >

在筆者撰寫此篇的時候,它在 Windows 上還是 Beta版 (其他作業系統已經是正式版了)。但我們還是依照 互動安裝指引 來安裝這個工具,如 圖六 所示,Windows版 當前只支援 Python3.9。



                                          <圖六、互動安裝指引,資料來源:Intel >

在使用上,出奇的簡單!如 圖七 的簡單範例,在定義完 後端(backend) 之後,就繼續正常使用 Tensorflow 。



結論

目前嘗試的 OpenVINO™ Integration with TensorFlow 在windows上的beta版,後端可以看出有使用到新一代的 Intel oneAPI 的 oneDNN,在硬體的整合運用上很值得期待。雖然目前 openvino_tensorflow 在我們模型上的推論效能為 25.27 FPS 表現較為普通,但期待日後正式版的發佈,屆時若能與 iGPU 整合得更好,想必會有更佳的體驗。


#LUS.AI 團隊

►場景應用圖

►產品實體圖

►展示板照片

►方案方塊圖

►Intel 11 Gen Tiger Lake Spec.

►核心技術優勢

1. 高效能 CPU 與 GPU 結合 AI 和深度學習功能,能夠在各種用途整合工作負載,例如電腦數值控制 (CNC) 機器、即時控制、人機介面、工具應用、醫療成像與診斷(在超音波這類用途),以及需要具備 AI 功能高解析度 HDR 輸出的其他用途。 2. 顯示晶片、媒體與顯示器引擎可輸出達 4x4k60 HDR 或 2x8K60 SDR,搭載兩個 VDBOX,可以用 1080p 和每秒 30 個影格的方式,解碼超過 40 個傳入的視訊串流。引擎支援各種用途,例如數位招牌與智慧型零售(包括專為分析強化的 AI),以及具備推斷功能的電腦視覺,適用於網路視訊錄製器或機器視覺與檢測這類用途。 3. 利用在 CPU 向量神經網路指令集 (VNNI) 執行的 Intel® DL Boost,或是利用在 GPU (Int8) 執行的 8 位元整數指令集,即可實現 AI 與推斷加速。 4. 全新的物聯網導向軟硬體,實現了需要提供及時效能的各種應用。適用於可程式化邏輯控制器與機器人這類用途的快速週期時間與低延遲。

►方案規格

* 頻率最高可達 4.4 GHz *搭載達 96 個 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)

相關影片

超音波肺癌檢測

LUS.AI 團隊開發的移動式智能超音波方案,只要帶著一台筆電和手持超音波機,不用插電源就可以到處移動為病患做檢查。