ModuleNotFoundError: No module named 'skimage.measure.simple_metrics'

Question:

I am using google colab. I installed scikit-image. When I execute this code, I am getting error:

ModuleNotFoundError: No module named 'skimage.measure.simple_metrics'
import math 
import torch
import torch.nn as nn
import numpy as np
import cv2
from skimage.measure.simple_metrics import compare_psnr

def weights_init_kaiming(m):
    classname = m.__class__.__name__
    if classname.find('Conv') != -1:
        nn.init.kaiming_normal(m.weight.data, a=0, mode='fan_in')
    elif classname.find('Linear') != -1:
        nn.init.kaiming_normal(m.weight.data, a=0, mode='fan_in')
    elif classname.find('BatchNorm') != -1:
        # nn.init.uniform(m.weight.data, 1.0, 0.02)
        m.weight.data.normal_(mean=0, std=math.sqrt(2./9./64.)).clamp_(-0.025,0.025)
        nn.init.constant(m.bias.data, 0.0)

def batch_PSNR(img, imclean, data_range):
    Img = img.data.cpu().numpy().astype(np.float32)
    Iclean = imclean.data.cpu().numpy().astype(np.float32)
    PSNR = 0
    for i in range(Img.shape[0]):
        PSNR += compare_psnr(Iclean[i,:,:,:], Img[i,:,:,:], data_range=data_range)
    return (PSNR/Img.shape[0])
Asked By: Aditya Dixit

||

Answers:

Since scikit-image version 0.16, that function was renamed from skimage.measure.compare_psnr to skimage.metrics.peak_signal_noise_ratio.

Please check your scikit-image version to confirm it.

https://scikit-image.org/docs/0.19.x/api/skimage.metrics.html?highlight=peak_signal_noise_ratio#peak-signal-noise-ratio

Answered By: taipei

Change

from skimage.measure.simple_metrics import compare_psnr

to

from skimage.metrics import peak_signal_noise_ratio

And change

PSNR += compare_psnr(Iclean[i,:,:,:], Img[i,:,:,:], data_range=data_range)

to

PSNR += peak_signal_noise_ratio(Iclean[i,:,:,:], Img[i,:,:,:], data_range=data_range)
Answered By: Daehee Yang