brunch

You can make anything
by writing

C.S.Lewis

by 서진호 Jun 25. 2020

RepNet:비디오의 반복 계산하기

2020년 6월 22일 (월) - 구글 AI 리서치 블로그

달의 위상이나 심장 박동 및 호흡과 같은 자연 주기부터 제조 라인이나 교통 패턴에서 발견되는 인공 반복적 프로세스에 이르기까지 반복되는 프로세스는 일상생활에서 일반적입니다. 보편적인 것을 넘어 반복되는 프로세스는 연구자들이 관심을 가질 수 있는 다양한 통찰력을 제공하는 데 흥미를 줍니다. 여러 번 발생하는 원인 뒤에 근본적인 원인이 있거나, 어떤 장면들을 이해에 유용한 점진적인 변화가 있을 수 있습니다. 때때로, 반복되는 프로세스는 우리에게 동작을 구성하는 의미상 의미 있는 세그먼트인 모호하지 않은 "액션 단위(action units)"를 제공합니다. 예를 들어, 사람이 양파를 자르고 있다면, 액션 유닛은 추가 슬라이스를 생성하기 위해 반복되는 조작 액션입니다. 이러한 단위는 보다 복잡한 활동을 나타낼 수 있으며, 이러한 단위에 주석을 달지 않아도 더 미세한 시간 단위로 더 많은 동작을 자동으로 분석할 수 있습니다. 위와 같은 이유로, 우리의 세계를 오랫동안 관찰하고 이해하는 것을 목표로 하는 지각 시스템은 일반적인 반복을 이해하는 시스템에서 도움이 될 것입니다.


"Counting Out Time: Class Agnostic Video Repetition Counting in the Wild" 논문에서, 우리는 도구를 사용하거나 사용하는 사람에서부터 달리는 동물과 날개를 펄럭 거리는 새, 진자 스윙 및 기타 다양한 것들에 이르기까지 광범위한 반복 과정을 이해할 수 있는 단일 모델인 RepNet을 제시합니다.


동일한 작업의 여러 비디오에서 주기 일관성 제약 조건을 사용하여 세밀한 수준에서 이를 이해 한 이전 작업과 달리 이 작업에서는 단일 비디오 내에서 반복을 인식할 수 있는 시스템을 제시합니다. 이 모델과 함께 비디오에서 클래스 비의존적 계산을 벤치마킹하기 위한 데이터셋과  RepNet을 실행하기 위한 Colab 노트북을 출시합니다.


RepNet

RepNet은 다양한 클래스(훈련 중에 보이지 않는 클래스 포함)의 주기적인 동작이 포함된 비디오를 입력으로 받아 그 정보로 발견된 반복 주기를 반환하는 모델입니다. 과거에는 반복 카운트 문제가 프레임의 픽셀 강도를 직접 비교하여 해결되었지만 실제 비디오에는 카메라 모션, 필드의 물체에 의한 폐색(occulusion), 급격한 스케일 차이 및 형태의 변화가 있으므로 이러한 소음에 변하지 않는 기능을 학습해야 합니다. 이를 위해 머신 러닝 모델을 엔드-투-엔드 방식으로 학습하여 반복 기간을 직접 추정합니다. 이 모델은 프레임 인코더 및 temporal self-similarity matrix (아래에서 설명할)라고 하는 중간 표현 및 주기 예측기의 세 부분으로 구성됩니다.


먼저, 프레임 인코더는 ResNet 아키텍처를 프레임별 모델로 사용하여 비디오의 각 프레임에 대한 임베딩을 생성합니다. ResNet 아키텍처는 여러 이미지 및 비디오 작업에 성공한 이후 선택되었습니다. ResNet 기반 인코더를 통해 비디오의 각 프레임을 전달하면 일련의 임베딩이 생성됩니다.


이 시점에서 각 프레임의 임베딩을 비디오의 다른 모든 프레임과 비교하여 Temporal Self-Similarity Matrix(TSM)을 계산하고 후속 모듈에서 반복 계산을 쉽게 분석할 수 있는 매트릭스를 반환합니다. 이 프로세스는 아래 비디오에서 볼 수 있는 것처럼 주기 추정을 가능하게 하는 비디오 프레임 스트림에서 자기 유사성(Self-Similarity)을 드러냅니다.

[그림 1] TSM이 지구의 밤낮 주기 이미지를 처리하는 방법을 보여줍니다.


그런 다음 각 프레임에 대해 트랜스포머(Transformers)를 사용하여 TSM의 유사성 시퀀스에서 반복 기간 및 주기성(즉, 프레임이 주기적 프로세스의 일부인지 여부)을 직접 예측합니다. 주기가 설정되면 주기 세그먼트에서 캡처된 프레임 수를 주기 길이로 나누어 프레임 당 카운트를 얻습니다. 우리는 이것을 비디오의 반복 횟수를 예측하기 위해 집계합니다.


[그림 2] RepNet 모델 개요

시간적 자기 유사성 매트릭스

위에 표시된 주간-야간 주기에서 TSM의 예는 고정된 주기 반복으로 이상적인 시나리오에서 파생됩니다. 실제 비디오의 TSM은 아래 세 가지 예에서 볼 수 있듯이 종종 세계의 매혹적인 구조를 드러냅니다. 점핑 잭은 고정된 주기로 이상적인 주기적인 동작에 가깝지만, 반복되는 바운스로 볼이 에너지를 감소되면서 튀는 볼의 주기는 줄어듭니다. 콘크리트를 혼합하는 사람의 비디오는 반복되는 동작을 나타내며 동작이 없는 기간이 뒤따릅니다. 이 세 가지 동작은 학습된 TSM에서 명확하게 구분되므로 모델이 장면의 미세한 변화에 주의를 기울여야 합니다.

[그림 3]

[그림 3] 점핑 잭(일정한 기간; Kinetics의 비디오), 튀는 공(감소 기간; Kinetics), 혼합 콘크리트 (비디오에 존재하는 변칙적 세그먼트; PERTUBE 데이터셋).


RepNet에서 TSM을 중간 계층으로 사용하는 한 가지 장점은 변환기에 의한 후속 처리가 기능 공간이 아닌 자체 유사성 공간에서 수행된다는 것입니다. 이것은 보이지 않는 클래스에 대한 일반화를 권장합니다. 예를 들어, 점핑 잭이나 수영과 다른 동작으로 생성된 TSM은 동작이 비슷한 속도로 반복되는 한 비슷합니다. 이를 통해 일부 수업을 훈련할 수 있지만 보이지 않는 수업에 대한 일반화를 기대할 수 있습니다.


데이터

위의 모델을 훈련시키는 한 가지 방법은 반복적인 활동을 캡처하고 반복 횟수로 레이블을 지정하는 대규모 비디오 데이터셋을 수집하는 것입니다. 이에 대한 과제는 두 가지입니다. 먼저 반복되는 동작을 가진 비디오를 식별하기 위해 많은 수의 비디오를 검사해야 합니다. 그 후, 각 비디오는 액션이 반복된 횟수로 주석을 달아야 합니다. 어노테이터는 특정 작업의 경우 프레임을 건너뛸 수 있지만(예: 비디오를 점핑 잭을 표시하는 것으로 분류하기 위해) 몇 개의 점프 잭을 수행했는지 계산하려면 전체 비디오를 확인해야 합니다.


반복 작업이 전혀 포함되지 않은 비디오를 사용하여 반복적으로 비디오를 생성하는 합성 데이터 생성 프로세스를 도입하여 이러한 과제를 극복했습니다. 이것은 비디오 세그먼트를 무작위로 선택하여 원본 비디오 컨텍스트에 의해 예약된 임의의 횟수만큼 반복합니다.

[그림 3] 모든 비디오에서 반복적으로 비디오를 생성하는 합성 데이터 생성 파이프 라인

이 프로세스는 반복되는 프로세스로 자연스럽게 보이는 비디오와 유사한 비디오를 생성하지만 반복 학습을 인식하는 대신 인공물을 찾아 속임수를 배울 수 있는 딥러닝 방법으로는 여전히 너무 단순합니다. 이를 해결하기 위해 카메라 모션 증강(camera motion augmentation)라고 하는 극단적인 데이터 확대를 수행합니다. 이 방법에서는 비디오가 진행됨에 따라 2D 어페인 모션(affine motion)을 사용하여 부드럽게 움직이는 카메라를 시뮬레이션하도록 비디오를 수정합니다.

[그림 4]

[그림 4] 왼쪽: 랜덤 비디오에서 생성된 합성 반복 비디오의 예입니다. 오른쪽: 카메라 모션 확대 기능이 있는 비디오의 예입니다. 이 모델은 더 어렵지만 실제 반복되는 비디오(Kinetics의 비디오)에 대한 일반화(정규화)가 향상됩니다.


평가

합성 반복 비디오에서 모델을 학습할 수 있지만 결과 모델은 반복 프로세스의 실제 비디오로 일반화할 수 있어야 합니다. 실제 비디오에서 훈련된 모델의 성능을 평가하기 위해 Kinetics 데이터셋에서 ~ 9,000 비디오의 데이터셋을 수집합니다. 이 비디오는 많은 액션 클래스에 걸쳐 있으며 Youtube에서 볼 수 있는 다양한 데이터로 인해 다양한 장면을 캡처합니다. 동영상에서 반복되는 액션의 개수로 이러한 동영상에 주석을 답니다. 이 분야에 대한 추가 연구를 장려하기 위해이 데이터셋에 대한 계수 주석을 릴리스하고 이를 Countix라고 합니다.


애플리케이션

클래스에 구애받지 않는 카운팅 모델에는 많은 유용한 응용 프로그램이 있습니다. RepNet은 여러 도메인에서 반복을 계산할 수 있는 단일 모델 역할을 합니다.

[그림 5]

[그림 5] RepNet은 양파 쓸기 (왼쪽; Kinetics 데이터 세트의 비디오), 지구의 일주기(중간; 히마와리 위성 데이터) 또는 치타 운동(오른쪽; imgur.com의 비디오)과 같은 다양한 영역에서 반복된 활동을 계산할 수 있습니다. 


RepNet을 사용하면 심전도 비디오에서 심박수를 추정할 수 있습니다.

[그림 6]

[그림 6] 예상 심박수 : 45 bpm (왼쪽) 및 75 bpm (오른쪽). 실제 심박수는 각각 46-50 bpm 및 78-79 bpm입니다. 여러 기기에서 발생하는 심박수에 대한 RepNet의 예측은 기기에서 측정 한 속도와 매우 유사합니다. (왼쪽오른쪽)


RepNet을 사용하여 속도 변화에 대한 반복 활동을 모니터링할 수도 있습니다. 아래에서는 이러한 속도 변화를 품질 또는 프로세스 제어를 위한 다른 설정에서 사용하는 방법을 보여줍니다.


[그림 7]

[그림 7] 이 비디오에서는 훈련하는 동안 이러한 비디오를 본 적이 없지만 레이저 현미경으로 관찰된 세포 진동을 가속화시키는 RepNet 계산을 볼 수 있습니다 (Nature 아티클).

[그림 8]

[그림 8] 왼쪽: “산 등반가” 운동을 하는 사람. 오른쪽: 주성분 분석(Principal Component Aanlysis)을 사용하여 RepNet 임베딩을 1D로 투영하여 운동 중 사람의 속도가 바뀌는 순간을 포착합니다. (Kinectics 비디오)


배포

커뮤니티에서 반복 계산 문제를 해결하기 위해 Countix annotations을 발표합니다. 또한 RepNet 실행을 위한 Colab 노트북을 출시합니다. 이를 사용하면 비디오에서 웹캠을 실행하거나 웹캠을 사용하여 비디오의 주기적 활동을 감지하고 비디오의 반복 횟수를 자동으로 계산할 수 있습니다.


감사의 말

이것은 Yusuf Aytar, Jonathan Tompson, Pierre Sermanet 및 Andrew Zisserman과의 공동 작업입니다. TSM의 시각적 설명을 디자인 한 Tom Small에게 특별한 감사를 드립니다. 이 프로젝트에 도움을 주신 Anelia Angelova, Relja Arandjelović, Sourish Chaudhuri, Aishwarya Gomatam, Meghana Thotakuri 및 Vincent Vanhoucke에게 감사의 말을 전합니다.


원본 제목: RepNet:비디오의 반복 계산하기(RepNet: Counting Repetitions in Videos)
게시자: Debidatta Dwibedi, Google 로봇 공학 연구원
원본 소스: https://ai.googleblog.com/2020/06/repnet-counting-repetitions-in-videos.html 


CVPR2020 - Counting Out Time: Class Agnostic Video Repetition Counting in the Wild 논문: http://openaccess.thecvf.com/content_CVPR_2020/papers/Dwibedi_Counting_Out_Time_Class_Agnostic_Video_Repetition_Counting_in_the_CVPR_2020_paper.pdf
RepNet : https://sites.google.com/view/repnet
Video Understnading Using Temporal Cycle-Consistency Learning 블로그(영문): https://ai.googleblog.com/2019/08/video-understanding-using-temporal.html
RepNet Colab 자습서: https://colab.research.google.com/github/google-research/google-research/blob/master/repnet/repnet_colab.ipynb
Robust real-time periodic motion detection, analysis, and applciations - IEEE 저널 논문: https://ieeexplore.ieee.org/document/868681
Deep Residual Learning for Image Recognition 논문: https://arxiv.org/abs/1512.03385
Focal Loss for Dense object Detection 논문: https://arxiv.org/abs/1708.02002
Mobile Real-time Video Segmentation 블로그(영문): https://ai.googleblog.com/2018/03/mobile-real-time-video-segmentation.html
Attention Is All You Need 논문: https://arxiv.org/abs/1706.03762
PRETUBE(A periodicity detection dataset) 데이터셋: https://projects.ics.forth.gr/cvrl/pd/
Collective cell migration of Dictyostelium without cAMP oscillations at multicellular stages 아티클: https://www.nature.com/articles/s42003-018-0273-6
Countix 데이터셋: https://storage.googleapis.com/deepmind-media/Datasets/countix.tar.gz


이 블로그는 2020년 6월 22일(월), Google AI 리서치 블로그 기사를 영한 번역한 것입니다. 또한 이 번역 글은 정보 공유 목적으로만 작성했으므로 어떠한 상업용으로 사용할 수 없으며, 원본 저작물 모두 구글에게 저작권이 있음을 알려 드립니다. (First Draft Version)
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari