基于视觉关注度的图像情感分类算法

2023-11-21 01:59

本文主要是介绍基于视觉关注度的图像情感分类算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

现有的图像情感分类算法,往往无差别地利用整幅图像的所有信息提取特征,而忽略了不同图像区域对最终情感分类的不同贡献。因此,提出基于视觉关注度的图像情感分类方法,该算法通过将视觉关注度引入到图像情感分类中,从而强调不同区域对图像情感分类的相对重要性,进一步提升了深度网络在图像情感分类上的表现。

1.视觉关注度概述

视觉关注度的目的在于记录人眼的移动,具体来说就是,当我们人眼感知到一幅画面的时候,我们会移动我们的眼睛,让我们的目光聚集到视野范围内的某一特殊区域,对其进行仔细地感知,从而获取更多的细节信息。
随着深度学习的发展,人们不再局限于直接使用显著性检测结果作为视觉关注度在预处理阶段处理图像,而是开始更多地考虑如何将视觉关注度概念直接融合到深度网络之中,根据具体的任务通过学习确定不同区域的相对重要性。

2.基于视觉关注度的图像情感分类算法

虽然视觉关注度与深度网络相结合,被广泛应用于多媒体与计算机视觉领域,但是却几乎没有相关工作被应用于图像情感分类之中。根据我们之前的分析,图像情感分类中,特征表达是其关键。恰当地在表达过程中引入视觉关注度概念,即强调不同区域对于分类的相对重要性,则是提升特征表征能力的方法之一。图展示了基于视觉关注度的图像情感分类的主要算法流程图,从图中可以看出,视觉关注度的估计是其中的重要内容之一。
 

 

2.1基于图像显著性的图像情感分类算法

 提出将图像显著性结果作为视觉关注度的估计,并将其用于对深度网络提取的局部特征的融合中,从而提升深度网络在图像情感分类上的表现。给出了具体的算法结构图,其中主要包含两个深度网络,分别用于图像区域特征的提取以及视觉关注度的估计,最终两者结合给出最终特征表达,用于图像情感分类。值得一提的是,两者可以完美融合成一个端到端的网络,因而,可以对整个网络进行联合训练。

 

2.2基于视觉关注度自学习的图像情感分类算法

从卷积神经网络中抽取卷积层的特征,作为图像的局部特征。采取了近些年来在多媒体与计算机视觉领域取得出色成绩的卷积神经网络模型VGGNET来作为我们图像特征抽取的基础模型。
搭建了一个多尺度的全卷积结构,该网络可以利用多尺度的特征图信息,来生成显著性图。如图所示,该多尺度的全卷积网络以16层VGGNET为基础,在其上面进行改进而来。具体来讲,原16层VGGNET中的全连接层,被转化成卷积核尺寸为1*1的卷积层。为了使得到的特征图更稠密,我们将池化层POOL4与POOL5的池化步长从2缩减为1来使得特征图有足够大的分辨率。此外,在VGGNET的基础上,输入图像以及前四个池化层,也就是POOL1、POOL2、POOL3、POOL4的后面,都分别连接了3个卷积层,这三个卷积层分别具有128个3*3的卷积核,128个1*1的卷积核,以及1个l*1的卷积核。而VGGNET最终的输出后面,则连接了1个具有1个1*1卷积核的卷积层。不难发现,受限于附加卷积层之前的特征图尺寸不同,以及附加卷积层本身结构的差异,最终附加卷积层输出得到的6个特征图具有不同的分辨率。为此,在附加卷积层最终的输出后面,我们加入了插值层,通过插值,使得它们输出的分辨率得到统一。最后,我们将6个相同分辨率的特征图堆叠在一起,通过一个具有1*1卷积核的卷积层,得到一个单通道的输出。值得一提的是,在此输出之后,一个Sigmoid激活函数以及一个Softmax激活函数作用其上,得到最终归一化的视觉关注度结果Si。具体来说,该模块是在专门用于图像显著性检测的数据集MASR-B上训练而来,在我们情感分类的网络中,其用于提供视觉关注度的估计值,而在整个图像情感网络训练时,其参数是固定不变的。
 

取到图像的特征图Fi,以及来自图像显著性图的视觉关注度图Si后,我们通过加权每个区域的特征得到最终的图像特征表示
 

然后,该特征表示被直接输入到一个带有Softmax激活函数的全连接层中进行图像情感分类。

总的来说,整个基于图像显著性的图像情感分析算法的训练流程如下:
输入:训练数据集{Ii},初始化深度网络参数\Theta以及学习率,以及设定最大的迭代次数T以及当前迭代次数t=1。
执行以下步骤,直到t>T:
1)从所有训练数据中采样,获取训练的batch。
2)通过网络计算区域特征图Fi。
3)通过网络计算图像显著性图作为视觉关注度分布Si。
4)结合Fi和Si;跟计算加权后的图像特征表示。
5)预测图像情感,并根据损失函数计算当前误差。
6)反向传播误差到每一层,并更新层中对应的参数。

2.2基于视觉关注度自学习的图像情感分类算法

基于图像显著性检测的视觉情感分类算法,取得了一定的效果,但是其仍存在一定的问题。图像显著性检测虽然一定程度上展示了不同区域的相对重要性,但是其表征相对重要性的权值分布并不一定完美适合于图像情感分类,也就是说,权值的相对大小,并不一定能够完全准确地体现出不同区域对于图像情感的相对重要性。基于这个原因,我们提出了基于视觉关注度自学习的图像情感分类算法,我们希望视觉关注度是图像情感分类网络中的一个通过有监督训练得到的模块,能够在图像情感预测中,根据所得的区域特征,自动生成对应的权重大小。

将图像显著性检测与视觉关注度自学习结合起来,也就是说,我们以图像显著性检测结果为基础,设计一个正则项,图像显著性通过作为一个先验知识,来指导视觉关注度的学习,从而可以得到一个更加合理的视觉关注度模型。图展示了带有基于图像显著性的正则项的视觉关注度自学习图像情感分类网络框架。

整个训练流程,可以表示如下:
输入:训练数据集认},初始化深度网络参数\Theta以及学习率,以及设定最大的迭代次数T以及当前迭代次数t=1。
执行以下步骤,直到t>T:
1)从所有训练数据中采样,获取训练的batch。
2)通过网络计算特征图Fi。
3)通过网络计算视觉关注度分布Ai。

4)结合Fi和Ai;跟次,计算加权后的图像特征表示。
5)预测图像情感,并根据公式计算Softmax loss。
6)生成图像显著性图Si,并结合Ai根据公式计算Euclidean loss。
7)计算总体误差,并反向传播误差到每一层,更新层中对应的参数。

 

这篇关于基于视觉关注度的图像情感分类算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/399030

相关文章

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

c/c++的opencv图像金字塔缩放实现

《c/c++的opencv图像金字塔缩放实现》本文主要介绍了c/c++的opencv图像金字塔缩放实现,通过对原始图像进行连续的下采样或上采样操作,生成一系列不同分辨率的图像,具有一定的参考价值,感兴... 目录图像金字塔简介图像下采样 (cv::pyrDown)图像上采样 (cv::pyrUp)C++ O

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.

Python+wxPython构建图像编辑器

《Python+wxPython构建图像编辑器》图像编辑应用是学习GUI编程和图像处理的绝佳项目,本教程中,我们将使用wxPython,一个跨平台的PythonGUI工具包,构建一个简单的... 目录引言环境设置创建主窗口加载和显示图像实现绘制工具矩形绘制箭头绘制文字绘制临时绘制处理缩放和旋转缩放旋转保存编

Springboot实现推荐系统的协同过滤算法

《Springboot实现推荐系统的协同过滤算法》协同过滤算法是一种在推荐系统中广泛使用的算法,用于预测用户对物品(如商品、电影、音乐等)的偏好,从而实现个性化推荐,下面给大家介绍Springboot... 目录前言基本原理 算法分类 计算方法应用场景 代码实现 前言协同过滤算法(Collaborativ

python+OpenCV反投影图像的实现示例详解

《python+OpenCV反投影图像的实现示例详解》:本文主要介绍python+OpenCV反投影图像的实现示例详解,本文通过实例代码图文并茂的形式给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前言二、什么是反投影图像三、反投影图像的概念四、反向投影的工作原理一、利用反向投影backproj

Pandas使用AdaBoost进行分类的实现

《Pandas使用AdaBoost进行分类的实现》Pandas和AdaBoost分类算法,可以高效地进行数据预处理和分类任务,本文主要介绍了Pandas使用AdaBoost进行分类的实现,具有一定的参... 目录什么是 AdaBoost?使用 AdaBoost 的步骤安装必要的库步骤一:数据准备步骤二:模型

使用Python实现图像LBP特征提取的操作方法

《使用Python实现图像LBP特征提取的操作方法》LBP特征叫做局部二值模式,常用于纹理特征提取,并在纹理分类中具有较强的区分能力,本文给大家介绍了如何使用Python实现图像LBP特征提取的操作方... 目录一、LBP特征介绍二、LBP特征描述三、一些改进版本的LBP1.圆形LBP算子2.旋转不变的LB

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各