{"library":"pytorch-msssim","title":"PyTorch MS-SSIM","description":"pytorch-msssim provides a fast and differentiable implementation of Multi-Scale Structural Similarity (MS-SSIM) and Structural Similarity (SSIM) index for PyTorch. It is designed to be efficient by using separable Gaussian kernels. The library is currently at version 1.0.0, with releases occurring as needed rather than on a strict schedule.","language":"python","status":"active","last_verified":"Thu May 14","install":{"commands":["pip install pytorch-msssim"],"cli":null},"imports":["from pytorch_msssim import ssim","from pytorch_msssim import ms_ssim","from pytorch_msssim import SSIM","from pytorch_msssim import MS_SSIM"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import torch\nfrom pytorch_msssim import ssim, ms_ssim, SSIM, MS_SSIM\n\n# Create two dummy image tensors (batch_size, channels, height, width)\n# Images are typically non-negative, e.g., 0-255 or 0-1\nX = torch.rand(4, 3, 256, 256) * 255 # Example: batch of 4 RGB images, 0-255 range\nY = torch.rand(4, 3, 256, 256) * 255 # Another batch for comparison\n\n# Calculate SSIM and MS-SSIM values (per image in batch)\n# data_range should match the maximum possible pixel value (e.g., 255 for 0-255 images)\nssim_val = ssim(X, Y, data_range=255, size_average=False) # Returns (N,) tensor\nms_ssim_val = ms_ssim(X, Y, data_range=255, size_average=False) # Returns (N,) tensor\n\nprint(f\"SSIM values: {ssim_val}\")\nprint(f\"MS-SSIM values: {ms_ssim_val}\")\n\n# Using SSIM/MS_SSIM as a loss function (returns scalar mean loss)\n# For loss, set size_average=True and typically use 1 - score\nssim_loss_module = SSIM(data_range=255, size_average=True, channel=3)\nms_ssim_loss_module = MS_SSIM(data_range=255, size_average=True, channel=3)\n\nssim_loss = 1 - ssim_loss_module(X, Y) # A scalar tensor\nms_ssim_loss = 1 - ms_ssim_loss_module(X, Y) # A scalar tensor\n\nprint(f\"SSIM Loss: {ssim_loss}\")\nprint(f\"MS-SSIM Loss: {ms_ssim_loss}\")","lang":"python","description":"This quickstart demonstrates how to calculate SSIM and MS-SSIM between two batches of images and how to use the SSIM and MS_SSIM classes as loss functions. Ensure your input tensors `X` and `Y` are of shape `(N, C, H, W)` and `data_range` is set correctly for your pixel value range.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-14","installed_version":"1.0.0","pypi_latest":"1.0.0","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":20,"avg_install_s":66.4,"avg_import_s":5.35,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pytorch-msssim","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pytorch-msssim","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pytorch-msssim","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":74.9,"import_time_s":3.47,"mem_mb":59.3,"disk_size":"4.6G"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pytorch-msssim","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pytorch-msssim","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pytorch-msssim","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pytorch-msssim","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":69.7,"import_time_s":5.86,"mem_mb":64,"disk_size":"4.7G"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pytorch-msssim","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pytorch-msssim","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pytorch-msssim","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pytorch-msssim","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":62.9,"import_time_s":6.96,"mem_mb":63,"disk_size":"4.7G"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pytorch-msssim","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pytorch-msssim","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pytorch-msssim","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pytorch-msssim","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":57.9,"import_time_s":5.12,"mem_mb":63.5,"disk_size":"4.7G"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pytorch-msssim","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pytorch-msssim","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pytorch-msssim","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pytorch-msssim","exit_code":1,"wheel_type":null,"failure_reason":"timeout","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pytorch-msssim","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null}]}}