Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/po-hsun-su/pytorch-ssim
pytorch structural similarity (SSIM) loss
https://github.com/po-hsun-su/pytorch-ssim
image-analysis image-processing pytorch
Last synced: 29 days ago
JSON representation
pytorch structural similarity (SSIM) loss
- Host: GitHub
- URL: https://github.com/po-hsun-su/pytorch-ssim
- Owner: Po-Hsun-Su
- License: other
- Created: 2017-08-09T20:04:28.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-02-22T09:28:51.000Z (9 months ago)
- Last Synced: 2024-10-15T12:21:56.885Z (29 days ago)
- Topics: image-analysis, image-processing, pytorch
- Language: Python
- Size: 1.16 MB
- Stars: 1,880
- Watchers: 21
- Forks: 367
- Open Issues: 33
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# pytorch-ssim (This repo is not maintained)
The code doesn't work because it is on super old pytorch.
### Differentiable structural similarity (SSIM) index.
![einstein](https://raw.githubusercontent.com/Po-Hsun-Su/pytorch-ssim/master/einstein.png) ![Max_ssim](https://raw.githubusercontent.com/Po-Hsun-Su/pytorch-ssim/master/max_ssim.gif)## Installation
1. Clone this repo.
2. Copy "pytorch_ssim" folder in your project.## Example
### basic usage
```python
import pytorch_ssim
import torch
from torch.autograd import Variableimg1 = 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))
```
### maximize ssim
```python
import pytorch_ssim
import torch
from torch.autograd import Variable
from torch import optim
import cv2
import numpy as npnpImg1 = 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()```
## Reference
https://ece.uwaterloo.ca/~z70wang/research/ssim/