CCTV 골목의 막대 인형에서 시작한 미션의 마지막이다. "춤춰" 두 글자가 단어 주머니를 지나 막대 인형의 춤이 되고, 그 춤이 포즈 맵이 되어 조수의 모습을 입는다. 실제 영상을 프레임 단위로 열어 보고, 화면에 떠 있는 "동작 일치율 76.5%"가 무엇을 말하고 무엇을 말하지 않는지 따져 본다.
5-4까지 막대 인형은 말을 알아듣고 춤을 췄다. 하지만 아직 뼈대뿐이다. 마지막 미션은 이 뼈대에 사람의 모습을 입혀 영상으로 만드는 것이다. 모델이 될 사람은 조수다.
칸을 누르면 그 단계를 설명한다. 1~4단계는 이 시리즈에서 직접 만든 계산이고, 5~6단계는 주어진 영상이 보여 준다.
| 단계 | 들어가는 것 | 나오는 것 | 이 시리즈의 편 |
|---|---|---|---|
| 1~2 말 깔때기 | "춤춰" | 공유 지도의 점 하나 (8칸) | 5-4 섹션 2·3 |
| 3 동작 생성 | 지도의 점 | 막대 인형 동작 (프레임 × 관절 13개) | 5-3 섹션 6, 5-4 섹션 5 |
| 4 포즈 맵 | 관절 좌표 | 검은 바탕의 색 막대 그림 (프레임마다) | 5-1 섹션 3의 반대 방향 |
| 5 포즈 기반 생성 | 참조 이미지 + 포즈 맵 | 조수가 그 자세를 한 프레임 | 이 편 섹션 3 |
| 6 영상 | 프레임들 | 춤 영상 | 이 편 섹션 4 |
포즈 기반 영상 생성 모델은 대부분 확산 모델이다. 무작위 노이즈에서 시작해 단계마다 조금씩 걷어 내며, "외모는 참조 이미지처럼, 자세는 포즈 맵처럼"이라는 두 조건을 참고한다. 막대를 옮겨 노이즈를 걷어 보자.
| 외모 인코더 | 참조 이미지의 얼굴·머리·옷 특징을 뽑아, 그리는 동안 계속 참고하게 한다(ReferenceNet류) |
| 포즈 가이더 | 포즈 맵을 작은 합성곱 신경망으로 접어 노이즈 위에 더한다. "이 자리에 팔"이 처음부터 정해진다 |
| 시간 층 | 앞뒤 프레임을 서로 참고하게 해 옷 색·머리카락이 깜빡이지 않게 한다 |
이 화면은 완성된 프레임(영상 속 조수)에 노이즈를 비율대로 섞어 "단계마다 남은 원래 신호의 몫"을 보여 준 것이다(√ᾱ 계산은 실제 확산 모델의 일정표를 따랐다). 실제 모델은 이미지를 작게 접은 잠재 공간에서 노이즈를 다루고, 단계마다 "여기서 노이즈는 이만큼"을 예측해 뺀다 [R1]. 참조 이미지와 포즈로 사람을 움직이는 구조는 Animate Anyone [R2] 계열이 대표적이다. 주어진 영상이 어떤 모델과 설정으로 만들어졌는지는 영상에 표기되어 있지 않다.
영상은 두 춤을 나란히가 아니라 앞뒤로 이어 붙였다(0~4.96초 막대 인형, 4.96~10초 조수). "나란히 보기"를 누르면 같은 파일을 두 화면에 띄워 같은 순간끼리 맞대 본다. 오른쪽 화면의 어긋남을 옮겨 두 춤이 맞는 순간을 찾아보자.
처음에는 소리가 꺼져 있다. "소리 켜기"로 음악을 들을 수 있다. 나란히 보기에서 어긋남을 0.9초 근처로 옮겨 보자.
먼저 영상 속 숫자가 무엇인지 확인하고, 그다음 일치율을 직접 재 본다. 같은 춤도 어떻게 재느냐에 따라 숫자가 크게 달라진다.
| 확인한 것 (코드 2) | 결과 | 뜻 |
|---|---|---|
| 숫자 칸이 프레임마다 바뀌나 | 첫 프레임과의 픽셀 차이 최대 0.07 | 240프레임 내내 76.5% 그대로다. 프레임마다 다시 계산한 값이 아니다 |
| 앞 장면과 뒤 장면의 일치율 상자 | 같은 시각끼리 평균 차이 0.16 | 같은 오버레이를 두 장면에 한 번씩 재생했다. 아래 분홍 막대의 출렁임도 장식이다 |
| 계산 방식 표기 | 없음 | 무엇과 무엇을, 어떤 점수로 비교했는지 영상만으로는 알 수 없다 |
왼쪽은 5초 안무(손 흔들기 → 가리키기 → 팔 벌리고 무릎 → 두 팔 들기), 오른쪽은 같은 안무를 늦게 따라 추는 춤이다. 관절 거리 점수는 골반을 맞춘 뒤 관절마다 exp(−거리²/2·0.1²)의 평균, 팔다리 방향 점수는 뼈 8개 방향의 코사인 유사도 평균이다.
| 상황 | 관절 거리 점수 | 팔다리 방향 점수 |
|---|---|---|
| 같은 춤, 같은 시각 | 100.0% | 100.0% |
| 0.33초 늦게 따라 춤 | 90.8% | 96.4% |
| 1.0초 늦게 따라 춤 | 77.6% | 87.8% |
| 좌우가 뒤집힌 춤 | 82.5% | 88.6% |
| 1.0초 늦고 좌우도 뒤집힘 | 78.7% | 86.5% |
| 1.0초 늦은 춤을 15프레임 앞당겨 맞춤 | 100.0% | — |
| 동적 시간 와핑(DTW)으로 맞춤 | 99.6% | — |
| 좌우까지 뒤집힌 춤: 시간만 맞춤 / 좌우도 되돌림 | 79.6% / 100.0% | — |
CCTV 골목의 막대 인형 하나가 특징이 되고, 생성의 재료가 되고, 접혔다 펼쳐지고, 말과 짝을 지어, 마지막에 조수의 춤이 되었다. 카드를 누르면 그 편으로 간다.
화면 숫자 6백만 개 → 관절 26개 → 특징 4개 → 판정
손목 속도 규칙 → 특징 4개 + 학습
5-2 생성알아보기에서 만들기로화살표를 뒤집으면 정답이 아니라 분포를 배운다
좌표 주사위 → 손잡이(잠재 변수) 뽑기의 뼈 길이 오차
5-3 압축인코더·디코더숫자 1,196개를 16개로 접고 펼친다
숫자 16개가 담은 움직임
5-4 텍스트단어에서 동작으로말과 동작을 같은 지도에 놓는 대조 학습
짝 맞추기 손실, 400걸음
5-5 최종"춤춰"에서 춤 영상으로포즈 맵에 조수를 입혀 영상으로
영상에 표시된 일치율 (계산 방식 미표기)
두 코드 모두 Colab에 기본으로 설치된 라이브러리만 쓴다. "노트북(.ipynb) 내려받기" 후 Colab에서 파일 → 노트북 업로드로 열거나, 복사해서 새 노트북 칸에 붙여 넣는다.
5초 안무를 만들고, 늦게 따라 추거나 좌우를 뒤집은 춤과 두 가지 점수로 비교한다. 시간 맞추기와 동적 시간 와핑(DTW)도 들어 있다. 내 데이터로 바꾸려면 dance_seq 대신 두 영상에서 포즈 추정으로 뽑은 관절 좌표(프레임, 13, 2)를 A와 B에 넣는다.
영상의 해상도·길이, 장면 전환, 일치율 숫자 칸의 변화, 두 장면의 시간 어긋남을 잰다. 섹션 4·5의 영상 분석 숫자가 여기서 나왔다. 영상 파일은 이 페이지에 들어 있는 것과 같은 match_score_video.mp4를 Colab에 올려 쓴다.
ChatGPT, Qwen, Claude 같은 AI 도우미에 붙여 넣는 프롬프트다. "복사"를 누르면 프롬프트 뒤에 고른 코드가 함께 붙는다. 〔 〕 안을 내 상황으로 바꿔 쓰면 된다.
AI의 답은 출발점일 뿐이다. 제안된 논문·수치·라이브러리 함수는 반드시 원문과 공식 문서로 확인한다. 실제 사람이 나오는 영상을 쓸 때는 촬영 동의와 개인정보 처리 규정을 먼저 확인한다.
본문의 노란 점선 밑줄과 같은 사전이다. 섹션 이름을 누르면 처음 나온 곳으로 간다.
비유는 이해의 첫걸음이지만 오해의 씨앗도 된다. 사람의 지각과 견준 비유에는 강도를 표시했다. 직접 실제로 같은 일을 한다는 근거가 있음 · 부분 일부 성질만 닮음 · 없음 대응하는 것이 알려지지 않음
| 개념 | 일상 비유 | 사람의 지각 비유 | 비유가 틀리는 지점 |
|---|---|---|---|
| 포즈 기반 생성 | 마네킹 자세를 잡아 두고 그 위에 옷을 입혀 사진 찍기 | 부분 사람이 동작을 보고 그 동작을 하는 특정 인물을 떠올리는 것 | 마네킹은 같은 옷이 그대로지만, 생성 모델은 프레임마다 옷과 얼굴을 새로 그려서 조금씩 달라질 수 있다 |
| 참조 이미지 | 배우의 프로필 사진 | 없음 | 프로필 사진에 없는 뒷모습·손가락은 모델이 지어낸다. 지어낸 부분이 원래 사람과 다를 수 있다 |
| 포즈 맵 | 무용 악보(안무 기록) | 없음 | 안무 기록은 사람이 읽고 해석하지만, 포즈 맵은 관절 위치만 담는다. 표정·손가락·리듬은 빠진다 |
| 동작 일치율 | 노래방 점수 | 없음 | 노래방 점수처럼 계산 방식이 감춰져 있으면 숫자만으로 잘했는지 알 수 없다. 무엇과 무엇을 어떻게 비교했는지가 먼저다 |
| 시간 맞추기 (DTW) | 박자가 밀린 두 사람의 춤 영상을 박자에 맞춰 다시 편집하기 | 부분 사람은 박자가 조금 밀려도 "같은 춤"이라고 알아본다 | DTW는 순서를 바꾸지 않고 늘이고 줄일 뿐이다. 동작 순서가 바뀐 춤은 맞추지 못한다 |
E-1 저자 소개 · E-2 학술 레퍼런스 · E-3 그림과 숫자의 출처
강사, 실무 OJT 담당자, 튜터를 위한 운영 안내다. 시간은 예상치이므로 실제 수업에 맞춰 조정한다. 이 편은 시리즈 정리 수업으로도 쓸 수 있다.
| 대상 | 5-1~5-4를 마친 대학생·직장인. 생성 영상과 "AI 점수"를 업무에서 다루는 기획자·실무자 |
|---|---|
| 선수 지식 | 5-1의 포즈 추정, 5-4의 말 → 동작, 확산 모델의 기본 생각(노이즈를 걷어 낸다) |
| 학습 목표 | ① 프롬프트에서 영상까지 여섯 단계를 순서대로 설명한다 ② 참조 이미지와 포즈 맵이 각각 무엇을 정하는지 말한다 ③ 일치율 같은 숫자를 볼 때 "무엇을, 어떻게 비교했나"를 묻고, 시간 어긋남이 점수를 어떻게 바꾸는지 예를 든다 |
| 예상 시간 | 읽기 30~40분 · 영상 시연 20분 · Colab 실습 25분 (코드 1 12분, 코드 2 13분) |
도입 5분(섹션 1) → 섹션 2 여섯 단계 10분 → 섹션 4 영상 나란히 보기 10분 → 섹션 5 일치율 실험 12분 → 섹션 6 시리즈 지도 8분 → 확인 문제 5분.
섹션 4·5 25분 → 팀별로 "우리 업무의 AI 점수"를 하나 골라 무엇을 어떻게 비교했는지 역추적하기 25분 → 코드 2로 영상 직접 측정 20분 → 섹션 3의 의상 차이로 생성물 표시·동의 토론 20분.
입문자는 섹션 2·4·6만. 중급자는 코드 1의 score_dist를 손으로 한 프레임만 계산해 보게 하고, DTW의 표 채우기를 3 × 3으로 따라가게 한다.
| 섹션 | 멈춰서 물어볼 질문 | 조작 팁 |
|---|---|---|
| 2 한 줄로 | "이 중 어느 단계가 이 시리즈에서 직접 계산한 것이고, 어느 단계가 주어진 영상인가?" | 칸을 하나씩 눌러 아래 설명의 마지막 문장을 읽는다 |
| 3 조수 그리기 | "참조 이미지는 실험복인데 왜 영상은 아이돌 의상일까?" | 단계를 0 → 25로 끌고, 아래 솔로 12컷과 비교한다 |
| 4 영상 | "두 춤의 회전은 몇 초에 일어나나?" | 나란히 보기에서 어긋남을 0 → 0.9초로 옮긴다 |
| 5 일치율 | "같은 춤인데 왜 77.6%인가? 100%로 만들려면?" | 늦음 1.0초에서 "시간 맞추기"를 누른다 |
| 6 정리 | "다섯 편에서 가장 중요했던 숫자 하나를 고른다면?" | 카드를 눌러 해당 편으로 돌아가 본다 |
| 오해 | 바른 설명 | 보여 줄 장면 |
|---|---|---|
| "춤춰"라고 하면 AI가 춤을 이해해서 영상을 만든다 | 여러 단계가 숫자를 넘겨받는 흐름이다. 말 → 지도의 점 → 관절 좌표 → 포즈 맵 → 프레임 | 섹션 2 |
| 영상에 뜬 일치율은 믿을 만한 측정값이다 | 이 영상의 76.5%는 240프레임 내내 같은 값이고 계산 방식이 표기되지 않았다 | 섹션 5 위 표 |
| 일치율이 낮으면 춤을 못 따라 한 것이다 | 같은 춤도 1초 늦으면 77.6%다. 타이밍과 좌우를 맞추면 100%가 된다 | 섹션 5 직접 재 보기 |
| 참조 이미지의 모습이 그대로 나온다 | 원칙은 그렇지만 참조에 없는 부분(뒷모습 등)은 지어내고, 이 영상처럼 의상이 다를 수도 있다 | 섹션 3 아래 노트 |
| 포즈 맵만 있으면 누구든 춤추게 할 수 있으니 문제없다 | 실존 인물의 외모로 영상을 만들 때는 본인 동의와 생성물 표시가 필요하다 | 섹션 6 "사람의 몫" |
24 × 10 = 240프레임. 119 ÷ 24 ≈ 4.96초.
exp(−0.01 / 0.02) = exp(−0.5) ≈ 0.607. 거리가 σ만큼 벌어지면 그 관절은 약 61점이다.
그대로 77.6%, 앞당겨 맞추면 100.0%. 늦음이 "틀림"으로 잡혔던 것이다.
숫자 칸의 픽셀이 240프레임 내내 첫 프레임과 거의 같고(차이 최대 0.07), 두 장면의 일치율 상자가 같은 시각끼리 거의 같았다(평균 차이 0.16). 같은 오버레이를 두 번 재생한 것이다.
참조 이미지는 외모(얼굴·머리·옷), 포즈 맵은 자세. 노이즈를 걷는 초반(큰 윤곽)은 포즈 맵이, 후반(얼굴·장식·무늬)은 참조 이미지가 크게 일한다.
코드 1에서 σ를 0.05, 0.1, 0.2로 바꿔 "1.0초 늦게 따라 춤"의 관절 거리 점수를 비교한다. σ가 점수에 어떤 영향을 주는지, 일치율을 발표할 때 σ도 밝혀야 하는 이유를 두 문장으로 쓴다.
MediaPipe로 이 영상의 두 장면에서 관절 좌표를 뽑아(조수 장면은 실패하는 프레임도 기록) 코드 1의 score_dist와 best_shift로 실제 일치율을 계산한다. 시간을 맞추기 전과 후의 점수, 좌우를 되돌린 점수를 76.5%와 비교해 보고한다.
| 입문자 | 섹션 4의 나란히 보기와 섹션 5의 "시간 맞추기" 버튼 하나면 이 편의 핵심을 얻는다 |
|---|---|
| 심화 | Animate Anyone 논문의 구조도를 섹션 3의 표(외모 인코더·포즈 가이더·시간 층)와 짝지어 발표하게 한다 |
| 시리즈 복습 | 섹션 6의 다섯 카드 숫자(60.7% → 99.7%, 44.2% → 0.0%, 99.8%, 1.90 → 0.01, 76.5%)가 각각 무엇을 쟀는지 한 줄씩 설명하게 한다 |
「5-5 "춤춰"에서 춤 영상으로」까지, 미션 다섯 개를 모두 마쳤어요. 연구실 식구들의 마지막 한마디입니다.