pytorch ssim
1.0.0
该代码不起作用,因为它在超级旧的pytorch上。
import pytorch_ssim
import torch
from torch . autograd import Variable
img1 = Variable ( torch . rand ( 1 , 1 , 256 , 256 ))
img2 = Variable ( torch . rand ( 1 , 1 , 256 , 256 ))
if torch . cuda . is_available ():
img1 = img1 . cuda ()
img2 = img2 . cuda ()
print ( pytorch_ssim . ssim ( img1 , img2 ))
ssim_loss = pytorch_ssim . SSIM ( window_size = 11 )
print ( ssim_loss ( img1 , img2 )) import pytorch_ssim
import torch
from torch . autograd import Variable
from torch import optim
import cv2
import numpy as np
npImg1 = cv2 . imread ( "einstein.png" )
img1 = torch . from_numpy ( np . rollaxis ( npImg1 , 2 )). float (). unsqueeze ( 0 ) / 255.0
img2 = torch . rand ( img1 . size ())
if torch . cuda . is_available ():
img1 = img1 . cuda ()
img2 = img2 . cuda ()
img1 = Variable ( img1 , requires_grad = False )
img2 = Variable ( img2 , requires_grad = True )
# Functional: pytorch_ssim.ssim(img1, img2, window_size = 11, size_average = True)
ssim_value = pytorch_ssim . ssim ( img1 , img2 ). data [ 0 ]
print ( "Initial ssim:" , ssim_value )
# Module: pytorch_ssim.SSIM(window_size = 11, size_average = True)
ssim_loss = pytorch_ssim . SSIM ()
optimizer = optim . Adam ([ img2 ], lr = 0.01 )
while ssim_value < 0.95 :
optimizer . zero_grad ()
ssim_out = - ssim_loss ( img1 , img2 )
ssim_value = - ssim_out . data [ 0 ]
print ( ssim_value )
ssim_out . backward ()
optimizer . step ()https://ece.uwaterloo.ca/~z70wang/research/ssim/