요즘은 Semantic Segmentation 관련 풀잎스쿨을 수강하고 있다. 이번 주차엔 SegNet, U-Net, U-Net++에 대해 공부해봤는데, U-Net은 일하면서도 쓸 일이 있어서 자세히 공부할 수 있었다.
일단 U-Net은 지난번에 포스팅한 DeconvNet과 마찬가지로 Semantic Segmentation을 위한 알고리즘이다.
(대충 들어보면 Semantic Segmentation의 시초가 FCN, 큰 획을 그은 것이 U-Net, 요즘 대세가 Deeplab v3인 것 같다)
특징
1. 네트워크가 두 부분으로 구성됨
- 특징/맥락을 학습하는 contracting path
- 정확한 localization을 위한 expanding path
2. augmentation 활용 학습함
-. shift, rotation, (특히) elastic deformation, dropout layers at the end of contracting path
3. end2end 학습
4. 적은 이미지로 학습 잘 됨
5. 빠름 (512x512 : 1초 미만)
배경
1. 레이블링된 학습 데이터의 부족과 네트워크의 크기가 문제가 됐었음
2. 특히 의학용 데이터 수 적어서, "슬라이딩 윈도우" 기반으로 학습됨
-. 픽셀 주위의 작은 단위(patch)로 잘라서 해당 픽셀 클래스를 예측하는 방법
-. 장점 : localize 가능, 학습데이터 수가 많아짐
-. 단점 : 느림 (패치 단위로 늘려서), 겹치는 부분이 많아짐
3. 정확한 위치 파악 VS 전체적 맥락 파악 간 trade-off 관계있음
-. patch가 크면 max pooling 더 많이 해서 localization 정확도 떨어짐
-. patch 작으면 적은 영역에서의 맥락만 파악가능
-. 최근 여러 layer에서의 피쳐들을 모두 사용해서 둘 다 챙길 수 있게 됨
구조
1. FCN을 기반으로 해서 적은 이미지로 학습 가능하고, 정확한 segmentation할 수 있도록 개선함
- FCN
- Pooling으로 압축하는 부분 뒤에 upsampling layers를 더해서 segmentation map 해상도를 키움
- 압축하는 네트워크에서 얻은 고해상도 피쳐가 upsampling된 것과 결함됨 (skip connection)
2. Unet에서는 upsamling 부분에 많은 feature channels를 둬서 맥락정보부터 고해상도로 propagate 가능하게 함
3. Contracting path와 Expanding path가 대칭적인 구조를 가짐
4. fully connected layer 없어서 어떤 크기의 인풋이어도 괜찮음
5. Overlap-tile 전략을 사용해서 큰 이미지도 gpu 제약을 덜 받음
- Overlap-tile 전략
- 임의 크기의 큰 이미지에 대해서도 매끄러운 segmentation을 가능하게 하기 위한 방법
- padding을 사용하지 않는 Unet 구조 특성 상, 파란색 박스를 입력으로 넣었을 때 노란색 부분에 대한 segmentation map만이 취득된다. 그래서 적절하게 오버랩되게끔 파란박스를 이동시키면, 세그멘테이션 맵을 얻을 때 중복되는 영역 없이 매끄러운 segmentation map을 얻을 수 있다.
- 이 때, 오버랩할 수가 없는 이미지 테두리 영역의 픽셀을 보완하기 위해 테두리 부분은 mirroring 하여 예측한다
6. 마지막에 1x1 Conv를 사용해서 64개 픽쳐벡터를 클래스 개수로 맞춰줌
'딥러닝 > Semantic Segmentation' 카테고리의 다른 글
BiSeNet V2 : Bilateral Network with Guided Aggregation for Real-time Semantic Segmentation (0) | 2021.08.10 |
---|---|
DeepLabv3+ 논문 리뷰 (1) | 2021.03.31 |
(풀잎스쿨 14기) Deeplab v2 논문 리뷰 (1) | 2021.03.07 |
Learning Deconvolution Network for Semantic Segmentation 논문 리뷰 (0) | 2021.01.24 |