当前位置: 首页 > 编程日记 > 正文

EAST 自然场景文本检测

自然场景文本检测是图像处理的核心模块,也是一直想要接触的一个方面。

刚好看到国内的旷视今年在CVPR2017的一篇文章:EAST: An Efficient and Accurate Scene Text Detector。而且有开放的代码,学习和测试了下。

题目说的是比较高效,它的高效主要体现在对一些过程的消除,其架构就是下图中对应的E部分,跟上面的比起来的确少了比较多的过程。这与去年经典的CTPN架构类似。不过CTPN只支持水平方向,而EAST在论文中指出是可以支持多方向文本的定位的。

对于长文本效果不好。

优势:

提供了方向信息,可以检测各个方向的文本

缺点:

对较长的文本检测效果不好,感受野不够长

整体网络结构分为3个部分

(1) 特征提取层:

使用的基础网络结构是PVANet,分别从stage1,stage2,stage3,stage4抽出特征,一种FPN(feature pyramid network)的思想。

(2) 特征融合层:

第一步抽出的特征层从后向前做上采样,然后concat

(3) 输出层:

输出一个score map和4个回归的框+1个角度信息,或者输出,一个scoremap和8个坐标信息。

由于程序实现使用的基础网络不是pvanet网络,而是resnet50-v1。

在caffe版本的resnet50实现中,只有第一个卷积后面的pooling和最后一层的gloabl pooling,详细结构见reference,网络通过卷积层的stride=2操作实现类似pooling的效果

而本程序使用的slim中带的resnet50包含了5个pooling。

Resnet50结构,最后一个featuremap本质上将输入图像缩小16倍(4个pooling),最后一个gloabl pooling,类似于vgg中的全连接。gloabl pooling是googlenet和Resnet的专利。

本文网络结构主要取了pool2,pool3,pool4,pool5,的featuremap引出,分别进行uppooling,concat,conv操作,得到最终的featuremap,然后进行卷积,分别输出channel=1的F_score

,channel=4的geo_map,channel=1的angle_map。

标签生成过程:

(a) 中黄色的为人工标注的框,绿色为对黄色框进行0.3倍边长的缩放后的框,这样做可以进一步去除人工标注的误差,拿到更准确的label信息。

(b) 为根据(a)中绿色框生成的label信息

(c) 中先生成一个(b)中白色区域的最小外接矩,然后算每一个(b)中白色的点到粉色最小外接矩的上下左右边的距离,即生成(d),然后生成粉色的矩形和水平方向的夹角,即生成角度信息(e),e中所有灰色部分的角度信息一样,都是同样的角度。

论文采用的架构如下:

后来,有大佬改进EAST针对长文本检测效果不好的缺陷,提出advancedEAST,结构如下:

开源源码:https://github.com/huoyijie/AdvancedEAST

转自: https://blog.csdn.net/sparkexpert/article/details/77987654
https://blog.csdn.net/qq_14845119/article/details/78986449

仅为学习记录,侵删,感谢作者。

转载于:https://www.cnblogs.com/Allen-rg/p/9729469.html

相关文章:

通过httpmodule获取webapi返回的信息

我写了一个webapi,想在module中获取请求的信息和返回的信息,写进log里,以方便以后查询。request信息很容易能拿到,但是返回信息得费一番周折。不多说,上代码 public class ResponseLoggerModule : IHttpModule {privat…

iOS SwiftUI篇-2 UI控件 Text Button Image List

iOS SwiftUI篇-2 UI控件 Text Button Image List Text 显示文本,相当于UILabel import SwiftUIstruct TextContentView: View {var body: some View {//VStack(垂直排列视图)可以将其内部的多个视图,在垂直方向进行等距排列,VStack最多可以容纳十个子视图,VStack(spacin…

numpy和torch数据操作对比

对numpy和torch数据操作进行对比,避免遗忘。 ndarray和tensor import torch import numpy as npnp_data np.arange(6).reshape((2, 3)) torch_data torch.arange(6) # 张量 tensor2array torch_data.numpy()print(\nnumpy array:\n, np_data,\ntorch tensor\n,…

ZooKeeper学习

一、ZooKeeper 的实现 1.1 ZooKeeper处理单点故障 我们知道可以通过ZooKeeper对分布式系统进行Master选举,来解决分布式系统的单点故障,如图所示。 那么我们继续分析一下,ZooKeeper通过Master选举来帮助分布式系统解决单点故障, 保…

iOS SwiftUI篇-1 项目结构

iOS SwiftUI篇-1 项目结构 介绍Xcode新建的SwiftUI模版项目结构、跟普通Storyboard模版项目的差异、SwiftUI项目的app启动流程、UIScene概念介绍、AppDelegate.swift和Info.plist的差异 1.项目模版 Interface: SwiftUI Life Cycle: UIKit App Delegate Language: Swift Life…

js绑定事件和解绑事件

在js中绑定多个事件用到的是两个方法:attachEvent和addEventListener,但是这两个方法又存在差异性 attachEvent方法 只支持IE678,不兼容其他浏览器addEventListener方法 兼容火狐谷歌,不兼容IE8及以下 addEventListener方法 div.addEventListener(click,fn); div.addEventLi…

基于三维点云数据的主成分分析方法(PCA)的python实现

主成分分析(PCA)获取三维点云的坐标轴方向和点云法向量 # 实现PCA分析和法向量计算,并加载数据集中的文件进行验证import open3d as o3d # import os import numpy as np from scipy.spatial import KDTree# from pyntcloud import PyntClo…

CV02-FCN笔记

目录 一、Convolutionalization 卷积化 二、Upsample 上采样 2.1 Unpool反池化 2.2 Interpolation差值 2.3 Transposed Convolution转置卷积 三、Skip Architecture 3.1 特征融合 3.2 裁剪 FCN原理及实践,记录一些自己认为重要的要点,以免日后遗…

python基础之常用模块

6、TEXT PROCESSING SERVICES :文本处理服务 6.1、re 8、DATA TYPES : 数据类型 8.1、datetime 8.2、collections 8.3、copy 9、 NUMERIC AND MATHEMATICAL MODULES : 数字和数学模块 9.1、random 10、FUNCTIONAL PROGRAMMING MODULES : 函数式编程模块 10.1、iter…

笔记本电脑摄像头实现光流跟踪

看实验室里的师兄在写CSDN,自己也写一个,记录自己的学习进程吧。   研究生从机械转到了毫无基础的SLAM领域。研一半年上课加自学,对SLAM也有一丢丢的了解。最近看光流法时,想到用笔记本电脑的摄像头实现一下,就简单的…

JSON字符串 拼接与解析

常用方式: json字符串拼接(目前使用过两种方式): 1.运用StringBuilder拼接 StringBuilder json new StringBuilder(); json.append("{"); json.append(""uuid":" """ uuid "",&q…

iOS SwiftUI篇-3 排版布局layout

iOS SwiftUI篇-3 排版布局layout swiftUI提供的layout有: ZStack、GeometryReader、HStack、LazyVGrid、LazyHStack、LazyHGrid、LazyVStack、VStack、Spacer、ScrollViewReader等 HStack 水平横向布局容器,子view按顺序水平排列 HStack(alignment: .center, spacing: 10)…

CV04-UNet笔记

目录 一、UNet模型 二、Encoder & Decoder 2.1 Encoder 2.2 Decoder 2.3 classifier 学习U-Net: Convolutional Networks for Biomedical Image Segmentation,记录一些自己认为重要的要点,以免日后遗忘。 代码:https://github.com/…

Scrapy 学习笔记(-)

Scrapy Scrapy 是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中。其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以应用在获取API所返回的数据(例如 A…

Ubuntu18.04运行ORB_SLAM2

运行环境:Ubuntu18.04 预先安装的库 需要预先安装一些库,如Eign,Sophus,OpenCV等。笔者在阅读《SLAM十四讲》的时候已经安装,在此不再赘述。 ORB_SLAM2源码的下载与编译 git clone https://github.com/raulmur/ORB…

java中的各种流(老师的有道云笔记)

内存操作流-字节之前的文件操作流是以文件的输入输出为主的,当输出的位置变成了内存,那么就称为内存操作流。此时得使用内存流完成内存的输入和输出操作。如果程序运行过程中要产生一些临时文件,可采用虚拟文件方式实现;直接操作磁…

iOS SwiftUI篇-4 注解@State、@Binding、@ObservedObject、@EnvironmentObject、@Environment

iOS SwiftUI篇-4 注解@State、@Binding、@ObservedObject、@EnvironmentObject、@Environment @State 关联View的状态,当@State修饰的属性改变时,对应的View会跟着刷新,符合MVVM的设计理念 @State var count: Int = 0Section(header: Text("@States")) {Te

CV05-ResNet笔记

目录 一、为什么是ResNet 二、Residual Learning细节 2.1 shortcut计算 2.2 11卷积调整channel维度大小 2.3 ResNet层数 2.4 ResNet里的Basic Block 和 Bottleneck Block 2.5 Global Average Pooling 全局平均池化 2.6 Batch Normalization 学习ResNet,记录…

二叉树的前序,中序,后序的递归、迭代实现

二叉树的前序遍历 递归实现 递归实现没什么好说的。个人感觉将函数功能看成一个整体,不要去想栈中怎么实现的。毕竟自己的脑袋不是电脑,绕着绕着就蒙了。 void preordered_traversal_recursion(TreeNode* root) {if(root NULL) return;container.pus…

DataSet 动态添加列

public DataSet GetNewId(List<string> IdArr){DataSet ds new DataSet();DataTable newtb new DataTable();DataColumn column new DataColumn("cnt", typeof(string));//新增列newtb.Columns.Add(column);for (int i 0; i < IdArr.Count; i){StringBu…

iOS专题1-蓝牙扫描、连接、读写

iOS专题1-蓝牙扫描、连接、读写 概念 外围设备 可以被其他蓝牙设备连接的外部蓝牙设备,不断广播自身的蓝牙名及其数据,如小米手环、共享单车、蓝牙体重秤 中央设备 可以搜索并连接周边的外围设备,并与之进行数据读写通讯,如手机 日常生活中常见的场景是手机app通过蓝…

CV06-Xception笔记

目录 一、为啥是Xception 二、Xception结构 2.1 Xception结构基本描述 2.2 实现细节 2.3 DeepLabV3改进 三、记录pytorch采坑relu激活函数inplaceTrue Xception笔记&#xff0c;记录一些自己认为重要的要点&#xff0c;以免日后遗忘。 复现Xception论文、DeepLabV改进的…

C++排序算法实现(更新中)

比较排序法&#xff1a;如冒泡排序、简单选择排序、合并排序、快速排序。其最优的时间复杂度为O(nlogn)。 其他排序法&#xff1a;如桶排序、基数排序等。时间复杂度可以达到O(n)。但试用范围有要求。 桶排序&#xff1a;排序的数组元素跨距不能很大。因为跨距很大的话&#xf…

iOS SwiftUI篇-5 专题NavigationView、NavigationLink

iOS SwiftUI篇-5 专题NavigationView、NavigationLink NavigationView:标题、展示模式、隐藏导航栏、隐藏返回按钮、添加导航栏按钮 NavigationLink:Text文本跳转、Image图片跳转、Button按钮跳转、点击按钮根据业务跳转到不同页面 NavigationView 标题、展示模式 import S…

PHP artisan

Artisan 是 Laravel 提供的 CLI&#xff08;命令行接口&#xff09;&#xff0c;它提供了非常多实用的命令来帮助我们开发 Laravel 应用。前面我们已使用过 Artisan 命令来生成应用的 App Key 和控制器。在本教程中&#xff0c;我们会用到以下 Artisan 命令&#xff0c;你也可以…

【转载】Pytorch在加载模型参数时指定设备

转载 https://sparkydogx.github.io/2018/09/26/pytorch-state-dict-gpu-to-cpu/ >>> torch.load(tensors.pt) # Load all tensors onto the CPU >>> torch.load(tensors.pt, map_locationtorch.device(cpu)) # Load all tensors onto the CPU, using a fun…

目标检测之Faster-RCNN的pytorch代码详解(数据预处理篇)

首先贴上代码原作者的github:https://github.com/chenyuntc/simple-faster-rcnn-pytorch&#xff08;非代码作者&#xff0c;博文只解释代码&#xff09; 今天看完了simple-faster-rcnn-pytorch-master代码的最后一个train.py文件&#xff0c;是时候认真的总结一下了&#xff0…

hp-ux 集群,内存 小记

hp-ux 集群&#xff0c;内存 小记 -----查看hp 集群状态信息 # cmviewcl -v CLUSTER STATUS dbsvr up NODE STATUS STATE db01 up running Cluster_Lock_LVM: VOLUM…

iOS SwiftUI篇-6 专题TabView

iOS SwiftUI篇-6 专题TabView TabView: 图片+文字组成tabItem,选中时改变图片和文字颜色 跳转到二级页面时隐藏tabbar,返回到首页时显示tabbar 首页、我的两个tab,效果图: 图片文字组成tabItem,选中时改变图片和文字颜色 代码: struct MainContentView: View {@State…

三维刚体变化中Rcw,tcw的含义

高翔博士的《视觉SLAM十四讲》中&#xff0c;介绍Tcw指从世界坐标w到c的变换矩阵。但研一学机器人学的时候&#xff0c;讲T12的含义是&#xff0c;坐标系2相对于坐标系1的变换。于是一脸懵逼。昨天想了一晚上&#xff0c;有了一点自己的想法&#xff0c;在这记录一下&#xff0…