[부스트캠프 AI tech Segmentation] week16 (2022.05.03)
1. U-Net
1.1 Intro
- 원래
Bio-Medical
분야의 논문
biomedical
의 특성상 data 수가 부족하고 labeling에 어려움이 있음
- 여러
biomedical
분야의 한계를 극복한 논문
1.2 Architecture
1.3 Contracting Path(Encoder)
- 하나의
block
에서 3x3 conv
+ BN
+ ReLU
가 두번 반복되는 구조
padding
을 사용하지 않아 patch size
가 layer
를 통과할 수록 줄어듦
- 하나의
block
을 통과한 후 2x2 pooling(stride=2)
을 통해 feature map
을 절반의 크기로 줄임.
block
의 첫 layer
에서 channel
을 두배로 키워줌
1.4 Expanding Path(Decoder)
2x2 Transposed conv
사용
feature map
의 크기를 2배로 증가시킴
channel
의 수를 절반으로 줄임
Contracting Path
에서 얻은 feature map
과 concat
Skip-connection
에서 feature map
의 크기가 맞지 않는 경우 Crop
하여 사용
- 마지막에
segmentation map
을 만들기 위해 1x1 conv
를 수행
1.5 Contribution
Encoder
가 확장함에 따라 채널의 수를 1024까지 증가시켜서 좀 더 고차원에서 정보를 매핑함
- 각기 다른 계층의
encoder
의 출력을 decoder
와 결합시켜서 이전 레이어의 정보를 효율적으로 활용
1.6 Data Augmentation
Random Elastic deformations
: 모델의 invariance
와 robustness
를 학습할 수 있도록 하는 방법
Pixel-wise loss weight
를 계산하기 위한 weight map
을 생성
- 같은 클래스를 가지는 셀이 인접할 수록 높은 가중치를 주어 경계를 잘 구분하도록 함
1.7 한계점
- U-Net은 기본적으로 깊이가 4로 고정됨
dataset
마다 최고의 성능을 보장하지 못함
- 최적 깊이 탐색 비용 증가
- 단순한
Skip Connection
- 동일한 구조를 가지는
Encoder
와 Decoder
만 사용가능
2. U-Net++
2.1 Intro
U-Net
의 한계를 극복하기 위한 새로운 형태의 구조 제시
Encoder
를 공유하는 다양한 깊이의 U-Net
생성
2.2 Dense Skip Connection
- 하나의
Skip Connection
만을 사용했던 U-Net
과 달리 모든 level
의 feature map
을 concat
하는 Dense Skip Connection
으로 바뀜
2.3 Ensemble
- 여러 깊이의
U-Net
구조를 연결하면서 Ensemble
과 같은 효과를 냄
2.4 Hybrid Loss
pixel-wise crossentropy
+ soft Dice Coefficient
2.5 Deep Supervision
- X0,1, X0,2, X0,3, X0,4를 모두 활용해 Loss를 구함
2.6 한계점
- 많고, 복잡한
Connection
으로 인한 parameter 수
와 memory
의 증가
Encoder
와 Decoder
사이 Connection
이 동일한 크기의 feature map
에서만 진행되어 다양한 scale
학습이 어려움
3. U-Net 3+
3.1 Full-scale Skip Connection
3.1.1 Conventional(simple) Skip Connection
- 기존
U-Net
의 Skip Connection
과 동일
- 같은
level
의 Encoder
의 feauture map
을 decoder
로 전달
- 다른
level
의 connection
과 channel
의 크기를 맞추기 위해 3x3 conv(64 channel)
을 적용
3.1.2 Inter Skip Connection
Encoder
의 상위 level
의 feature map
을 connection
해줌
feature map
사이즈를 동일하게 맞춰주기 위해 maxpooling
을 사용함
3x3 conv(channel 64)
를 적용해 똑같은 channel
수를 맞춰줌
3.1.3 Intra Skip Connection
Decoder
의 하위 level
의 feature map
을 Connection
함
bilinear upsampling
을 통해 feature map
의 크기를 키워줌
3x3 conv(channel 64)
를 적용해 똑같은 channel
수를 맞춰줌
3.1.4 Parameter
Parameter
를 줄이기 위해 모든 decoder
의 Channel
수를 320으로 통일함
- 기존
512
, 1024
까지 쓰던 channel을 320
으로 줄여줌으로써 효율적인 연산이 가능해짐
- 이전 모델들에 비해 훨씬 적은
parameter
로 더 좋은 성능을 보여줌
3.2 Classification-Guided Module(CGM)
low-level feature
의 noise
로 인해 발생하는 false-positive
문제 해결을 위해 사용
high-level feature map
을 활용해 Dropout
- 1x1 conv
- AdaptiveMaxPool
- sigmoid
의 과정을 통해 예측된 pixel값이 배경인지(0) object인지(1) 구분하고 pixel에 곱해주는 extra classification task
3.3 Full-scale Deep Supervision(Loss)
- 경계부분 학습을 위해 여러
Loss
를 결합
Focal Loss
: Class Imbalance
해소
ms-ssim Loss
: Boundary
인식 강화
IoU
: 픽셀의 분류 정확도를 상승
3.4 성능
4 Another version of U-Net
4.1 Residual U-Net
Encoder
, Decoder
부분 blcok
마다 Resiudal unit with identity mapping
적용
4.2 Mobile U-Net
4.3 Eff U-Net
EfficientNet
을 backbone(Encoder)
으로
Decoder
는 U-Net
구조를 이용