/ PAPER-REVIEW

Unified Perceptual Parsing for Scene Understanding

Unified Perceptual Parsing for Scene Understanding

Understanding

안녕하세요! AiRLab(한밭대학교 인공지능 및 로보틱스 연구실) 이소열입니다!

이번에 소개할 논문은 Unified Perceptual Parsing for Scene Understanding입니다.

이 논문의 실제 구현은 https://github.com/CSAILVision/unifiedparsing 에 있습니다!

1. Introduction

인간의 눈은 한번 장면을 본 것 뿐으로, 매우 다양한 정보를 추출해낼 수 있습니다. 어떤 장면을 보고있는것인지, 이 물체가 무엇인지, 이 물체가 무엇으로 이루어져 있는지(part), 어떤 재질, 재료로 이루어져 있는지 등 다양한 정보가 담겨있습니다. 딥러닝과 이미지처리의 발전으로 인간 수준의 recognition이 가능하게 되었지만, 다양한 visual recognition task들은 독립적으로 진행되었습니다. 독립적으로 진행됨에 따라, 이 다양한 작업들을 동시에 진행/학습할 수 있을까? 라는 의문이 생기게 되었고, 이는 논문의 motive가 되었습니다.

figure1

< UperNet의 다양한 task >

UperNet에는 여러가지 challenge가 있습니다.

  1. 어떠한 데이터셋에도, 모든 task(level)의 annotation이 있는 데이터셋이 없다. 예를들어, ADE20K는 scene parsing, DTD에는 texture recognition 등 데이터셋에 하나의 task의 annotation만 존재한다.
  2. 여러 데이터셋에서 나온 annotation들은 heterogeneous이다(서로 종류가 다름). 예를들어, ADE20k는 pixel-wise annotation들을 가지고 있는 반면, DTD는 image-level annotation들을 가지고 있다.

이러한 challenges를 다루기 위해, 이 논문에서는 다른 데이터셋을 다루고, 여러 level의 task를 학습하는 새로운 framework를 제안합니다.

이 framework는 단일 네트워크에서 feature의 계층적 특성을 이용합니다. 이게 어떤 장면인가를 판별할 때는, high-level feature를 사용하고, object segmentation, part segmentation등은 모든 level의 feature를 사용합니다.

이 논문에서 주장하는 contributions은 다음과 같습니다.

  1. 한번에 multiple visual concepts를 분석하는 framework 제안
  2. 여러 종류의 dataset에서 학습되는 계층적 구조의 Network 제안
  3. 이 모델이 하나의 이미지에서 다양한 정보를 찾아낼 수 있음을 발견

2. Defining Unified Perceptual Parsing

2.1 Datasets

다양하고 넓은 visual concept의 segmentation을 수행하기 위해, 이 논문에서는 Broadly and Densely Labeled Dataset (Broden) 을 사용합니다. Broden dataset이라고 표현이 계속되는데, 여러가지 데이터셋을 합치고, 이 네트워크에서 학습을 할 수 있게 간단한 조정을 한 데이터셋 입니다. 이 논문에서 Broden dataset을 위해 ADE20K, Pascal-context, Pascal-Part, OpenSurfaces, DTD데이터셋을 합쳤습니다. 결과적으로, Broden dataset에는 scenes, objects, objects parts, material and textures의 정보가 담겨있습니다.

하지만, 이 데이터셋에는 다른 클래스의 sample들로부터 unbalance함을 발견했습니다. 따라서, Broden dataset을 구성할 때, 다음과 같은 정책들을 기본으로 하였습니다.

  1. 다른 데이터셋에서부터 다온 서로다른 비슷한 concepts들을 합침. 예를 들어 ADE20K, Pascal-Context 및 Pascal-Part의 object 및 part 주석이 병합 및 통합됨.
  2. 최소 50개 이상의 데이터가 있는 class만 포함시키며, 최소 20개 이상의 part image만 포함시킴.
  3. OpenSurface 데이터셋에서 under-sample된 label을 수동으로 합침. 예를 들어, stone과 concrete는 stone으로 합치고, 투명 plastic과 불투명 plastic은 plastic으로 합침. 또한, 50게 이하의 이미지를 갖는 label도 제거함.
  4. 400 scene label이 넘는 AKE20K를 365개의 label을 가진 Places 데이터셋에 맞춤.

table1 < Broden 데이터셋의 구성 >

위의 표가 Broden dataset의 구성입니다. 여러가지 task를 위한 데이터셋을 사용하였고, 또한 성능 측정 기준을 task마다 달리 하였으며, class의 수를 맞춰주었습니다.

2.2 Metrics

모델의 성능을 측정하기 위해, 각 데이터셋의 annotations마다 다른 metrics을 사용하였습니다. semantic segmentation을 측정하기 위해 Pixel Accuracyt(P.A.)와 mean IoU(mIoU)를 사용하였습니다. image에 unlabeld area가 존재하는데, 그 부분은 계산을 할 때 제외하였습니다.

3. Designing Networks for Unified Perceptual Parsing

figure2

< UperNet의 구조 >

UperNet은 위와 같은 구조로 구성되어있습니다. 기본적으로 Feature Pyramid Network(FPN)의 형태로 구성되어있습니다. FPN이란, 피라미드 구조로, 다중 레벨 feature를 추출합니다. 또한, 피라미드의 head부분에 PPM Head를 덧붙였습니다. feature map의 encoder부분은 ResNet으로 구성되어있습니다.

각 stage를 C2, C3, C4, C5라 하고, FPN에서의 feature map output을 P2, P3, P4, P5라고 해봅시다. scene의 정보를 분석하는 작업에서는 high level feature만을 사용합니다. 장면을 분석할 때는, 전체 이미지를 보고 어떤것인지 판단해야 하기 때문입니다. object의 정보를 판단할 때는, 모든 level의 feature를 사용합니다. part segmentation은 하나의 object 내에서 이루어지므로, object와 같은 Fused Feature Map을 사용합니다. marerial에 대한 정보를 판단할 때는, low level feature만을 사용합니다. 마지막으로, texture를 판단할 때는, low level feature만을 사용합니다. 하나의 object 내에서도 여러개의 texture정보가 담겨있을 수 있기 때문입니다.

또한, texture를 학습할 때는, 전체 네트워크를 학습시킨 이후 texture만을 따로 조금 더(논문에서는 few epoch라고 표현) 학습시킵니다. 그리고 texture는 encoder에 아무런 영향(grad에 관한)을 주지 않습니다.

3.1 Implementation details

우선, 모든 classifier 앞에 convolutional head가 존재합니다. decoder부분에서, 모든 layer의 크기를 맞춰주기 위해, bilinear interpolation방법으로 P2의 scale로 맞춰주고 concat을 진행합니다. 모든 나머지 non-classifier인 convolutional layer(FPN을 포함)에서는 512channel의 output을 가지며 이후 batch normalization을 진행합니다. 그 이후, ReLU를 적용합니다. learning rate는 “poly”방식을 따라 변화시킵니다. weight decay = 0.0001, momentum = 0.9를 적용합니다. 공정한 비교를 위해, size는 450으로 resize합니다. backbone network는 ImageNet에서 pretrain된 모델을 사용합니다.

3.2 Design discussion

table2

< 다른 방식과의 비교 >

사실, 이 논문에서 주장하고있는 성능은 PSPNet보다 조금 낮습니다. 하지만, 큰 차이가 없고 계산 시간이 2배정도 빨라서 더 좋은 성능이다라는것을 주장하는 것 같습니다.

결과적으로, 실제 구현을 통해 pyramid 구조를 사용하여 high/low level의 feature를 모두 잘 찾아내며, decoder에서는 bilinear interporation을 사용했기 때문에, 비교적 적은 연산량을 볼 수 있습니다.

4. Main result

table3

< 여러 task에 대한 result >

표를 보시면, 각 task에 맞는 결과들을 볼 수 있습니다. O는 object, P는 part, S는 Scene, M은 Material, T는 Texture에 대한 task를 나타내고 있습니다. 표의 결과를 보았을 때, 하나의 task만을 하는것이 가장 높은 효율이 나왔고, 여러 task를 동시에 진행했을 때 성능이 높아지는것은 확인할 수 없었습니다. 결과적으로, 이 네트워크는 여러가지 작업을 한번에 수행할 수 있다 정도로 볼 수 있을 것 같습니다.

이 논문에서는 소개하는 main result를 다음과 같이 요약해보았습니다.

  1. 고화질의 input image에서 더욱 성능이 향상되었다.
  2. PPM을 head에 추가함으로 더욱 성능을 높였다.
  3. deconvolution대신 interpolation을 사용했으며, 1x1 convolution을 사용해 연산량을 줄였다.
  4. 서로다른 annotations에서 Multi-task learning을 진행하였다.

번외.

figure3

사실 논문에서 하나의 part로 발표된 부분인데, 제 생각에는 덜 중요한 부분이어서 번외로 넣었습니다. 논문의 저자가 object와 part간의 관계를 노드와 간선으로 표현한 표 입니다. 참고만 하시면 될 것 같습니다.

References

  • Xiao, Tete, et al. “Unified perceptual parsing for scene understanding.” Proceedings of the European Conference on Computer Vision (ECCV). 2018.
  • Github https://github.com/CSAILVision/unifiedparsing