방송 기술/기술정보

시각적 무손실 동영상 압축 기술 (Part-3)

초이1220 2022. 6. 27. 13:36
728x90

이번시간으 시각적 무손실 동영상 압축기술 Part-3으로 압축된 동영상 파일이 원본대비 얼마만큼의 화질이 손실 되었는지를 알아보기 위한 방법을 알려드리겠습니다.

 

원본대비 압춛 동영상을 비교하는 알고리즘은 여러가지 기법등이 있으며 PSNR 이라는 픽크타임 신호대 잡음비를 나타내는 값으로도 분석이 가능하다고 합니다. 하지만 해당 문서와 TOOL을 이용해서 분석해 보았으나 제가 이해하기가 너무 어려워 이번 장에서는 VMAF라는 방식을 알아 보도록 하겠습니다.

 

PSNR 방식의 툴을 이용해서 나온 결과는 그래프로 표현되는데 일반 방송신호용 계측기에서 나오는 그래프 형태로 물론 오래된 전문 방송엔지니어가 계측기 그래프를 보고 어떤 색에 문제가 있는지 알 수 있듯이 전문가 분들이 보시면 알 수 있을수도 있으나 나름 저도 그쪽분야 전문가이지만 도저히 알 수 없어서 VMAF의 품질 점수에 대해서 말씀드리겠습니다.

 

1. VMAF (video multimethod assessment fusion)란?

VMAF는 기존 이미지 품질 메트릭 및 기타 기능을 사용하여 비디오 품질을 예측하는 방식 입니다.

 - VIF( 시각 정보 충실도 ): 네 가지 공간 척도에서 정보 충실도 손실을 고려합니다.
 - DLM(Detail Loss Metric): 세부 정보 손실 및 시청자의 주의를 산만하게 하는 손상을 측정합니다 .
 - MCPD(Mean Co-Located Pixel Difference): 휘도 구성요소 에서 프레임 간의 시간적 차이를 측정합니다.

 

위의 기능은 SVM 기반 회귀를 사용하여 융합되어 비디오 프레임 당 0–100 범위의 단일 출력 점수를 제공하며 100은 참조 비디오와 품질이 동일합니다. 그런 다음 이러한 점수는 산술 평균 을 사용하여 전체 비디오 시퀀스에 대해 일시적으로 풀링되어 전체 DMOS( 미분 평균 의견 점수 )를 제공합니다.

 

위의 내용두 읽어 보시면 쉬운 정의는 아닙니다.

 

아주 쉽게 정의를 하자면 원본대비 압축된 영상을 100점 만점의 점수로 표현한 내용 입니다. 넷플릿스에서 사용하는 방식이며 넷플릿그의 발표에 의하면 약 70점 기준으로 점수가 낮아지면 사람들 눈에 화질이 조금 낮아 졌다라고 느낀다고 합니다.

그리고 이 VMAF에 사용된 넷플릭스 Dataset 기준은 1080P 기준입니다. 만약 동일한 방식으로 720P이하를 살펴보면 점수가 높게 나오며, 4K 영상을 측정하면 상대적으로 낮은 점수가 나오니 이점 참고 하시면 좋을 것 같습니다.

 

720P 혹은 4K 영상에 대한 VMAF 적용 방법은 향후에 확인 하여 글을 남기도록 하겠습니다.

 

이장에서는 윈도우 시스템에서 VMAF 설치 및 테스트 하는 방법에 대해서 알려드리도록 하겠습니다.

 

2. VMAF 설치 방법

(1) ffmpeg 설치 (윈도우)

ffmpeg 공식 다운로드 사이트 https://ffmpeg.org/download.html 에 들어가서 윈도우용 ffmpeg를 다운로드 및 압축을 풉니다.

 

https://www.gyan.dev/ffmpeg/builds/

 

Builds - CODEX FFMPEG @ gyan.dev

FFmpeg is a widely-used cross-platform multimedia framework which can process almost all common and many uncommon media formats. It has over 1000 internal components to capture, decode, encode, modify, combine, stream media, and it can make use of dozens o

www.gyan.dev

(팁) 명령어 입력기(cmd)를 실행시키거나 ffmpeg을 환경변수에 포함시키기 위해 사용자가 편한 디렉토리에 압축을 풉니다. (저는 c:/ffmpeg를 만들고 풀었습니다)

 

(2) VMAF 패키지 적용하기

https://github.com/Netflix/vmaf/tree/master/model 에 접속후 

vmaf_float_v0.6.1.pkl을 다운 받아 로컬디스크의 특정 디렉토리에 복사합니다.

 

참고로 저는 C:\ffmpeg\model 이라는 폴더를 만들고 복사 했습니다.

 

vmaf/model at master · Netflix/vmaf · GitHub

 

GitHub - Netflix/vmaf: Perceptual video quality assessment based on multi-method fusion.

Perceptual video quality assessment based on multi-method fusion. - GitHub - Netflix/vmaf: Perceptual video quality assessment based on multi-method fusion.

github.com

자 이제 VMAF를 테스트 하기 위한 작업은 마무리 되었고 실제적으로 VMAF를 싱행해 보도록 하겠습니다.

 

- CMD를 실행시킨다.

- ffmpeg의 bin 디렉토리로 이동 한다(ffmpeg의 bin 디렉토리를 환경변수 PATH에 넣은 경우는 그냥 ffmpeg를 실행 하면 됩니다)

 - 아래 명령어를 입력하여 실행 합니다.

 

ffmpeg -i 압축된_mp4 -i 원본_mp4 -lavfi libvmaf=model_path="C\\:/ffmpeg/model/vmaf_v0.6.1.json" -f null -

 

그러면 ffmpeg 명령어를 실행됩니다. 실행이 끝나면 아래와 같이 VMAF의 점수가 나타 납니다.

 

제가 테스트한 영상의 VMAF 점수는 98.873202 점 입니다.

 

이전에 말씀드린대로 vmaf_float_v0.6.1.pkl는 1080p 기준의 테스트 환경에 맞춰져 있어서 720p, 4k 영상에 대해서는 다른 모델을 사용해야 된다고 나와 있으니 참고하세요.

 

감사합니다.

728x90