연구는 반복되는 행위를 이해의 중요성
오늘은 비디오에서 반복 행위 계산(RepNet: Counting Repetitions in Videos)에 대한 내용입니다. 이 포스팅에는 반복 행위에 대한 예시들이 잘 나타나 있어 같이 보는 것을 추천합니다. 주기적으로 반복되는 행위는(ex. 일출, 일몰, 제조 라인 등) 실생활에서 많이 일어납니다. 여러 연구 분야와 관련하여 반복되는 행위는 뭔가의 근본적인 이유일 수도 있고, 연구 이해에 도움을 줄 수 있는 점진적인 변화의 일종일 수도 있습니다. 반복 행위는 의미 있는 행위들로 구성된 "행위 단위(action units)"로서 잘라질 수 있는데, 이는 복잡한 활동에 대해 설명하거나 사람의 개입 없이 미세한 시간 단위로 액션들을 분석하는 데 도움을 줄 수 있습니다. 따라서, 오랜 시간 관찰하며 세상에 대해 이해하려는 연구는 반복되는 행위를 이해하는 시스템의 도움을 받을 수 있습니다.
노이즈에 방해받지 않고 feature들을 학습의 필요성
이전 연구는 같은 행위를 가지는 여러 비디오를 기반 주기-일관성(cycle-consistency) 제약 조건을 이용하여 반복행위를 이해하였습니다. 이에, 이전 연구는 비디오 간의 프레임 내의 픽셀을 직접 비교하였는데 이는 실제 상황에서 생기는 노이즈(ex. 비디오 움직임 등으로 변하는 비디오의 색감, 형태 등)에 대해 적절하게 대응하기 힘듭니다. 따라서 이러한 노이즈에 방해받지 않고 feature들을 학습할 수 있어야 합니다.
노이즈 대응이 가능한 반복 행위를 이해하는 모델 제안
RepNet이라는 하나의 비디오만을 가지고 다양한 분야의 반복 행위를 이해하는 모델을 만들고 모델을 End-to-End 형태로 만들어 노이즈에 대응 가능하도록 합니다. RepNet은 다양한 클래스의 주기적인 반복 행위가 있는 비디오를 입력받아서 발견한 반복 행위의 주기를 도출하는 모델로, 모델은 크게 세 가지로 구성됩니다.
① 프레임 인코더 (Frame Encoder) : 비디오나 이미지 데이터에 알맞은 ResNet 구조를 이용하여 각 비디오 프레임을 임베딩합니다.
② TSM(Temporal Self-similarity Matrix)를 이용한 중간 표현법(Intermediate Representation) : 생성된 각 임베딩 프레임은 다른 모든 프레임들과 비교하여 매트릭스(Matrix)를 만듭니다. 반복 기간 추정을 가능케하는 자가 유사성(self-similarities)가 나옵니다.
- Why 자가 유사성(Self-similarity)?
단순히 고정된 반복 행위 기간을 가지는 상황들 외에도 반복 행위의 기간이 짧아지거나 중간에 사라졌다가 다시 반복되는 행위 등의 현실에서 일어날 수 있는 상황들도 고려되어야 하기 때문입니다.
따라서, 사진 특성을 이용하는 것이 아니라 자가 유사성(Self-similarity)을 기반으로 매트릭스를 만들어서 비디오 프레임 간의 비슷한 정도를 정량적으로 측정하는 기법을 쓰면, 테스트 데이터에 새로운 상황이 들어오더라도 반복 행위 주기가 비슷한 것이 학습 데이터에 있었으면 모델이 작동하게 됩니다.
③ 기간 예측기(Period Predictor) : TSM을 기반으로 Transformer 구조를 이용하여 반복 행위 기간과 반복 행위인지 여부를 각 프레임 별로 판별합니다. 반복 행위의 기간이 구해지면 그 안의 프레임 수를 구할 수 있습니다. 그리고 얼마나 반복 행위가 비디오 내에서 많이 일어나는 지도 알아낼 수 있습니다.
데이터를 모을 때는 비디오 자체에 반복 행위가 있는지 판별하고 얼마나 반복행위가 반복됐는 지 세는 것도 노력이 많이 듭니다. 따라서, 인공으로 반복 행위 포함 데이터를 생성하는 시스템을 만듭니다. 간단하게는 비디오 내에서 특정 비디오 프레임을 반복시켜서 만들 수 있습니다.
그러나 이런 단조로운 데이터 셋으로만 학습하기에는 현실에서는 잘 작동을 하지 않을 수도 있으므로 임의로 만든 반복 행위가 포함된 비디오에 비디오 모션이 추가된 것처럼 만들어 데이터의 다양성을 확보하였습니다.
Kinetics dataset 기반의 실험과 개인적인 생각
실험 때는 Kinetics dataset를 기반으로 평가하였습니다. 다양한 애플리케이션에 쓰일 수 있음을 알 수 있었습니다. 야채 써는 것, 지구의 일주기, 치타의 뛰는 행위, 심장박동 등에서 쓰일 수 있을 것으로 기대합니다. 애플리케이션 결과로 알 수 있는 것은 반복되는 행위만 확실하다면 반복 행위의 기간이 변해도 잘 작동한다는 것을 알 수 있었습니다.
이전 연구와의 성능 차이를 알 수 없어서 아쉬웠습니다. 그러나 Matrix를 쓰는 부분에서는 이전의 완전 비디오 기반으로 비교하는 것보다는 방법론적으로 더 유연하고 효율적일 것으로 예상합니다.
비디오를 기반으로 했는데 앞 ①, ③만 잘 수정한다면 다른 도메인에서 충분히 쓰일 수 있지 않을까라는 생각이 들었습니다. 여전히 반복 행위가 들어있는지 여부에 대한 학습 데이터를 만드는 것은 숙제일 것으로 예상됩니다. 얼마나 정확히 예측하는지 알 수가 없어서 학습 데이터가 저걸로 충분했는지 의문이 들긴 합니다. 생각보다 주변에 반복되는 행위가 이렇게 만든다는 것이 놀라웠습니다. 일종의 루틴을 알아낸다는 것인데 어쩌면 굉장히 Long-term 데이터가 주어진다면 사용자 행위 파악에도 이 기법을 사용할 수 있지 않을까 생각됩니다.