(7강) Instance/Panoptic segmentation

💡
Semantic Segmentation 보다 더 진보한 형태의 Task에 대해서 알아본다.

Instance segmentation

Instance Segmentation은 Class와 Object를 구분하는 Task로서, Semantic Segmentation과 Object Detection과 유사한 기능을 수행한다. 각의 Task를 수행하는 것과 유사하므로, 더 난이도가 높고 응용 분야가 넓은 Task로 이해할 수 있다.

물체의 Class를 분류하며, 각 물체끼리도 구분한다.

Mask R-CNN은 Instance Segmentation Task의 대표적인 모델이다. 기본적인 구조는 Faster R-CNN과 유사하하므로, 추가된 부분만 확인해보자.

RPN에서 RoI Pooling 대신 RoI Align을 사용해, 위치에 대한 성능을 개선했다. RPN에서 Mask Branch를 통해, 각 Object를 구별한다.

이 논문에서는 이처럼 기본 구조에서 Branch를 추가하는 것만으로 새로운 Task를 해결할 수 있음을 소개했다. Mask Branch 외에도, Keypoint Branch를 활용해 Pose Estimation Task에 적용하는 등의 응용을 선보였다.

YOLACT는 Single-stage 구성으로, Instance Segmentation Task를 풀고자 했다.

FPN 구조를 통해 고해상도의 Feature Map을 활용했다. Protonet을 통해 Mask의 재료가 되는 Proto Component를 생성한다. 각 Object와 이에 대응하는 Proto Component의 선형결합으로 Mask를 생성한다.

YolatctEdge는 YOLACT를 경량화 한 모델이다. Video에 대해서도 Instance Segmentation을 할 수 있도록 확장되었으며, 소형 디바이스에서도 동작할 수 있게 되었다.

YOLACT의 Layer 2개를 이식받은 형태로 구현되어있다.

Panoptic segmentation

Panoptic Segmentation은 Instance Segmentation에서 더 진보한 형태로, 물체가 아닌 배경까지 Segmentation하는 형태의 Task이다. 단계적으로 발전한 Task인 만큼, 앞선 모델을 개량하는 방향으로 발전이 이루어졌다.

물체가 아닌 배경까지 Segmentation을 수행한다.

UPSNet은 FPN구조를 기본으로 하고 있으며, Panoptic Head를 추가하는 형태로 구현되었다.

FPN 구조를 통해 고해상도의 Feature Map을 활용한다. Instance Head에서 물체의 영역을 추출한다. Semantic Head에서 물체와 배경의 Segmentation을 구성한다. Instance Head 영역에 해당하는 Mask에 Segmentation을 적용한다. 물체에 해당하지 않는 부분을 Unknown Mask로 할당하고, 배경에 해당하는 Segmentation을 적용한다. 각 Head를 통해 정보를 추출하고, Panoptic Head에서 종합하여 출력한다.

VPSNet은 Panoptic Segmentation Task를 Video로 확장한 형태의 모델이다.

시간에 따라 달라지는 여러 Frame의 Image를 활용한다. ϕ\phi라는 Motion Map을 활용해, 시간 별 프레임의 모션을 Tracking한다. 시간별로 각 Pixel의 대응점을 찾고, 적용한다. 이를 통해 동일한 Object에 동일한 ID를 부여한다.

Landmark localization

Landmark Localization은 물체의 특정영역을 추정 및 추적하는 형태의 Task이다.

Landmark Localization Task의 예시

이 Task를 푸는 방법으로 먼저 제시 되었던 것은, 각 Landmark의 좌표 위치를 Regression하는 형태의 모델이었다. 하지만, 결국 정확도와 일반화의 문제로 인해 새로운 모델을 필요로 했다. 새로 제안된 방법은 Heat Map을 활용하는 형태로, 각 Channel이 하나의 Landmark의 위치를 추정하는 형태로 구현되었다.

Hourglass Network는 Landmark Localization Task에 적합한 형태로 제안된 모델이다.

FPN구조를 여러번 쌓은 형태로 구현되어있다. Skip Layer에 Convolution Filter를 추가해, 학습 가능토록 구성했다. Upsampling 시 Feature Map의 연산은 덧셈 연산을 사용했다.

DensePose는 희소한 일부 Landmark를 추정하는 것이 아니라, 신체 전체를 Estimation하고자 한 모델이다.

Mask R-CNN의 Mask Branch 대신, UV Branch를 활용한 구조이다. 표준 3D 모델의 각 부위를 표현하는 UV Map의 각 좌표를 Landmark로 활용한 형태이다. 각 좌표의 움직임을 Tracking하여 인체의 전체 형상인 3D를 표현할 수 있다.

RetinaFace는 FPN구조에 다양한 Task를 수행할 수 있는 Branch를 얹은 형태이다. 이는 현재 CV 모델링의 경향을 잘 반영한 모델이다. 다향한 Task를 수행할 수 있도록 구성된 Backbone Network는 다양한 Task로부터 생성되는 공통적인 정보를 효율적으로 학습할 수 있게 되며, 모든 Task에 적합한 모델이 된다.

RetinaFace 모델의 구조 예시

Detecting objects as keypoints

기존의 Object Detecting 방법을 개선한 방법에 대해 알아보자.

CornerNet은 좌상단과 우하단의 위치만을 통해 Unique한 Bounding Box를 구성하고자 한 아이디어이다.

판별하는 Object만큼, Channel의 값이 생성된다. 한 Object에 대한 좌상단과 우하단의 위치 쌍을 계산할 수 있도록 표현한다.

CenterNet은 Object의 중심점을 기준으로 Bounding Box를 구성하고자 한 아이디어이다. Object의 중심점을 찾는 과정에서 Classification의 성능이 향상되는 효과를 얻을 수 있었다. 먼저 제안된 형태는, CornerNet에서 Center의 위치만 포함된 형태였다. 이후, Center를 기준으로 Width와 Height를 통해 표현하는 방식으로 개선되었다.

CenterNet(2)의 예시


(8강) Conditional generative model

💡
입력 Condition에 해당하는 Output을 생성하는 모델에 대해서 알아본다.

Conditional generative model

Conditional Generative Model은 주어진 입력으로부터 특정 Output을 생성하는 형태의 모델을 의미한다. 일반 Generative Model은 Random한 Sample을 생성하는 모델로 사용자가 이 과정에 개입하기 어려웠던 것에 반해, 이 모델은 사용자가 Control할 수 있다는 장점이 있다. 사용자의 Input을 특정 조건으로, Output을 조건에 해당하는 확률로 이해할 수 있다.

대표적인 생성모델인 GAN을 살펴보자. Conditional GAN은, 일반 GAN과 달리 사용자의 조건부 입력을 Input으로 받는다.

GAN과 Conditional GAN의 예시

Conditional GAN을 활용하면 Image-to-Image Translation과 같은 Task를 수행할 수 있다. 특정 Style이나, 높은 Resolution을 통해 학습을 진행한 후 원하는 Input을 통해 생성을 수행하는 것이다.

GAN 이전에는 CNN 구조만을 활용해 이와 같은 문제를 풀고자 했다. 이 때 당시에는 Discriminator 없이, 단순한 Loss를 통해 학습을 진행했다. L1 혹은 L2 Loss를 통해 학습시킨 모델은 일정한 성능을 낼 수는 있었지만, 전체적으로 뿌연 형태의 결과를 생성했다. 왜냐하면, Loss의 형태 상 Sharp한 Image는 높은 Loss를 가지기 쉽기 때문이다.

Loss가 최대화 되지 않도록, 중간 정도의 성능으로 모델이 학습한다.

GAN은 Loss가 Discriminator로부터 발생하기 때문에 더 Sharp한 형태의 Image를 생성하도록 학습되는 것이다.

Image translation GANs

Image Translation은 주어진 Image를 통해 유사하지만 다른 Image를 생성해내는 Task를 의미한다.

Image Translation의 예시

Pix2Pix는 이와 같은 Task를 풀고자 등장한 모델로, GAN Loss와 L1 Loss를 모두 활용한다.

GAN Loss를 통해 더 Sharp한 Image를 만들도록 학습된다. L1 Loss를 통해 Image의 Content를 잃지 않도록 학습된다.

Pix2Pix는 좋은 성능을 보이지만, 학습을 위해 Paired Data를 필요로 한다. 즉, 특정 Input에 대해 기대하는 Output의 형태를 쌍으로 하는 Data가 필요한 것이다.

CycleGAN은 Pix2Pix와 달리 Paired Data를 필요로 하지 않도록 구성된 모델이다.

CycleGAN은 Cycle Loss를 도입했다. Cycle Loss는 Image를 변환한 후에 재변환하여 원래의 원본 Image를 생성할 수 있도록 학습시키는 Loss이다. GAN Loss를 통해 Image의 변환이 원하는 Style과 유사한지 판별한다. Cycle Loss를 통해 원본 Image의 Content를 유지하는지 확인한다. 원본 Image를 Input이자 Cycle Loss의 Ground Truth로 사용하기 때문에 Paired Data를 필요로 하지 않는다.

GAN Loss는 Pre-trained Network가 필요하지 않고, Data가 있다면 어떤 형태로든 생성모델을 학습시킬 수 있다는 장점이 있지만, 그만큼 학습이 어렵다는 단점이 있다. 이와 같은 어려움을 해결하고자 Perceptual Loss가 등장했다. Perceptual Loss는 Pre-trained Network를 필요로 하지만, 간단하게 Forward와 Backward의 형태로 학습을 진행시킬 수 있는 장점이 있다.

Perceptual Loss는 Image Transform Network만을 학습시키는 용도로 사용된다. Loss Network (VGG16)은 Loss를 계산하기 위해 존재하며, 학습되지 않도록 구성한다. 특정 Image xx를 변환한 y^\hat{y}를 생성한다. Content Target은 원본 Image인 xx를 사용한다. (yc=x)y_c = x) Loss Network를 통해 y^\hat{y}ycy_c의 Feature Map을 비교해 Feature Reconstruction Loss를 계산한다. Style Target은 변환하고자하는 Style의 Image를 사용한다. Loss Network를 통해 y^\hat{y}ysy_s의 Feature Map을 구하고, Gram Matrices을 통해 Style Reconstruction Loss를 계산한다.

Various GAN applications

Conditional GAN을 활용한 사례는 무수히 많다. 특히 Deepfake와 같은 기술은 널리 알려져 있는데, 악용을 막기 위한 다양한 기술들이 연구되고 있다. 이외에도 프라이버시를 보호하는데도 활용되기도 하며, 영상 조작과 같은 분야에서도 널리 사용되고 있다.


Reference

'네이버 부스트캠프 AI Tech' 카테고리의 다른 글

[U] Day 36 - Lightweight I  (0) 2021.03.28
[U] Day 35 - CV V  (0) 2021.03.26
[U] Day 33 - CV III  (0) 2021.03.26
[U] Day 32 - CV II  (0) 2021.03.26
[U] Day 31 - CV I  (0) 2021.03.26

+ Recent posts