일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- MySQL
- hackerrank
- Segmentation
- 프로그래머스
- DFS
- eda
- 큐
- Machine Learning Advanced
- 알고리즘
- 스택
- 입문
- Semantic Segmentation
- pytorch
- 튜토리얼
- Recsys-KR
- 엘리스
- 추천시스템
- 파이썬
- TEAM EDA
- Image Segmentation
- Object Detection
- Python
- 협업필터링
- 나는 리뷰어다
- 3줄 논문
- TEAM-EDA
- DilatedNet
- 한빛미디어
- 나는리뷰어다
- 코딩테스트
- Today
- Total
TEAM EDA
Pyramid Scene Parsing Network (PSPNet) 본문
Pyramid Scene Parsing Network (PSPNet) Review
- papers : https://arxiv.org/pdf/1612.01105.pdf
0. Abstract
FCN 기반의 모델은 global scene category clue를 활용하지 못하기 때문에 Open Vocabulary 와 diverse secens 두 가지 어려운 점을 가지고 있습니다.
위의 문제를 해결하기위해서 Pyramid Pooling Modules를 이용한 PSPNet을 제안합니다.
- Global context information을 탐색하는 능력을 가집니다.
- 서로 다른 영역을 기반으로 하는 Context를 탐색할 수 있습니다.
- 이는 local 및 global clue를 모두 활용해서 reliable prediction을 수행합니다.
Secne Parsing에서 좋은 성능을 거두었으며 ImageNet scene parsing challenge 2016, PASCAL VOC 2012, Cityscapes에서 좋은 성능을 차지했습니다.
참고로 Open Vocabulary Problem이란 정확히는 모르겠지만 카테고리가 굉장히 많은 경우와 카테고리 사이의 상하위 관계가 있는 문제를 의미하는 것 같습니다.
1. Introduction
Scene parsing 같은 경우 몇가지 어려운 점이 있습니다.
의자와 소파, 말과 소 등과 같이 유사한 모습을 가지지만 다른 라벨들이 존재합니다.
Global Scene category clues를 통해서 예측하는 능력이 부족합니다.
- 예) 강, 선착장 등을 통해서 보트를 예측
The new ADE20K dataset [43] is the most challenging one with a large and unrestricted open vocabulary and more scene classes.
- FCN이 비록 좋은 성능을 보였지만 몇가지 한계점을 보입니다.
- 보트의 경우 물 위에 떠있는 특징이 있지만 외관이 자동차와 비슷해서 잘못 예측하는 문제가 있습니다.
- 고층빌딩처럼 객체가 큰 경우에 대해서 비슷한 클래스인 빌딩으로 착각하게 됩니다.
- 배게와 같이 침대와 유사한 모습, 색을 가지는 경우 잘못 분류하는 문제가 있습니다.
- 위와 같은 문제는 객체의 지역 지역적인 정보만을 가지고 예측해서 발생한 문제입니다.
- 이를 해결하기 위해서는 객체 주변의 전체 정보를 통해서 예측할 필요가 있습니다.
- 예를들어, 첫번째 사진의 경우 강 위에 보트가 떠있고 그 주변에 보트를 넣을 공간이 있다라는 "Context"를 통해 예측하면 문제를 해결할 수 있습니다.
- PSPNet에서는 FCN처럼 지역적인 정보를 이용해서 예측하는 방법에 더해서 global pyramid pooling을 통해 전역적인 정보까지 결합해서 예측하는 방법입니다.
- 추가적으로 "deeply supervised loss"라는 최적화 전략을 제시해서 좋은 성능을 달성했습니다.
2. Related Work
3. Pyramid Scene Parsing Network
3.1 Important Observation
Mismatched Relationship
- Context Relationship을 잘못 파악하는 경우
- 복잡한 배경을 이해하기 위해서는 객체들 간의 관계를 파악하는게 중요합니다. 예) 하늘에 비행기가 떠다닌다.
- 하지만, 위의 경우 보트가 강 위에 떠있음에도 외관이 자동차와 비슷하다는 이유로 잘못 분류한 것을 볼 수 있습니다.
Confusion Categories
- Confusion Categories를 가지는 경우
- 산과 언덕, 들과 땅, 벽과 집, 건물 과 고층 건물처럼 비슷하지만 조금 다른 라벨들이 많고 이를 잘못 분류할 가능성이 높습니다.
- FCN의 경우 고층빌딩을 빌딩과 고층빌딩으로 섞어서 분류한 것을 볼 수 있습니다.
- 위의 문제들은 범주 간의 관계(고층빌딩 – 하늘)를 통해서 해결할 수 있습니다.
Inconspicuous Classes
- Inconspicuous Classes (눈에 띄지 않는 클래스)
- 신호등이나 표지판같이 객체들은 중요하지만 작아서 잘 분류되지 않는 문제가 있습니다.
- 고층 빌딩과 같이 크기가 큰 객체들은 Receptive Field를 벗어나서 예측이 잘 안되는 문제가 있습니다. (다양한 Sub-region 들을 모두 고려하지 못합니다.)
Summary
- 객체마다의 크기가 달라서 서로 다른 Receptive Field가 필요합니다.
- 그리고 주변 정보(문맥)를 파악해서 객체를 예측하는데 사용해야 합니다.
3.2 Pyramid Pooling Module
- CNN은 receptive field의 크기가 고정되어 네트워크가 global scenery prior를 통합하지 못하게 한다는 한계가 있습니다.
- 또한, Global average pooling은 global contextual prior로 사용할 수 있지만, ADE20K와 같은 complex scene에서는 중요한 정보들을 모두 고려하기에 부족합니다.
- Scene image는 많은 object들과 연관되어 있는데, 이들을 바로 single vector로 만들어 버리면 spatial relation을 잃을 수 있습니다.
- 따라서, PSPNet에서는 다음과 같이 동작하는 pyramid pooling module을 global scene prior로 사용해 다양한 scale 및 sub-region에 따른 정보들을 포함하는 방법을 사용합니다. (Figure 3 - (c))
Global Average Pooling
- Global Average Pooling (1)
- Average Pooling (2)
- Global Average Pooling vs Convolution
하나의 Global Average Pooling만 적용한 경우 복잡한 ADE20K 데이터 셋에서는 적합하지 않았습니다.
- 위의 문제를 극복하기 위해서 여러 형태의 Receptive Field를 가진 Global Average Pooling을 적용합니다.
- 그럴 경우 서로 다른 영역의 정보들을 뽑을 수 있고 이를 통합해서 다양한 크기의 Context를 생성할 수 있습니다.
- PPM의 구조를 자세히 보면 4개의 크기를 가지는 풀링(1, 2, 3, 6)에 의해서 부분 영역들을 추출합니다.
- 이후, Conv을 통해서 채널의 수를 정제하고 Upsampling으로 크기를 키운 후에 이를 원래의 피처 맵과 결합 함으로서 다양한 크기의 문맥 특징을 추출할 수 있습니다.
4. Deep Supervision for ResNet-Based FCN
PSPNet의 ResNet은 2가지의 loss를 통해 optimization을 수행합니다.
- Master branch loss (loss 1)
- Softmax Loss
- 더 많은 responsibility (weight 0.6)
- Auxiliary loss (loss 2)
- Softmax Loss
- 더 적은 responsibility (weight 0.4)
- 학습 과정에서 optimize를 돕는 역할로만 사용되며 test시에는 사용되지 않음
- 위의 2가지 loss는 모든 previous layer에 전파되도록 합니다.
- Relay backpropagation을 사용하지 않음
5. Experiments
5.1 Implementation Details
- Augmentation
- Random mirror
- Random Resize
- Random Rotation
- Gaussian Blur
- Crop
5.2 ImageNet Scene Parsing Challenge 2016
Ablation Study for PSPNet
Ablation Study for Auxiliary Loss
Ablation Study for Pre-trained Model
Multi Scale Testing
PASCAL VOC 2012
Table 6는 test set에서 PSPNet을 다른 모델들과 비교한 결과입니다.
- DeepLab을 비롯한 몇가지 모델들과의 공정한 비교를 위해 ResNet101 기반의 PSPNet으로 비교합니다.
- $\dagger$가 붙은 모델은 MS-COCO dataset에서 pre-training을 수행한 모델을 의미합니다.
- PSPNet이 가장 좋은 성능을 보입니다.
- 심지어 MS-COCO에서 pretraining을 수행한 다른 모델들보다 좋은 성능을 보였음
- ResNet이 나온지 얼마 되지 않은 시점이어서 ResNet을 적용했기 때문에 좋은 성능이 나온것이라는 반박이 있을 것으로 예상하여 최신 모델들과의 성능도 비교합니다.
- FCRNs, LRR, DeepLab 등의 SOTA 모델들보다도 좋은 성능을 보임
Figure 7은 PASCAL VOC에서 Baseline보다 PSPNet이 더 정확하고 세밀하게 segmentation을 수행한다는 것을 보여줍니다.
- 첫번째 행에서 cows를 horse와 dog로 잘못 인식한 문제를 해결합니다.
- 두번째 행, 세번째 행에서 각각 aeroplane, table의 missing part를 찾습니다.
- 세번째, 네번째 행에서 person. bottle, plant를 잘 찾으므로 작은 object에 대해서도 잘 동작한다는 것을 알 수 있습니다.
- Figure 9은 PASCAL VOC에서의 PSPNet을 포함한 여러 모델들의 segmentation 결과이다.
Cityscapes
Table 7은 Test set에서 PSPNet을 다른 모델들과 비교한 결과입니다.
- 학습에는 fine annotation data만을 사용하였고, coarse annotation data까지 함께 학습시킨 모델은 $\ddagger$로 표시합니다.
- DeepLab과의 공정한 비교를 위해 ResNet101 기반의 PSPNet으로 비교합니다.
- PSPNet이 가장 좋은 성능을 보입니다.
- Figure 8은 Cityscapes datset에서의 PSPNet의 segmentation 결과를 나타낸 것입니다.
6. Concluding Remarks
6.1 Advantages
- Global Average Pooling이라는 이미 나온 개념을 가져와서 해당 문제의 특징을 잘 해결한 논문입니다.
- GAP의 크기를 다양하게 적용해서 다양한 크기의 정보를 추출했습니다.
6.2 Disadvantages
- 속도가 오래 걸리는 문제가 있습니다. (https://stackoverflow.com/questions/61889355/global-average-pooling-does-not-affect-training-speed)
참고자료
[이론]
- https://www.youtube.com/watch?list=WL&v=siwbdHhQPXE&feature=youtu.be
- https://gaussian37.github.io/vision-segmentation-pspnet/
- https://towardsdatascience.com/review-pspnet-winner-in-ilsvrc-2016-semantic-segmentation-scene-parsing-e089e5df177d
[코드]