들어가기에 앞서...
Aliaksandr Siarohin(a.ka. 모션좌)는 이번 Hairstyle 연구를 하면서 알게 된 이탈리아의 연구자이다. 우리끼리 그를 모션좌라고 부를 만큼 좋은 Motion transfer 연구를 꾸준히 해오고 계시다. 한 주제로 계속 연구를 하다 보면 지루하기도 하고 새로운 아이디어를 떠올리기가 참 어려울 것 같은데, 우리의 모션좌🤸♂️는 계속해서 motion transfer를 연구하며 좋은 논문을 내주고 계신다. (그리고 그에 손에 쥐어지는 혜린이의 팔로우...)
Hairstyle 연구를 하면서 Aliaksandr Siarohin의 연구 외에도 여러 Motion transfer 논문을 공부했는데, Aliaksandr Siarohin의 논문들이 가장 좋았고, 가장 많이 도움이 되었다. 그리고 연구를 마무리하는 이 시점에서 공부했던 그의 Motion transfer 논문들을 간단하게 정리해보고자 한다.
1. Deformable GANs for Pose-based Human Image Generation (2018, CVPR)
Keypoint를 condition으로, 해당 keypoint에 맞는 포즈를 가진 이미지를 생성하는 모델이다. 기존의 I2I 모델들은 input 이미지와 output 이미지의 spatial deformation이 크게 필요한 경우에 잘 작동하지 않는다는 점을 태클했다.
이 논문은 공간 정보가 align 되어 있지 않다는 문제를 해결하기 위한 방법으로 encoder의 local 정보를 decoder에 전달하는, deformable skip connection을 제안했다. 이는 단순 local 정보가 아닌 포즈 a와 포즈 b의 차이를 설명하는 정보를 생성, 전달하는 방법으로 keypoint의 joint에 기반해 정의된 local affine transformation을 사용해 feature map을 deform, 전달하는 식으로 동작한다.
이 논문은 또한 L1, L2 loss가 흐릿한 이미지를 생성하는 점을 지적하며 nearsest-neighgbour loss라는 새로운 loss를 제안하였다. 새롭게 제안된 nn loss는 keypoint 주변의 nxn 픽셀을 convolution을 통해 벡터화한 후, 이 패치들 간의 거리를 계산한 값이다.
논문이 제안한 모델은 위의 두 방법을 사용하여 deform이 필요한 객체를 생성하는 문제를 해결하였다.
2. Animating Arbitrary Objects via Deep Motion Transfer (2019, CVPR)
Source image가 Driving video의 포즈를 갖도록 transfer하는 모델로, Monkey-Net이라고도 불린다. 'Arbitrary'라는 이름에서도 알 수 있듯이 로봇의 작동 모습, 동물의 움직임 영상과 같이 명확하게 keypoint를 뽑기 모호한 영상에 대해서도 잘 동작한다.
모델은 크게 1)Unsupervised 방식으로 학습된 Keypoint detector, 2) Dense motion prediction network, 3) Motion transfer network로 구성되어있다.
1) Keypoint detector
K개의 keypoint에 대한 heatmap을 예측하는 모델로, Keypoint localization에 좋은 성능을 보이는 encoder-decoder 구조(U-net)를 사용하였다.
2) Dense motion prediction network
Generator는 Keypoint detector가 예측한 sparse 한 keypoint map을 그대로 사용하지 않고, dense 한 optical flow를 계산해 사용한다. 이때 이 optical flow는 Dense motion prediction network를 통해 예측된다.
3) Motion transfer network
Generator에 해당하는 모듈로 역시 U-net 구조에 기반한다. 하지만 기본 U-net 구조는 큰 pixel-to-pixel misalignment 문제를 잘 다루지 못한다고 알려져 있었기 때문에, encoder에서 추출된 feature를 align 해줄 수 있는 deformation module을 추가할 것을 제안했다.
deformation module은 Dense motion prediction network의 output인 optical flow를 이용해 encoder의 아웃풋인 appearance 정보를 담은 feauture map을 warping하는 역할을 한다. 코드에서는 F.grid_sample이라는 메서드를 통해 처리한다.
이렇게 deform된 feature map은 src 이미지에 대해 예측된 keypoint heatmap과 trg 이미지에 대해 예측된 keypoint heatmap의 차이 (=movement_embedding)과 매 레이어 concat 되어 (skip connection 방식) decoding 된다.
3. First Order Motion Model for Image Animation (2019, NIPS)
Monkey-Net이 큰 포즈 변화에는 취약하다는 점을 태클한 논문. 전반적인 프레임워크는 크게 다르지 않으나, 복잡한 motion까지도 모델링할 수 있는 local affine transformation과 source image에선 가려져 있었던, 새롭게 생성되어야 하는 영역을 인지하는 occlusion-aware generator가 추가되었다.
FOMM 모델은 크게 Motion module과 Generation module, 두 파트로 구성되어 있다.
1) Motion module
Motion module은 driving video와 source frame 각각의 dense motion을 예측하는 것이 목표이다. 이 때 dense motion은 sparse keypoint와 local affine transformation을 기반으로 예측된다. local affine transformation은 keypoint 주변의 motion을 모델링한다. 이때 Source frame과 driving video의 정보 추출 과정을 서로 독립적으로 만들기 위해 reference frame R을 도입하였다.Dense motion network는 keypoint detector의 output을 input으로 dense motion(optical flow)과 occlusion mask를 예측한다. 새롭게 도입된 occlusion mask는 이미지 생성 과정에서 source image가 reconstruct 되어야 하는 영역 정보를 가지고 있다.
2) Generation module
Warping으로 커버될 수 없는 부분을 inpaint하기 위해 occlusion map을 이용한다는 것 외의 전체적인 프로세스는 Monkey-Net과 거의 유사하다. (deform 된 feature map에 occlusion map을 곱해 inpaint 되어야 할 부분의 값을 죽여준 후, Convolution을 태운다.)
저자들은 Unsupervised 방식으로 학습되는 keypoint predictor의 안정적인 학습을 위해 equivariance constraint를 도입하였다. 이는 이미지 A와 geometric transformation을 가한 이미지 A'에서 각각 추출한 keypoint도 같은 geometric 관계를 갖도록 강제하는 constraint로, unsupervised keypoint를 찾는 데에 아주 중요한 역할을 한다.
+ NIPS 논문답게 설명한 것보다 더 많은 수식과 그에 근거한 trick들이 포함되어 있었다. 코드까지 나름 샅샅이 공부했는데도 모든 수식과 trick을 이해하지는 못했다. 😣
4. Motion Representations for Articulated Animation (2021, CVPR)
올해 CVPR에서 발표된 따끈따끈한 새 논문으로, FOMM을 능가하는 3가지 contribution을 가진다. 1) PCA-based motion estimation, 2) background motion representation, 3) animation via disentanglement가 바로 그것이다.
1) PCA-based motion estimation
기존 논문들과 이 논문의 가장 큰 차이점은 Keypoint가 아닌 의미론적으로 구분되는 region을 예측, motion 정보로 활용한다는 것이다. 참고로 저자는 FOMM과 이번 논문 사이에 Motion supervised Co-part Segmentation(2020)이라는 논문을 발표, motion 정보를 이용해 co-part segmentation을 예측할 수 있음을 보였다. (Motion transfer에 포커싱 된 논문은 아니라 이번 글에서는 다루지 않았다.)
Region predictor는 이미지를 input으로 받아 K개의 영역에 대한 heatmap을 리턴한다. 그리고 PCA를 통해 in-plane rotation과 x, y 방향으로의 scale을 계산한다.
2) Background motion estimation
배경은 이미지의 많은 부분을 차지하고, 적은 부분을 차지한다하더라도 이미지의 퀄리티에 큰 영향을 준다. 배경의 motion을 따로 다루지 않고 keypoint에 의존했던 FOMM과 달리, 이 논문은 배경의 affine transformation을 예측하는 모델을 두었다. Unsupervised 방식으로 학습되기 때문에 BG motion predictor가 foreground의 일부를 포함해 motion을 예측하는 문제가 발생할 것이라고 생각할 수 있으나, 네트워크는 PCA를 통해 예측된, 더 정확한 foreground motion 정보를 사용하는 것이 더 좋기 때문에 실제로 위와 같은 문제가 발생하진 않는다고 한다.
3) Animation via disentanglement
기존의 Image animation 방법의 한계를 해결하기 위해, 저자들은 shape와 pose를 각각 다른 encoder를 사용해 disentangle 하게 encoding 하는 방법을 제안하였다. Pose encoder는 Driving 이미지에서 motion 정보를, shape encoder는 source 이미지의 shape 정보를 뽑아낸다. 그리고 두 latent representation을 concat 해 decoder에 input으로 넣어주게 된다. 학습 초기에는 source와 driving frame이 같은 비디오에서 뽑히기 때문에 (= source 이미지와 driving 이미지가 같은 shape를 가짐) driving frame를 deform 해주어 shape 정보를 shape encoder로부터 뽑아내도록 강제한다.
이후 이미지를 생성하는 과정은 FOMM과 유사하게, 인코딩된 feature를 dense optical flow에 따라 warping 하고, confidence map에 따라 일부 영역을 inpainting을 통해 채우는 식으로 진행된다. Monkey-Net과 유사한 deformable skip connection 또한 사용되었다. FOMM과 비교한 결과는 다음과 같았다.
'컴린이 탈출기 > Vision' 카테고리의 다른 글
공부하며 정리해보는 MMDetection 튜토리얼 🤖 (2) - Model, Runtime Setting (Optimizer, Scheduler 등), Finetuning Models, Weight Initialization (0) | 2021.08.05 |
---|---|
공부하며 정리해보는 MMDetection 튜토리얼 🤖 (1) - Config, Dataset, Data Pipelines (4) | 2021.08.04 |
COCO Data format과 Pycocotools (4) | 2021.03.30 |
Computer vision 분야에서의 Self-Attention (4) | 2020.05.31 |
도메인과 스타일, 모두 잡았다! StarGAN v2 (0) | 2020.03.23 |