[Compression] BD-Rate(Bjøntegaard Delta Rate)란?

es.Seong·2025년 1월 4일
0

Image Compression

목록 보기
22/24

학습 기반 이미지 압축 논문을 읽다보면 "제안 방법론이 VVC (VTM)에 비해 BD-Rate가 몇 퍼센트 더 낮다" 이런 문장이 자주 보일 것이다.

아래 표에서도 'BD-Rate over VTM-17.0'로 모델의 성능을 평가했다.

여기서 말하는 BD-Rate란 무엇인지 정리해보려합니다.

BD-Rate(Bjøntegaard Delta Rate)란?

BD-Rate (Bjøntegaard Delta Rate)는 이미지 또는 비디오 압축 방법론의 성능을 비교하기 위해 널리 사용되는 척도이다. BD-Rate는 두 압축 방법 간에 비트레이트와 품질(PSNR 또는 MS-SSIM 등) 간의 관계를 정량화하여 제안 모델이 특정 모델에 비해 평균적으로 얼마나 더 효율적인지(또는 비효율적인지)를 계산한다.
BD-Rate는 압축 성능의 상대적인 개선 또는 손실을 % 단위로 표현한다.

그렇다면 어떻게 계산되는걸까?
우선 BD-Rate는 RD-Curve(Rate-Distortion Curve)의 면적 차이를 기반으로 두 압축 알고리즘 간의 성능 차이를 계산한다.

여기서 Rate는 Bit-rate를 의미하며 이미지/비디오 압축 시의 BPP(Bit per pixel)이다.
Distortion은 압축된 이미지/비디오 품질을 나타내는 척도. 주로 PSNR(dB)이나 MS-SSIM 같은 값으로 측정한다.
MS-SSIM은 보통 아래 수식을 통해 dB로 변환되어 나타낸다.

BD-Rate는 두 압축 방법에 대한 Rate-Distortion Curve의 적분값을 통해 비교하여, 평균적으로 두 알고리즘 간의 비트레이트 차이를 계산한다.

MS-SSIM (dB)=10log10(1MS-SSIM)\text{MS-SSIM (dB)} = -10 \cdot \log_{10}(1 - \text{MS-SSIM})

변환되는 이유는 모델별 값의 차이를 로그 스케일(dB)로 표현하여 더 큰 값 강조에 용이하기 때문이다.

계산 과정

MLIC++와 GMM+Attention을 예시로 하면 붉은색 선으로 공통 영역이 결정된다.
저 영역을 적분해서 면적을 계산하면 BD-Rate가 도출된다.

Bit-Rate와 PSNR을 예시로 수식을 정리하면 아래와 같다.

1. Bit-Rate Log Scaling

LogBit1=log(R1)LogBit_1=log(R_1)
LogBit2=log(R2)LogBit_2=log(R_2)

2. 3차 다항식 정의

Bit-Rate와 PSNR간의 관계를 3차 다항식으로 나타낸다.
코드는 np.polyfit을 사용하면 간단하게 사용할 수 있다.

3차 다항식을 p_1, p_2라고 나타내면 아래와 같이 정의된다

LogBit1=p1(PSNR1)LogBit_1=p_1(PSNR_1)
LogBit2=p2(PSNR2)LogBit_2=p_2(PSNR_2)

3. 공통 구간 정의

min_value=max(min(PSNR1),min(PSNR2))\text{min\_value} = \max(\min(PSNR_1), \min(PSNR_2))
max_value=min(max(PSNR1),max(PSNR2))\text{max\_value} = \min(\max(PSNR_1), \max(PSNR_2))

두 방법론의 공통 상한, 하한 값을 위 수식으로 도출한다.

적분

I1=min_valuemax_valuep1(PSNR)d(PSNR)I_1 = \int_{\text{min\_value}}^{\text{max\_value}} p_1(\text{PSNR}) \, d(\text{PSNR})
I2=min_valuemax_valuep2(PSNR)d(PSNR)I_2 = \int_{\text{min\_value}}^{\text{max\_value}} p_2(\text{PSNR}) \, d(\text{PSNR})

BD-Rate 계산

Result=I2I1max_valuemin_value\text{Result}=\frac{I_2 -I_1}{\text{max\_value} - \text{min\_value}}

이제 적분 값의 차이를 상한과 하한의 차이 값으로 나눠준다.
이 값을 BD-Rate로 변환하기 위해서는 이전에 bit-rate에서 로그스케일링을 해줬기 때문에 exp를 통해 원래 스케일로 돌려주면된다

BD-Rate=exp(result1)×100\text{BD-Rate}=exp(result-1)\times 100

이 때 BD-Rate가 양수(%)면 압축 효율이 더 나쁜 것이고, 음수(%)라면 압축 효율이 더 좋은 것을 의미한다.

Reference

수식&코드참조

profile
Graduate student at Pusan National University, majoring in Artificial Intelligence

0개의 댓글