基于场景文字知识挖掘的细粒度图像识别算法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 摘要
  • Abstract
  • 文献阅读:基于场景文字知识挖掘的细粒度图像识别算法
    • 1、研究背景
    • 2、方法提出
      • 方法模块
    • 3、试验
    • 4、文章贡献
  • 二、RNN代码学习
    • 2.1、什么是RNN
    • 2.2、RNN的处理过程
    • 2.3、RNN简单代码实现
  • 总结


摘要

本周主要阅读了2022CVPR的文章,基于场景文字知识挖掘的细粒度图像识别算法,该论文提出了一种通过挖掘场景文本背后的语义来增强分类模型理解图像内容的方法,该方法利用场景文字作为关键词,到Wikipedia知识库中检索出相关的知识,并获取其特征表达,和图像视觉特征进行融合理解,而并非仅仅利用场景文字的表面语义信息,这种方法能够更好地理解文字语义并不非常直观的内容,从而提升图像识别的性能。除此之外,我还学习复习了RNN的相关知识,并通过其实现过程来进行代码的学习。

Abstract

This week, I mainly read the articles of 2022 CVPR. The fine-grained image recognition algorithm based on scene text knowledge mining proposed in the paper utilizes scene text as keywords to retrieve relevant knowledge from the Wikipedia knowledge base and obtain its feature representation. This method fuses the visual features of images and semantic information behind scene text, rather than just utilizing the superficial semantic information of scene text. This method can better understand the semantics of text that are not very intuitive, thereby improving the performance of image recognition. Besides, I also reviewed the relevant knowledge of RNN and learned code through its implementation process.


文献阅读:基于场景文字知识挖掘的细粒度图像识别算法

Title: Knowledge Mining with Scene Text for Fine-Grained Recognition
Author:Hao Wang, Junchao Liao,Tianheng Cheng, Zewen Gao, Hao Liu, Bo Ren, Xiang Bai, Wenyu Liu
From:2022 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)

1、研究背景

文字是人类传达信息、知识和情感的重要载体,其蕴含了丰富的语义信息。利用文字的语义信息,可以更好地理解图像中的内容。和文档文本不同,场景文字具有稀疏性,通常以少许关键词的形式存在于自然环境中,通过稀疏的关键词,机器难以获取精准的语义。然而,人类能够较为充分地理解稀疏的场景文字,其原因在于,人类具有大量的外部知识库,能够通过知识库来弥补稀疏的场景文字所带来的语义损失。对于一些特定的细粒度的场景,挖掘场景文本背后丰富的语义信息能够进一步弥补场景文本的语义损失,从而更为准确地理解图像中的目标。

2、方法提出

文中提出了一种通过挖掘场景文本背后语义来增强分类模型理解图像内容的方法,该方法的核心是利用场景文字作为关键词,到wikipedia知识库中检索出相关的知识,并获取其特征表达,和图像视觉特征进行融合理解,而并非仅仅利用场景文字的表面语义信息。如下图所示,网络框架由视觉特征分支、知识提取分支和知识增强分支、视觉-知识注意力模块和分类器构成。算法输入包括3部分:图像,图像中包含的场景文本实例,外部知识库。其中场景文本实例通过已有的文字识别器从输入图像中获取,外部知识库采用了Wikipedia。知识提取分支提取场景文本实例背后的语义信息(知识特征),知识增强分支融合场景文本实例和挖掘出的知识特征。随后,视觉-知识注意力模块融合视觉和知识特征,并将其输入给分类器进行分类。
在这里插入图片描述

方法模块

基于场景文字知识挖掘的细粒度图像识别算法框架由视觉特征分支、知识提取分支和知识增强分支、视觉-知识注意力模块(VKAC)和分类器构成。

  • 知识提取分支:该分支由实体候选选择器和实体编码器构成。在知识库中,同一关键词能够表示多个实体,比如apple可表示fruit apple,也可表示company apple。实体候选选择器预先在大量语料库上统计单词在所有可能实体上的概率分布,根据概率分布选取前10个候选实体,并将其输入给实体编码器进行特征编码。实体编码器在Wikipedia的数据库上进行预训练,预训练任务旨在通过Wikipedia上实体的描述来预测该页面的标题(实体名称)。通过此任务的学习,实体名称对于的特征编码了该词条的上下文信息。
  • 知识增强特征分支:该分支主要由bert构成,在bert的第10层后插入知识注意力模块(KARC),该模块融合了文本实例特征和知识特征后,接着输入给bert剩余的层。Bert第12层输出的特征给VKAC模块。
  • 视觉-知识注意力模块:并非所有的场景文本或知识对理解图像有积极作用,为选取和图像内容相关的场景文本和知识来加强对图像的理解。该模块以图像全局特征作为访问特征,从增强的知识特征中选取相关的知识特征来加强视觉特征。其网络结构由注意力模型构成。

3、试验

试验收集了一个关于人群活动的数据集。该数据集中的类别主要分为游行示威和日常人群密集活动两大类,细分为21类。具体分类如下图所示,是21种人类行为。
在这里插入图片描述

  • 与SOTA对比:在公开数据集Con-Text、Bottles以及我们收集的Activity数据集上,在使用resnet50[3]和E2E-MLT[4]作为视觉特征提取器和文字提取器时,我们方法能在同等情况下取得最佳结果。当使用ViT和Google OCR时,其模型性能结果能进一步提升。
  • 视觉、文本、知识特征对识别的影响:可以看出,文本的表面语义(Glove,fastText)在视觉网络为Resne50[3]的时候,能对识别性能有较大提升。当视觉网络为ViT[2]时,提升极其有限。如图5所示,Resnet50关注于主要于视觉目标具有区分力的区域,而ViT能同时关注在视觉目标和场景文字上。因此,再使用场景文字的表语含义难以对ViT有较大促进作用。而挖掘文本的背后语义后,能进一步提升ViT作为视觉backbone的模型的性能。

4、文章贡献

  • 利用场景文本线索:传统的图像识别方法主要依赖于图像本身的视觉特征,如颜色、形状、纹理等。但这种方法在面对细粒度图像分类任务时,可能会遇到困难,因为细微的差异可能很难通过单纯的视觉特征来区分。而该算法利用了场景中的文本信息,为图像识别提供了额外的线索,从而提高了识别的准确性。
  • 融合视觉和知识特征:该算法不仅关注图像的视觉特征,还通过知识提取和增强分支,挖掘场景文本背后的语义信息,并将其与视觉特征融合。这种融合的方式有助于更全面地理解图像内容,进一步提高了识别的性能。
  • 弥补语义损失:在一些图像中,场景文本可能非常稀疏或者难以识别,这可能导致语义信息的损失。通过外部知识库的引入,该算法能够挖掘出这些稀疏文本背后的丰富语义,从而弥补了语义损失,使得识别更为准确。
  • 提高模型泛化能力:通过引入外部知识库,该算法不仅在训练数据上表现优秀,而且具有较强的泛化能力。这意味着该算法在面对未见过的图像或新的场景时,也能有较好的表现。
  • 促进人工智能与人类的结合:传统的图像识别方法主要依赖于机器学习和人工智能技术,而该算法则通过引入人类的知识和经验,使得图像识别更为准确。这种方法为人工智能与人类的结合提供了新的思路,有助于开发出更为智能、高效的图像识别系统。

二、RNN代码学习

2.1、什么是RNN

循环神经网络(Recurrent Neural Network,RNN)是一种深度学习模型,用于处理序列数据。RNN的核心特点是具有记忆单元,能够捕捉序列数据中的长期依赖关系。在RNN中,神经网络单元按照时间序列连接,每个单元的输出作为下一个单元的输入,从而实现信息的循环传递。RNN的应用领域非常广泛,包括自然语言处理、语音识别、机器翻译、时间序列预测等。常见的RNN变种包括长短时记忆网络(LSTM)和门控循环单元(GRU),它们通过引入不同的机制来改善RNN的训练和性能。

2.2、RNN的处理过程

  1. 对数据集进行向量化表示,例如使用词向量或one-hot编码。
  2. 前向过程:定义一个输出向量,该网络由n个RNN模块组成。将向量化的数据与一个矩阵W1相乘得到输出out1,将上一个RNN模块的输出out与一个矩阵W2相乘得到out2,将out1与out2相加得到当前RNN模块的输出out3,给out3施加一个激活函数得到out4,out4即为当前RNN模块的输出。
  3. 反向传播:利用梯度下降法对所有的RNN模块的W1和W2进行更新。

2.3、RNN简单代码实现

class SimpleRNN(nn.Module):  
    def __init__(self, input_size, hidden_size, output_size):  
        super(SimpleRNN, self).__init__()  
        self.hidden_size = hidden_size  
        self.rnn = nn.RNN(input_size, hidden_size, batch_first=True)  
        self.fc = nn.Linear(hidden_size, output_size)  
          
    def forward(self, x):  
        # 初始化隐藏状态  
        h0 = torch.zeros(1, x.size(0), self.hidden_size).to(x.device)   
          
        # 前向传播RNN  
        out, _ = self.rnn(x, h0)  
          
        # 获取最后一个时间步的输出  
        out = self.fc(out[:, -1, :])  
        return out

总结

本周主要阅读了2022CVPR的文章,基于场景文字知识挖掘的细粒度图像识别算法,该论文提出了一种通过挖掘场景文本背后的语义来增强分类模型理解图像内容的方法,该方法利用场景文字作为关键词,到Wikipedia知识库中检索出相关的知识,并获取其特征表达,和图像视觉特征进行融合理解,而并非仅仅利用场景文字的表面语义信息,这种方法能够更好地理解文字语义并不非常直观的内容,从而提升图像识别的性能。除此之外,我还学习复习了RNN的相关知识,并通过其实现过程来进行代码的学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/370300.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

day43_jdbc

今日内容 0 复习昨日 1 SQL注入问题 2 PreparedStatement 3 完成CRUD练习 4 ORM 5 DBUtil (properties) 6 事务操作 0 复习昨日 已经找人提问… 1 SQL注入 1.1 什么是SQL注入 用户输入的数据中有SQL关键词,导致在执行SQL语句时出现一些不正常的情况.这就是SQL注入! 出现SQL注入…

两种方式实现文本超出指定行数显示展开收起...

需要实现这样一个功能 默认高度下文本超出隐藏&#xff0c;点击展开可查看所有内容&#xff0c;点击收起可折叠 方法一&#xff1a;通过html和css实现 代码部分 html:<div className"expand-fold"><input id"check-box" type"checkbox&qu…

幻兽帕鲁游戏中走路卡顿并且会出现回弹是什么原因?

可能原因是最近的 1.4.0 更新后&#xff0c;代码中有一个启动参数的加入&#xff0c;导致 CPU 占用极高。 可以远程连接你的服务器 然后执行下面的代码&#xff0c;删除代码中的那个启动参数。 # 删除可能导致人物回弹的游戏服务器启动参数 sudo -u ecs-assist-user sed -i s…

ios搭建OpenGL环境

前言 本篇文章介绍在ios搭建OpenGL开发环境 在app的启动文章中&#xff0c;讲述了一个ios应用是如何启动的以及在IOS 13之后苹果公司推出的多窗口功能&#xff0c;通过app的启动这篇文章&#xff0c;我们基本能随心所欲的搭建一个app应用环境&#xff0c;搭建完成后的基本文件…

雨课堂怎么搜答案?七个受欢迎的搜题分享了 #微信#职场发展雨课堂怎么搜答案?七个受欢迎的搜题分享了 #微信#职场发展

积极参加社团活动和实践项目&#xff0c;可以帮助大学生拓宽人脉圈和锻炼实际操作能力。 1.福昕翻译 可以一键翻译文档内容&#xff0c;并提供还原排版的译文&#xff0c;对经常看外文文献的朋友来说&#xff0c;绝对是福音 福昕翻译是一流专业的在线翻译服务平台,支持PDF文…

一文带你了解编码集

编码集 1. ASCII编码&#xff1a; 127个字母 8个数据位足够存储字母、数字、符号&#xff0c;支持到0x7F。 2. GB2312编码 每个汉字占据2个字节(高位和低位)&#xff0c;16个数据。GB2312是对ASCII的中文扩展&#xff0c;共包含7000多个汉字。是计算机发展到中国后发展起来…

Python算法100例-1.3 牛顿迭代法求方程根

完整源代码项目地址&#xff0c;关注博主私信’源代码’后可获取 1&#xff0e;问题描述 编写用牛顿迭代法求方程根的函数。方程为 a x 3 b x 2 c x d 0 ax^3bx^2cxd0 ax3bx2cxd0&#xff0c;系数a、b、c、d由主函数输入&#xff0c;求x在1附近的一个实根。求出根后&…

VBA字典与数组第十一讲:普通公式与数组公式的本质区别

《VBA数组与字典方案》教程&#xff08;10144533&#xff09;是我推出的第三套教程&#xff0c;目前已经是第二版修订了。这套教程定位于中级&#xff0c;字典是VBA的精华&#xff0c;我要求学员必学。7.1.3.9教程和手册掌握后&#xff0c;可以解决大多数工作中遇到的实际问题。…

MAE实战:使用MAE提高主干网络的精度(一)

摘要 MAE已经出来有几年了&#xff0c;很多人还不知道怎么去使用&#xff0c;本文通过两个例子说明一下。分两部分&#xff0c;一部分介绍一个简单的例子&#xff0c;让大家了解MAE训练的流程。一部分是一个新的模型&#xff0c;让大家了解如何将自己的模型加入MAE。 论文标…

Java 获取操作时区 ZonedDateTime

Java 获取操作时区 ZonedDateTime package com.zhong.timeaddress;import java.time.Clock; import java.time.ZoneId; import java.time.ZonedDateTime; import java.util.Set;public class TimeAddress {public static void main(String[] args) {// 获取系统默认时区ZoneId…

PyTorch 中神经网络库torch.nn的详细介绍

1. torch.nn torch.nn 是 PyTorch 深度学习框架中的一个核心模块&#xff0c;它为构建和训练神经网络提供了丰富的类库。 以下是 torch.nn 的关键组成部分及其功能&#xff1a; nn.Module 类&#xff1a; nn.Module 是所有自定义神经网络模型的基类。用户通常会从这个类派生…

前端工程化之:webpack2-2(内置插件)

目录 一、内置插件 1.DefinePlugin 2.BannerPlugin 3.ProvidePlugin 一、内置插件 所有的 webpack 内置插件都作为 webpack 的静态属性存在的&#xff0c;使用下面的方式即可创建一个插件对象&#xff1a; const webpack require("webpack")new webpack.插件…

计算机设计大赛 深度学习 机器视觉 车位识别车道线检测 - python opencv

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习 机器视觉 车位识别车道线检测 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f947;学长这里给一个题目综合评分(每项满分5分) …

随机图论基础

一&#xff0c;随机图、随机图空间 1&#xff0c;随机图 一个n个点的无向图&#xff0c;最多有sn(n-1)/2条边。 每条边都有一定的概率存在&#xff0c;有一定概率不存在&#xff0c;那么每个图都有一个出现概率。 2&#xff0c;随机图空间 一共有2^s种不同的图&#xff0c…

C++:按键控制头文件Button.h

★&#xff0e;☆ &#xff0e;★∴★&#xff0e;∴☆ ∴ ☆&#xff0e;&#xff0e; ☆★∴∴ ☆&#xff0e;★∴&#xff0e; ◢◣。 ◢◣。 ☆圣★ ◢★◣。 ◢★◣。 ★诞☆ ◢■■◣。 ◢■■◣。 ☆节★ ◢■■■◣。 ◢■■■◣。 …

集合-02

文章目录 1.Set集合1.1Set集合概述和特点1.2Set集合的使用 2.TreeSet集合2.1TreeSet集合概述和特点2.2TreeSet集合基本使用2.3自然排序Comparable的使用2.4比较器排序Comparator的使用2.5两种比较方式总结 3.HashSet集合3.1HashSet集合概述和特点3.2HashSet集合的基本应用3.3哈…

Java 格式化时间以及计算时间

Java 格式化时间以及计算时间 package com.zhong.datetimeformat;import java.time.*; import java.time.format.DateTimeFormatter;public class DateTimeFormats {public static void main(String[] args) {// 创建一个日期格式化器对象DateTimeFormatter dateTimeFormatter…

【chisel】 环境,资料

Chisel环境搭建教程&#xff08;Ubuntu&#xff09; 根据上边的link去安装&#xff1b; 目前scala最高版本用scala-2.13.10,太高了 没有chisel的库文件支持&#xff1b;会在sbt下载的过程中报错&#xff1b; [error] sbt.librarymanagement.ResolveException: chisel chisel目…

深入理解网络通信和TCP/IP协议

目录 计算机网络是什么&#xff1f; 定义和分类 计算机网络发展简史 计算机网络体系结构 OSI 七层模型 TCP/IP 模型 TCP/IP 协议族 TCP/IP 网络传输中的数据 地址和端口号 MAC地址 IP 地址 端口号 为什么端口号有65535个&#xff1f; 综述 TCP 特性 TCP 三次握…