首页 > 其他分享 >文本识别之R-CNN

文本识别之R-CNN

时间:2023-11-24 14:00:47浏览次数:30  
标签:候选 识别 训练 样本 分类器 区域 CNN 文本

免责声明:文章转载https://zhuanlan.zhihu.com/p/42731634,作为自己的学习笔记之用   文章源自论文:Rich feature hierarchies for accurate object detection and semantic segmentation。

论文发表于2014年,自2012年之后,物体检测的发展开始变得缓慢,一个重要的原因是基于计算机视觉的方法(SIFT,HOG)进入了一个瓶颈期。生物学上发现人类的视觉是一个多层次的流程,而SIFT或者HOG只相当于人类视觉的第一层,这是导致瓶颈期的一个重要原因。

2012年,基于随机梯度下降的卷机网络在物体识别领域的突破性进展充分展现了CNN在提取图片特征上的巨大优越性 [1]。CNN的一个重要的特点是其多层次的结构更符合人类的生物特征。

但大规模深度学习网络的应用对数据量提出了更高的需求。在数据量稀缺的数据集上进行训练,迭代次数太少会导致模型拟合能力不足,迭代次数太多会导致过拟合。为了解决该问题,作者使用了在海量数据上的无监督学习的预训练加上稀缺专用数据集的fine-tune。

在算法设计上,作者采用了 “Recognition Using Regions” [2]的思想,R-CNN使用Selective Search提取了2k-3k个候选区域,对每个候选区域单独进行特征提取和分类器训练,这也是R-CNN命名的由来。

同时,为了提高检测精度,作者使用了岭回归对检测位置进行了精校。以上方法的使用,使得算法在PASCAL数据集上的检测到达了新的高度。

算法详解

1. R-CNN流程

R-CNN测试过程可分成五个步骤

  1. 使用Selective Search在输入图像上提取候选区域;
  2. 使用CNN对每个wrap到固定大小( 227×227 )的候选区域上提取特征;
  3. 将CNN得到的特征Pool5层的特征输入 N 个(类别数量)SVM分类器对物体类别进行打分
  4. 根据Pool5的特征输入岭回归器进行位置精校。
  5. 使用贪心的非极大值抑制(NMS)合并候选区域,得到输出结果

所以,R-CNN的训练过程也涉及

  • CNN特征提取器
  • SVM分类器
  • 岭回归位置精校器

三个模块的学习。

论文中给出的图(图1)没有画出回归器部分。

图1:RCNN流程图

2. 候选区域提取

R-CNN输入网络的并不是原始图片,而是经过Selective Search选择的候选区域。

  1. Selective Search 使⽤ [4]的⽅法,将图像分成若⼲个⼩区域
  2. 计算相似度,合并相似度较⾼的区域,直到⼩区域全部合并完毕
  3. 输出所有存在过的区域,即候选区域 如下面伪代码:
Input: (color) image
Output: Set of object location hypotheses L

Obtain initial regions R = {r1, ..., r13}
Initial similarity set S = []

foreach Neighbouring region pair(ri, rj) do
    Calculate similarity s(ri, rj)
    S.insert(s(ri, rj))

while S != [] do
    Get highest similarity s(ri, rj) = max(S)
    Merge corresponding regions ri = Union(ri, rj)
    Remove similarities regarding ri: S = S.delete(ri, r*)
    Remove similarities regarding sj: S = S.delete(r*, rj)
    Calculate similarity set St between rt and its neighbours
    S = Union(S, St)
    R = Union(R, rt)

Extact object location boxes L from all regions in R

Selective Search 伪代码 区域的合并规则是:

  1. 优先合并颜⾊相近的
  2. 优先合并纹理相近的
  3. 优先合并合并后总⾯积⼩的
  4. 合并后,总⾯积在其BBOX中所占⽐例⼤的优先合并

图2是通过Selective Search得到的一候选区域

图2:Selective Search效果示意图

3. 训练数据准备

3.1 CNN的数据准备

  1. 预训练:使用ILSVRC 2012的数据,训练一个N类任务的分类器。在该数据集上,top-1的error是2.2%,达到了比较理想的初始化效果。
  2. 微调:每个候选区域是一个N+1类的分类任务(在PASCAL上,N=20;ILSVRC,N=200)。表示该候选区域是某一类或者是背景。当候选区域和某一类物体的Ground Truth box的重合度(IoU)大于0.5时,该样本被判定为正样本,否则为负样本。

3.2 SVM分类器的数据准备

标签

由于SVM只能做二分类,所以在N分类任务中,作者使用了N个SVM分类器。对于第K类物体,与该物体的Ground Truth box的IoU大于0.3的视为正样本,其余视为负样本。论文中指出,0.3是通过Grid Search得到的最优阈值。

通过实验结果选取IoU阈值是一方面。作者在附录B(原文:historically speaking, we arrived at these definition because we started by training SVMs on features computed by the ImageNet pre-trained CNN, and so fine-tuning was not a consideration at that point in time)中给了解释,其实不太理解其思路,希望明白的大神能够帮忙给出解释。

特征

作者通过对比CNN网络中的Pool5,fc6,fc7三层的特征在PASCAL VOC 2007数据集上的表现,发现Pool5层得到的error更低,所以得出结论Pool5更能表达输入数据的特征,所以SVM使用的是从Pool5提取的特征。原因可能是图像的特征更容易通过卷积而非全连接来表示。

3.3 岭回归精校器的数据准备

特征

位置精校和[5]的思路类似,不同之处是使用CNN提取的特征而非DNN。同SVM一样,回归器也是使用的从Pool5层提取的特征。候选区域是选取的样本是和Ground Truth的IoU大于0.6的样本。

标签

回归器使用的是相对位置, G={Gx,Gy,Gw,Gh} 表示Ground Truth的坐标和长宽, P={Px,Py,Pw,Ph} 表示候选区域的大小和长宽。相对的回归目标 T={tx,ty,tw,th} 的计算方式如下:

tx=(Gx−Px)/Pw

ty=(Gy−Py)/Ph

tw=log(Gx/Pw)

th=log(Gy/Ph)

4. 训练

4.1 CNN

作者通过对比Alex-Net5[1] (论文中叫做T-Net), O-Net[6], 通过折中考虑mAP和训练时间,最终采用了Alex-Net。

预训练就是在ILSVRC训练分类网络,不再赘述。

微调训练使用了mini-batch的SGD进行优化,batchsize的大小是128,其中32个正样本,96个负样本。CNN使用的loss是SOFTMAX loss。

4.2 SVM训练

SVM的训练使用了Hard Negative Mining, 对于目标检测中我们会事先标记处ground truth,然后在算法中会生成一系列proposal,这些proposal有跟标记的ground truth重合的也有没重合的,那么重合度(IOU)超过一定阈值(通常0.5)的则认定为是正样本,以下的则是负样本。然后扔进网络中训练。然而,这也许会出现一个问题那就是正样本的数量远远小于负样本,这样训练出来的分类器的效果总是有限的,会出现许多false positive,把其中得分较高的这些false positive当做所谓的Hard negative,既然mining出了这些Hard negative,就把这些扔进网络再训练一次,从而加强分类器判别假阳性的能力。

4.3 岭回归训练

精校器的作用是找到一组映射,是后续区域的位置信息P通过某种映射,能够转化为G。也可以理解为将Pool5层的图像特征,学习G和P的相对位置关系(3.3 中的t),然后根据相对位置关系,便可以将候选区域还原成Ground Truch。所以可以有下面目标函数

(1)w⋆=argminw^⋆∑iN(t⋆i−w^⋆Tϕ5(Pi))2+λ||w^⋆||2

其中 ϕ5(Pi) 表示候选区域 Pi 对应的Pool5层特特征向量。

标签:候选,识别,训练,样本,分类器,区域,CNN,文本
From: https://www.cnblogs.com/candl/p/17853583.html

相关文章

  • 从word复制内容到wangEditor富文本框的时候会把html标签也复制过来,如果只想实现直接复
    从word复制内容到wangEditor富文本框的时候会把html标签也复制过来,如果只想实现直接复制纯文本,有什么好的实现方式?将Word中的内容复制到富文本编辑器时,常常会带有大量的HTML标签和样式,这可能导致不必要的格式混乱。要实现纯文本的粘贴,你可以尝试以下方法:1.使用纯文本粘贴快捷......
  • .net抓取html文本中的链接集合
    publicstaticvoidGetListHtmlString(stringcontent,stringsearchStr,List<string>list){if(string.IsNullOrEmpty(content)||string.IsNullOrEmpty(searchStr))return;intthisIndex=0;while(true){intstartIndex=content.IndexOf(searchStr,......
  • 羚通视频智能分析平台烟火识别 智慧工地烟火识别算法检测
    羚通视频智能分析平台是一种先进的烟火识别系统,它利用深度学习技术进行智能算法检测。通过对大量样本数据的学习和训练,该系统能够准确地识别出烟雾和火焰的特征。它具有高精度检测、实时性强、可扩展性强、智能分析和预警等优点,能够满足安防监控领域中对烟火检测的需求,提高监控效......
  • 羚通视频智能分析平台烟火识别 智慧工地烟火识别算法检测
    羚通视频智能分析平台是一种先进的烟火识别系统,它利用深度学习技术进行智能算法检测。通过对大量样本数据的学习和训练,该系统能够准确地识别出烟雾和火焰的特征。它具有高精度检测、实时性强、可扩展性强、智能分析和预警等优点,能够满足安防监控领域中对烟火检测的需求,提高监控效率......
  • 羚通视频智能分析平台自动识别反光衣穿戴 反光衣算法识别检测系统
    羚通视频智能分析平台自动识别反光衣穿戴的检测系统是一种高效的安全监控工具,它利用先进的人工智能技术,特别是深度学习和计算机视觉技术,对工地上的安全帽和反光背心穿戴情况进行实时分析和识别。这个系统通过实时视频监控工作人员的反光衣穿戴情况,对未穿反光衣的危险......
  • python中怎么识别判断是否是小数?
    defis_float(str):ifstr.count('.')==1:#小数有且仅有一个小数点left=str.split('.')[0]#小数点左边(整数位,可为正或负)right=str.split('.')[1]#小数点右边(小数位,一定为正)lright=''#取整数位的绝对值(排除掉负号)ifstr......
  • m基于Faster-RCNN网络的猫脸检测和猫眼定位系统matlab仿真,带GUI界面
    1.算法仿真效果matlab2022a仿真结果如下:  2.算法涉及理论知识概要       猫作为一种受欢迎的宠物,其图像在互联网上大量存在。对猫脸和猫眼进行准确检测和定位,在宠物识别、情感分析等领域具有广泛的应用价值。然而,由于猫脸和猫眼的多样性以及复杂背景的干扰,传统......
  • fgui在 cocos creator 如何让一个文本做成一个滚动的效果,使用 ts 脚本来实现
    在CocosCreator中使用FGUI(FairyGUI)实现文本的滚动效果,可以通过TypeScript脚本来实现。以下是一个简单的示例:首先,确保已经安装了FGUI插件,并且已经正确配置了TypeScript。然后,创建一个TypeScript脚本,例如ScrollText.ts,并将其附加到你的文本组件所在的节点上。下面是代......
  • TableStructureRec: 表格结构识别推理库来了
    引言TableStructureRec仓库是用来对文档中表格做结构化识别的推理库,包括来自PaddleOCR的表格结构识别算法模型、来自阿里读光有线和无线表格识别算法模型等。该仓库将表格识别前后处理做了完善,并结合OCR,保证表格识别部分可直接使用。该仓库会持续关注表格识别这一领域,集成......
  • Linux文本模式手动配置静态ip ubuntu改ip
    查看当前系统版本cat/etc/os-release查看当前网卡设备名ipaifcofig-a高版本的ubuntu没有interfaces:vim/etc/netplan/xxxxxxnetwork:ethernets:ens33:#配置的网卡的名称addresses:[192.168.8.9/24]#配置的静态ip地址和掩码dhcp4:false......