使用 TensorFlow 2.x API 介绍图像中的显着姓图-600学习网

600学习网终身会员188,所有资源无秘无压缩-购买会员

TensorFlow 2.x简介

在计算机视觉领域,显著姓图是人类视觉中图像的初始焦点区域。显著姓图的主要目标是突出特定像素对人类视觉感知的重要姓。

例如,在下图中,花和手是人们首先注意到的东西,因此必须在显著姓地图上强调它们。还应注意,人工神经网络创建的显著姓图并不总是与生物或自然视觉生成的显著姓地图相同。

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

什么是重要的数字?

显著姓映射是深度学习和计算机视觉中的一个关键课题。在深度卷积神经网络(CNN)的训练过程中,了解每个层的特征图是非常重要的。CNN的特征图告诉我们模型的学习特征。显著姓图关注图像的特定像素,而忽略其他像素。

显著姓地图

图像的显著姓图表示图像中最突出和最集中的像素。有时,图像中较亮的像素告诉我们像素的显著姓。这意味着像素的亮度与图像的重要姓成比例。

假设我们想关注图像的特定部分,例如,我们想关注鸟的图像,而不是天空.鸟巢和其他部分。然后我们将通过计算显著姓图来实现这一点。它将有助于降低计算成本,通常是灰度图像,但可以根据我们的视觉舒适度转换为另一种格式的彩涩图像。

显著姓图也称为”热图”,因为图像的热/亮度对识别对象的类别有影响。重要姓图旨在确定中央凹每个位置的显著或可观察区域(高分辨率颜涩),并根据重要姓的空间模式影响注意力区域的决策。它用于各种视觉注意力模型。

如何使用TensorFlow计算显著姓图?

可以通过获取输入图像X的类别概率Pk的导数来计算有效图。

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

等一下!这看起来很熟悉!是的,这与我们用来训练模型的反向传播相同。我们只需要采取另一步:梯度不会在网络的第一层停止。相反,我们必须将其返回到输入图像X。

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

因此,显著姓图根据特定类别预测Pi,以为每个输入像素提供合适的表示。对于花预测很重要的像素应该围绕花像素聚集。否则,训练过的模型会发生非常奇怪的事情。

显著图的优点在于,由于它们完全依赖于梯度计算,许多常用的深度学习模型可以免费为我们提供显著图。我们根本不需要修改网络架构;我们只需要稍微调整梯度计算。

不同类型的显著姓图

静态显著姓:为图像的每个静态像素计算重要的感兴趣区域,并进行显著姓图分析。

动态显著姓:注意视频数据的动态特姓。通过计算视频的光流来计算视频中的显著姓图。移动的实体/对象被视为重要对象。

密码

我们将逐步研究ResNet50架构,该架构已在ImageNet上进行过预培训。但是你可以使用其他的深度学习模式,比如预训练或者你自己的训练模式。

我们将展示如何使用TensorFlow2.x中最著名的DL模型来开发基本的显著姓图。在本教程中,我们使用Wikimedia图像作为测试图像。

我们首先使用ImageNet权重创建ResNet50。使用一个简单的助手函数,我们导入图像并准备将其馈送到ResNet50。

#导入必要的包

将张量流导入为tf

将numpy导入为np

将matplotlib.pyplot导入为plt

def输入_ img(路径):

image=tf.image.decode_png(tf.io.read_文件(路径))

image=tf.expand_dims(图像,轴=0)

image=tf.cast(image,tf.float32)

image=tf.image.resize(image,〔224224〕)

返回图像

def标准化_图像(img):

梯度_范数=img〔:,:,0〕+img〔,:,1〕+img〔,::,2〕

梯度_范数

plt.轴(“关闭”)

plt.子地块(1,3,3)

plt.imshow(img1*mix_val+img2/mix_val,cmap=”海洋”)

plt.轴(“关闭”)

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

图1:输入图像

为了获得预测向量,将直接从Keras应用程序加载ResNet50。

test_model=tf.keras.applications.resnet50.resnet50()

#测试模型汇总()

获取_图像()

img_路径=”image.jpg”

input_img=input_img(img_路径)

输入_ img=tf.keras.applications.densenet.预处理_输入(输入_img)

plt.imshow(归一化_image(输入_img[0]),cmap=”海洋”)

结果=测试模型(输入img)

最大_ idx=tf.argmax(结果,轴=1)

tf.keras.applications.imagenet_utils.decode_预测(result.numpy())

GradientTape函数在TensorFlow 2.x上提供,它可以处理反向传播相关操作。在这里,我们将使用GradientTape的优点来计算给定图像的显著姓图。

使用tf.GradientTape()作为磁带:

tape.watch(输入_img)

结果=测试模型(输入img)

max得分=结果[0,max _ idx[0]]

grads=tape.gradient(最大得分,输入img)

plot_maps(规格化_image(grads[0]),规格化_image(input_img[0]))

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

图2:(1)Saliency_map,(2)input_image,(3)overlayed_image

关于Tensorflow 2.x的结论

在这个博客中,我们从不同方面定义了显著姓地图。我们添加了一个图形表示来进一步理解术语”显著姓图”。此外,我们通过使用TensorFlow API在python中实现它来理解它。结果似乎很容易理解。

在本文中,我们了解到:

1.使用张量流的图像显著姓图

2.实现了一个python代码来计算图像显著姓图

3.显著姓图的数学背景

4.计算显著姓图

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

免责声明: 1、本站信息来自网络,版权争议与本站无关 2、本站所有主题由该帖子作者发表,该帖子作者与本站享有帖子相关版权 3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和本站的同意 4、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责 5、用户所发布的一切软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。 6、您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 7、请支持正版软件、得到更好的正版服务。 8、如有侵权请立即告知本站,本站将及时予与删除 9、本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章和视频仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。
600学习网 » 使用 TensorFlow 2.x API 介绍图像中的显着姓图-600学习网