ScorePlayer TIL 2
무엇으로 만들지 정하지 못하고 있었다. 후보를 비교하는 글을 더 읽는 대신 하루를 떼어 재 보기로 했고, 결과보다 재는 방식에서 배운 게 많았다.
못 정하겠으면 하루치를 떼어 사 온다
큰 결정을 앞두고 정보가 부족할 때 선택지는 둘이다. 더 알아보거나, 작게 만들어 보거나.
이번엔 후자를 골랐다. 조건은 하나 — 이 코드는 버린다고 미리 정하는 것이다. 버릴 것을 알고 짜면 악보도 UI도 안 만들고 질문 하나에만 답하면 된다. 이번 질문은 “4K 투명 영상을 쓸 만한 속도로 뽑을 수 있나”였고, 사각형과 원만으로 화면을 만들어 FFmpeg(영상을 인코딩·변환하는 명령줄 도구)에 넣고 속도와 파일 크기를 쟀다. 그러면 하루면 끝난다.
값을 계산해 보면 명확하다. 하루를 써서 “된다/안 된다”를 사면, 잘못 골랐을 때 몇 주를 되돌리는 위험이 사라진다. 앞선 프로젝트에서 “문서에 된다고 적혀 있으니 되겠지”로 갔다가 늦게 막힌 적이 있어서, 이번엔 순서를 뒤집었다.
이걸 습관으로 만들면 판단이 쉬워진다. 큰 결정 앞에서 “이걸 하루짜리로 줄이면 무엇을 재야 하나”를 먼저 묻는다.
실험이 나를 속이지 않으려면
재 보기로 한 뒤에도 결과를 믿을 수 있어야 한다. 이번에 걸린 게 셋이었다.
첫째, 실패했을 때 원인을 못 가르는 상태로 재면 아무것도 못 배운다. 뽑은 영상을 편집 프로그램(Vegas)에 끌어다 놓았는데 안 들어갔을 때, 형식 문제인지 경로 문제인지 프로그램 설정 문제인지 알 수 없었다. 확실히 되는 파일(알파 없는 평범한 H.264 영상)을 하나 같이 만들어 옆에 두자 원인 후보가 절반으로 줄었다.
둘째, 측정용 데이터가 실제와 다르면 결론이 뒤집힌다. 악보 화면은 대부분이 빈 여백인데, 꽉 찬 화면으로 압축률을 재면 무의미하다. 실제로 앞 프로젝트(화면이 빽빽한 파티클)에서 안 맞던 방식(런 길이 압축 — 같은 색이 이어지는 구간을 “이 색 몇 칸”으로 묶어 적는 압축)이 여기서는 압도적으로 유리했다. 앞 프로젝트의 결론은 그 프로젝트의 데이터에 붙어 있던 것이지 보편 법칙이 아니었다.
셋째, 유리하게 편향됐다는 의심이 들면 그 자리에서 다시 잰다. 첫 측정 화면은 가장자리가 딱딱해서 압축에 유리했을 수 있었다. 부드럽게 만들어 다시 재니 차이가 거의 없었다. 결과보다 순서가 중요하다 — 넘어갔으면 나중에 “왜 수치가 다르지”로 돌아왔을 것이다.
좋아 보이는 값과 실제로 쓸 수 있는 값은 다르다
측정에서 1등이 분명한 후보가 있었다. QuickTime RLE(런 길이 압축을 쓰는 옛 무손실 영상 형식)였다. 품질 손실이 없는데 다른 것보다 2.6배 빠르고 4.4배 작았다.
그런데 Vegas에 끌어다 놓으니 드롭 자체가 되지 않았다. 결국 2.6배 느리고 4.4배 큰 ProRes 4444(투명도 채널까지 담는 영상 편집용 고화질 형식)로 갔다.
만드는 쪽 편의가 아니라 받아서 쓰는 쪽의 제약이 형식을 정한다. 성능 비교표를 만들기 전에 “이걸 받는 쪽이 열 수 있나”를 먼저 확인했어야 했다.
품질은 지표와 눈을 둘 다 본다
속도를 네 배 올린 설정(인코더의 품질값을 고정하는 옵션)이 화질을 상하게 했는지 확인해야 했다. 지표(PSNR — 원본과 픽셀 값이 얼마나 다른지를 dB로 잰 값, 높을수록 원본에 가깝다)로는 62.7dB로 충분히 좋게 나왔는데, 그 지표는 화면 전체의 평균이다.
악보 화면은 대부분이 여백이라 평균이 좋게 나오기 쉽다. 정작 중요한 건 선 가장자리 몇 픽셀이고, 딱딱한 흰 선은 압축 번짐이 가장 잘 드러나는 그림이다. 그래서 그 부분만 확대해 원본과 나란히 놓고 봤다.
평균은 국소적인 문제를 숨긴다. 지표가 좋다고 끝내지 않고, 가장 안 좋을 곳을 골라 눈으로 본다.
요약
- 못 정하겠으면 하루치를 떼어 “된다/안 된다”를 사 온다. 버릴 코드라고 미리 정하면 하루로 줄어든다
- 실패했을 때 원인을 가를 수 있게 확실히 되는 것을 하나 옆에 둔다
- 측정 데이터가 실제와 다르면 결론이 뒤집힌다. 앞 프로젝트의 결론도 그 데이터에 붙어 있던 것이다
- 유리하게 편향됐다는 의심이 들면 그 자리에서 다시 잰다
- 성능 1등보다 “받는 쪽이 열 수 있나”가 먼저다
- 지표는 평균이라 국소 문제를 숨긴다. 가장 안 좋을 곳을 골라 눈으로 본다