3줄 요약

  1. SaiKiran Tedla 외 6인(요크대학교, 토론토대학교, 벡터 연구소)의 SIGGRAPH Asia 2025 논문. ACM Transactions on Graphics 게재, 코드와 데모 공개.
  2. 흔들린 사진 한 장을 사전학습 비디오 확산 모델(CogVideoX-2B)에 조건으로 넣어, 노출이 열려 있던 동안의 영상뿐 아니라 촬영 직전과 직후까지 생성한다. 각 출력 프레임의 노출 시작 시각과 길이를 따로 지정하는 인코딩이 핵심 장치다.
  3. GoPro와 B-AIST++ 벤치마크의 모든 지표에서 기존 기법을 앞섰고(GoPro PSNR 30.01 대 26.54, FVD 21.46 대 94.90), 1944년 노르망디 상륙 사진 같은 역사 사진에도 일반화된다. 출력 영상은 카메라 궤적 복원, 4D 장면 재구성, 3D 얼굴 자세 추정 같은 후속 작업의 입력이 된다.

입력 모션 블러 이미지에서 생성한 영상 프레임, 추적 결과, 역사 사진 복원, 3D 구조 복원 Figure 1. 흔들린 사진 한 장(a)에서 노출 중의 장면 움직임을 복원하고(b, c), 역사 사진을 되살리며(d), 동적 3D 구조와 카메라 자세까지 얻는다(e). Tedla et al., CC BY-SA 4.0

흔들림은 손실인가 기록인가

카메라나 피사체가 노출 중에 움직이면 장면이 화면 위로 번진다. 보통은 버리는 사진이 된다. 논문은 반대쪽에서 본다. 번짐은 노출 시간 동안의 시공간 정보가 한 장에 눌려 담긴 결과이므로, 그 안에는 무엇이 어디로 얼마나 빠르게 움직였는지가 이미 적혀 있다.

이 문제를 다루던 기존 연구는 목표를 복원에 두었다. Jin 외(2018)는 흔들린 사진에서 여러 장의 선명한 프레임을 되살리는 과제를 처음 세웠는데, 되살린 프레임들은 순서를 뒤집거나 섞어도 평균하면 같은 흔들린 사진이 나온다는 모호성이 문제였다. 그래서 노출 한가운데에 해당하는 프레임을 먼저 복원하고 인접 프레임을 차례로 붙이는 방식을 썼다. 이후 연구들은 손실 함수와 신경망 구조를 다듬었지만, 학습에 쓰는 데이터가 많아야 수천 개 영상 클립 수준이었다. 물체 변형, 독립적으로 움직이는 여러 피사체, 가려짐과 드러남, 손떨림, 제각각인 셔터 속도가 뒤엉킨 실제 사진의 흔들림을 담기에는 부족한 규모다.

논문은 여기서 방향을 튼다. 이 과제를 이미지 복원으로 다루는 대신 조건부 영상 생성으로 옮긴다. 수백만 개 영상 클립과 수십억 장 이미지로 학습된 비디오 확산 모델은 이미 모션 블러를 숱하게 봤을 테니, 흔들림과 장면 움직임의 관계에 대한 사전 지식을 내장하고 있으리라는 가정이다.

흔들린 축구공 이미지를 조건으로 준 기성 비디오 확산 모델이 블러 방향과 일치하는 영상을 생성한다 Figure 2. 미세 조정 없이 기성 비디오 확산 모델에 흔들린 축구공 사진과 “회전 없이 움직이는 축구공"이라는 같은 문장을 주면, 공의 수평 이동과 수직 이동을 블러 방향에 맞춰 각각 옳게 예측한다. Tedla et al., CC BY-SA 4.0

이 예비 실험이 논문 전체의 출발점이다. 대형 비디오 모델은 흔들림을 읽을 줄 안다. 남은 일은 읽은 것을 원하는 시각 구간으로 정확히 뱉게 만드는 것이다.

프레임마다 노출 구간을 지정한다

바탕 모델은 텍스트-투-비디오 모델 CogVideoX-2B다. 20억 파라미터 확산 트랜스포머를 두 가지 조건에 맞게 고쳤다. 하나는 입력 흔들린 이미지, 다른 하나는 생성할 각 프레임의 노출 구간이다.

잠재 공간 인코딩. CogVideoX의 VAE로 입력 이미지를 잠재 프레임 한 장으로 압축한다. VAE는 공간 해상도를 8배, 영상의 경우 시간 해상도를 4배 줄인다. 따라서 잠재 영상의 프레임 하나가 출력 영상 네 장에 대응하고, 잠재 프레임 하나에는 네 개의 노출 구간이 딸린다.

노출 구간 인코딩. 입력 사진의 노출을 [0, 1]로 정규화하고, 생성할 프레임들의 구간을 이 기준에 대한 상대값으로 적는다. 각 좌표에 사인파 위치 인코딩을 적용하고 이어 붙인 뒤 선형 층으로 사영해 잠재 프레임에 더한다. 이 표현 덕분에 구간을 [0, 1] 안쪽에 두면 현재를, 바깥으로 밀면 과거와 미래를 요청할 수 있다.

학습. 확산 트랜스포머 전체와 노출 인코딩용 선형 층을 함께 미세 조정했다. NVIDIA L40 16장에서 배치 64로 10일, 20,000 반복, AdamW. 추론은 DDPM 솔버 50스텝에 classifier-free guidance 스케일 1.1로 L40 한 장에서 2분이 걸린다.

데이터. 일반화용 모델은 GoPro(240 FPS), Adobe240(240 FPS), REDS(120 FPS), iPhone240(240 FPS), Sports240(240 FPS)을 모아 694개 클립, 클립당 평균 507프레임으로 학습했다. 흔들림은 연속 프레임을 평균해 시뮬레이션하는데, 감마 보정된 색 공간에서 그대로 더하면 물리적으로 틀리므로 선형 sRGB에서 평균한다. 프레임 사이의 빈 시간이 크면 적분 근사가 나빠지므로, 프레임 보간기로 모든 영상을 1920 FPS로 시간 업샘플링한 뒤 더한다.

두 가지 모드. 현재 전용 모드에서는 120 또는 240 FPS 프레임 2~16장을 뽑아 평균한 흔들린 이미지를 조건으로 주고 원본 프레임들을 생성하게 한다. 더 큰 흔들림에도 견디도록 240 FPS 프레임 32장이나 48장을 더한 입력에서 16프레임을 생성하는 경우도 섞는다. 과거와 미래를 포함하는 모드에서는 2~8장을 평균한 입력으로 그 두 배 시간을 덮는 4~16프레임을 생성한다. 즉 노출 전후를 절반씩 예측하게 된다.

벤치마크 수치

평가에는 함정이 하나 있다. 흔들린 사진 한 장에서 복원한 영상은 시간을 거꾸로 돌려도 똑같이 타당한 답이다. 기존 연구는 예측 영상과 시간 역순 영상을 모두 정답과 비교해 더 좋은 쪽을 보고했다. 논문은 여기서 한 단계 더 들어가, 화면 전체가 아니라 패치 단위로 정방향과 역방향 중 나은 쪽을 고른다. 화면 안에서 서로 다른 방향으로 움직이는 물체들이 있기 때문이다. 이 방식으로 PSNR, SSIM, LPIPS를 계산하고, 여기에 분포 유사도인 FVD와 RAFT 광학 흐름 기반 EPE를 더해 다섯 지표를 쓴다.

표 1. GoPro 데이터셋 (PSNR, SSIM, LPIPS는 양방향 패치 버전)

방법PSNR↑SSIM↑LPIPS↓FVD↓EPE↓
Jin et al.25.230.81900.084235.533.38
MotionETR26.540.88250.01594.901.46
제안 기법30.010.93590.01021.460.39

표 2. B-AIST++ 데이터셋 (댄서 영상, 지정된 바운딩 박스 안에서 평가)

방법PSNR↑SSIM↑LPIPS↓FVD↓EPE↓
Animation from Blur26.690.92090.042138.272.65
제안 기법27.370.93060.02737.161.78

FVD 격차가 특히 크다. GoPro에서 94.90에서 21.46으로, B-AIST++에서 138.27에서 37.16으로 줄었다. 픽셀 정확도보다 “정답 영상 분포에 얼마나 가까운가"에서 차이가 벌어졌다는 뜻이다. 논문은 이를 바탕 모델의 대규모 사전학습이 남긴 자연 영상 사전 지식 덕으로 본다.

GoPro와 B-AIST++ 데이터셋에서 기존 기법과 제안 기법의 출력 프레임 및 추적 결과 비교 Figure 5. 왼쪽부터 기존 기법들과 제안 기법, 정답. 추적 궤적은 Cotracker로 계산했다. 아래 두 행은 야생 사진에서 기존 기법들이 선명한 프레임을 아예 만들지 못하는 사례다. Tedla et al., CC BY-SA 4.0

노출 바깥은 어디까지 버티는가

240 FPS 프레임 7장을 평균해 흔들린 이미지를 만들고, 모델에게 13프레임을 요구했다. 촬영 전 3장, 노출 중 7장, 촬영 후 3장이다.

프레임별 PSNR 그래프. 노출 구간 내부에서는 평탄하고 바깥으로 갈수록 낮아진다 Figure 4. 13프레임 예측의 프레임별 PSNR. Tedla et al., CC BY-SA 4.0

노출 안쪽 7프레임의 품질이 거의 일정하다. 노출 중 어느 순간이든 흔들림이 똑같이 잘 구속한다는 뜻이다. 바깥으로 나가면 정확도가 떨어지지만 그래도 20~30 dB 범위에 머문다. 흔들림 한 장이 촬영 전후에 대해서도 꽤 강한 단서를 준다는 결과다.

사진이 다시 움직이기 시작할 때

야생 사진, 역사 사진, 4D 재구성, 3D 얼굴 자세 복원 응용 사례 모음 Figure 6. (a) 야생 사진에서 노출 전, 노출 중, 노출 후를 생성한 결과 (b) 역사 사진의 장면 움직임 복원 (c) 구조 복원으로 얻은 3D 장면과 카메라 자세 (d) 80여 년 전 흑백 사진의 미세한 움직임 (e) 흔들린 인물 사진에서 복원한 3D 얼굴 움직임. Tedla et al., CC BY-SA 4.0

야생 사진. 달리기, 자전거, 서핑, 체조, 물 튀김, 회전목마 같은 원운동까지 다룬다. 도심 교차로처럼 서로 다른 궤적으로 움직이는 물체가 여럿 섞인 장면에서도 프레임을 회복한다. 반면 GoPro로 학습된 기존 기법들은 이런 사진에서 선명한 프레임 자체를 만들지 못했고, 애초에 노출 구간 바깥을 생성하는 기능이 없다.

역사 사진. 1944년 6월 6일 노르망디 상륙 당시 상륙정에서 쏟아져 나오는 병사들의 사진에서 움직임의 방향과 크기를 복원했다. 1971년 무하마드 알리와 위르겐 블린의 경기 사진에서는 알리가 주먹을 꽂는 순간이 영상으로 이어지고, 1998년 사진에서는 우주비행사 존 글렌이 24mm 카메라를 조심스럽게 다루는 장면이 나온다.

4D 재구성. 생성한 영상에 MegaSaM을 적용해 조밀한 동적 3D 점군과 카메라 자세를 뽑는다. 이것이 가능하려면 출력 영상이 프레임마다 그럴듯한 데 그치지 않고 시간축을 가로질러 기하학적으로 일관돼야 한다.

3D 얼굴 자세. 흔들린 인물 사진에서 머리의 강체 운동을 복원한 뒤 얼굴 추적기로 2D 랜드마크를 잡고 매개변수 3D 두상 모델을 정합했다. 예측 영상이 하나의 3D 표현으로 설명될 만큼 기하학적으로 일관됐다는 증거다.

생성된 영상은 무엇을 지키고 무엇을 지어내는가

여러 답이 있는 질문. 하나의 흔들린 사진을 설명하는 영상은 원리상 무한히 많다. 같은 입력으로 여러 번 표본을 뽑아 보면 모델이 학습한 분포가 드러난다.

택시 사진에서 네 번 표본을 뽑아도 모두 같은 방향으로 진행한다 Figure 8. 택시는 네 표본 모두 오른쪽에서 왼쪽으로, 즉 차량의 정면 방향으로 움직인다. Tedla et al., CC BY-SA 4.0

흔들린 얼굴 사진에서는 좌우 양방향의 움직임이 모두 표본으로 나온다 Figure 7. 고개를 젓는 얼굴처럼 방향이 모호한 경우에는 좌에서 우, 우에서 좌 양쪽이 모두 표본으로 나온다. Tedla et al., CC BY-SA 4.0

사람, 자동차, 동물은 대체로 정면 방향으로 나아가도록 예측된다. 현실 세계의 운동 사전 지식이 반영된 결과다. 논문은 이 절의 결론을 분명히 밝힌다. 모델은 촬영 순간에 실제로 일어난 움직임을 되찾는 것이 아니라, 일어났을 법한 일의 표본을 만들어 낸다.

3D 일관성. 카메라 이동으로 생긴 흔들림 장면에서 첫 프레임과 마지막 프레임에 SIFT와 RANSAC을 적용해 대응점을 찾고 기본 행렬과 호모그래피를 구했다.

트럭 장면의 에피폴라 선과 호모그래피 잔차 시각화 Figure 9. 에피폴라 선이 전진하는 카메라 운동과 일치한다. 호모그래피는 배경을 잘 맞추지만 표지판에서 큰 오차를 남기는데, 이는 장면의 3D 구조에서 생기는 시차 때문이다. Tedla et al., CC BY-SA 4.0

시점 변화 없이 패닝만 한 장면에서는 움직임이 2D 호모그래피로 정확히 설명된다. 3D 지도를 따로 감독하지 않았는데도 출력이 기하학적으로 그럴듯하다는 정황이다.

입력과의 일치. 생성 프레임들을 평균해 입력 흔들린 사진과 비교한 PSNR은 GoPro에서 35.47 dB로 Jin et al.(33.64)과 MotionETR(32.17)보다 높지만, B-AIST++에서는 32.32로 Animation from Blur(33.76)보다 낮다. 논문은 이 지표 하나만으로는 의미가 없다고 명시한다. 입력 사진을 그대로 반복 출력하는 자명한 해가 만점을 받기 때문이다.

입력 흔들린 이미지와 각 기법이 생성한 프레임들의 평균 비교 Figure 11. 입력 흔들린 이미지와, 각 기법이 생성한 프레임을 평균한 이미지의 비교. Tedla et al., CC BY-SA 4.0

노출 구간 제어. GoPro 테스트 세트 20장으로 같은 입력에서 2, 4, 8, 16프레임을 요청해 봤다. 프레임 수가 늘수록(개별 노출이 짧아질수록) PSNR은 31.10에서 26.15로 완만하게 내려간다. 프레임 사이에 한 프레임씩 빈 시간을 두는 비연속 구간에서는 23.00까지 떨어지지만 여전히 그럴듯한 영상이 나온다.

비교 실험 두 가지가 이 설계의 값을 보여준다. 프레임별 구간을 직접 주는 대신 첫 프레임 시작 시각, 마지막 프레임 종료 시각, 균일 프레임 길이, 프레임 수라는 네 값으로 같은 정보를 간접 표현한 모델은 모든 설정에서 뒤졌다(2프레임 설정 기준 25.25 대 31.10). 사인파 인코딩을 빼고 노출 값에 선형 층만 적용한 모델도 마찬가지로 떨어졌다(28.27 대 31.10).

한계

합성 사진, 타임랩스, 빠른 패닝 사진에서의 실패 사례 Figure 12. 실패 사례. Tedla et al., CC BY-SA 4.0

첫째, 서로 다른 시각에 찍은 사진을 합성해 만든 이미지는 단일 연속 노출이라는 전제를 어기므로 출력 품질이 나빠진다. 둘째, 불꽃 막대의 타임랩스처럼 극단적으로 긴 노출은 실패한다. 셋째, 빠른 패닝과 복잡한 장면 운동이 겹친 스포츠 사진에서는 아티팩트가 생긴다.

또 하나 눈에 띄는 제약은 메모리다. 잠재 공간 모델에 확산 사후 표본화 계열의 일치성 제약을 걸어 보려 했으나, VAE를 통과해 역전파하는 데 380 GB가 필요해 포기했다. 대신 흔들린 이미지에서 합성한 학습 데이터로 미세 조정하는 과정 자체가 일치성을 만들어 내도록 두었다.

가장 눈여겨본 것

내가 오래 머문 부분은 성능표가 아니라 7.1절의 한 문장이다. 모델은 촬영 순간에 실제로 일어난 일을 복원하지 않고, 일어났을 법한 일의 표본을 생성한다. 저자들이 스스로 명시한 한계다.

그런데 이 논문의 가장 인상적인 결과는 1944년 노르망디 해변과 1971년 링 위의 사진이다. 여기서 두 성질이 정면으로 만난다. 아무도 다시 찍을 수 없는 장면을 되살리는 능력과, 되살린 것이 그날 실제 움직임이라는 보장이 없다는 점이. 논문은 이 긴장을 숨기지 않는다. 택시는 네 번 뽑아도 앞으로 가지만 고개를 젓는 얼굴은 좌우 양쪽으로 갈린다는 그림 두 장이, 어디까지가 흔들림이 정한 답이고 어디부터가 모델의 세계 지식인지 갈라 보여 준다.

블러 일치성 지표를 두고 “입력을 그대로 뱉으면 만점"이라고 스스로 적어 둔 대목도 인상적이었다. 자기 방법이 그 지표에서 한 데이터셋은 이기고 다른 데이터셋은 진다는 표를 그대로 싣고, 지표 자체가 단독으로는 쓸모없다고 밝히는 서술이다. 유리한 숫자만 남기지 않은 표가 오히려 나머지 수치의 신뢰를 올린다.

출처

SaiKiran Tedla, Kelly Zhu, Trevor Canham, Felix Taubner, Michael S. Brown, Kiriakos N. Kutulakos, David B. Lindell. “Generating the Past, Present and Future from a Motion-Blurred Image.” ACM Transactions on Graphics 44(6), SIGGRAPH Asia 2025.

프로젝트 페이지: https://blur2vid.github.io/ 논문: https://dl.acm.org/doi/10.1145/3763306 arXiv: https://arxiv.org/abs/2512.19817 코드: https://github.com/tedlasai/blur2vid/ 데모: https://huggingface.co/spaces/torontocomputationalimaging/blurtovid

본문 그림은 모두 논문(arXiv:2512.19817v1, CC BY-SA 4.0)에서 인용했다. 그림 안에 포함된 개별 사진의 저작권은 논문 캡션에 표기된 원 출처를 따른다.