일단 baseline으로는 두개의 논문으로 지정했다.
하나는 AL+KD이며, 다른 하나는 Task-Aware Video CSL 이라고 하자.
먼저 각각의 특징.
Task-aware Video CSL
아이디어 관점
- self-supervised learning.
- task-aware한 temporal augmentation이 도움이 된다.
- 단, 모든 pretext task가 도움이되는 것은 아니며, 연산 cost를 생각해야한다고 언급한다.
- 내가 이 연구를 좋아하는 이유는, video domain에 augmentation한다는 아이디어에 굉장히 회의적이었던 시각을 바꿔줬기 때문이다. semantic이 훼손되면 비디오는 아예 의미없음이 아니라 class 자체가 바뀔 수 있기 때문에 학습에 노이즈가 되어버린다고 생각했는데, task-aware하게 만듦으로써 이를 극복한다는 아이디어가 좋았다.
- 그래서 내가 self-supervised + video domain 연구를 진행한다면 augmentation에 대한 메타정보를 어떤식으로든 줄거다. 아니면 이 논문처럼 task-aware하게 하는 다른 방식을 고려해보거나.
구현 관점
- 난감하다. 코드 베이스라인이 있어야 뭘 바꾸든지 할 것 같다.
논문만 보고 구현을 할 수는 있을텐데 (헤드만 붙이고 contrastive learning 하는 부분 만들면 될테니까) 각종 pretext task들을 정확히 구현할 수 있나? 살짝 의구심이 든다. - 하지만 pretext task 자체는 여기서 처음 제안한 게 아니기 때문에, 또 여러개 구현해놓온 코드 베이스가 있는지 확인한다면 만들 수 있을지도. Practical하게 연산량이 그나마 괜찮은 두개의 방법만 구현하면 되니까.
- 상대는 페이스북이기 때문에 논문이 붙으면 코드를 공개하지 않을까? 아마도 CVPR타겟?
일단 아카이브 논문에는 코드 공개에 대한 언급은 일절 없다.
유일하게 코드가 언급된건 백본. 궁금하진 않지만 PySlowFast의 slow만 썼다고 한다. 그냥 3D ResNet이잖아... ㄱ-
AL+KD
아이디어 관점
- Student 학습을 위해 부족한 데이터? => MixUp을 통해 보충한다.
- 합성 데이터가 너무 많은데? => Active Learning 으로 뽑는다.
몇 사이클 안 돌려도 mixup이 없는 것 보다는 성능이 괜찮았다. - Teacher의 Soft-Label을 통해 학습한다!
구현 관점
- 코드를 곧 공개할것이라고 깃허브 링크를 걸어놨다. 하지만 아직 안 올라왔다.
CVPR 논문인만큼 깜빡하고 안 올라오는 등의 일은 일어나지 않을거다.
확장 가능성보다는 일단은 이 아이디어가 실용성이 있는가 / 구현하는데는 난이도와 현실적인 문제(computation, data수급)가 없는가 / 얼마나 걸릴 것인가에 대한 논의가 중요하다고 생각.
따라서 여기에 더 초점을 두고 서술할 예정.
Idea 1.
아래 Backbone은 하나의 예시이다.
Teacher-Student를 같은 모델을 쓴다.
- Teacher Model : BTSNet + 수술 labeled data에 전부 학습, 성능 영혼을 끌어올려 할 수 있는한 최대 성능을 냈다고 가정.
- Student Model : BTSNet (+alpha)
- BTSNet을 위주로 고른 이유 : 정말 같은 backbone에서도 성능 향상이 있나 보려고. teacher를 이길 수 있는가?
- 그 외 : 회사의 실질적인 product을 위한 ECO, 3D/2D ResNet 등의 경량화된 모델.
- ECO 모델만 가지고 학습하여 얻은 성능 vs BTSNet으로 KD하여 student를 ECO로 두고 unsupervised training까지 한 경우의 성능 비교하기
- 성능 비교할때, Active learning cycle을 둬서 대충 몇개의 pool / 몇번의 learning cycle이 있을때가 가장 효율적인지 측정하기
이때 가장 중요한 고민 : Unlabeled Data pool에 어떤 것을 둘 것인가?
다른 말로, MixUp 대신에 비디오에서는 augmentation 기법으로 무엇을 쓸 것인가? / (unlabeled 데이터가 안 부족하면) augmentation을 안쓰는건 어떤가?
- 물론 temporal 정보를 보게 하는건 중요하다.
- 하지만 task-aware CSL 연구에서 알 수 있듯이, 그냥 적용하는건 성능을 저하시킨다.
이걸 막으려면 task-aware하게 하는 모듈이 필요하다. - temporal 정보를 훼손시키지 않는 augmentation 기법의 경우에는 성능이 무난하게 향상된다고 한다.
- 그렇다면 우선은 augmentation을 사용하지 않는 것으로 가정하고 넘어간다.
회사의 AL 필요성을 생각하면 없는 게 맞을 수도 있고, 이 파이프라인 구축할 생각 하면 처음에는 단순화시키는 게 낫다.
이 고민을 위해 회사에서 먼저 정해져야하는 것
- Active Learning 필요하다고 하셨는데, 동영상 전체 단위로 뽑는지, 아니면 끊어서 뽑는다면 단위가 어떻게 되는지?
- 모르기 때문에 일단은 비디오 단위라고 적고 아래에 쭉 전개했다.
대략 생각한 파이프라인.
- Active Learning으로 뽑을 데이터의 대상 : (augmentation 없는) video 단위.
- Active Learning strategy: 생각해야함. 있는거 써도 상관 없을 것 같음. uncertainty 기반으로 하거나, feature space상에서 margin에 있다거나 그런 데이터를 뽑음
ppt로 다 만들었으니 넘어가고 다음 것을 고민하자.
Self-Supervised Learning의 활용?
www.youtube.com/watch?v=C4UQWJcp7w4
모르면 공부를 해봐야지 뭐.
아직 안봤는데, 일단 self-supervised learning을 하는 이유는 결국 label이 부족해서잖음. representation을 잘 배우네 뭐네 해도 결국 시작점이었던 샴 네트워크, 퓨샷러닝이 시작한 이유가 레이블 부족이잖음.
일단 이 사실을 염두하고 보도록 하자.
수술 도메인이라고 생각을 해볼까.
근데 기존
Idea 2.
그리고 비전 분야도 찾아보자.
'AIML 분야 > self supervised, Learning Theory 등' 카테고리의 다른 글
[Active Learning] A Survey of Deep Active Learning 읽기 (0) | 2021.02.23 |
---|---|
[Active Learning] 서베이 하기 (0) | 2021.02.23 |
[연구 노트] Deep Active Learning 베이스라인 코드 리뷰 + 내 연구 (0) | 2021.01.15 |
Self-Supervised Learning 몰라서 공부하는 글 (0) | 2020.12.21 |
(작성중) Circle Loss 논문 읽는 중 (0) | 2020.12.16 |
댓글