[AI X Music] 인공지능이 노래를 듣고 춤을 춘다?
카테고리: medium
인공지능 안무창작
인공지능 안무창작의 흐름과 그 개괄적인 적용방법
인공지능 안무창작
인공지능 안무창작의 흐름과 그 개괄적인 적용방법
Dancing human Preview
필자는 대학생때 부터 춤을 추기 시작하여, 반올림을 하면 10년동안 춤을 췄다. 어떻게 몸을 움직여볼지, 어떻게 음악을 듣는지에 대해 계속 생각하다보니, 전공과 연관된 인공지능 안무창작에 대해 자연스럽게 관심을 가지게 되었다.
인공지능이라는 핫한 키워드를 예술에 접목시키고자 하는 많은 노력이 있다. 그중에서 적용하기 가장 힘든영역중 하나인 안무창작에 대해 좀더 살펴보고자 한다.
[SIGGRAPH 2021] ChoreoMaster : Choreography-Oriented Music-Driven Dance Synthesis
모두의연구소 Rubato Lab 팀원들과 아이디어를 모으던 중 위의 동영상을 보고 적지않은 충격을 받았다. 인공지능이 만든 춤이 꽤나 근사한 결과를 만들어 냈기 때문이다.
[ACM]ChoreoMaster : choreography-oriented music-driven dance synthesis 논문의 First Page
한번 비슷하게 만들어볼까 했지만, 데이터셋과 코드가 비공개처리되어있어서 SIGGRAPH의 저 논문을 똑같이 만들어보기는 힘들겠다고 판단하였다. 찾아보니 ACM이라는 저명한 학회에도 출간을 이미 했고, 저자들을 살펴보니 중국의 칭화대와, NetEase Games에서 공동 연구를 진행 한 것 같다. 게임회사에서 영리목적으로 사용할 예정이기 때문에 데이터셋과 코드를 비공개처리한 듯 하다.
인공지능 창작 음악이 주로 어디에 쓰이는지에 대한강의를 들은적이 있다. 메타버스나 게임 속 에서는, 대중적인 가요 음악보다, 기계가 만든듯한? 살짝 인위적인 느낌이 드는 음악이 더 잘 어울리며, 사용자들도 위화감없이 잘 받아들인다고 한다. 아마 인공지능으로 만들어진 춤도 위와같이 현실공간이 아닌, 제 3의 공간에서는 수요가 충분히 있기에, 큰 금액을 들여서 연구를 진행해 나가는게 아닌가 싶다. 전문 안무창작가들에게 영감을 줄 수 있지는 않을까? 라는 생각도 들었지만, 일단 춤을 추는 사람들의 인구가 매우 적으며, 그중에서도 안무를 직접 창작하는사람들까지 생각하면 이는 극소수이다. 이들에게 아주 낮은 확률로 인공지능이 안무창작 관련 영감을 줄 수 있을지언정, 효율성을 생각하면 그리 좋은 판단은 아닌 것 같다.
무튼 다년간 춤을 추어왔던 사람의 입장에서, 인공지능이 만든 춤의 퀄리티는 꽤 괜찮았다. 상당히 자연스러웠으며, 음악과도 잘 어우러졌다.
여러 아이디어를 모은 끝에 Rubato Lab 팀원들과 ‘AIST++ dataset’을 활용하여 인공지능 안무창작 모델을 만들어보기로 결정했다.
AIST dance datatabase
전문댄서들을 불러 직접 춤을 추고, 이를 카메라로 담아서 훌륭하게 데이터화를 시켜논 분들이 있었다. 스트릿댄스 강대국(?)이자 장인의 나라 일본에서 다수의 카메라, 댄서, 음악별로 춤동작들을 영상으로 AIST라는 이름으로 데이터베이스화 해두었고, 이를 구글에서 AIST++라는 이름으로 데이터를 가공하고 활용하여 한번 더 정리를 해두었다.
https://modulabs.notion.site/AIST-Dance-DB-872a3eee08774f66b57b4ae096052753
자세한 내용은 위 링크에 정리해 주었다. 우리는 AIST++에서 말하는 FACT모델을 구현하여 인공지능 안무생성에 도전해보고자 하였다.
AIST++
정리하자면, ‘AIST라는 춤 비디오’ 를 잘 정제하여 AIST++라는 데이터셋을 만들었으며, 이 데이터셋을 활용하여 인공지능 춤생성 모델까지 만들어낸 것이다.
AI Choreographer: Music Conditioned 3D Dance Generation with AIST++ We present AIST++, a new multi-modal dataset of 3D dance motion and music, along with FACT, a Full-Attention…arxiv.org
AIST++에서 소개하는 논문이다. FACT모델이라는 모델에 대해 나와있으며, Rubato Lab에서 팀원들과 위의 내용을 이용해 모델을 만들고자 했다.
FACT
what is FACT model? FACT모델은 무엇일까?
‘Full-Attention Cross-modal Transformer (network for generating 3D dance motion conditioned on music)’ 의 약자라고 한다
FACT모델의 개괄적인 흐름
춤생성을 위해 뭐 cross-modal 트랜스포머를 썼다는 것 같은데, FACT라는 이름으로 붙이니 뭔가 멋있는 것 같다. (모델세부 내용에 대해서는 다음 포스트에서 다루도록 하겠습니다.)
중간정리
그렇다면 인공지능 모델을 만들고, 여기에 원하는 음악과, 기준이 되는 춤동작(seed motion)을 넣어주면 새로운 motion data, 즉 새로운 춤동작들이 나올것이라고 예상하였다.
그래서 우리는 pytorch로 FACT모델을 구현하고, 생성된 춤 데이터를 SMPL이라는 인체모델에 넣어서 생성된 춤동작을 확인 해 보는 작업까지 해보기로 하였다.
개발과정
모델을 만드는 것도 힘들었지만, 음악관련 도메인에는 강했지만, 춤동작 데이터(3d motion data)에 대해 하나하나 공부해가며 나아가는 것도 쉽지 않았다. (인공지능 모델을 만들었던 과정과 FACT모델 세부 분석은 다음 글에서 설명하도록 하겠습니다)
(관절위치를 간단히 plot시켜서 데이터가 맞는지 확인)
생성된 춤 모션을 위의 못생긴 막대기로 움직이게 할 수 도 있었지만, 결과적으로 SMPL모델을 blender, maya와 같은 툴에서 예쁘게 가다듬어 사용 할 수 있게 만들고자 하였다.
What is SMPL? SMPL이 무엇인가? 에 대해…
(Rubato Lab 발표 시간에 유경님께서 정리 해주신 자료)
SMPL(Skinned Multi-Person Linear model) Overview ACM transactions on graphics (TOG), 2015 https://files.is.tue.mpg.de/black/papers/SMPL2015.pdfwww.notion.so
이어서
따라서, AIST++에서 제시해주는 SMPL 출력 형식을 따르기로 하였고, 이 모델을 코드로 바로 시각화 해 줄 수도 있었지만, 위에서 말한대로
이렇게 위에 보이는 한의원에 있을법한 무미건조한 인체가 춤추기보다는
애니메이션 데이터를 무료 다운받을 수 있는 Mixamo
위에서 말했듯이, 이렇게 원하는대로(좀비, 군인, 괴물(?), 로봇) 등등 꾸밀 수 있는 형태로 출력하고자 하였다. Blender나 Maya, Unity 등에서 다양하게 쓰일 수 있는 FBX형식의 포맷으로 출력하기를 원하였지만 쉽지 않았다.
처음에는 각 관절의 위치의 움직임을 SMPL모델에 넣어주면 알아서 움직이는게 아닌가? 라고 생각하였지만 생각보다 어려웠다. 관절의 움직임 위치나, 기준이 되는 위치, 관절끼리의 연관성, 회전 등등 다양한 요소들이 필요했었다.
직접 개발하고자 하였지만, Graphics에 대한 컴퓨터 공학적 지식없이, 만들기는 어려웠다. 이 사실을 깨닫기 전까지, 만들 수 있다고 굳게 믿고 polygon 만드는 부분 부터, 빛, Kinematic 등 graphics의 어느 경계에 속하는 공부를 재미있게 하다가… 문득 고통스러움이 찾아와 정신을 차렸다. 이러다간 정말 끝이 없겠다라는 생각이 들어 직접 만들기를 포기하기로 했다.
blender에서 AI가 만든 춤동작을 SMPL에 넣은 모습 (인체모델에 대해 이해없이 단순하게 관절의 world coordinates를 넣어만드니, 몸이 전부 찌그러져서 괴물의 형태가되었다)
어디에 정보라도 있으면 좀 비슷하게라도 움직임을 재현해볼텐데… 후…인공지능이 만든 관절의 움직임을 SMPL모델에 이식하여 FBX파일을 만드는 방법에 대한 정보를 찾기 너무 힘들었다.
일단은 motion data(춤데이터)를 바로 visualize해가며(AIST++에 코드가 있다), ‘인공지능 모델이 춤을 잘 만들었나?’ 를 확인해나가며 FACT모델을 가다듬어나갔으며,
SMPL motion data를 FBX로 변환해주는 코드도 찾을 수 있었다
GitHub - softcat477/SMPL-to-FBX: I can convert motions in SMPL format into FBX files. SMPL형식 데이터를 FBX로 변환해주는 코드가 담긴 깃헙 저장소github.com
결과
인공지능이 만들어낸 춤.GIF
인공지능이 음악을 듣고 만들어낸 춤이다. 실제로 컴퓨터에서 재생해보면 끊어짐없이 꽤 자연스러움(다음글에서 깔끔한 mp4형식으로 업로드 예정)
이 위에 디자인감각이 좋으신분들이 극단적인 인체비율을 가진 캐릭터나, 동물의 형태를 씌우면, 재미있는 영상이 나오지 않을까 한다.
So,
그래서 전체적인 과정을 정리하자면, 논문을 보고 FACT모델을 만들고, 춤장르의 기준이 될만한 seed motion과 음악을 입력값으로 주어서 새로운 춤동작들을 창작해내고, 이를 SMPL형식으로 받아 FBX파일로 변환하였다.
만들고 나서
생각보다 훨씬 잘 만들어 진 것 같다. 하지만 google이나 글의 서두에서 보여준 중국게임회사가 보여준 것 처럼 완전 완벽! 깔끔! 음악과 척척 맞는 춤동작! 이 생성되진 않았다. 데이터도 좀 늘리고, 우리팀은 데이터가 없는만큼, 발레와 스트릿댄스 데이터들을 죄다 섞어버렸는데 이런게 문제가 되었지 않나 싶다.
한 노래에 피아노선율과 강렬한 비트가 있으면, 인공지능 모델이 부드러운 피아노선율에 맞춰 발레를 출지, 강렬한 비트에 맞춰 힙합 동작을 만들어낼지 고민이 되지 않을까 한다. 원하는 춤의 형태를 명확히 정하고, (음악 및 춤)데이터를 늘려서 좀 더 가다듬는다면 훨씬 더 음악에 맞는 춤이 나오지 않을까 싶다.
춤을 추면서 느껴왔던점은 ‘보는사람 입장에서 Musicality가 가장 중요하지 않나’ 라는 생각이다. 춤동작이 조금 작아도, 몸이 뻣뻣해서 동작이 부드럽지 않아도 얼마나 음악에 잘 들어맞는 춤인지가 가장 중요한 요소라고 생각한다.
이쪽의 분야의 논문들도 주로 ‘Music driven dance generation’ 이라는 이름을 달고 출간되는 것 같다. Music driven, 춤이 얼마나 음악을 잘 표현하는지가 중요할텐데, 똑같은 음악에도 다양한 춤동작이 나올 수 있으므로 더욱 어려운 분야가 아닌가 싶다. 하지만 반대로, 원하는 춤의 형태가 있다면, 데이터셋과 음악을 잘 조합해서 넣으면, 박자에 원하는 춤동작들을 다양하고 자연스럽게 연결시킬 수 있을 것 같다. 서두에서 말했듯 창의적인 춤동작을 생성해 안무가에게 영감을 준다는것은 기업이나 학교에서 크게 논의할 가치가 없지 않나 싶으니, 영리목적으로 사용된다면 당분간은 원하는 데이터셋을 잘 구성하고 학습시켜 박자에 맞는 자연스러운 춤동작 연결을 만들어내는 방향으로 연구개발되지 않을까 싶다.
By Sunny in Seoul on December 31, 2021.
Exported from Medium on September 7, 2022.
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기