"K-Net: Towards Unified Image Segmentation"
논문: https://arxiv.org/pdf/2106.14855v1.pdf
!! 논문 읽으면서 쓰는 글이라 의역이나 사족 달아놓은게 많습니다 !!
arxiv sanity를 뒤지며 수많은 transformer에 기분이 상할 즈음에 트랜스포머가 아닌걸 발견했다.
mmdetection을 시작으로 mmaction mmsegmentation 등, 많은 학습모델들을 지원해주는 open-mmlab에서 나왔다!
역시 mmcv 시리즈에 코드를 공개할 예정으로 보인다! 이미 나왔는지는 확인 안해봄
K-넷이라길래 애국 코인인줄 알았더니 아니었다! 무려 중국 모델
코리안-네트워크 아니고 커널-네트워크다
K-방역 K-반도체 뭐 이런건줄 알았어
Abstract.
Semantic, Instance, Panoptic Segmentation을 다 할 수 있는 모델이다!
학습 가능한 kernels들의 그룹이라는 형태로 인스턴스와 시맨틱 카테고리들을 분할한다.
이 커널 각각이 mask를 만들건데, 잠정적으로 instance이거나 stuff class이다.
커널 업데이트 하는것도 input 이미지와 연관해서 의미있는 그룹에 넣도록 학습하는 것이다.
end-to-end 학습이 가능하며, NMS나 box도 필요 없다.
성능은 대략,
- Panoptic: MS COCO (SOTA)
- Semantic: ADE20K (SOTA)
- Instance: MS COCO (Cascade Mask R-CNN급)
역시 Instance는 object detection 기반의 모델이 좋은건가? SOTA라는 얘기가 없어서
세가지 task들은 비슷해보이면서도 인지해야하는게 굉장히 다르기 때문에 모델 구조도 다르게 발전해왔다.
그런데 이 논문의 Kernel이 뭐길래? 각 태스크를 위해 커널이 뭘 배워야할까?
이걸 생각하기 전에, 그러면 각 분야의 기존 모델들이 무엇을 어떻게 배워왔는지를 머릿속에 잠깐 셋팅해주는게 좋겠다.
Semantic Segmentation은 픽셀단위의 dense classification으로 다뤄진다.
당연히 그 픽셀의 RGB값만으로는 알 수 없으니까 주변 정보들을 보는게 중요하고, 그러니까 receptive field도 중요하고 뭐 그런거 아닐까
앞에 백본에서 visual feature들 뽑고, 뒷단에서 segmentation을 위해 가공하는 DeepLab이나 OCR같은거 생각해보면 되겠다.
그런 연산들 기본 단위는 뭐가 되었든 일단 convolution으로 여러 채널을 가지고 있고, 다시 말해 네트워크를 학습함으로써 'static kernels'을 배워 semantic segmentation을 수행한다고 나는 이해했다. (왜 스태틱 커널인지 자세히 설명 없음) 뭐 어텐션같은거 넣으면 다이나믹이라고 부르겠지만서도...
암튼 이 논문의 K-Net의 경우, static이 아닌 dynamic kernels를 배운다고 한다.
Instance Segmentation은 거의 object detection 모델 기반으로 발전했다고 알고있다.
top down, bottom up 접근방식으로 나뉜다는데, 탑다운은 먼저 bbox를 잘 찾아낸 다음 각 bbox에 맞는 mask를 잘 생성하도록 한다.
Mask R-CNN이 그냥 Faster RCNN에 FCN을 붙인 모델이다! 여기에 mask scoring branch를 추가하거나, cascade 구조를 덧붙인 논문들도 있다고 한다.
bottom up의 경우, 먼저 semantic segmentation을 한 다음에 각각의 픽셀들을 그룹핑하는 구조이다. top-down보다 성능이 안좋은 경우가 많다.
최근에는 one stage로 하는 경우도 있는데, 이건 dense하게 sliding window를 하거나 dense grid방법 등이 있다고 한다.
Panoptic Segmentation은 SS와 IS를 융합한 task이다. 아무래도 instance가 골칫거리인듯. SS 모델 + (IS 모델 or pixel grouping)가 주된 접근법이라고 한다. 최근에 transformer 기반의 detection 모델인 DETR가 나오면서 instance에 대한 처리는 end-to-end가 가능해졌기땜에 간소화 가능해졌으나, 그럼에도 SS와 IS를 한방에 하는 어떤 모델이 있는게 아니라 각각 담당하는 파트가 다른 상황이다.
하지만 이 논문에서 제안하는 K-Net에선 segmentation들을 같은 관점에서 바라보기 때문에, 커널의 형태로 모델이 unified되었다!
본론에 들어가기에 앞서, 커널에 대한 얘기도 있다.
Dynamic Kernels. CNN 커널들은 대부분 static하다. 예를들어 input 주어지면 512개의 채널은 이미 학습된 weights를 가지니까. 어떤 input이든 피쳐를 잘 뽑을 수 있도록 학습하는게 목표니까. 그래서 representation에 제한이 있다.
SS에서 다이나믹 커널을 도입한 사례가 있다. 예를 들면 receptive fields를 늘리거나, 멀티스케일을 다루는 것도 있다.
K-Net에서의 다이나믹 커널은 (input features들 보다도) segmentation 커널들의 "discriminative capability"를 향상시키는 것이 목적이라 좀 다르다.
최근에 IS, PS에서 다이내믹 커널을 사용하는 경우가 있으나, dense feature maps으로부터 추출하기 때문에 커널이나 중복 마스크를 제거하기 위해서 NMS, kernel fusion등의 과정이 필요하다.
본론.
1. K-Net 구조?
일단, 어떤 세그멘테이션이든간에 각각의 픽셀들을 -> 어떤 의미적인 그룹에 할당해야한다. 최대 그룹의 개수를 N이라고 하자.
SS나 IS라면 모든 가능한 클래스, 오브젝트 최대 개수가 될 것이고, PS의 경우 stuff 클래스의 개수 + 이미지에서 가능한 오브젝트 개수라고 한다.
따라서, N개의 커널을 정의하여 그룹으로 보면서 각 픽셀들을 여기 할당하겠다.
글 읽기 귀찮으니 아래 그림부터 볼까. 팬옵틱에서의 K-Net 구조란다.
퇴근해야지
나중에 읽어야지
댓글