論文まとめ：T-Net: A Template-Supervised Network for Task-specific Feature Extraction in Biomedical Image Analysis

# はじめに 
２、３日前 arXiv にあがったこちらの論文
[1] W. Song, et. al. "T-Net: A Template-Supervised Network for Task-specific Feature Extraction in Biomedical Image Analysis"
のざっくりしたまとめ

arXiv:
https://arxiv.org/abs/2002.08406

提出先の journal 等は不明。

# 概要 
1. 医療系画像に対して診断や物体検出、セグメントなどをするモデル
2. まず　template を使ってencoderのみを学習させる
3. その後事後ネットワークを追加して、様々なタスクに対応させる

# 背景 
医療系のタスクでは encoder-decoder なアーキテクチャをベースとする U-Net系のモデルが使われる事が多い。これに対して筆者らは以下の３点で問題だと考えている。

1. encoder-decoder をbackpropさせると勾配はdecoder経由でしか伝わらないので、encoderの学習が弱い
2. encoderとdecoderは通常、対称な形状なのでencoderの２倍の計算コストがかかる。よって高解像度の画像を学習させるのは難しい
3. segmentation では教師として単純な２値の target を使用するが、これがencoderの特徴量抽出能力を制限している

# 本手法 
###手法の全体像 
全体像は以下の図のよう。

<img width="420" alt="T-Net_img00.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/246fecb3-3379-dcfa-116d-d36f6a727020.png">

### template により encoder を直接学習させる
通常のencoder-decoder なアーキテクチャだと以下のように

```math
\min_{\theta_e, \theta_d} Loss \left( f_d \left( \theta_d, f_e \left( \theta_e, I \right) \right), I^B \right)
```

入力画像 $I$ を encoder $f\_e$ （パラメータは $\theta\_e$ ）でエンコードし、それを decoder $f\_d$ （パラメータは $\theta\_d$ ）でデコードして出力とする。

これと target $I^B$ とで Loss を計算し、それを勾配降下法等で最小化させる。

よってエンコーダのパラメータにおける勾配は

```math
\frac{\partial Loss}{\partial \theta_e} = \frac{\partial Loss}{\partial f_d} \cdot \frac{\partial f_d}{\partial f_e} \cdot \frac{\partial f_e}{\partial \theta_e} 
```

とdecoder 経由になる。

一方で本手法 T-Net はencoder を template $T$ で学習するので、

```math
\min_{\theta_e} Loss \left( f_e \left( \theta_e, I \right), T \right)
```

である。よってエンコーダのパラメータにおける勾配は

```math
\frac{\partial Loss}{\partial \theta_e} = \frac{\partial Loss}{\partial f_e} \cdot \frac{\partial f_e}{\partial \theta_e} 
```

とdecoderを経由しないですむ。

### template
では、その template はどのようなものを用いるか。

以下の図では３つの template が提示されている。

<img width="879" alt="T-Net_img02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/41f0b312-4420-4215-f80b-8430dde16f46.png">


１つの制約は、encoderからの出力に対する target なので、小さなサイズのものであること。

なので、図の右側１番上（NN down-sampling）では単純に nearest-neighbor interpolation で小さくしている。

それにガウシアンをかけたものが上から２番目の Gaussian filter 。これにより対称物体の境界外の領域にも注意を払うようになる。

下側の Distance map は境界からの距離が遠い（つまりより物体の中央あたりにある領域）ほど高い値になるようにしたもの。

### ネットワークのアーキテクチャ
アーキテクチャの概略図は以下。

<img width="889" alt="T-Net_img04.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/5a7d68c2-0c23-b275-2efd-b936d948a054.png">

ざっと見て、一番上でtemplate を使った encoder の学習を行なっている。

下側左ではそれにU-Net的な Up-sampleing Networkを加えてsegmentを出力している。

一方、下側右では encoder にdetection Network を加えて location map を出力している。

### ベースは dense block

encoder および decoder では以下の dense block を用いる。

<img width="775" alt="T-Net_img05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/1d65dea1-0c25-2b19-e1f2-3e0b53ff7c54.png">

### encoder network 
図を見たら一目瞭然だが、あえて encoder を細かく見ると、

<img width="743" alt="T-Net_img04_01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/d6609a68-09a9-2096-8484-ec564409b683.png">  
<img width="511" alt="T-Net_img04_02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/0bce6f9b-05c7-8fb9-b576-b5084ed44277.png">

となる。初めに conv して、その後１回 dense blockした後に max-poolingでdown-sampling して、更に２回 dense block した後に down-sampling、最終的に５つの　dense block を経る。

### Up-sampling Network  
segment用のup-sampling ネットワークは以下。

<img width="646" alt="T-Net_img04_03.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/04ae9ba4-6793-8c87-f41b-ea8fb5f90d06.png">

ほぼほぼ U-Net の decoder 部分と同じ。

### Detection Network 
detection 用のネットワークは以下。

<img width="846" alt="T-Net_img04_04.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/fa6949e1-1c9c-629e-8932-cd36d4c892e5.png">

encoder から抜いてきた複数のスケールの feature map を concat して、detection network に入れる。

複数スケールを使うが、それらは resize して同じ大きさにしてから concate し入力する。最終的には出力層は最後の１つなので、SSD系よりは YOLO 系に近い構造。

# Loss 
### 1. template loss 
まず encoder を学習させる template loss は以下の通常の dice loss。

```math
Loss_{tem} = 1 - \frac{1}{N_T} \sum^{N_T}_t \frac{2 \sum^{H_T}_i \sum^{W_T}_j p_{i,j,t} g_{i,j,t}}{\sum^{H_T}_i \sum^{W_T}_j p^2_{i,j,t} + \sum^{H_T}_i \sum^{W_T}_j g^2_{i,j,t}}
```

$ g\_{i,j,t} $ は ground truth 、$ p\_{i,j,t} $ は prediction 。

# Up-sampling loss 
セグメント時の Up-sampling loss は以下。

上記と同じ dice loss。

# Location loss 
まず detection 時は物体位置の中心のみを推定する。（<font color="red">矩形を推定しないのはなぜ？？</font>）

出力グリッド $(i,j)$ に中心がある確信度 $c\_{i,j}$ とそのオフセット $x\_{i,j}$、$y\_{i,j}$ を用いて loss は以下。

```math
Loss_{det} = \sum^{H_L}_i \sum^{W_L}_j w_{i,j} ( c_{i,j} - \bar{c_{i,j}} )^2 + \sum^{H_L}_i \sum^{W_L}_j \mathbb{I}^{obj}_{i,j} \left[(x_{i,j} - \bar{x_{i,j}}^2 + (y_{i,j} - \bar{y_{i,j}}^2 \right]
```

中心がある確信度、オフセット共に MSE で loss を求める。中心がある確信度には重み $w_{i,j}$ をかけて修正している。

# 実験と結果

- Datasets：1)BraTS for 3D Tumor Segmentation, 2)MoNuSeg for 2D Nuclei Segmentation
- segmentation 時の metrics：1) Dice score, 2)ハウスドルフ距離
- detection 時の metrics：1)ED

### ハウスドルフ距離
ハウスドルフ距離（Hausdorff distance）というものを初めて聞いたので、Wikipediaで調べてまとめ。

以下の図のように

<img width="328" alt="T-Net_img30_1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/8223690c-ad1a-4e30-aad9-372c01da32c7.png">


target の物体境界 $Y$ に対して predict した物体境界 $X$ がある時、$X$ 上の任意の点 $x$ と $Y$ 上の任意の点 $y$ との距離は $d(x,y)$。

今、ある $y \in Y$ を考え、これと任意の $x \in X$ との距離の中で下限は $\inf\_{y \in Y} d(x,y)$ （上図の左側の紫点の距離）

これを全ての $x \in X$に対して求めた時に、その上限は $\sup\_{x \in X} \inf\_{y \in Y} d(x,y)$。（上図の下側の２つの黒点の距離）

一方、$x$ と $y$ を入れ替えて $\sup\_{y \in Y} \inf\_{x \in X} d(x,y)$ も求める。

この時、両者で大きい方をハウスドルフ距離とする。つまり

```math
D_H (x,y) \equiv \max \{ \sup_{x \in X} \inf_{y \in Y} d(x,y) , \sup_{y \in Y} \inf_{x \in X} d(x,y) \} 
```

要するに、２つの境界で最も距離のある位置関係における距離はいくらか、ってこと。

### セグメンテーションタスクにおける他の手法との比較 

 <img width="413" alt="T-Net_img07.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/8312df1b-c0d9-c41d-5b18-d7f45e4207ae.png">

他の手法と比較して dice-score はイマイチだが、ハウスドルフ距離はいい。

以下は定性的評価。

<img width="440" alt="T-Net_img08.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/d23232bf-5543-4194-3ab0-dcf980ba47d4.png">


### detection タスクにおける他の手法との比較

<img width="338" alt="T-Net_img10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/b6a99bbe-c9de-65af-1c01-8280f4da622d.png">

他の手法との中心位置におけるユークリッド距離での比較。

最も良い。