Skip to content

add ssim psnr metric #1282

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
May 29, 2025
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
delete some notes and add copyright
  • Loading branch information
liuxiao-guan committed May 23, 2025
commit d29992303647c1f39b1eda6cbe7233e15058bd04
4 changes: 2 additions & 2 deletions ppdiffusers/scripts/ssim_psnr_score/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# SSIM and PSNR for PaddlePaddle
# SSIM and PSNR

SSIM(Structural Similarity Index)是一种用于衡量两幅图像结构相似度的指标,常用于图像质量评价任务。与像素级别的误差不同,SSIM 模拟人类视觉系统从亮度、对比度和结构等多个维度来评估图像之间的差异。其取值范围为 [-1, 1],其中 1 表示两张图像完全相同,值越高说明图像质量越接近参考图像。

Expand Down Expand Up @@ -34,4 +34,4 @@ python evaluation.py --dataset1 path/to/dataset1 --dataset2 path/to/dataset2


## 参考
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这里参考的内容是不是不对

- [https://github.com/tianweiy/DMD2](https://github.com/tianweiy/DMD2)
- [https://github.com/ali-vilab/TeaCache](https://github.com/ali-vilab/TeaCache)
25 changes: 14 additions & 11 deletions ppdiffusers/scripts/ssim_psnr_score/calculate_psnr.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,24 @@
# Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import math
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

文件头部都加下paddle的 copyright吧


import numpy as np
import paddle


def img_psnr(img1, img2):
# [0,1]
# compute mse
# mse = np.mean((img1-img2)**2)
mse = np.mean((img1 / 1.0 - img2 / 1.0) ** 2)
# compute psnr
if mse < 1e-10:
Expand All @@ -16,18 +27,13 @@ def img_psnr(img1, img2):
return psnr


def trans(x):
return x


def calculate_psnr(videos1, videos2):
# videos [batch_size, timestamps, channel, h, w]

assert videos1.shape == videos2.shape

videos1 = trans(videos1)
videos2 = trans(videos2)

psnr_results = []

for video_num in range(videos1.shape[0]):
Expand Down Expand Up @@ -69,9 +75,6 @@ def calculate_psnr(videos1, videos2):
return result


# test code / using example


def main():
NUMBER_OF_VIDEOS = 8
VIDEO_LENGTH = 50
Expand Down
18 changes: 14 additions & 4 deletions ppdiffusers/scripts/ssim_psnr_score/calculate_ssim.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
# Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import cv2
import numpy as np
import paddle
Expand Down Expand Up @@ -93,10 +107,6 @@ def calculate_ssim(videos1, videos2):

return result


# test code / using example


def main():
NUMBER_OF_VIDEOS = 8
VIDEO_LENGTH = 50
Expand Down
14 changes: 14 additions & 0 deletions ppdiffusers/scripts/ssim_psnr_score/evaluation.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
# Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import os
import argparse
import paddle
Expand Down