Harrison Jesse Smith, Qingyuan Zheng, Yifei Li, Somya Jain, Jessica K. Hodgins
Meta, Tencent, MIT CSAIL, Carnegie Mellon University
https://dl.acm.org/doi/10.1145/3592788
https://arxiv.org/abs/2303.12741
https://sketch.metademolab.com/
나름 재미있음. 추천.
We present a system that automatically animates children’s drawings of the human figure, is robust to the variance inherent in these depictions, and is simple and straightforward enough for anyone to use.
appeal of a novel twisted perspective retargeting technique.
Finally, we introduce the Amateur Drawings Dataset, a first-of-its-kind annotated dataset, 178,000 amateur drawings and corresponding user-accepted character bounding boxes, segmentation masks, and joint location annotations.
4단계에 걸친 방법을 통해 아이들의 이미지를 실제로 움직일 수 있게하는 방안을 고려하였음.
이에 대한 Demo 또한 제공. (맨 아래 링크)
이때 Animation에 대하여 Twisted perspective retargeting으로 통한 Mixed perceptive 방법을 제안(상체 : frontal plane, 하체 : segattal plane에 projection)
기존 데이터와 데모를 통해 얻은 데이터를 정제하여 Amateur Drawings Dataset을 제공
사람 모습에 대한 아이들의 묘사는 풍부한 감성으로 인하여 매우 다양하다.
아이들이 그린 그림이 실제로 움직일 수 있다면 얼마나 좋을까만은 많은 노고가 들어간다.
이에 주어진 아이 그림에 대하여 자동으로 animate할 수 있는 system 설치를 디자인.
빠르고, 직관적이며 강건하다.
구성 시스템 4단계
For object detection and pose estimation : detect human figures and joints. fine-tune these models for use with children’s drawings
For segmentation : image processing-based method
the animation step : twisted perspective commonly seen in children’s drawings to retarget motion capture data onto the character in a novel and appealing way.
3가지 실험 진행
1, 2) a set of experiments exploring the relationship between fine-tuning training set size and success rates.
3) a perceptual study validating viewer preference for incorporating twisted perspective into the motion retargeting step.
publicly releasing a version of it as the Animated Drawings Demo [Meta 2022]. Launched in December 2021
Amateur Drawings Dataset: 178,166 drawings and user-accepted annotations collected, with consent, through the demo.
아이들의 그림이 가지는 특징들이 존재.
부자연스러움. 비율과 색이 다름
non-human parts와 같은 다양한 변주가 존재
이것들의 자동화된 character animation을 만들어야 함.
twisted perspective
Live Sketch [Su et al. 2018]
Photo Wake-Up: 3D Character Animation from a Single Photo (CVPR 2019)
차이 2가지
1) Photo Wake Up은 3D 모델로의 MR을 생성하지만, 본 방법은 2차원의 animating figure를 만듬
2) 아이들의 그림은 좀 더 추상적이고 비율적으로 정확하지 않아 사람같지 않는다.
이에 최소한의 segmentation cleaning이후 성공적인 animate를 진행.
모두 좋은 tool이지만 본 방법과는 맞지 않음.
non-photorealistic 이미지들에 대한 가능한 데이터 세트의 부족이 있었지만 최근 많은 데이터 세트를 제공하고 있다.
목표 : 단일 인간 모습 그림으로부터 animation을 생성하는 시스템 구축
tablet 기반의 drawing interface는 피로하고 어려운 측면이 있어 팬, 크레용, 그림 등 다른 미술 물건을 통해 그린 그림으로 사용하는 것을 권함.
다음과 같은 sub-task가 존재
human figure detection, segmentation, pose estimation, and animation
Mask R-CNN [He et al. 2017], with a ResNet-50+FPN backbone를 사용
MS-COCO dataset으로 훈련되었지만 이는 실제 물체로 구성되어 artistic renderings에 대한 목적에 부합하지 않음
-> fine-tuning
The model’s backbone weights are frozen and attached to a head, which predicts a single class, human figure.
optimized using cross-entropy loss and stochastic gradient descent with an initial learning rate of 0.02, momentum of 0.9, weight decay of 1e-4, and minibatches of size 8.
OpenMMLab Detection Toolbox
https://github.com/open-mmlab/mmdetection
사용 GPU : 8Tesla V100-SXM2 GPUs.
실제로 COCO로 훈련시킨 pretrained Mask R-CNN을 활용하는 것보다 다시 fine-tune한 것이 더 bounding box 탐지를 잘 함.
다음 단계 a segmentation mask 획득 -> 매우 어려움
figure appearance의 많은 변주, texture, color 역시 제한적
Mask R-CNN은 부적절함.
figure의 2D texture mesh를 생성해야하기 때문에 모든 몸의 부위들은 포함하고 관련없는 배경요소들은 제거한 single polygon이 필요하다.
이를 위해 고전적인 이미지 처리 방법 사용
First, we resize the bounding box-cropped image to a width of 400 pixels while preserving the aspect ratio.
Next, we convert the image to grayscale and perform adaptive thresholding, where the threshold value is a Gaussian-weighted sum of the neighborhood pixel values minus a constant C [Gonzalez and Woods 2008].
Here, we use a distance of 8 pixels to define the neighborhood and a value of 115 for C.
To remove noise and connect foreground pixels, we next perform morphological closing, followed by dilating, using 3x3 rectangular kernels.
We then flood fill from the edges of the image, ensuring that any closed groups of foreground pixels are solid and do not contain holes.
Finally, we calculate the area of each distinct foreground polygon and retain only the one with the largest area.
3행 : shows the masks predicted by the fine-tuned Mask R-CNN model
-> segmentation에 대해 잘 작동하지 않음.제안한 고전적인 image-processing 방법이 더 나음.
Mask R-CNN model excludes or detaches body parts (a, b, g, h), improperly attaches limbs to the body or head (c, d, e, f,) or includes non-figure elements (f, h).
character의 복잡한 움직임을 위해서는 proportion과 pose에 대한 이해가 필요하다
그러나 sparse하고 abstract하기 때문에 이를 표현하는데 어려움이 있다.
animation step동안 joints 사용을 위한 keypoint의 작은 집합을 식별함.
17개의 keypoint의 존재를 토대로 그 위치를 예측할 수 있는 pose estimation 사용
대다수의 pose estimation model은 사람에 대해서 적합하기 때문에 본 방법에 바로 적용 불가.
ImageNet으로 pretrain한 ResNet-50을 backbone으로 하고, 각 joint location에 대한 개별 heatmap을 예측하는 a top-down heat map keypoint head를 활용하는 custom pose estimation 훈련.
resized to 192x256
fed into the model
the highest-valued pixel in each heatmap is taken as the predicted joint location.
Mean squared error is used for joint loss,
optimization is performed using Adaptive Momentum Estimation with learning rate of 5e-4
minibatches of size 512.
OpenMMLab Pose Toolbox를 사용하여 훈련 수행.
https://github.com/open-mmlab/mmpose
다른 모든 hyperparameter들은 toolbox가 제공하는 기본값 사용
GPU : 8 Tesla V100-SXM2 GPUs until convergence.
cf)
아래 Figure와 gif 파일은 본 논문에서 활용하는 pose estimation 중 2023 CVPR에 제출한 RTMPose의 자료를 가져온 것이다.
보이는 바와 같이 각 관절에 대한 heatmap activation 부분에 대한 coordinate를 선정하여 이에 대한 keypoint를 추출하는 것으로 예상된다.(논문 안 읽음...)
cf)
rigging
리깅은 모델링 파일을 움직이기 위해 필요한 뼈대를 심는 작업이다.
사실 리깅과 스키닝 작업으로 나뉘는데, 대부분은 리깅과 스키닝 작업을 통틀어 리깅이라고 한다.여기서도 리깅작업은 사실상 리깅+스키닝 작업이라고 생각하면 된다.
https://helpx.adobe.com/kr/animate/using/character-rigging-in-animate.html
https://namu.wiki/w/%EB%A6%AC%EA%B9%85
create a rigged character, suitable for animation, from the mask and joint predictions.
From the segmentation mask, we use Delaunay triangulation to generate a 2D mesh and texture it with the original drawing.
cf 1)
Delaunay triangulation - https://darkpgmr.tistory.com/96
"들로네 삼각분할 : 평면위의 점들을 삼각형으로 연결하여 공간을 분할할 때, 삼각형들의 내각의 최솟ㄱ값이 최대가 되도록 분할하는 것. "
Using the joint locations, we construct a character skeleton
Finally, we assign each mesh triangle to one of nine different body part groups (left upper leg, left lower leg, right upper leg, right lower leg, left upper arm, left lower arm, right upper arm, right lower arm, and trunk) by finding the closest bone to each triangle’s centroid.
animate the character rig by translating the joints and using as-rigid-as-possible (ARAP) shape manipulation [Igarashi et al. 2005] to repose the character mesh.
cf 2)
as-rigid-as-possible (ARAP) shape manipulation - https://erkaman.github.io/posts/sorkine2007.html
오래된 애니매이션 테크닉으로 보임. 특정 위치에 대하여 길게 늘리거나 줄이는 방식으로 캐릭터의 animation을 진행.
[원문]
the X and Z position of the root joint from the motion caption actor’s skeleton, such that the skeleton’s root joint is always located above the origin. We also rotate the skeleton about the vertical axis such that its forward vector (defined as the vector perpendicular to the average of the vector connecting the shoulder joints and the vector connecting the hip joints) is facing along the positive X axis. We then project the skeleton’s joint locations onto a 2D plane (shortly, we will describe how to select the 2D plane).
Next, for the bones of the upper arms, lower arms, upper legs, lower legs, neck, and spine, we compute the global orientation of each bone within the 2D projection plane. We then rotate the corresponding bones of the character rig so as to match these global orientations. Using the new joint positions as ARAP handles, we repose the mesh. When the character rig is reposed this way, the lengths of the character’s bones are never foreshortened. This is an intentional design decision; foreshortening is quite rare in children’s drawings [Willats 2006], and we therefore opted for a method of animation that does not introduce it.
To apply root motion, we compute the per-frame root offset of the human actor and scale it by the constant ratio of the actor’s average leg length to the character’s average leg length.
3D joint location을 2D 평면에 projecting할 때, 많은 평면을 선택할 수 있다.
상황 1) jumping jack할 때는 frontal plane에 project
상황 2) hip hop dance running man은 sagittal plane에 project할 때 recognizable하다.
따라서. projection place 또한 joint position variance만큼이나 보존되어야 한다.
cf 3)
root motion
https://docs.unrealengine.com/4.27/ko/AnimatingObjects/SkeletalMeshAnimation/RootMotion/
루트 모션(Root Motion)은 오브젝트의 위치와 회전을 애니메이션이 제어할 수 있도록 허용하는 것
스켈레톤 Root 본의 애니메이션을 기준으로 하는 캐릭터의 동작
저자들은 motion function에 따라 plane을 자동적으로 계산.
joint position을 전체 motion clip으로 plot -> PCA
첫 2개의 principal components는 joint position을 최대화할 수 있는 2D plane 정의
3번째 principal component는 vector normal 정의
a normal vector는 3번째 PC와 cosine similarity가 높은 것에 의존하여 frontal plane 또는 sagittal plane에 해당하는 2D projection place 선택.
이 projection 기법은 source 3D motion을 단일 plane으로 발생할 때 잘 작동.
그러나 어려울 때도 존재.
recognizable하게 motion을 잘 작동시키기 위해서는 동일 2D plane으로 제약하지 않아야함.
joint point clouds 생성 후 PCA 수행, upper limbs와 lower limbs에 대한 projection plane 선택
perspective를 섞는 방법으로 비현실적인 motion 가능.
twisted persective
mixing perspectives는 retargeting할 때, motion style로 움직일 수 있고 appealing 가능함.
The purpose of the system is to empower users to create appealing animations from their children’s drawings.
Amazon Web Service에 적용. 수정이 없다면 10초 내외로 실행가능.
대중적 관심을 받음.
평균 통계 설명
evaluate our use of twisted perspective retargeting … 66 subjects.
평가자들은 20개의 video 시청
4개의 figure 각 5개의 motion
each video were two side-by-side animations:
시청하는 사람들은 어떤 motion이 더 설득력이 있는지 선택해야함.
Table 3는 twisted perspective motion retargeting을 더 선호하는 %를 나타냄
20개 중 16개는 상당한 선호도를 보임.
Wave Hello에 해당하는 부분에 있어서 비슷한 결과를 내기때문에 차이가 적음
결론 : This observation suggests that twisted perspective retargeting may not be necessary in all situations; rather it is more useful when both the arms and the legs have substantial motion in different planes.
cf)
What is image retargeting?
Image retargeting is the task of making images capable of being displayed on screens with different sizes. This work should be done so that high-level visual information and low-level features such as texture remain as intact as possible to the human visual system.
https://link.springer.com/article/10.1007/s11042-020-10185-0
What is retargeting in 3d?
Animation Retargeting is a feature that allows animations to be reused between characters that use the same Skeleton asset but may have vastly different proportions.
Demo 이용시 데이터 활용에 대해 물어봄. 선택사항.
아마추어 그림이 아닌 경우에 대한 filter가 필요
2단계
5.1.1 Cluster-based Filtering
MoCo v2 (2020)를 토대로 ResNet-50 feature extractor를 재훈련하여 2048차원의 embedding space를 project함. kmeans로 100개의 개별 cluster를 사용하여 68개의 cluster는 삭제. 나머지 32개 cluster는 보존
32 clusters내에서도 비슷한 이미지들이 존재.
embedding space간의 Euclidean distance를 구해 거리가 0.5보다 작으면 이미지 삭제.
471,405 images 남음.
5.1.2 Manual Reveiw
여러 기준과 조건에 의해 손수 검토.
(저작권 이미지, 외설적인 것들, 아이들 그림이 아닌 것 등 기준에 부합하지 않은 것들 모두 손수 제외)
5.2 Release
While the dataset includes the user-accepted character bounding boxes, segmentation masks, and joint positions, we have not attempted to guarantee the accuracy of these annotations
수정이 많았고 수정하면 성능 향상
길게 contribution 설명
+
2가지 한계
two broad limitations
1) First, only certain motions can be appealingly retargeted in this manner. Not all limb motions can be well represented on a 2D plane
2) Second, our animation method is also limited by the style of the drawing. If the figure is drawn with foreshortening and proper perspective, the character-motion stylistic mismatch may be undesirable
https://github.com/facebookresearch/AnimatedDrawings
https://about.fb.com/news/2021/12/using-ai-to-animate-childrens-drawings/
https://fairanimateddrawings.com/site/home