전체 영상 처리 전 짧은 클립으로 하드코딩된 자막 제거 기능 테스트하기
요약
하드코딩된 자막 제거 기능을 테스트하기 위한 심층 가이드를 제공합니다. 단순히 깨끗해 보이는 프레임만으로는 부족하며, 시간적 일관성(temporal consistency)과 깜빡임을 포착하는 것이 중요합니다. FFmpeg을 사용하여 까다로운 클립을 잘라내고, 원본과 결과물을 나란히 비교하여 가장자리 잔여물이나 질감 깜빡임 같은 미묘한 아티팩트를 검사해야 합니다.
핵심 포인트
- 테스트는 디테일하거나 움직이는 배경 위의 자막 등 까다로운 클립으로 진행해야 합니다.
- 비디오 인페인팅은 시간의 흐름에 따라 프레임별로 깜빡임을 보일 수 있으므로 주의해야 합니다.
- FFmpeg을 이용해 테스트 클립을 자르고, 원본과 결과물을 나란히 비교하여 아티팩트를 검사하는 방법을 안내합니다.
- 검사 시 가장자리 잔여물, 질감 깜빡임 등 5가지 핵심 점검 사항을 확인해야 합니다.
하드코딩된 자막 제거 기능을 평가하려면 가장 까다로운 푸티지(footage)가 포함된 짧은 클립으로 테스트해야 합니다. 그런 다음 복구된 영역을 세 가지 방식으로 검사하세요: 프레임별, 나란히 재생(side-by-side playback), 그리고 자막 밴드에 대한 간단한 수치적 확인입니다. 결과물이 사용 가능한지 결정하는 다섯 가지 요소가 있습니다: 남은 가장자리(leftover edges), 질감 깜빡임(texture flicker), 자막 영역을 통과하는 무언가가 있을 때의 동작, 해상도와 오디오가 유지되는지 여부, 그리고 도구가 실제로 이미지를 재구성했는지 아니면 단순히 번져 보이게 했는지 여부입니다. 이 가이드는 FFmpeg으로 테스트 클립을 자르는 방법, 무엇을 찾아야 하는지, 그리고 같은 검사를 통과하지 못하는 전체 렌더링(render)에 전념하는 것을 피하는 방법을 보여줍니다. 본 내용은 푸티지를 소유했거나 편집할 권한이 있다고 가정합니다.
깨끗해 보이는 프레임도 여전히 실패할 수 있는 이유
비디오 인페인팅(Video inpainting)은 이미지 인페인팅을 여러 번 반복하는 것처럼 보이지만, 시간의 흐름이 문제를 바꿉니다.🥲 일시 정지된 프레임에서 올바르게 보이는 복구 작업이라도 비디오가 재생되면 깜빡일 수 있습니다. 왜냐하면 각 프레임이 약간씩 다르게 채워졌기 때문입니다.
CVPR 2022의 DEVIL benchmark는 인페인팅을 세 가지 축(재구성, 사실성, 시간적 일관성)을 따라 평가합니다. 이의 저자들은 또한 안정성만으로는 오해를 불러일으킬 수 있다고 지적합니다. 흐릿하고 일정한 색상의 패치는 완벽하게 안정적이므로, 보기에는 나쁘지만 일관성 측면에서 높은 점수를 받을 수 있습니다. 테스트는 깜빡임과 과도한 평활화(over-smoothing) 둘 다를 포착해야 합니다.
1단계: 까다로운 부분에서 테스트 클립 자르기
가장 쉬운 장면으로 테스트하지 마세요. 다음 중 가능한 한 많은 것을 포함하는 5~10초를 선택하세요:
- 디테일하거나 질감이 있는 배경 위의 자막
- 텍스트 뒤로 움직이는 물체나 사람
- 밝은 배경 위의 밝은 텍스트 (또는 어두운 배경 위의 어두운 텍스트)
- 얼굴, 가장자리 또는 미세한 패턴 근처의 텍스트
FFmpeg으로 자르세요. 재인코딩(Re-encoding)을 하면 프레임 단위로 정확하게 자를 수 있습니다:
ffmpeg -ss 00:01:20 -i input.mp4 -t 8 \
-c:v libx264 -crf 18 -c:a aac test_clip.mp4
테스트 클립은 원본 해상도를 유지하세요. 다운스케일된 테스트는 찾으려는 아티팩트를 정확하게 숨깁니다.
2단계: 자막 영역을 나란히 비교하기
처리 후, 원본의 자막 영역과 결과물의 동일한 영역을 쌓아 올립니다. 하단 사분면에 자막이 있는 1080p 비디오의 경우:
ffmpeg -i test_clip.mp4 -i cleaned.mp4 -filter_complex \
"[0:v]crop=1920:270:0:810[a];[1:v]crop=1920:270:0:810[b];[a][b]vstack" \
-an compare.mp4
자신의 해상도에 맞게 크롭(crop) 값을 조정하세요. 먼저 정상 속도로 시청한 다음, 프레임 단위로 스크러빙(scrubbing)해보세요. 깜빡거림(Flicker)은 정지 이미지보다 움직이는 영상에서 훨씬 쉽게 보입니다.
3단계: 다섯 가지 점검 사항
- 가장자리 잔여물 (Edge residue). 텍스트가 있던 자리에 희미한 윤곽선, 그림자 또는 색상 테두리가 있는지 확인하세요. 많은 자막은 글자 너머까지 확장되는 윤곽선이나 드롭 섀도우(drop shadow)를 가지고 있기 때문에, 글리프(glyph)만 가리는 마스크는 고스트(ghost)를 남깁니다.
- 텍스처 깜빡임 (Texture flicker). 정지된 장면에서는 복구된 영역이 주변 영역만큼 안정적으로 보여야 합니다. 반짝거리거나
수리된 밴드와 동일한 클립의 손대지 않은(untouched) 밴드를 비교해 보세요. 대부분 정적인 장면에서는, 손대지 않은 것보다 훨씬 많이 변하는 수리된 밴드는 깜빡임 의심 지점(flicker suspect)이 됩니다. 이것은 대략적인 경험적 규칙일 뿐이며, 기준치(benchmark)는 아닙니다. 장면에 실제 움직임이 있으면 이 수치를 높이므로, 결과를 통과하거나 실패하는 데 사용하기보다는 어디를 살펴볼지 결정하는 데 사용하세요.
remover.work가 워크플로우에 적용되는 방식
테스트 클립의 목적은 전체 렌더링 비용을 지불하기 전에 도구가 사용자 영상에서 어떻게 작동하는지 파악하는 것입니다. remover.work는 제거(removal) 단계의 한 가지 옵션입니다. 이 곳의 하드코딩 자막 제거기는 자막 영역을 자동으로 감지하거나 사용자가 수동으로 영역을 그릴 수 있으며, 텍스트를 흐릿하게 처리하는 대신 텍스트 뒤의 그림을 재구성합니다.
이러한 테스트에는 두 가지 세부 사항이 중요합니다. 각 영상의 처음 5초는 워터마크 없이 원본 해상도로 5초 무료 미리보기를 제공하므로, 그 오프닝 몇 초가 무엇으로 구성되어 있는지 살펴보세요: 정적인 타이틀 카드는 움직이는 장면보다 훨씬 적은 정보를 알려줍니다. 전체 작업은 강제 구독이 없는 사용량 기반 크레딧(pay-as-you-go credits)을 사용하며, 크레딧은 전체 작업이 성공적으로 완료될 때만 차감됩니다. 영상 형식은 MP4, MOV 또는 WebM이며 최대 1GB까지 가능합니다. 어떤 도구를 사용하든, 전체 파일을 처리하기 전에 위에서 언급한 다섯 가지 점검 사항을 미리보기로 실행하세요.
흔히 실패하는 지점들
- 테두리, 빛(glow), 또는 반투명 배경이 있는 자막
- 직물, 잎사귀, 화면과 같은 미세하고 반복적인 패턴 위의 텍스트
- 자막 영역 바로 뒤의 빠른 움직임
- 얼굴이나 손을 겹치는 텍스트
- 영상 중간에 움직이거나 스타일이 변하는 번들 자막(Burned-in text)
이러한 것들은 이 기술을 피해야 할 이유가 아닙니다. 오히려 이것들이 테스트 클립에 포함되어야 하는 이유입니다.
마무리
자막 제거를 다른 처리 단계와 마찬가지로 다루세요. 가장 어려운 5~10초 구간에서 테스트하고, 움직이는 영상 속 결과물을 확인하며, 전체 렌더링을 확정하기 전에 경계면(edges), 깜빡임(flicker), 움직이는 물체, 해상도, 그리고 오디오를 점검하세요. 대부분의 문제를 초기에 포착하려면 대략적인 스크립트와 나란히 비교하는 클립만으로 충분합니다.
영상 복원 작업을 평가할 때 가장 먼저 확인하는 것은 경계면인가요, 깜빡임인가요, 아니면 다른 것인가요?🤗
고지 사항: 저는 위에서 언급된 도구인 remover.work를 위한 콘텐츠를 제작합니다. 소유하거나 편집 권한이 있는 푸티지만 처리하세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기