Computer Science
VMAF Optimization과 VMAF NEG 이해
지난 글에서 VMAF(Video Multimethod Assessment Fusion)에 대해 알아보았습니다. 그리고 2020년에 기존 VMAF의 성능을향상시킨 방법들을 오늘 소개합니다. (해당 글을 참고하였습니다.) 목차 Speed Optimization New libvmaf API "No Enhancement Gain” Mode: VMAF NEG 1. Speed Optimization 기존의 VMAF을 사용하는 데 있어서 단점은 VMAF score를 구하는데 time cost가 크다는 것이었습니다. Time cost를 줄이기 위해 다음과 같은 방법을 개발해왔습니다. Low-level code optimization and vectorization (2016년): python + C에서 standal..
Per-shot Encoding 설명
※ 해당 블로그를 reference하였습니다. 1. Per-shot Encoding 이란? Conventional Encoding 방법은 하나의 video에 대하여 압축의 정도를 결정하는 Quantization Parameters(QPs)(e.g. CRF)값 '하나'을 인자로 encoding하는 방법을 취합니다. (CRF값이 클수록 compression을 많이 하게 되고 visual quality는 낮아집니다.) 하지만 이는 video내의 frame간의 특성을 고려하지 않은 채 단일한 QPs로 encoding하기 때문에 B(Bitrate)-D(Distortion) rate관계에서 최적의 성능을 뽑아내지 못합니다. 예를 들어, 한 video내의 초중반 frame들은 flat region이 많고 motion..
Per-title Encoding 설명
※ 해당 블로그를 reference하였습니다. Per-title Encoding은 Netflix에서 제안한 video encoding방식입니다. 말 그대로 per-title encoding은 title에 따라 encoding을 다르게 하겠다라는 말입니다. 이는 video가 속한 title(category)에 따라 특성이 다르다는 것을 의미하며 title에 따라 encoding 압축율을 다르게 하겠다는 것입니다. 1. 기존의 Encoding 방식 Netflix에서는 2010년 후반부터 H.264/AVC를 사용하기 시작하면서 engineer들은 각 resolution에 따라 경험적으로 optimal한 bitrate를 찾는 데 수많은 실험을 하였습니다. Codec parameters(e.g. crf, QPs,..
VMAF score 란?
해당 글은 Netflix의 VMAF post를 참고 및 번역하였으며 VMAF의 이해와 사용 방법에 대해 적어보려 합니다. 목차는 다음과 같습니다. 목차 Video Quality Metric이란? 기존의 Video Quality Metric 방법들과 문제점 VMAF란? VMAF의 사용 방법 1. Video Quality Metric 이란? 우리는 .png, .jpg와.mp4와 같은 이미지/비디오 파일을 많이 봐왔을 것입니다. 해당 확장자를 가진 파일들은 원본 이미지/비디오 파일을 의미하는 것이 아닌 encoding된 파일을 의미합니다. 원본 파일의 모든 픽셀값을 그대로 local/cloud storage에 저장하는 것은 용량에 부하가 크기 때문에 해당 문제를 해결하기 위해 encoding이라는 압축방법을 ..
Python (2) Dict와 Set 차이
Dict과 Set은 특정 데이터를 unique하게 참조할 수 있는 별도 객체가 있는 자료구조입니다. 데이터를 참조하는 일명 참조 객체는 키(key), 데이터를 '값(value)'이라고 한다. (Set에서 key-value쌍이 없고 참조 객체 key만 있습니다.) 하나의 참조하는 객체 키는 일반적으로 문자열을 사용하지만 hashable하다면 어떤 타입이든 상관없습니다. hashable 타입은 __hash__ 매직함수 그리고 __eq__또는 __cmp__ 매직함수를 구현한 타입입니다. 파이썬 내부 타입은 모두 매직함수가 구현되어져 있다. Dict과 Set은 모두 유일한 키를 가지므로 주어진(찾고싶은) 색인(객체)을 O(1) 시간복잡도로 찾을 수 있습니다. (리스트는 선형탐색의 경우 O(n)이 걸리는데 말이죠..
Python (1) List와 Tuple 차이
Machine learning이 대부분 python기반이다 보니 python을 더 정진하면 좋겠다는 생각에 시작합니다. 가시죠! List와 Tuple은 배열이라는 자료구조 특성을 가집니다. 아래 그림은 배열이 메모리에 할당되는 방식입니다. 배열이 연속적인 메모리에 정렬되있음을 알 수 있다. 배열이란? 정해진 고유의 순서에 따라 데이터를 나열한것을 말합니다. 순서가 있기 때문에 배열 내 특정 위치의 데이터를 O(1) 시간 복잡도로 접근 가능합니다. 그래서 시작주소를 알고 있고 순서에 따라 나열되어있기 때문에 특정 위치의 데이터에 바로 접근가능합니다. 예를 들어 3번째 위치의 데이터에 접근하고 싶으면 0x06에서 2칸떨어진 0x08위치의 값을 읽으면 됩니다. 그렇다면 List와 Tuple의 차이는 멀까? L..