MANIQA, 이미지 품질 측정해보기

짱구·2024년 2월 22일
0

IQA (Image Quality Assessment)는 디지털 이미지의 품질을 평가하는 과정이다.
IQA는 크게 두 가지 방법으로 나뉜다.

1. 주관적 평가 (Subjective Assessment)

주관적 평가는 사람의 시각과 판단에 의존하여 이미지의 품질을 평가하는 방식이다. 이 방법은 일반적으로 사용자 설문조사, 패널 테스트 등을 통해 이루어진다. 주관적 평가는 가장 정확한 결과를 제공하지만, 시간이 많이 소요되고 비용이 많이 들며 재현성이 낮다는 단점이 있다.

2. 객관적 평가 (Objective Assessment)

객관적 평가는 알고리즘과 수학적 모델을 사용하며 이미지의 품질을 자동으로 평가하는 방식이다. 이 방법은 빠르고 비용이 적게 들며, 반복 가능하다. 객관적 평가는 다시 세 가지로 나뉜다.

FR-IQA(Full-Reference)

Reference image와 Distorted image를 서로 비교하여 품질을 평가한다.
이 방법은 원본 이미지가 필요하며, PSNR(Peak Signal to Noise Ratio), SSIM(Structural Similarity) 등의 지표로 사용한다.

RR-IQA(Reduced-Reference)

Reference image의 일부 정보만을 사용하여 이미지 품질을 평가한다.
RR 방법은 원본 이미지와 완줜히 동일하지 않아도 평가가 가능하다.

NR-IQA(Non-Reference)

Reference image 없이, Distorted image 한장만으로 이미지 품질을 평가한다.
일상생활에서 카메라를 통해 이미지 데이터를 얻어올 때, Distorted image 한장만 받아오기 때문에 NR-IQA 연구가 가장 도전적이고 많은 연구가 진행되고 있다.

이미지 품질 측정에 있어서도 다양한 딥러닝 모델들을 이용한다.
그 중에서 NR-IQA 방법과 Transformer 기법을 이용하는 MANIQA 모델을 사용해보고자 한다.

MANIQA

MANIQA(Multi-dimension Attention Netowrk for No-Reference Image Quality Assessment)
https://github.com/IIGROUP/MANIQA

MANIQA 모델은 input으로 single image를 사용하고, 크게 4가지 과정을 통해 최종적으로 image quality score를 output으로 내놓게 된다.
1. ViT (Vision Transformer)
2. TAB (Transposed Attention Block)
3. SSTB (Scale Swin Transformer Block)
4. Dual brach structure

MANIQA 오픈소스 사용

1. 가상환경 만들기

MANIQA 깃허브에서 python=3.7.9 버전을 사용했다고 한다.
아나콘다에서 가상환경을 만들어본다.

conda create -n MANIQA_py37 python=3.7.9 -y

가상환경을 새로 만들었으니, pytorch도 설치해주어야 한다.
파이토치 설치 방법

2. git clone

이제 오픈소스를 가져온다.

git clone https://github.com/IIGROUP/MANIQA.git

MANIQA 경로 들어가서 라이브러리 설치

pip install -r requirements.txt

에러들이 발생했다.

모르겠으니 무작정 코드를 실행해봤다. 라이브러리들이 제대로 설치 안된거같다.

python predict_one_image.py



싹 다 설치해주기

pip install opencv-python
pip install einops
pip install tqdm

3. Pre-trained weight파일 다운로드

모델을 직접 학습시켜도 좋지만 일단 빠르게 사용해보기 위해 pre-trained weight 파일을 다운로드
IQA 관련 오픈 데이터셋인 KADID-10k로 학습 되어있는 weight파일 다운로드
https://github.com/IIGROUP/MANIQA/releases/tag/Kadid10k

다운로드 받은 .pt파일을 원하는 경로에 넣어준다.
필자는 ckpt라는 폴더를 생성해서 그 안에 넣어줬다.

4. 이미지 추론

git clone한 코드 중에 'predict_one_image.py' 코드를 보게 되면 이미지 한장에 대해서 image quality score를 측정하는 코드이다.
config에서 "image_path", "ckpt_path"를 사용자에 맞게 경로 설정을 해줘야 한다.

최종적으로 스크립트 실행

python predict_one_image.py

bird image에 대해서 image quality score가 0.4202 인 것을 확인할 수 있었다!

profile
화이팅

0개의 댓글