Transcript
00:00:00세상에, 좀 슬퍼 보이네요. 불쌍한 케이트 윈슬렛, 맙소사. 그냥 저기 혼자 서 있어요,
00:00:09잭도 없이요.
00:00:11넷플릭스가 방금 '비디오 객체 및 상호작용 삭제' 혹은 VOID라고 불리는
00:00:17매우 흥미로운 오픈 소스 AI 도구를 출시했습니다.
00:00:19대부분의 AI 비디오 도구는 이미 사물을 지우는 데 탁월합니다. 새로운 건 아니죠.
00:00:24하지만 장면 속에서 그 사물이 사라졌을 때의 결과물을 처리하는 데는 서툽니다.
00:00:29예를 들어, 볼링공이 핀을 치는 장면을 지우면 대부분의 모델은 핀이
00:00:34아무 이유 없이 쓰러지게 내버려 두지만, VOID는 이 문제를 해결하려고 합니다.
00:00:39넷플릭스와 Insight가 개발한 이 새로운 프레임워크는 인과관계를 이해하고
00:00:44제거된 객체에 따라 비디오 콘텐츠를 수정합니다.
00:00:47그래서 이번 영상에서는 이 모델을 자세히 살펴보고 작동 원리를 알아보겠습니다. 제가 사실
00:00:52이 모델의 성능을 제대로 테스트하기 위해 웹 앱을 만들었거든요. 직접 몇 가지
00:00:57비디오 테스트를 진행해 보겠습니다.
00:00:58정말 재미있을 것 같으니 바로 시작해 보죠.
00:01:05VOID는 'Video Object and Interaction Deletion'의 약자입니다.
00:01:09이게 왜 대단한 일인지 이해하려면 보통의 비디오 인페인팅이
00:01:15어떻게 작동하는지 봐야 합니다.
00:01:16표준 AI 지우개는 기본적으로 성능이 대폭 강화된 '내용 인식 채우기'입니다.
00:01:20빈 공간 주변의 픽셀을 보고 그 자리에 무엇이 있어야 할지 추측하죠.
00:01:24이 방식은 워터마크나 가만히 서 있는 사람에게는 효과적이지만,
00:01:29물리적 상호작용이 발생하는 순간 무너집니다.
00:01:31만약 믹서기로 스무디를 만드는 여자를 지우면, 일반 AI는 사람은 지우겠지만
00:01:36믹서기가 아무 이유 없이 계속 돌아가며 소용돌이치는 모습은 남겨둘 것입니다.
00:01:40겉모습은 수정하지만 주변 사물의 물리학적 법칙은 무시하는 것이죠.
00:01:46VOID는 '반사실적 현실'을 재구상함으로써 이러한 유령 상호작용 문제를 해결하도록 설계되었습니다.
00:01:53기본적으로 해당 사물이나 사람이 애초에 존재하지 않았던 버전의
00:01:57비디오를 만드는 것입니다.
00:01:58그리고 이 일을 해내는 방식이 꽤 영리합니다.
00:02:01그냥 즉시 그림을 그리기 시작하는 게 아닙니다.
00:02:03대신 '2단계 시스템'을 사용합니다.
00:02:06첫 번째 단계에서는 추론 단계를 거칩니다.
00:02:08먼저 VOID는 시각 언어 모델과 SAM2(Segment Anything Model 2)를 사용하여
00:02:15장면을 파악합니다.
00:02:16사실 SAM2가 어떻게 작동하는지에 대해 별도의 영상을 찍었으니 궁금하시면 확인해 보세요.
00:02:22SAM2가 제거하려는 대상의 픽셀 단위 궤적을 만드는 동안, AI는
00:02:28스스로에게 묻습니다. "이걸 지우면 또 무엇이 변할까?"
00:02:32도미노 쌓기에서 도미노 하나를 제거하면, AI는 다른 도미노들이 인과적으로
00:02:38영향을 받는다는 것을 식별합니다.
00:02:39그런 다음 연구진이 "Quad Mask"라고 부르는 것을 생성하는데, 이는 확산 모델에게
00:02:44어디를 지워야 할지뿐만 아니라 주변 영역의 물리 법칙을 어디서부터
00:02:50다시 써야 할지 알려주는 특수한 맵입니다.
00:02:51그다음 두 번째 단계는 생성 및 정교화입니다.
00:02:54해당 맵이 생성되면 비디오 확산 모델이 새로운 영상을 생성합니다.
00:03:00때때로 이런 모델들은 사물이 변형되거나 형태를 잃는 등 몽환적으로 변할 수 있습니다.
00:03:05이를 해결하기 위해 VOID에는 선택적인 두 번째 단계가 있습니다.
00:03:08필터링을 위해 'flow warp noise'라는 것을 사용하여 형태를 고정합니다.
00:03:14물리 법칙은 변하더라도 남은 사물들은 고정되고 일관되게 유지되도록 보장하는 것이죠.
00:03:19그런데 궁금하실 겁니다. 일어나지 않은 일을 AI에게 어떻게 가르칠까요?
00:03:23넷플릭스와 Insight 팀은 학습 데이터를 얻기 위해 자동차 사고를 촬영한 뒤
00:03:28현실에서 사고 전으로 되돌릴 수는 없었습니다.
00:03:30대신 'Kubric' 같은 합성 환경을 사용했습니다.
00:03:34그들은 전과 후의 버전이 있는 수천 개의 물리 시뮬레이션을 실행했습니다.
00:03:40충돌이 있는 버전과 물체가 아예 없었던 버전 말이죠.
00:03:44AI에게 두 버전을 모두 보여줌으로써 물체의 존재와
00:03:49그것이 환경에 미치는 영향 사이의 관계를 학습시켰습니다.
00:03:51매우 흥미로운 이야기지만, 이제 이 도구를 직접 테스트해 보겠습니다.
00:03:57실행하기 가장 좋은 방법은 H100 GPU나 그에 준하는 사양에서 돌아가는
00:04:02RunPod 모듈 같은 클라우드 GPU를 사용하는 것입니다.
00:04:05하지만 미리 말씀드리자면, 설정하는 게 전혀 간단하지 않습니다.
00:04:10깃허브(GitHub) 문서에는 빠진 내용도 많고 잘못된 정보도 있습니다.
00:04:14그래서 제대로 작동시키려면 주의해야 할 몇 가지 사항이 있습니다.
00:04:18예를 들어, 이 명령은 실패할 확률이 높은데 이 과정에
00:04:23SAM3 모델이 필요하다는 것을 명시하지 않았기 때문입니다.
00:04:25또한 쿼드 마스크의 이름이 반드시 quad_mask_0.mp4여야
00:04:30정상적으로 작동한다는 점을 명시하지 않아 이 명령도 실패할 수 있습니다.
00:04:35문서화되지 않은 이런 사소한 문제들이 아주 많습니다.
00:04:38그리고 그들의 Gradio 데모는 SAM2로 분할된 마스크가 이미 있다면 좋지만,
00:04:44실제로 그 마스크를 생성할 수 있는 그래픽 사용자 인터페이스(GUI)를 제공하지 않습니다.
00:04:48그래서 제가 이런 문제들을 모두 해결하고, 세분화 단계부터 추론 단계,
00:04:54그리고 2단계 시스템까지 모두 거칠 수 있는 바로 사용 가능한
00:05:00맞춤형 웹 앱을 구축했습니다.
00:05:02비디오를 업로드하고 마스크를 분할한 뒤 최종 결과물을 렌더링하기만 하면 됩니다.
00:05:07그 과정을 지금 바로 보여드리겠습니다.
00:05:09우선 고성능 GPU가 장착된 RunPod 인스턴스를 구동해야 합니다.
00:05:14이번 테스트에서는 H100을 사용하겠습니다.
00:05:17템플릿 섹션에서 컨테이너 크기를 100GB로 늘려야 한다는 점 잊지 마세요.
00:05:22그리고 포트 섹션에 8998 포트를 추가합니다. 여기가 바로
00:05:27우리 웹 앱이 노출될 곳이기 때문입니다.
00:05:29그다음은 포트에 SSH로 접속해서 제 레포를 클론하고, 해당 디렉토리로 이동해 run.sh
00:05:36명령을 실행하기만 하면 됩니다.
00:05:38모델을 실제로 다운로드하기 위해 허깅 페이스(Hugging Face) 토큰을 제공하라는 메시지가 뜰 것이고,
00:05:42SAM3 저장소에 대한 접근 권한이 있는지도 확인하세요. 이것은 접근이 제한된
00:05:48모델이라서 사용 허가를 요청해야 하거든요.
00:05:51보통 과정은 꽤 빠르고 몇 분 안에 승인이 납니다.
00:05:55그리고 제미나이(Gemini) API 키도 필요합니다. 세분화 단계에서 모델이
00:06:00정밀한 쿼드 마스크 생성을 위한 포즈 추정에 제미나이를 사용하기 때문입니다.
00:06:06좋습니다.
00:06:07두 자격 증명이 모두 준비되었다면 run.sh 명령이 모든 것을 설치하게 두세요.
00:06:13설치가 완료되면 이제 여기 명시된 명령어로
00:06:18웹 앱을 실행할 수 있습니다.
00:06:19이제 RunPod 페이지에서 해당 포트를 클릭하면
00:06:24우리의 웹 앱이 열립니다.
00:06:25이제 마침내 모델 테스트를 시작할 수 있습니다.
00:06:28첫 번째 테스트로 매트릭스의 이 유명한 장면을 사용하여
00:06:32네오를 장면에서 지우면 어떤 일이 일어나는지 보겠습니다.
00:06:35가장 먼저 해야 할 일은 제거 지침 프롬프트를 지정하는 것입니다.
00:06:41이 경우에는 "장면에서 흰색 기모노를 입은 격투가를 제거해 줘"
00:06:45같은 내용을 적으면 됩니다.
00:06:46그다음은 제거하고 싶은 물체나 사람 주변에 점을 찍어 세분화하는
00:06:51섹션입니다. SAM2 모델이 어떤 형태에 집중해야 할지 알 수 있게 말이죠.
00:06:57그 후 결과 파일이 저장될 출력 폴더를 지정합니다.
00:07:02이 폴더의 이름을 기억해야 합니다. 다른 탭에서 우리가 작업 중인 비디오를
00:07:06식별하는 고유 식별자로 사용될 것이기 때문입니다.
00:07:11그 후 두 번째 탭으로 넘어가면 세분화 단계를 실행하고
00:07:16프로세스를 진행합니다.
00:07:17완료되면 추론 단계인 세 번째 탭으로 이동합니다. 여기서
00:07:22모델이 실제로 원하는 물체나 사람을 제거하려고 시도합니다.
00:07:26여기서 아까 그 폴더 이름을 다시 입력해야 합니다.
00:07:29그리고 제거된 물체나 사람이 없는 상태의 비디오가
00:07:34어떤 모습이어야 하는지 설명하는 프롬프트를 입력해야 합니다.
00:07:37우리의 경우, "체육관 안에 서 있는 어두운 기모노를 입은 격투가"
00:07:42정도가 되겠네요.
00:07:43제거된 대상에 대해서는 언급하지 말고, 비디오에 무엇이 있어야
00:07:48하는지에만 집중해서 추론 단계를 실행하라고 권장하더군요.
00:07:52완료되면 이제 결과 탭으로 가서 최종 영상을 볼 수 있습니다.
00:07:58다시 한번 비디오 폴더를 지정해 줍니다.
00:08:01자, 보세요.
00:08:03세상에.
00:08:04네, 모피어스가 유령과 싸우는 것처럼 보이네요.
00:08:07손이 제거된 부분 등 몇 가지 일관되지 않은 부분을 볼 수 있습니다.
00:08:12완벽하진 않지만, 개선하기 위해 할 수 있는 일이 하나 더 있습니다.
00:08:18네 번째 탭에서 두 번째 단계 필터를 실행하여 더 나은 결과를 얻을 수 있습니다.
00:08:24두 번째 단계를 실행하고 나면, 두 번째 단계의 결과가
00:08:29표시되는 추가 창이 뜹니다.
00:08:32그런데 다시 봐도 여전히 좀 이상하긴 하네요.
00:08:34여전히 모피어스가 유령과 싸우거나 춤을 추는 것처럼 느껴집니다.
00:08:39보시다시피 모든 장면에 다 잘 통하는 것은 아닙니다.
00:08:42어떤 장면은 매우 이상하겠지만, 장면에서 네오를
00:08:48완전히 제거하는 일은 꽤 잘 해냈습니다.
00:08:49그건 그렇고, 재미있는 예시를 두 개 더 해보죠.
00:08:53여기는 라라랜드의 유명한 춤 장면입니다.
00:08:56여기서 엠마 스톤을 장면에서 제거하면 어떻게 될지 보겠습니다.
00:09:01와, 저것 좀 보세요.
00:09:03거의 흠잡을 데가 없어 보입니다.
00:09:05라이언 고슬링이 혼자 춤추고 있다는 게 정말 믿겨지네요.
00:09:09엠마 스톤이 라이언 고슬링 앞으로 지나가는 순간을 보세요.
00:09:13이 전환이 거의 매끄럽습니다.
00:09:15약간의 흔적은 보이지만 대부부은, 와, 정말 놀라운 결과네요.
00:09:21제가 테스트한 모든 결과 중에서 이게 가장 훌륭했습니다.
00:09:24어떤 면에선 이게 실행하기 가장 어려운 예시일 거라고 생각했거든요.
00:09:28하지만 놀랍게도 제가 한 모든 테스트 중에서 가장 좋은 결과를 냈습니다.
00:09:33좋습니다.
00:09:34한 가지 예시를 더 해보고 싶네요.
00:09:35이번에는 유명한 타이타닉 장면에서 레오나르도 디카프리오를 제거하면
00:09:41어떻게 될지 보겠습니다.
00:09:42오, 세상에, 좀 슬퍼 보이네요.
00:09:48불쌍한 케이트 윈슬렛.
00:09:49맙소사.
00:09:50잭도 없이 그냥 저기 혼자 서 있어요.
00:09:53흥미롭네요.
00:09:55이 모델이 장면에서 레오를 제거하는 일을 아주 잘 해냈다는 걸 알 수 있습니다.
00:09:59비록 케이트 윈슬렛의 팔에 약간의 흔적이 남아 있긴 하지만요.
00:10:03그리고 맙소사, 이건 너무 오싹하네요.
00:10:06반대편에 케이트의 팔을 잡고 있는 기괴한 손이 여전히 남아 있어요.
00:10:10안 돼요.
00:10:11이제 계속 생각날 것 같아요.
00:10:14솔직히 이건 제 실수입니다. 세분화 단계에서 제거를 위해
00:10:19해당 지점들을 구체적으로 지정하지 않았거든요.
00:10:21제 탓이죠.
00:10:23그리고 케이트 윈슬렛의 얼굴도 약간 변하는 걸 볼 수 있습니다.
00:10:26확실히 '불쾌한 골짜기' 현상이 좀 일어나고 있네요.
00:10:30전반적으로 이 도구는 광고하는 기능을 제대로 수행한다고 생각합니다.
00:10:33다만 특정 비디오의 성격에 따라 결과가 다를 뿐이죠.
00:10:37당연히 이 장면에서 모피어스가 가만히 서 있게 강제할 수는 없으니까요.
00:10:41하지만 프로젝트 페이지의 다른 예시들을 보면 정말 믿기 힘들 정도로 훌륭합니다.
00:10:46그래서 이 모델은 확실한 잠재력이 있고, 추가 학습을 거치면
00:10:51훨씬 더 좋아질 수도 있을 것 같습니다.
00:10:52자, 여기까지입니다 여러분.
00:10:53이게 바로 VOID 모델의 핵심입니다.
00:10:55솔직히 이걸 테스트하면서 정말 즐거웠습니다.
00:10:58넷플릭스에서 개발한 만큼, 과연 이걸 어디에 사용할지
00:11:03정말 궁금하네요.
00:11:04사용자의 취향이나 선택에 따라 비디오 서사를 바꾸는 데 쓰일 수 있을까요?
00:11:09넷플릭스가 '블랙 미러: 밴더스내치'에서 보여주었던 것 같은
00:11:15사용자 선택형 상호작용 경험처럼 말이죠.
00:11:17기억하시나요?
00:11:18누가 알겠어요?
00:11:19어쨌든 앞으로 이 도구가 어떻게 발전해 나갈지 지켜보는 것은
00:11:23매우 흥미로울 것입니다.
00:11:24자, 이 프레임워크에 대해 어떻게 생각하시나요?
00:11:27이 도구가 어떤 상황에서 유용하게 쓰일까요?
00:11:30아래 댓글 섹션에 여러분의 생각을 알려주세요.
00:11:33여러분, 이런 기술적인 분석이 마음에 드셨다면 영상 아래의
00:11:37좋아요 버튼을 꾹 눌러서 알려주세요.
00:11:39그리고 저희 채널 구독하는 것도 잊지 마시고요.
00:11:42지금까지 Better Stack의 Andres였고, 다음 영상에서 뵙겠습니다.