dingkeyan93 / DISTS

IQA: Deep Image Structure and Texture Similarity Metric
MIT License
359 stars 42 forks source link
dists image-quality-assessment iqa loss-functions optimization pytorch quality-metrics similarity structure texture

Deep Image Structure and Texture Similarity (DISTS) Metric

This is the repository of paper Image Quality Assessment: Unifying Structure and Texture Similarity.

Highlights:

  1. A full-reference IQA model correlated well with human perception of image quality.
  2. It is robust to texture variance (e.g., evaluating the images generated by GANs) and mild geometric transformations (e.g., evaluating the image pairs that are not strictly point-by-point aligned).
  3. It can be employed as an objective function in various optimization problems (see optimization comparison).

Three implementation versions:

  1. Pytorch DISTS_pt.py (recommend)
  2. Tensorflow DISTS_tf.py
  3. Matlab DISTS.m.

====== Pytorch ======

Installation:

Requirements:

Usage:

from DISTS_pytorch import DISTS
D = DISTS()
# calculate DISTS between X, Y (a batch of RGB images, data range: 0~1)
# X: (N,C,H,W) 
# Y: (N,C,H,W) 
dists_value = D(X, Y)
# set 'require_grad=True, batch_average=True' to get a scalar value as loss.
dists_loss = D(X, Y, require_grad=True, batch_average=True) 
dists_loss.backward()

or

git clone https://github.com/dingkeyan93/DISTS
cd DISTS_pytorch
python DISTS_pt.py --ref <ref_path> --dist <dist_path>

====== Tensorflow ======

Requirements:

Usage:

git clone https://github.com/dingkeyan93/DISTS
cd DISTS_tensorflow
python DISTS_tf.py --ref <ref_path> --dist <dist_path>

====== Matlab ======

Requirements:

Usage:

git clone https://github.com/dingkeyan93/DISTS
run demo.m
help DISTS

Citation

@article{ding2020iqa,
  title={Image Quality Assessment: Unifying Structure and Texture Similarity},
  author={Ding, Keyan and Ma, Kede and Wang, Shiqi and Simoncelli, Eero P.},
  journal = {CoRR},
  volume = {abs/2004.07728},
  year={2020},
  url = {https://arxiv.org/abs/2004.07728}
}