Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Tensorflow或PyTorch的图像相似性_Tensorflow_Image Processing_Pytorch - Fatal编程技术网

使用Tensorflow或PyTorch的图像相似性

使用Tensorflow或PyTorch的图像相似性,tensorflow,image-processing,pytorch,Tensorflow,Image Processing,Pytorch,我想比较两幅图像的相似性。因为我的目的是将给定的图像与大量的图像集合进行匹配,所以我想在GPU上运行比较 我遇到了tf.image.ssim和tf.image.psnr函数,但我无法仅找到和使用示例。Pytork中的解决方案也值得赞赏。因为我对CUDA和C语言没有很好的理解,所以我对在PyCuda中尝试内核感到犹豫 如果我阅读整个图像采集并存储为Tensorflow记录以备将来处理,这对处理是否有帮助 任何指导或解决方案,不胜感激。多谢各位 编辑:-我只匹配相同大小的图像。我不想只做直方图匹配。

我想比较两幅图像的相似性。因为我的目的是将给定的图像与大量的图像集合进行匹配,所以我想在GPU上运行比较

我遇到了
tf.image.ssim
tf.image.psnr
函数,但我无法仅找到和使用示例。Pytork中的解决方案也值得赞赏。因为我对CUDA和C语言没有很好的理解,所以我对在PyCuda中尝试内核感到犹豫

如果我阅读整个图像采集并存储为Tensorflow记录以备将来处理,这对处理是否有帮助

任何指导或解决方案,不胜感激。多谢各位


编辑:-我只匹配相同大小的图像。我不想只做直方图匹配。我想做SSIM或PSNR实现的图像相似性。因此,我假设它在颜色、内容等方面类似,请查看tensorflow文档页()上的示例:


这应该适用于最新版本的tensorflow。如果使用旧版本,tf.image.ssim将返回一个张量(print不会给您一个值),但您可以调用.run()对其求值。

PyTorch中没有PSNR或ssim的实现。您可以自己实现它们,也可以使用第三方软件包,就像我开发的那样

假设您已经安装了
torch
torchvision
,您可以使用

pip安装piqa
然后进行图像比较

导入火炬
从torchvision导入转换
从PIL导入图像
im1=Image.open('path/to/im1.png'))
im2=Image.open('path/to/im2.png'))
transform=transforms.ToTensor()
x=transform(im1).unsqueze(0).cuda()#.cuda()用于GPU
y=变换(im2).反求(0).cuda()
来自piqa进口psnr,ssim
打印('PSNR:',PSNR.PSNR(x,y))
打印('SSIM:',SSIM.SSIM(x,y))

我认为,提供您想要定义相似性的参数将有助于您获得更好的答案,您是否试图在大小、颜色分布、内容等方面进行匹配。尽量说得更具体些。我通读了文档,但是我们如何从返回的张量中得到相似性的百分比呢?您能为
max\u val
参数添加一些解释吗?max\u val是图像中值的范围。很可能255就足够了。看看上面提到的报纸。你不仅应该找到你要找的东西,还可以更好地了解它的工作原理和潜在的缺陷。你是指答案中附带的文档链接还是其他文章?你知道这个比例吗?这就是我主要寻找的。
im1 = tf.decode_png('path/to/im1.png')
im2 = tf.decode_png('path/to/im2.png')
print(tf.image.ssim(im1, im2, max_val=255))