白翔:复杂开放场景中的文本理解

2023-05-16

编者按:李白的《秋浦歌》中有这样一句诗:“题诗留万古,绿字锦苔生”,描绘了天执笔、地做纸、苔为墨,挥毫题字的豪迈场景,也展示了自然场景中文本类型的多样性;而另两句“古壁剥旧题”,“废寺失题名”,则暗示了场景噪声对文本的影响。这几段描写共同衍生出了现代计算机视觉领域中的一个挑战,即复杂开放场景中的文本理解。

本文中,来自华中科技大学的白翔教授,将针对场景中文字类型多样、场景复杂多变、以及场景噪声等问题,带着大家通过深度神经网络,在开放场景中实现准确的文本理解。

文末,大讲堂特别提供文中提到所有文章的下载链接。

640?wx_fmt=png 本文整理自白翔教授在ICDAR2017的学术报告。 640?wx_fmt=png

本次报告是关于场景文本理解的。众所周知,深度学习已在图像视频方面显示了巨大的能力,且在文本分析领域也取得了一些有意义的进步,我也在尝试将深度学习用于文本相关工作。


文本理解目前主要有两个方面的工作,一个是传统的文本理解,它往往只需识别文档中的文本;而另一个场景文字理解,需要将照片或视频中的文字识别出来,它包含文本检测和文本识别两个步骤:

 

首先是对存在文字区域的定位(Text  Detection),即找到单词或文本行的边界框(bounding box);然后对定位的区域内容进行识别(Text Recognition),即预测边界框中每一个字符的类标签。将这两步合在一起就能达到最终目的:端到端的文本识别。

640?wx_fmt=png

我的报告分为五个部分。首先,回顾近来用于场景文本理解的深度学习方法;然后介绍我们在场景文本检测和识别方面的最新工作;最后介绍一些场景文本理解的应用和我对领域趋势的认识。


背景

640?wx_fmt=png

相比于文件图片,自然场景图片中文字的分布更加稀疏和分散,其具有多方向且多语种的特性。

640?wx_fmt=png

在2016年以前,大多数场景文本检测工作有三个步骤:首先,利用手工设计特征生成候选框;然后,利用二分类卷积神经网络或随机树来进行文本/非文本区域的分类,即过滤掉误检的候选框;最后,利用CNN来修正区域定位,以得到较精确的回归结果。

640?wx_fmt=png

在2016年以后,文本检测工作逐渐受到深度神经网络的影响,可以大致分为三类

其一是基于分割的思想,通过分割网络提取文本区域,然后采取一些后处理方法获取边界框。代表性的工作是发表在CVPR2016的“Multi-oriented text detection with fully convolutional networks”;

其二是基于候选框的思想,直接用一个神经网络来检测文本边界框。代表性的工作是发表在CVPR2016的“Synthetic data for text localization in natural images”;

其三是混合思想,它采用多任务学习的框架,结合了分割和边界框检测的方法。代表性的工作是发表在ICCV2017的“Deep Direct Regression for Multi-Oriented Scene Text Detection”。

640?wx_fmt=png

场景文字识别大致分为两类思路:其一是从单词或字符层面入手,设计单词分类器或字符分类器,将每一个单词或字符作为一类目标,进行多类别分类任务。


而近来循环神经网络大放异彩,它可以将文本识别看作一个序列标签问题,并能够直接输出标签序列。因此,第二种思路从序列层面入手,将文本看作一个字符序列,通过设计序列特征提取器,结合循环神经网络(RNN)和CTC模型(Connectionist temporal classification),将文本序列作为一个整体进行识别。

640?wx_fmt=png

从“场景文本理解”相关文章在2017年顶会中统计数据来看,超过80%的文章聚焦多方向文字检测,而对场景文本识别和端到端识别的关注度相对较低,且大多数文章集中于解决英文文本问题。

640?wx_fmt=png

实际上,拉丁文和非拉丁文是截然不同的。我们在此以英文(拉丁文)和中文(非拉丁文)举例,前者相邻单词间通常有一个空格,而后者没有明显的视觉划分,因此中文的单词划分只能借助语义信息指导。考虑到此差异性,如果设计一个同时适用于拉丁文和非拉丁文的文本理解系统,可采用基于文本行的检测和序列标签方法。

640?wx_fmt=png

区别于普通的物体和英文单词,文本行具有更大的高宽比,对于普通的卷积核,文本行不能被完全覆盖。这意味着现有基于深度学习的目标检测方法并不能很好适用于场景文本检测。

640?wx_fmt=png

上表展示了在ICDAR 2013、ICDAR 2015、RCTW 2017数据集上检测达到的最好F值结果。即便使用更多的训练数据,中文数据集上的表现也要明显低于英文数据集,这是因为中文文本行相对英文有更大的比例变化。这里中文场景文本RCTW数据集来自于我们最近组织的ICDAR(International Conference on Document Analysis and Recognition)比赛,RCTW数据集包含很多长文本数据。

640?wx_fmt=png

在非拉丁文本检测中,为了克服长文本行的较大比例变化,我们引入一些策略:首先改变卷积核尺度,比如使用长条形卷积核;然后为了增大感受野范围,我们采用类似于inception的模块,组合不同卷积核产生的特征图。此外,使用基于部分的模型也是一种很好的选择,但这就需要把文本行中相邻的部分进行分组。


场景文字检测


Proposal-based method

640?wx_fmt=png

这里主要介绍两个场景文本检测思想,一个是基于候选区域的方法(TextBoxes);另一个是基于部件的方法(SegLink),通过检测部件后将其连接起来。首先介绍TextBoxes:

640?wx_fmt=png

在引入我们的算法之前,首先回顾一下基于CNN的检测方法:SSD(Single Shot detector )。SSD开始在深度特征图上初始化一些默认的方框,这里我们以4*4和2*2的特征图举例。然后默认框将被分类且被分配一个检测分值,同时,默认的方框被回归到一个确切的位置。默认框和回归结果都是矩形的,用中心点和宽高可以将其表示。

640?wx_fmt=png

TextBoxes方法采用SSD作为基础框架,首先在设计默认框(Default Box)时,采取多比例大小的框(包含长条形状的框)。TextBoxes方法对SSD的卷积核也进行了改进,因为文本行往往比普通物体更长,常用卷积核并不能和文本行很好匹配,因此这里将1*1或3*3的卷积核更换为适合文字的长条形卷积核。

640?wx_fmt=png

由上表可以看出,TextBoxes明显优于SSD并且在ICDAR2013数据集上达到了state-of-the-arts的效果,这个数据集主要由包含水平文本的图片构成。

640?wx_fmt=png

而现实图片中的文本往往不是水平的,也就是说,文本的边界框是多边形而不总是矩形的,因此我们添加了一个分支来回归多边形坐标,进一步优化TextBoxes以适用于多方向文本。

640?wx_fmt=png

我们在ICDAR2015数据集上验证了我们的算法,实验表明,TextBoxes++达到了state-of-the-art的性能。

640?wx_fmt=png

为了进一步扩大卷积神经网络的感受野,我们使用联结多种特征图的inception模块,举个例子,上图的inception模块整合了3*3、1*5、5*1三种不同卷积核产生的特征图。

640?wx_fmt=png

为了验证inception模块的有效性,我们在RCTW 2017的一个数据子集上进行测试,这个数据集主要包含一些长条形文本图片,结果表明inception 模块有效提高了长条文本检测准确率。

640?wx_fmt=png

我们也在整个RCTW数据集上进行了测试,通过和曾在比赛中获胜的其他团队方法进行比较,可以看出我们结合inception block的TextBoxes++方法达到了最高的F值。


Part-based method

640?wx_fmt=png 640?wx_fmt=png

接下来介绍基于部件的方法SegLink,它的核心思想是将文本行分解成两种可检测的元素:定义为部件(segment)和关联(link)。部件是指文本行的一部分(图中黄色部分),关联是指连接两个相邻部件的联系(图中绿色短线),被关联表明其属于同一单词或者文本行。 基于segments和links,整个文本行可以通过一个简单的组合表达出来。因为Segments和Links不涉及感受野问题,所以这个思路可以处理长文本行。

640?wx_fmt=png

如图是SegLink的检测框架图,我们依旧使用SSD作为基础框架,采用VGG16检测模型,通过多层CNN同时检测segments和links,跨层连接是对不同层的两个segments的连接,它也是通过计算得到的,因为相邻的segments可能不会来自同一层。

640?wx_fmt=png

从在MSRA-TD500和ICDAR2015两个数据集上的测试结果来看,我们的SegLink方法对方向不确定的文本行和中英混合的文本都有较好的检测性能。

640?wx_fmt=png

事实上,SegLink不仅能够处理长文本行,还可以很好地检测弯曲排列的文本行。如图,星巴克的logo字母是弯曲排列的,而SegLink可以灵活地适应它的文本形状。


场景文字识别


CRNN model

640?wx_fmt=png

针对场景文字识别,这里主要讲述两个算法,针对整齐规则文本的CRNN模型,和针对不规则形文本的RARE模型。首先介绍CRNN:

640?wx_fmt=png

该网络由三个部分组成:一个CNN网络,一个RNN网络和CTC损失。CNN(卷积神经网络)从输入图片提取特征,然后我们将图片特征转化为特征序列,作为序列标签输入到LSTM中,最后CTC(Connectionist temporal classification) loss将序列标签转化为文本。将这三个部分组合从而可以端到端地训练。

640?wx_fmt=png

我们将每一个像素宽度图片的深度特征看作一帧,通过这种方法,可以从左到右获得一个帧序列,每一帧对应原始图像中的局部区域。

640?wx_fmt=png

针对开放字典数据集,我们的方法在识别精度上达到了当时的state-of-the-arts。CRNN还具备以下优势:可以端到端训练;且不受字符标注的约束,这意味着我们可以直接输入文本行进行训练和测试;它没有字典集的限制,因此我们可以将其用于其他序列的识别,比如识别银行卡上的数字;在模型大小上,它比主流的模型参数减少了40~50倍,更有利于在工业实际场景中落地。


RARE model

640?wx_fmt=png

对于形状不规则的文本行,我们提出了RARE(Robust text recognizer with Automatic REctification)模型来解决。

640?wx_fmt=png

如图,由于拍摄视角的变化、文字曲形的排列方式等因素影响,自然场景图片中的文本形状常常是不规则的,如图中SVT-Perspective和CUTE80数据集所示,这就给识别造成了极大的困难。CRNN可能对此类情形并不奏效,它是在输入文本水平的前提下提出来的,因此我们提出了RARE。

640?wx_fmt=png

我们设计的网络由两部分组成,空间转换网络(STN, Spatial Transformer Network)和序列识别网络(Sequence Recognition Network)。其中,STN负责修正输入图片,使其图片中文本呈水平形,SRN负责识别文本。这两个网络通过反向传播进行联合训练,上图中的虚线就表示反向传播。

 

SRN包含一个编码器和一个解码器。编码器由一个ConvNet和一个Bi-LSTM组成,用来生成特征序列表达,解码器是一个基于注意力机制的字符生成器,根据输入序列循环地产生字符序列,根据每一步的注意力机制来解码相关内容,上图展示了SRN在各数据集上的识别精确度。


区别于CRNN模型中的解码器,我们使用基于注意力机制的模型作为RARE的解码器。解码器逐步将一些特征帧解码为一个字符,但由于某些帧中的形变,解码器可能会输出一些错误的识别结果。

640?wx_fmt=png

在识别之前,我们可以引入一个空间变换网络STN(Spatial Transformer Network)来修正不规则文本图片。

640?wx_fmt=png

这里具体讲解一下STN的结构。首先定位网络生成一组基准点C,然后在网格生成器中,从基准点计算TPS变换的参数,在原图上生成一个采样网格P,采样器同时提取网格P和输入图片I,以此输出一个修正后的图片。

 

STN的一个特点是其采样器是可微的,因此只要有一个可微的定位网络和一个可微的网格生成器,STN就可以反向传播误差并得以训练。

640?wx_fmt=png

网格生成器估计TPS变换的参数,并产生一个采样网格。如上图,原图中基准点是C,修正后图中定义基准点为C’,网格生成器计算TPS变换的参数T,采样器将原图I 修正为I’。上表显示,相比于单独使用SRN,添加STN可以大幅度提高识别效果,特别是对于一些有形变的文本数据集。

640?wx_fmt=png

尽管STN校正有效地提高了识别率,但是对于严重弯曲的文本图片它的性能并不理想。因此,我们用带有边界点标注的文本数据作为定位网络的监督信息训练,实验表明,识别率有显著提升。

640?wx_fmt=png

如图,是STN对SVT-Perspective和CUTE80两个数据集中有形变文本的修正结果。

640?wx_fmt=png

另一个有趣的发现是,将检测和识别结合起来,可以使得最终检测的准确率有极大提升。如图,输入图片通过检测器检测出来目标区域后,将检测的区域抠取出来输进识别器,这种组合使得很多误检可以被过滤掉,也就是说最终检测的性能提升了。

640?wx_fmt=png

我们对检测得分和识别得分求取调和平均值,最终从ICDAR2015上的实验结果看出,这种组合有效提高了文本检测的效果。


相关应用


结合文本线索的细粒度图片分类

640?wx_fmt=png

这里主要介绍场景文本检测识别的三方面应用:

1) 结合文本线索的细粒度图片分类;

2) 基于数字的行人重识别;

3) 从文本识别到行人重识别。

640?wx_fmt=png

通常,只用图片直观的视觉信息是不足以进行细粒度图像分类的,如上图,看上去(a)和(b)是类似的,而实际上,(b)和(c)描述的是同一场景,且与(a)大不相同。我们仔细观察,(b)(c)中分别包含了语义相近的词“cafe”和“coffee”,这其实可以在图片仅有微小视觉差异的情况下帮助我们进行细粒度的图片分类。

640?wx_fmt=png

自然场景图片中的文本包含了丰富的语义信息,它与目标或场景有着非常密切的关系。因此,我们将文本表达和深度视觉特征结合起来,训练一个全局的深度卷积神经网络。


整个端到端的算法流程如上图所示。首先使用一个已有的文本识别框架来提取出文本,然后通过word embedding提取这些文本的特征,同时,GoogLeNet对输入图片提取1024维视觉特征向量,为了消除文本中的噪声,我们又添加了一个注意力模型对提取出的文本分配权重,最后将视觉特征和文本特征基于一定的权重组合起来,利用多模态融合特征进行最终的分类。

640?wx_fmt=png

如上图所示,图片中的一些文本不是与图片表达的内容密切关联的,它们会对后期分类造成干扰,因此我们使用了一个注意力模型来筛选对分类有帮助的文本。

640?wx_fmt=png

为了验证算法的有效性,我们在两个数据集上进行了测试,一个是办公场所建筑数据集Con-Text,它包含28种场景,共24,255张图片。另一个是饮料瓶数据集Drink Bottle,它选自ImageNet数据集,含有20种饮料瓶共18,488张图片。这两个数据集图片都包含了文本,且不同种类间只有很小的视觉差异。

640?wx_fmt=png

可以看出,添加文本线索后,在Con-Text和Drink Bottle上的识别性能都有大幅度的提高。

640?wx_fmt=png

如图可以看出,网络中添加的注意力模型可以过滤掉错误的文本,并选择出与类别更相关的文本。

640?wx_fmt=png

我们也将学习到的融合特征用于图像检索,如图,只用视觉信息可能会因为其差别过小引起误分类,而加入文本信息后,酒瓶图片检索的mAP提升了12.8%。


基于数字的行人重识别

640?wx_fmt=png 640?wx_fmt=png

在马拉松比赛中,由于人员庞大、时间持续性长、场景复杂、服装相似等特性,使用行人重识别或者人脸识别的方法来跟踪参赛者是非常困难的,考虑到每一位选手有一个独特的编号,我们试图从场景文本检测的角度入手,根据编号进行行人的定位与跟踪。

640?wx_fmt=png

如图,我们提出的方法分为如下几个步骤:首先使用TextBoxes对输入图片进行文本检测,即定位出文本区域,然后通过CRNN进行文本识别,再将带搜索文本与识别出的文本库进行匹配,寻找到该数字文本对应的选手。

640?wx_fmt=png

我们在自己收集的一个马拉松数据集上验证了这个基于号码牌的行人重识别方法,Marathon数据集包含8706张训练图片和1000张测试图片,经测试行人重识别正确率为85%,从某种程度上讲它可以帮助人们进行搜索,还能有效减少搜索时间。


从文本识别到行人重识别

640?wx_fmt=png 640?wx_fmt=png

我们发现了一个很有趣的类比思想,将水平文本行看作一个从左到右的序列可以取得很好的识别效果,那么受此启发,我们可以将行人看作一个从上到下分块的序列进行重识别。

640?wx_fmt=png

我们又进一步探索了LSTM在行人重识别中的作用,发现LSTM可以学到比CNN更加好的特征,如图是基于LSTM的模型,添加LSTM后在Market1501上的识别率显著提升。

640?wx_fmt=png

我们用上述网络进行行人检索,由上图可以直观地看出,添加LSTM后检索结果明显优于以往。这是因为LSTM使用相邻部分上下文信息丰富了每个人的部分特征,使得模型更具有判别性。


未来发展趋势

640?wx_fmt=png

未来我们将更加着眼于以下几个方面:不规则文本的检测,比如针对弯曲的或者多视角下的文本行;端到端的多语言文本识别;半监督或弱监督的文本检测识别;基于生成对抗网络的文本图像合成;针对文本识别或自然语言处理的框架;场景文本和图像/视频的结合,以应用到更多的实际场景中去。

640?wx_fmt=png 640?wx_fmt=png 640?wx_fmt=png 640?wx_fmt=png


文中白老师提到的文章下载链接为: 

https://pan.baidu.com/s/19zAhdrpRH1M5JpAwjpqnsw


640?wx_fmt=jpeg

主编:袁基睿,编辑:杨茹茵。


--end--



该文章属于“深度学习大讲堂”原创,如需要转载,请联系emily_0167。



作者简介:

640?wx_fmt=jpeg


白翔,华中科技大学电信学院教授,先后于华中大获得学士、硕士、博士学位。他的主要研究领域为计算机视觉与模式识别、深度学习应用技术。尤其在形状的匹配与检索、相似性度量与融合、场景OCR取得了一系列重要研究成果,入选2014、2015、2016年Elsevier中国高被引学者。他的研究工作曾获微软学者,首届国家自然科学基金优秀青年基金的资助。他已在相关领域一流国际期刊或会议如PAMI、IJCV、CVPR、ICCV、ECCV、NIPS、ICML、AAAI、IJCAI上发表论文40余篇。任国际期刊Pattern Recognition, Pattern Recognition Letters, Neurocomputing, Frontier of Computer Science编委,VALSE指导委员,曾任VALSE在线委员会(VOOC)主席, VALSE 2016大会主席, 是VALSE在线活动(VALSE Webinar)主要发起人之一。




往期精彩回顾


【领域报告】图像OCR年度进展|VALSE2018之十一

【领域报告】行人再识别年度进展 |VALSE2018之十

让机器“一叶知秋”:弱监督视觉语义分割|VALSE2018之九

让机器“解疑释惑”:视觉世界中的结构化理解|VALSE2018之八

让机器“提纲挈领”:视觉系统的紧凑性初探|VALSE2018之七

让机器“删繁就简”:深度神经网络加速与压缩|VALSE2018之六

让机器“看山是山”:脑启发的视觉计算|VALSE2018之五

让机器“答问如流”:从视觉到语言|VALSE2018之四

让机器“析毫剖厘”:图像理解与编辑|VALSE2018之三

让机器“察言作画”:从语言到视觉|VALSE2018之二

让机器“观色”:真实世界的表情识别|VALSE2018之一

算法及大V们你们够了:如果CV界也有朋友圈...I 春节特刊



640?wx_fmt=jpeg 640?wx_fmt=png 640?wx_fmt=png

欢迎关注我们!


深度学习大讲堂是由中科视拓运营的高质量原创内容平台,邀请学术界、工业界一线专家撰稿,致力于推送人工智能与深度学习最新技术、产品和活动信息!


中科视拓(SeetaTech)将秉持“开源开放共发展”的合作思路,为企业客户提供人脸识别、计算机视觉与机器学习领域“企业研究院式”的技术、人才和知识服务,帮助企业在人工智能时代获得可自主迭代和自我学习的人工智能研发和创新能力。


中科视拓目前正在招聘: 人脸识别算法研究员,深度学习算法工程师,GPU研发工程师, C++研发工程师,Python研发工程师,嵌入式视觉研发工程师,运营经理。有兴趣可以发邮件至:hr@seetatech.com,想了解更多可以访问,www.seetatech.com

640?wx_fmt=jpeg 640?wx_fmt=jpeg

中科视拓

640?wx_fmt=jpeg

深度学习大讲堂


点击阅读原文打开中科视拓官方网站


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

白翔:复杂开放场景中的文本理解 的相关文章

  • 项目如何介绍

    谈谈XXX项目 分析 xff1a 考官通过看你的简历或者你的介绍来了解你所做的项目 xff0c 那么考官肯定想更详细的了解您的项目 xff0c 看是不是与你的简历写的项目经验一致 也就是考核你是否具有真实的项目经验 一般来说 xff0c 在
  • K8S的flannel组件容器网络分析

    kubernetes的网络通信可以分为一下几个部分 xff1a pod内部的容器间通信pod间通信pod与service之间网络通信kubernetes外部与service之间的网络通信 理论 xff1a 1 pod内部的容器间通信 kub
  • 数据结构(Data Structure)——1、栈(Stack)

    栈的介绍 栈 xff08 stack xff09 在计算机科学中是限定仅在表尾进行插入或删除操作的线形表 栈是一种数据结构 xff0c 是只能在某一端插入和删除的特殊线性表 它按照先进后出的原则存储数据 xff0c 先进入的数据被压入栈底
  • 进程间通信之消息队列

    首先说一下什么是消息队列 消息队列是进程间通信的一种 xff0c 它是由操作系统维护的以字节序列为基本单位的间接通信机制 xff0c 它提供了一个进程向另一个进程发送一个带类型的数据块的方法 我们知道用管道来实现进程间通信的机制是两个进程利
  • STM32 编码器模式详解

    0 编码器模式 stm32的定时器带的也有编码器模式 所用的编码器是有ABZ三相 xff0c 其中ab相是用来计数 xff0c z相输出零点信号 AB相根据旋转的方向不同 xff0c 输出的波形如下图所示 xff1a 从图上可以看出来 xf
  • LAN8720A网络模块关于时钟的使用问题

    微雪的LAN8720A驱动电路 xff1a 正点原子LAN8720A驱动电路 xff1a 1 nINTSEL Configuration 从原理图中可以看出正点原子的LAN8720A模块所使用的晶振是25M 而微雪的LAN8720A模块使用
  • 机器学习和深度学习大纲

    机器学习 https blog csdn net qq 45056216 article details 104303569 深度学习 https blog csdn net weixin 42237113 article details
  • VIM 助记符

    https www bilibili com video BV114411J7Z8 from 61 search amp seid 61 9900190950002805677 一 工作模式 vim其实三种模式 xff0c 一般模式 xff
  • STLINK下载程序(附STLINK驱动包)

    一 ST Link V2的JTAG SWD接口定义及产品图 实物图 STLINK指定标准接口 xff1a 二 STLINK驱动安装 xff1a 双击ST LinkUpgrade安装即可 安装成功之后 xff0c 设备管理器 三 打开工程文件
  • STM32 之 HAL库

    1 STM32的三种开发方式 通常新手在入门STM32的时候 xff0c 首先都要先选择一种要用的开发方式 xff0c 不同的开发方式会导致你编程的架构是完全不一样的 一般大多数都会选用标准库和HAL库 xff0c 而极少部分人会通过直接配
  • 迷你版的ARDUINO MEGA2560

    1 传统的MEGA2560板 xff1a 2 迷你的MEGA2560 特点 xff1a 嵌入版Mega 2560 CH340G ATmega2560 兼容 Mega 2560主板 基于Atmel ATmega2560微控制器和USB UAR
  • MATLAB撸了一个2D LiDAR SLAM

    0 引言 刚刚入门学了近一个月的SLAM xff0c 但对理论推导一知半解 xff0c 因此在matlab上捣鼓了个简单的2D LiDAR SLAM的demo来体会体会SLAM的完整流程 1 数据来源 xff1a 德意志博物馆Deutsch
  • 基于粒子滤波的定位算法 ——原理、理解与仿真

    1 算法原理 1 1 机器人定位问题 关于机器人定位 xff0c 有三大问题 xff0c 它们分别是 xff1a 1 全局定位 xff1a 指初始位置未知 xff0c 机器人靠自身运动确定自己在地图中的位姿 2 位姿跟踪 xff1a 指已知
  • 从图片中提取曲线坐标数据--基于MATLAB

    转载 https zhuanlan zhihu com p 52112012 0 引言 在读文献的时 xff0c 经常遇到这样的情况 xff1a 文章里提出的方法好有趣啊 xff0c 好想拿文中用的数据来试试看看能不能得到相近的结果 xff
  • 49天精通Java,第8天,JDK 和 JRE 、final 与 static 、堆和栈

    作者简介 哪吒 CSDN2022博客之星Top1 CSDN2021博客之星Top2 多届新星计划导师 博客专家 专注Java硬核干货分享 立志做到Java赛道全网Top N 本文收录于 Java基础教程系列 目前已经700 订阅 CSDN最
  • Python 之 Serial串口通信

    0 Serial方法 1 导入pyserial模块 import serial 2 打开串行口 打开串口0 xff0c 9600 xff0c 8N1 xff0c 连接超时0 5秒 import serial ser 61 serial Se
  • PYTHON字符串转数字,数字转字符串;数字转bytes,bytes转数字;字符串转bytes,bytes转字符串。数字表达字符串

    字符串str转数字 float str int str 数字num转字符串 str num a 61 39 1234 39 print 39 a 61 39 a print type a b 61 int a print 39 b 61 3
  • 杂记 | Linux中修改docker默认访问端口(2375)

    2375端口是docker的默认访问端口 xff0c 使用该端口可实现远程访问和操作docker xff0c 但在服务器上直接开启该端口有安全风险 xff08 笔者本人今天就应该端口导致服务器被入侵 xff09 xff0c 可以修改该默认端
  • RVIZ中的fixed frame选项以及“For frame [XX]: Fixed Frame [map] does not exist”

    RVIZ 使用的时候如果fixed frame选项设置不正确 xff0c 那么就会无法显示显示相应的数据信息 xff0c 并提示一下错误 xff1a For frame XX Fixed Frame map does not exist 官
  • C++常见面试题总结

    本文主要总结了一些常见的C 43 43 面试题 链接现在不让发 xff0c 所以如果需要整理好的文档的话 xff0c 请关注本篇文章底部的推广订阅公众号获取 xff1a Cpp编程小茶馆 进入正题 xff0c 下面是自己整理的文档目录截图

随机推荐

  • ROS系统安装Kinetic(零基础教程)

    文章目录 一 引言二 安装过程2 1 配置软件库2 2 添加ROS软件源2 3 添加密钥2 4 安装ROS2 4 初始化rosdep2 5 设置环境变量2 5 构建工厂依赖 三 测试过程3 1 启动ROS Master3 2 启动小海龟仿真
  • 《C++ Primer》一书极不适合我国“国情”

    客气地说 xff0c C 43 43 Primer 不适合大学C 43 43 基础课堂教学 xff0c 也不适合初学者入门 不客气地说 xff0c 恐怕你们的大学老师也搞不定 C 43 43 Primer xff0c 更别说拿这本书教学生了
  • 肝了两宿才收集的17个超炫酷的 CSS 动画加载与进度条特效,绝对值得收藏!!!

    文章目录 一 圆形加载动画二 上下跳动的圆球加载动画三 3D立体加载动画四 饼图加载动画五 多色圆点波动效果的加载动画六 制作顺时针放大的圆圈加载动画七 制作小圆圈轮流放大的加载动画八 制作竖条加载动画九 制作水波扩散效果加载动画十 制作逆
  • C 语言学习笔记(三):C 语言开发环境搭建

    文章目录 一 Windows二 Linux2 1 VMware Workstation Pro软件简介及安装2 2 安装 Ubuntu 系统2 2 1 Ubuntu 下载2 2 2 安装 Ubuntu2 2 3 安装共享文件夹 2 3 概念
  • windows和虚拟机ROS串口通信

    windows和虚拟机ROS串口通信 ROS串口通信步骤1 windows下安装VSPD xff08 虚拟串口工具 xff09 2 VMWare虚拟机添加串口3 Windows下串口通信测试工具设置4 ROS通信代码5 运行结果 最近在学习
  • jsonp原理详解——终于搞清楚jsonp是啥了

    一 JSONP的由来 1 Ajax直接请求普通文件存在跨域无权限访问的问题 xff0c 不管是静态页面 动态页面 web服务 xff0c 只要是跨域请求 xff0c 一律不准 2 不过我们发现 xff0c web页面调用js文件则不受跨域的
  • 无人机分类

    无人机分类方式 一 按飞行平台构型分类 无人机可分为固定翼无人机 多旋翼无人机 无人飞艇 伞翼无人机 扑翼无人机等 固定翼无人机 固定翼 xff0c 顾名思义 xff0c 就是机翼固定不变 xff0c 靠流过机翼的风提供升力 跟我们平时坐的
  • python网络编程smtp协议发送电子邮件

    SMTP协议 SMTP 的全称是 Simple Mail Transfer Protocol xff0c 即简单邮件传输协议 它是一组用于从源地址到目的地址传输邮件的规范 xff0c 通过它来控制邮件的中转方式 SMTP 协议属于 TCP
  • 实时通讯技术Ajax,WebSocket,SSE

    实时通讯技术是一项基于web开发的重要技术 xff0c 网站是需要前后端通讯的 xff0c 因此数据刷新的时间就是获取信息的时间 xff0c 为了能准确而有快速的获取信息需要尽可能的提高信息的刷新效率 常见的实时通讯技术 xff1a 通讯方
  • 当前主流的后端语言,谁能夺得桂冠,果然是后生可畏!

    主流后端语言 如今编程语言遍地开花 xff0c 烟花迷乱 xff0c 小编整理了最流行的几种编程语言如下 xff1a 这几种语言都是经久不衰 xff0c 占领着后端编程界的半壁江山 TIOBE上的语言排名 xff1a C Java pyth
  • CVPR2020 | 中科院VIPL实验室录取论文详解

    编者按 xff1a 近日 xff0c 计算机视觉顶会 CVPR 2020 接收论文结果揭晓 xff0c 从 6656 篇有效投稿中录取了 1470 篇论文 xff0c 录取率约为 22 中科院VIPL实验室共七篇论文录取 xff0c 内容涉
  • 迁移学习:他山之石,可以攻玉【VALSE Webinar】Panel实录

    编者按 xff1a 迁移学习是机器学习与计算机视觉中的重要研究问题之一 xff0c 旨在研究如何将一个领域的知识迁移到另外的领域 xff0c 具有重要的研究意义与应用价值 但迁移学习又会存在哪些局限性 xff1f 在实际应用中的价值是什么
  • 「见微知著」(2) - 细粒度视觉检索特辑【VALSE Webinar】Panel实录

    编者按 xff1a 细粒度图像识别和检索的差异有哪些呢 xff1f 细粒度视觉有哪些重要实际应用及重要场景呢 xff1f 未来细粒度图像分析领域又会如何发展呢 xff1f 为此 xff0c VALSE Webinar 2020 20期邀请了
  • VALSE 2020线上大会学生论坛【VALSE Student Seminar】Panel实录

    首届VALSE Student Seminar于2020年7月31日在VALSE 2020线上大会拉开帷幕 xff0c Student Seminar邀请了6名年轻的研究生 xff1a 张士峰 中国科学院自动化研究所 董胤蓬 清华大学 刘宇
  • 见微知著:语义分割中的弱监督学习

    点击上方 深度学习大讲堂 可订阅哦 xff01
  • 曹汛:计算摄像学研究 | VALSE2017之十六

    点击上方 深度学习大讲堂 可订阅哦 xff01
  • Spring常用注解(绝对经典)

    x1f3c6 作者简介 xff1a 哪吒 xff0c CSDN2022博客之星Top1 CSDN2021博客之星Top2 多届新星计划导师 博客专家 x1f4aa xff0c 专注Java硬核干货分享 xff0c 立志做到Java赛道全网T
  • c++排序方式

    选择排序 第一个数和后面n 1个数比 xff0c 找出最小的数 xff0c 替换第一个数 后面依此类推 include lt bits stdc 43 43 h gt using namespace std const int N 61 1
  • 程明明:面向弱监督的图像理解

    点击上方 深度学习大讲堂 可订阅哦 xff01
  • 白翔:复杂开放场景中的文本理解

    编者按 xff1a 李白的 秋浦歌 中有这样一句诗 xff1a 题诗留万古 xff0c 绿字锦苔生 xff0c 描绘了天执笔 地做纸 苔为墨 xff0c 挥毫题字的豪迈场景 xff0c 也展示了自然场景中文本类型的多样性 xff1b 而另两