---
# System prepended metadata

title: 水腎偵測
tags: [專題]

---

## DETECTING HYDRONEPHROSIS THROUGH ULTRASOUND IMAGES USING STATEOF-THE-ART DEEP LEARNING MODELS


[論文](https://www.umbjournal.org/article/S0301-5629(22)00584-1/abstract)
[公開datasets](https://github.com/ncnuaiialab/hydronephrosis-experimental-data)

## 1. Introduction

* 水腎即為腎臟的尿液收集系統（腎盂）異常變大，如未及時發現會造成急性腎損傷或用永久性腎功能損失
* CT(腹部電腦斷層掃描)是初步影像診斷的方法，但因為其有輻射及高價的問題，相比之下，超音波(US)沒有輻射且在高風險的診斷中與CT效能相當，且報告指出增加床邊超音波檢測水腎可以縮短急診部門（ED）的停留時間
* 超音波檢測的醫師需要長時間的培訓，而於深度學習的計算機輔助檢測和診斷（CAD）可以在超音波影像訓練中發揮作用，通過縮短學習曲線並將應用到臨床工作流程中
* 這篇論文則是開發並測試了一個最佳匹配的深度學習自動化算法，用於評估成人腎臟超音波影像中水腎的存在
* 會依次介紹 : 材料、方法、實驗、結果討論、結論

---

## 2. Method

* 使用SSA-660A 日本佳能的超音波裝置的2Hz~5Hz的探頭
* 數據為包含97名成人水腎患者的3462張超音波圖像，及265名正常成人的1628張腎臟影像作為對照組

---

#### Data pre-processing

* 實驗數據包含2-D US(ultrasound)及DICOM格式的US影片，從影片中擷取了5090張兩種尺寸的2-D US圖片，尺寸分別是800 * 600及1024 * 768

:::spoiler **DICOM 醫學數位影像傳輸協定**
DICOM為醫學影像處理中的主要格式，是一種國際標準，用於儲存、傳輸、處理和顯示醫學影像
:::

![image](https://hackmd.io/_uploads/HJXEvnrpC.png)

* 對圖片的病灶區進行分割並用labelMe標註積液區

![image](https://hackmd.io/_uploads/HkmB_2H6C.png)

* 為減少背景干擾及標準化圖片，使用YOLOv4，根據邊界框切割並縮放至224 * 224

![image](https://hackmd.io/_uploads/rk1vOnS60.png)

* YOLOv4的功能是同時檢測物體的座標和分類，結合了 SPP和 PANet模組、CSPDarknet53 骨幹以及 YOLOv3 的頭部，他具有較快的訓練速度和預測能力，同時保持了準確度

![image](https://hackmd.io/_uploads/ryRgt2S6A.png)

:::spoiler **CSPDarknet53**
* 負責從輸入應向中提取特徵
* CSP通過將特徵圖分為兩部分並在不同階段合併，降低了計算成本並提高了模型精確度
* 該骨幹包含多個convolution及residual layer，主要在提取邊緣、紋理等特徵
:::

:::spoiler **SPP**
* SPP將特徵圖池化成固定大小(5 * 5、9 * 9、13 * 13)，讓網路能處理不同尺度的物體
:::

:::spoiler **PANet**
* 主要功能是加強信息的傳遞，提升網路的定位能力，透過聚合不同階段的特徵，將結果傳遞至YOLO的頭部
:::

:::spoiler **YOLOv3頭部**
* 負責預測及輸出物體邊界框和類別
:::

---

#### Data post-processing

* 小範圍積水在醫學上不認為有問題，但是因為特徵與中重度特徵相似，因此需要過濾這些預測結果中為小範圍積水的部分
* 在本研究中，使用了一個叫做size filter的過濾方法
    * 首先，計算積液區域的Tight bound rectangle的長寬
    * 如果長寬都小於閥值，該區域則被排除，相反就會是positive
    * 標準由專家的臨床經驗及實驗結果而決定

![image](https://hackmd.io/_uploads/ryx_Oo3ST0.png)

![image](https://hackmd.io/_uploads/Sk5Yj2rpA.png)
>太小被排除

---

### 使用了以下三種，U-Net、Res-UNet、UNet++模型

#### U-Net

![image](https://hackmd.io/_uploads/HksUn3Sa0.png)

* U-Net的架構是encoder-decoder(編碼器-解碼器)及skip connections來融合不同層次的特徵圖

:::spoiler **skip connections**
用於改善模型的訓練過程、增強模型的表達能力
![image](https://hackmd.io/_uploads/Bkbf7aS6A.png)
>ResNet中就有使用到skip connections
>U-Net也有使用

* 改善梯度、提高了模型性能並加快了訓練過程
:::

* contracting path(收縮路徑)由重複的兩次convolution及一次stride為2的max-pooling進行downsampling

:::spoiler **Contracting path 收縮路徑**
用於萃取特徵並逐步減小影像的尺寸
:::

:::spoiler **downsampling**
* 將數據、影像的解析度降低
* 通常使用max-pooling或average pooling
* 可以減少計算量和提高效率
:::

*  expanding path(擴張路徑)則與contracting path相對的，但使用的則是upsampling

:::spoiler **upsampling**
* 將數據、影像的解析度升高，通常用於恢復影像的尺寸
* 通常使用Interpolation Techniques(插值技術)或Deconvolution(反卷積)
:::

* 在最後一層，使用1 * 1的convolution將每個64-component(元件，每個特徵由64個數值組成)特徵向量映射到所需的classes數量

---

#### Res-UNet

* 結合了ResNet及U-Net

![image](https://hackmd.io/_uploads/SktlHTHpR.png)
>當F(x)為0時，為identity mapping(單位映射)
>讓模型學習時，學會跳過某幾層的必要性

![image](https://hackmd.io/_uploads/S1SDS6rTC.png)

---
#### U-Net++

* 重新設計了skip connection的部分，使用nested structure將高階特徵及低階特徵融合到了encoding network的upsampling的節點上，這樣可以獲取更豐富的特徵訊息

![image](https://hackmd.io/_uploads/B1cxjI8aR.png)


![image](https://hackmd.io/_uploads/SygE38Ua0.png)
>𝑖 代表節點的深度，
>𝑗 代表同一深度從左到右的順序。
>𝐻 函數是做convolution
>[] 代表跳接層
>𝑈 代表上採樣層

![image](https://hackmd.io/_uploads/ByPC3I860.png)
>![image](https://hackmd.io/_uploads/HJ_3a8L6R.png) 表示第0層到j-1層所有特徵的集合
>![image](https://hackmd.io/_uploads/rJzb0UL6A.png) 指從更深的層經過upsampling
>最後再convolution，就可以融合高階與低階的特徵圖

---

#### Model training and evaluation

![image](https://hackmd.io/_uploads/rkIvJP86R.png)
>水腎偵測的流程

* 為了評估性能，採用了10 fold cross-validation
![image](https://hackmd.io/_uploads/Syot1PUaA.png)
>DICOMS表每一fold中的DICOM文件數量
>Total是從DICOM中提取出來的影像數量
>Abnormal及Normal表示正常與不正常的數量

:::spoiler **10-fold cross-validation**
* 是一種常見的模型評估方法

1. 把數據集隨機切割成10個子集
2. 做十次訓練，每次選取其中一子集作為驗證集，其餘9個子集為訓練集
3. 最終結果是這10次數據的平均值
:::

:::success
**評估指標**
* accuracy
* specificity
* precision
* recall
* the F1 measure
* ROC curve
* AUC(ROC 曲線下面積)
* IoU
:::

---

#### Statistical analysis

* 使用SAS 9.4軟體做統計分析
* 男性比例百分比使用x<sup>2</sup>-test

:::spoiler **x<sup>2</sup>-test**
用於檢驗觀察頻數與期望頻數是否有顯著差異
>頻數，某個區間的出現次數
:::

* 年齡及BMI使用四分位數範圍(Q3-Q1)，並用Wilcoxon Rank-Sum Test進行分析
![image](https://hackmd.io/_uploads/ryC0DDL6C.png)
:::spoiler **Wilcoxon Rank-Sum Test**
用於比較兩組獨立樣本的中位數是否存在顯著差異
:::

* 使用logistic regression邏輯回歸模型來找最佳模型參數
* 計算了95%信賴區間（CI）的比值比（OR）

:::spoiler **95% Confidence Interval 95%信賴區間**
* 在95%的情況下，結果的真實均值會落在信賴區間
* 例子:測量了一組人的血壓，計算得到平均血壓為120 mmHg，標準差為15 mmHg，樣本量為30
    則信賴區間為平均血壓±(1.96(係數) * 標準誤差)
    ![image](https://hackmd.io/_uploads/Hy3OoPIaC.png)
    因此，信賴區間為120±5.37 mmHg，也就是說，95%的情況下，血壓會落在114.63 mmHg到125.37 mmHg之間
:::

:::spoiler **Odd ratios 事件的發生比(勝算比)**
例子:
|            |    五年死亡病例     |五年存活病例  |  |
| ---------- | ------ | ------------ | -------- |
| 放射線治療 | 6人( A ) | 4人( B )       |     共10人     |
| 化學治療   |   10人( C )     | 5人( D )         | 共15人     |

放射線的死亡勝算 = (6/10)/(4/10) = 1.5
化學的死亡勝算 = (10/15)/(5/15) = 2
放射線與化學的死亡勝算比(Odd ratios) = 1.5/2 = 0.75

OR = 1，兩者風險相等
OR > 1，放射線死亡風險較高
OR < 1，化學死亡風險較高
:::

:::spoiler **p-value**
* 是通過多種運算後的得出值，經過對照查表後可得出一個p-value
* 如果p < 0.05，代表兩者間有顯著關聯，凡之則是關聯不大
:::

* 最後，分析這些變數是否會對模型造成誤差
![image](https://hackmd.io/_uploads/BkupEuL60.png)
>p-value都大於0.05，因此可以看出並無被混淆到
>confounders混淆變數

---

[後續](https://hackmd.io/@pinky3flavors/B1Rk0Gv60)
