안녕하세요 오늘 제가 리뷰할 논문은 CVPR 2018에 accept된 multi task 관련 논문인 PAD-Net 입니다.
먼저 해당 논문의 contribution을 간단히 설명을 하자면
1. 새로운 multi-task guided prediction and distillation network인 PAD-Net을 제안했다.
2. 세가지의 다른 multi-modal distillation module을 고안하였다.
3. NYUD-v2와 Cityscape dataset에 대해서 실험한 결과 좋은 성능을 나타내었다.
그럼 PAD-Net에 대해서 조금 더 자세히 설명을 시작하도록 하겠습니다.
PAD-Net의 architecture는 위의 그림과 같습니다. PAD-Net은 4개의 주요 구성 요소로 이루어져있습니다.
1. Deep feature를 만드는 Fron-End-Encoder
2. Intermediate prediction을 생성하기 위해 이전 구성 요소의 deep features를 사용하는 intermediate multi-task prediction module.
3. Intermediate prediction에서 나온 유용한 multi-modal 정보를 이용해서 final task를 향상 시키는 multi-modal distillation module.
4. 최종적으로 증류된 정보를 이용해서 depth estimation과 scene parsing을 하는 decoder.
그럼 위에서 간략히 설명한 4개의 구성 요소를 자세히 들여다 보도록 하겠습니다.
Front-End-Network Structure.
Front-end backbone CNN으로는 AlexNet, VGG, ResNet과 같은 것을 이용했다. Multiple intermediate task 예측을 위해더 나은 deep representation을 얻으려고 CNN backbone의 last convolutional layer를 그대로 직접 사용하지 않았다.
Multi-scale feature aggregation procedure이 수행되었다. Figure2와 같이 backbone CNN의 각각 다른 의미론적 layer , ,이전 scale의 feature map을 결합한다.
Deep Multi-Task Prediction
Front-end CNN으로부터 deep features를 이용하면서, 4개의 sets of task-specific feature map을 만들기 위해서 deconvolutional operations를 수행한다. Main task인 depth estimation과 scene parsing task를 위해서 N channel, 다른 보조적인 task를 위해서 N/2 channel feature를 얻는다. Feature map의 해상도는 4 개 작업에 대해 동일하고 front-end feature map의 해상도의 2 배가되도록 만들어졌다.그런 다음 별도의 convolution 연산은 해당하는 네 가지 작업에 대한 score map을 생성하기 위해 수행되었다. Score map은 bilinear interpolation을 통해 입력 RGB 이미지의 해상도의 1/4로 만들어지고, Rescale된 Ground-Truth로 4 개의 intermediate tasks를 학습하기 위해 4 개의 다른 loss function이 추가되었다. Intermediate multi-task learning은 front-end CNN을 최적화하기위한 deep supervision을 제공 할뿐만 아니라 최종 작업의 입력으로 추가로 사용되는 귀중한 multi-modal predictions을 제공하는 데 도움이된다.
Deep Multi-Modal Distillation
위의 그림은 Multi-modal Distillation module 세가지를 설명하는 그림 입니다. Multi-modal distillation module A부터 C까지 순서대로 설명을 하도록 하겠습니다.
Multi-Modal Distillation module A
이것은 간단한 basic distillation module이라고 볼 수 있다. Output이 단순히 앞의 4개의 task의 feature map과 fused되어서 결과를 내는 것이다. 여기서 Fio <-- CONCAT(Fi1 ,.... ,FiT ) 로 F는 feature를 의미하며 i는 i번째 training sample을 의미한다. 결국 i번째의 모든 task feature를 concat해서 최종 output feature를 만들고 이것으로 최종 결과를 만드는 것이다.
Multi-Modal Distillation module B
Module A은 두개의 최종 task에 대해서 같은 feature map set으로 결과를 낸다. 이와 다르게 module B는 각각의 최종 task에 맞는 각각의 feature map set을 배운다.
위의 식으로 설명을 할 수있는데, k번째는 final task를 뜻하고, 여기서 Wt,k는 t 번째 feature map과 k 번째 feature map에 해당하는 convolution의 매개 변수를 의미한다. 즉 예를 들어 depth를 예측한다고 하면, 여기서 k는 depth task를 의미하고, t는 depth task를 제외한 surface normal, segmentation, contour task를 말한다. 그리고, Wt,k와 Fit 사이의 수식은 convolution 연산을 의미한다.
즉 위의 수식은,
[depth conv param, surface normal conv parameter] 와 i번째 surface normal feature를 convolution 연산
+ [depth conv parameter, segmentation conv parameter]와 i번째 segmentation feature를 conv 연산
+ [depth conv parameter, contour conv parameter]과 i번째 contour feature를 conv 연산
한것을 모두 더한 후 최종적으로 depthd의 feature를 더해주어 최종 output depth feature를 만드는 것이다.
위와 같이 task specific distillation feature map을 사용하면 network는 더 많은 각각의 개인적인 task의 정보를 보존할 수 있고, smooth convergence를 용이하게 할 수 있다.
Multi-Modal Distillation module C
Module C는 distillation task에 attention mechanism을 도입한다. 위의 Module B에서와 같이 task specific하게 전달하는 것이 좋지만, 전달되는 정보의 flow가 항상 유용하지만은 않을 수 있다. Attention은 여기서 flow를 통제하는 gate 함수와 같이 역할을 한다. 즉, network가 다른 feature로 부터 오는 것을 자동적으로 집중할 지, 무시할 정보인지를 학습할 수 있도록 만드는 것이다.
여기서, attention map Gik는 feature maps Fik로 부터 생성된다. 위의 식을 보면, attention map Gik는 convolution parameter인 Wgk와 feature map인 Fik를 convolution 연산 후 sigmoid function을 통과 시켜서 얻게 된다.
그리고 나서 Module B에서 했던 것과 유사하게 진행하는데, Module C에서의 다른 점은 위에서 구한 attention map을 element wise multiplication을 한다는 것이다. ⊙는 element-wise multiplication을 의미한다. 즉, 위에서 한 것과 같이 task specific하게 적용을 하되, 집중을 할 영역인 attention map 까지 만들어 주어 필요한 부분만을 task specific 하게 적용한다는 것이다.
Decoder Network Structure
작업 별 Decoder의 경우 두 개의 연속적인 deconvolutional layer를 사용하여 픽셀 수준 예측을 위해 증류된 feature map을 upsampling한다. 마지막으로 convolution 연산을 사용하여 각 최종 작업에 대한 score map을 생성한다.
Result