1.ReceptiveField를 확장시킨 models
1.1DeepLabv2
DilatedNet에서 영감을받아 앞부분 encoder는 같지만 decoder부분에서 4개의 가지를 만들어 sum을 사용해 변화를줌
rate가 큰 부분은 큰 오브젝트를 잘 포착해 내기위해 사용
FC6,7,8부분을 해당 논문에서 ASPP라고 부름
각 Conv block마다 실행해주는 것들이 다르지만 공통적으로 size를 맞춰준다
ex) conv3_block
conv3_block은 4개의 sub block으로 구성되어 있고, 같은 conv3_block의 sub block 4개도 다르게 구성되어있는
block이 존재한다
1.2PSPNet
PSPNet은 다음 세가지 문제점을 제기하며 등장했다.
1) MismatchedRelationship
- 외형이 비슷한 물체끼리는 잘 예측하지 못함 (차,보트)
2) ConfusionCategories
- building과 skyscrapper를 구분하지못함
3) InconspicuousClasses
- 작은 물체는 작기 힘들다
FCN은 maxpool을 사용해서 줄였기때문에 큰 receptive field가 사용되었을 것이다.
그런데 왜 객체간의 관계를 제대로 이해하지 못했을까?
이론적인 receptive field 사이즈와 실제적인 receptive field사이즈가 pooling이 진행될수록 차이를 보였다.
1.3 DeepLab v3
ASPP처럼 여러개의 branch를 따서 마지막에 sum대신 concat해주는 형태
1.4 DeepLab v3+
v3에서 v3+로 넘어올 때 Encoder Decoder 구조를 사용함
기존 DeepLab은 ASPP를 적용해서 결과를 만들어서 concat이나 summation을 취해주고 8배,16배로 bilinear를 취해서 결과를 냈다
v3+는 skip connection을 같이 활용함
Encoder에서 spatialdimension의 축소로 인해 손실된 정보를 Decoder에서 점진적으로 복원
1) Encoder
- 수정된 Xception을 backbone으로 사용
- Atrous separableconvolution을 적용한 ASPP모듈 사용
- Backbone내 low-levelfeature와 ASPP모듈 출력을 모두 decoder에 전달
1-1 Modified Xception Backbone
- depthwise convolution을 사용
-> 각 채널마다 다른 filter를 사용하여 convolution 연산 후 결합
(input channel과 group을 동일한 값을 사용하여 구현가능)
- pointwise convolution
-> 1x1 conv를 의미한다 (kernelsize=1 사용)
depthwise conv + pointwise conv = depthwise separable convolution
2) Decoder
- ASPP모듈의 출력을 (bilinear)up-sampling하여 low-levelfeature와 결합
- 결합된 정보는 convolution연산 및 up-sampling되어 최종 결과 도출
- 기존의 단순한 up-sampling연산을 개선시켜 detail을 유지하도록 함
Architects 정리
1.5 DeepLabv1부터 DeepLab v3+까지 정리
2.결론
2.1 정리
FCN의 한계를 극복했던 모델
1) DeconvNet, SegNet
- Encoder와 Decoder를 대칭시킴
- upsampling기법으로 unpooling을 사용한다
- 위치의 indices를 저장하여 이용
- 깊어질수록 더 자세한 구조적인 모습이 보인다
- SegNet은 내부의 FcLayer를 줄여 파라미터수를 줄여서 realtime에 사용할 수 있게함
2) Dilated convolution
- 이미지의 크기는 많이 줄이지 않고 파라미터수는 유지하고 receptive field는 넓히는 방법
이를 사용한 첫 논문이 DeepLab v1이다
3) CRF
DeepLab만 사용했을경우 성능이 그렇게 좋지는 않아서 Dense CRF를 이용한 후처리를 사용
4) Dilated Net
- 중간에 maxpooling을 제거한 부분과 upsampling과정에서 deconv를 사용하였음
5) DeepLab v2
- Average pooling을 제거하고 ASPP라는 개념을 추가하여 각기 다른 rate을 가지는 Dialte convolution을 적용하여 summation을 적용
- VGG16 backbone대신 ResNet을 사용
6) PSPNet
- FCN의 3가지 문제점을 제기하고 나옴
- Global Averagepooling을 사용한다
- 각기 다른 크기를 갖는 4개의 Averagepooling과 GlobalAveragepooling을 사용하여 서로 다른 영역을 캐치할 수 있게 함
7) DeepLab v3
- 위에서 성공적인 실험을 거둔 GlobalAveragepooling과 기존의 ASPP를 같이 적용하여 사용
- 기존에는 summation을 했지만 여기선 concat을 사용
8) DeepLab v3 +
- Encoder - Decoder로 구성
- Modified Xception backbone을 사용
- low level의 feature와 ASPP의 feature를 같이 결합하여 사용
'부스트캠프 AI Tech 2기 > 2기 CV P-Stage-Semantic Segmentation' 카테고리의 다른 글
Semantic Segmentation 대회에서 사용하는 방법들 1 (0) | 2021.10.20 |
---|---|
High Performance를 자랑하는 Unet 계열의 모델들 (0) | 2021.10.20 |
Semantic Segmentation의 기초와 이해 (0) | 2021.10.19 |
Competition Overview (EDA & Metric) (0) | 2021.10.18 |
Semantic Segmentation - Intro (0) | 2021.10.18 |