오늘 소개드릴 논문은 볼수록 여러 BIZ에 적용할 만한 사업 아이디어가 많이 떠올랐던 재미있는 논문이었습니다.
[동영상1]은 드라마에서 캡쳐한 '김치싸대기'를 100번 반복해놓은 영상( https://www.youtube.com/watch?v=1fdtnml--Nc )이 정말 100번 반복을 잘했는지 확인해본 영상이고 정말 100번이 맞았습니다. 물론 직접 카운트 한 것이 아니라 아래 소개드릴 논문을 기반으로 한 코드가 카운트 해주었습니다.(참고로 영상의 숫자는 원본에 없었고 프로그램으로 넣었습니다.)

Counting Out Time: Class Agnostic Video Repetition Counting in the Wild (CVPR 2020)
심장박동, 스쿼트, 지구 자전, 공장제조라인, 연탄나르기, 교통 등의 공통점은 특정 행동이나 현상이 반복적으로 발생한 다는 것입니다.
이러한 현상이 얼마나 자주 어떻게 발생하는지 자동으로 분석할 수 있으면 여러가지 분야에서(공장, CCTV, 헬스케어 등) 활용할 수 있을 것입니다.
문제는 이런 반복현상(action unit)이 아주 똑같이 반복한다면 template 기반으로 쉽게 구현할 수 있을것 같은데 조명, 불필요한 움직임, 변화하는 속도 등 여러 noise에 의해서 난이도가 매우 높아집니다. 이러한 문제를 해결하기 위해서 DeepMind에서 새로운 논문을 냈습니다.
이 논문은 반복적으로 도구를 사용하는 사람, 날개를 펄럭이는 새, 진자 등의 다양한 분야의 반복적인 행위를 캐치할 수 있는 RepNet를 제시합니다.
RepNet architecture
논문을 보기전에 Periodicity Estimation, Temporal Self-similarity Matrix 두 가지에 대해서는 미리 보시면 좋을 것 같습니다.
RepNet은 첫 번째 그림과 같이 하나의 비디오로부터 이미지를 뽑아내고 각 이미지에 대하여 self-similarity를 구한 후 반복의 주기와 길이를 예측 후 반복 장면을 Count를 하는 논문입니다.
[그림2]을 보시면 각 단계에 대해서 자세히 나와있습니다. 우선 Video 파일을 encoder를 거쳐서 각 프레임을 임베딩합니다. 그 다음 Temporal Self_simliarity Matrix를 구하게 되는데 이 simiarity는 각 장면을 가로와 세로로 배치한 후 유사도를 구합니다. 그럼 같은 프레임끼리는 일치하게되므로 대각선으로 노란선이 명확히 생길 것이고 중요하게 봐야할 부분이 그 옆에 노란+초록색 대각선들입니다. [그림1]에서 처럼 이렇게 반복되는 것의 길이를 구할 수 있고 그 카운트도 셀 수 있습니다. 물론 네모 외곽들이 흐린 이유는 반복의 시작과 마지막 부분이라 겹치는 부분이 적어서 입니다.
여기까지는 이전에도 유사한 시도들은 많았지만 [그림3]의 c-d와 같이 속도가 변화하거나 2가지 동작이 섞여 있을때 자동으로 인지하는 것은 어렵습니다. 그래서 Prediod Predictor 부분을 TSM을 업샘플링하여 2D 라인을 32채널로 만들고 (64*32) 각 단계를 Transformer를 통해 Preriod Length Predictor와 Periodicity Predictor로 보내서 최종 loss를 최적화하는 쪽으로 트레이닝을 시켰습니다.
트레이닝을 위해서 오픈된 데이터셋과 임의의 반복 영상을 넣고 Camera Motion Augment도 사용했습니다.
One Model, Many Domains and applications
예전에 일반적인 비전 모델들과 달리 이 모델은 Repetition Counting, Periodicity Detection, Change Inspection, Speed Change Detection, Cross-Period Retrieval 영역에서 모두 활용 할 수 있습니다. 여기서 좀 더 소설을 써보자면 Repetition Counting와 Speed Change Detection을 통해 집에서 카메라로 AI로 부터 PT를 받거나("푸쉬업 30번중에 15번 남았습니다. 속도가 점점 떨어지니 다음 rep은 20번만 하겠습니다."와 같은 것을 스스로 측정 후 가이드), Change Inspection를 이용해서 특정 공정중에 발생하는 예상치못한 문제 확인 등을 해볼 수 있지 않을까 합니다.
그래서 아래 첨부한 영상외에 여러가지를 테스트 해보았는데 추후 이 팀에서 나오는 논문이 매우 기대됩니다. 참고로 작년에 나온 Temporal Cycle-Consistency Learning(CVPR 2019)도 재미있게 봤었는데 올해는 단일 비디오에서 더 다양한 영역이 가능하다는 점에서 많은 발전이 있었습니다.

Posted by uniqueone
,