본문 바로가기
AIML 분야/Video Classification & Detection

correspondence에 대해 드는 생각 + 연구해야하는 것?

by 포숑은 맛있어 2020. 12. 23.
반응형

Active Bleeding 영상을 봤다.

수술 데이터에서는 특히나 무엇을 tracking해야하는가?에 대한 이슈가 매우매우 중요해보인다.

이건 그리고 self-supervised만으로는 안된다고 생각.

하지만 fully supervised로 하기에는 labeled 데이터가 부족하기 때문에, self-supervised가 필요하기는 하다.

 

이 아이디어는 베이스라인 논문, BERT 등에서도 똑같다.

BERT & transformer encoder가 여기서의 encoder가 되는거다. pretext task는 빈칸추론이 되며 (supervision=위치정보가 된다), 이를 잘 하는 인코더를 만든 것이다.

그러나 여기서는 "visual correspondence"를 잘 맞추도록 supervision을 두고싶고, 그래서 이 논문을 베이스라인으로 잡았다.


정리하면 다음과 같다.

 

연구 목표

1. self-supervised 방식으로 Surgical Domain에서의 representation space를 만들어주는 좋은 encoder를 만들자!

2. 그리고 이를 surgical domain의 downstream tasks에 잘 적용해보자. (bleeding, detection, phase ...)

 

Baseline과 다르게 Surgical Domain이기 때문에 고려해야하는 사항

1. occlusion, 갑자기 나타나거나 사라지는 프레임이 많다.

물론 VLOG dataset은 일반 kinetics, UCF등과는 다르게 더욱 그런 프레임이 많겠지만 수술 데이터는 이게 매우 어렵다.

=> 문제는, tracker의 성능이 좋아지면 encoder의 representation 능력은 감소하므로 tracker는 간단하게 둬야한다는 것이다.

=> baseline처럼 cycle loss를 그대로 쓰더라도, baseline처럼 그냥 resnet을 쓰면 안된다.

 

2. downstream task에 따라 'where to focus?'에 대한 답이 달라진다.

dense correspondence를 잘 학습했다고 치자. 그런데 bleeding과 phase estimation에서 중요하게 봐야하는 location은 천지차이일 것이다.

baseline 논문은 fine-tuning이 없었으나, 수술 데이터에서는 fine-tuning이 필요하다. 이에 대한 supervision은 downstream task내에서밖에 줄 수 없다. 따라서, downstream task에서는 supervised fine-tuning 과정이 필요하다.

=> 그 where?에 대한것을 위해, encoder output feature map Z (여기까진 pretrained에서 얻어짐) 의 각 location마다 weight score값을 부여하여 (여기가 fine-tuning) 이걸 학습하도록 해야한다고 생각한다. 

 

1번이 더 중요하다. 

 

 

그렇다면 이런 방법은 어떨까.

1.

가장 먼저, 수술 도메인에서의 semantic correspondence는 self-supervised 방법으로 representation을 배운다. latent space를 잘 만드는 일종의 encoder를 만드는 식이다. 이렇게 하여 surgical domain을 볼때의 correspondence는 어떻게 판단해야하는지를 여기서 배우는거다. 이렇다면 unlabeled 회사 데이터, cholec80 등의 수술 도메인의 여러 데이터를 쓰면 다 도움이 된다고 생각한다. (뭣하면 그 논문의 pretrained model을 가져와 finetuning을 해도 되고, 그냥 처음부터 돌려도 될것같다.)

 

이를 위해 supervision을 뭘 줘야할까? 그 논문에서는 cycle loss를 줬다. 이 방법은 조금 후에 다시 생각하자.

 

2. where to focus on?

이것은 downstream task에 따라 다르다고 생각한다. 특히나 surgical domain이라면 더더욱. (물론 real-world도 background는 방해되는 정보일수 있겠지만, surgical domain이면 더 그렇지 않을까?)

다시말해, 'where?'은 task마다 다르므로 label이 필요하다는거다. 위에서 얻은 latent variable (vector) z가 주어지면, 그 판단에 기여하는 (activation되는) 부분에만 집중해야한다. 너무 어텐션 빌런이 되는 기분이지만, 앞에서 얻은 latent variable을 받으면 추가적으로 attention weight만 얻어가지고 downstream task를 수행하는거다.

 

이렇게 생각하면, 먼저 phase와 bleeding을 생각해보자. 그리고 instrument detection은 (detection 잘 몰라서 부족하지만...) 어떤지도 고려해보자.

1. 수술 데이터에서 학습. self-supervised learning. latent variable z를 만들기. (논문처럼 tracking 기반으로 supervision 줘서 학습할지, 트랜스포머처럼 단순 빈칸추론을 해야하는지, GAN같은걸 어떻게 쓸지 등은 더 서베이하며 고민. 아무튼 z를 사용하여 energy를 계산하여 어떤 supervision을 추가로 줘야한다. 근데 consecutive한 프레임에서 배울거라는걸 생각하면 뭘 슈퍼비전으로 둬야할지 고민해야한다.)

2. 이 representation으로 downstream에서 수행하는데, representation은 finetuning하지 말고 대신에 그 task에 맞는 object를 찾는 방향으로 생각하자. 여긴 supervised.

반응형

댓글