[Compression] CompressAI를 활용한 JPEG, BPG, VVC 코덱 명령어 사용 방법

es.Seong·2025년 3월 14일
0

Image Compression

목록 보기
26/26

이전에 전통적인 압축 방법을 사용해서 BPP, PSNR과 MS-SSIM을 구해보면서 그 값을 활용하여 RD-Curve를 그리는 방법을 정리한적이 있었다.
하지만 최근 논문을 적으며 딥러닝 방법과 그래프를 그려보니 전통적인 방법과 딥러닝 간의 추세가 다르게 나타났다.

그래서 찾다보니 CompressAI 라이브러리 자체에서 전통적인 코덱들의 평가를 지원해준다고 한다.

CompressAI 라이브러리
https://github.com/InterDigitalInc/CompressAI

레포를 내리다보면 다음 섹션이 나온다.

예시로 bpg와 vtm을 어떻게 사용하는지 help를 통해 알려준다고 한다.
이제 개발환경에 한 번 입력해보자.

결과를 살펴보면 데이터셋 경로, 압축 정도 등 여러 셋팅을 어떻게 하면되는지 친절하게 알려준다. BPG나 VTM의 경우 내 개발환경에 코덱 실행을 위한 셋팅이 되어있어야한다.

VTM
https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/-/releases
BPG
https://github.com/mirrorer/libbpg

코덱 실행

JPEG

python3 -m compressai.utils.bench jpeg /data_path -q 0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100

JPEG의 경우 압축 퀄리티를 0~100까지 설정할 수 있다.
compressai.utils.bench를 실행해주면 압축 결과가 도출된다. JPEG의 경우 다른 전통적인 코덱들보다 결과는 빨리나온다.
만약 저 퀄리티값들을 다 적기 귀찮다면 $(seq start step stop)를 사용해보자.

python3 -m compressai.utils.bench jpeg /data_path -q $(seq 0 5 101)

BPG

python3 -m compressai.utils.bench bpg /path -q $(seq 0 3 45)

BPG도 환경 설정이 끝났다면 위 명령어를 사용하면 정상적으로 실행될 것이다.
실행 결과는 아래 VTM의 실행 결과 포맷과 동일하다.
BPG는 퀄리티 값이 JPEG과 다르게 51인가 50까지 존재하는 것으로 기억한다.

VTM

마지막으로 VTM이다.
"Learned Image Compression with Mixed Transformer-CNN Architectures (CVPR'23)" 해당 논문에서 사용방법을 잘 설명해주셔서 그대로 사용하면된다.
VTM은 다른 코덱들과 다르게 퀄리티 값과 품질이 반비례했다.
즉, 퀄리티 값이 낮으면 압축이 덜되고, 퀄리티 값이 높으면 압축이 더 잘된다.

python3 -m compressai.utils.bench vtm /path -q $(seq 16 2 41) -c /path/encoder_intra_vtm.cfg -b /path/VVCSoftware_VTM-VTM-17.0/bin

위 이미지처럼 해당 값들을 반드시 넣어줘야 오류가 발생하지 않는다.
-c : cfg 파일 경로
-b : bin 폴더 경로
-q : 압축 퀄리티

자 이제 코드가 정상적으로 실행됐다면 아래와 같은 딕셔너리타입의 코드가 나오게된다.

{
"name": "VTM",
"description": "VTM",
"results": {
"bpp": [
2.6892771402994793,
...
],
"encoding_time": [
132.31253004868825,
.....
],
"decoding_time": [
0.21594648361206054,
....
],
"psnr": [
44.69362479684167,
....
],
"ms-ssim": [
0.9989910999933879,
...
]
}
}

키 값은 압축 방법, 설명, 결과(bpp, psnr, ms-ssim)를 가지며 그에 맞는 값들이 잘 저장된 것을 확인할 수 있다.

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

0개의 댓글

관련 채용 정보