EAST 算法超详细源码解析(三)、模型构建

Date: 2020/05/18

Author: CW

前言:

趁着今日难得有些许闲暇时间,那么就把模型构建这块输出一下吧!

EAST的模型结构还是比较简单的,One-Stage + Anchor-Free,即使从代码实现的角度来看,也甚是直观,简洁明了。

对于特征提取使用的 backbone,原作使用的是 VGG 和 PVA-Net,这里我会给出基于 VGG 实现的代码解析。另外,由于当时在撸这块代码的时候,正好出现了 ResNeSt,于是就把它稍微改了下用到这里了,本文也会给出相应的代码解析。


EAST 模型框架


EAST with PVA-Net

EAST 模型主要由三部分组成,分别是特征提取、多尺度特征融合以及预测结果生成

EAST 模型框架

接下来就分别基于这三个部分去解析。


特征提取

不知道你们是否发现,尽管 VGG 已经是很老的模型了,但依旧很多算法会将它用作 backbone,尽管它可能不是 SOTA 的,但是实现起来简单,而且性能也不差,因此还是深受众多炼丹者们的喜爱。这个世界里,往往越原始的东西越稳定,万物在高度进化与发展的过程中,会产生一定程度的“弱化”,这叫“递弱代偿”。不扯远了,下面就看看特征提取的部分吧。

extractor (i)

注意以上红框部分,features 属性是用作特征提取的,这里设置为 vgg 的特征提取模块,并不包括最后的全局池化与全连接层,即去掉了头部(犹如迁移学习一般,通常去掉头部 top layer),这是因为我们仅将 VGG 用作特征提取,这样做就可以缩减模型复杂度。

再来看看 backbone 是 ResNeSt 的情况。

extractor (ii)

这样改的一个理由是保持和 VGG 相似的结构,使其和 VGG 一样都是在经过一定数量的卷积块(bottleneck 大致也可看作是多个卷积块组成)后使用最大池化层进行下采样。另外就是,最大池化能够提取区域内最明显的语义特征,在识别 ground truth 时有一定效果。

这样之后,第一个卷积块即 conv1 保持和原来一样下采样2倍,而后面的每个 bottleneck layer 修改为不进行下采样,下采样2倍均发生在每层 bottleneck layer 后的最大池化层,最后总共下采样32倍,和 EAST 的设计一致。

最后来看看前向反馈的过程:

extractor (iii)

注意,由于 VGG 均使用最大池化层进行下采样,ResNeSt 中第一次下采样是在第一个卷积块conv1,而我们在每个阶段保存的是最大池化层输出的结果,因此对于 ResNeSt 来说,out 中保存的特征图即为我们所需的4个特征图,它们的尺寸分别是输入图像的1/4、1/8、1/16、1/32,;而对于 VGG,则需要去掉第一个保存下来的特征图,它的尺寸是原图的1/2。

下一部分解析 backbone 的搭建,分别是 VGG 和 ResNeSt,先来看看 VGG。


Backbone

1、VGG

VGG (i)
VGG (ii)

VGG 的特征提取就如以上所示,特征提取器(上一部分的 extractor)仅使用了 VGG 的如上部分,并不会涉及 VGG 整个模型的前向反馈。

2、ResNeSt

这里仅对 ResNeSt 改造的部分进行说明,只有几处小改动,至于其完整结构的代码可以看 CW 之前的那篇文 你的 ResNet 是时候更新了 —— ResNeSt 来也!

改造需要注意两部分,下采样率和通道数。

ResNeSt (i)

在每个 bottleneck layer 后分别加一个最大池化层进行下采样,同时注意要取消每个layer 第一个 bottleneck 的下采样(每个 layer 包含多个 bottleneck,self._make_layer 中的参数 stride 影响的是 layer 中第一个 bottleneck,原本的结构中,layer中只有第一个 bottleneck 会进行下采样)。

ResNeSt (ii)

红框即为改动的部分。

ResNeSt (iii)

最后,我这里使用的是 resnest50_fast_4s2x40d 结构,2表示将通道划分为2组,40代表组的宽度,与 ResNeXt 中 Cardinality 的概念对应,4代表在划分2组后进一步划分(split)的组数,关于这些概念的更多详情细节可看我在上面提到的那篇文。

resnest50_fast_4s2x40d  

特征融合

玩过 FPN 或者 U-Net 等这种金字塔结构网络的朋友们应该都很熟悉这部分了,这里也是那种玩法,首先将 1/32特征图插值上采样2倍,与1/16特征图在通道这个维度 concat 融合,然后经过一个卷积块压缩下通道数,最后再用一个卷积块进一步抽取特征,接下来以此类推继续和1/8、1/4特征图融合...

特征融合 (i)
特征融合 (ii)

看了下面前向反馈的过程,应该就清楚以上卷积层的通道数是怎么回事了。

特征融合 (iii)
特征融合 (iv)

预测结果生成

这部分应该是最简单的了,主要用1x1调整通道数,与所需的预测结果对应。

预测结果生成 (i)

虽说简单,但在前向反馈的输出中,还是有些细节需注意下,预测输出代表的意义要和标签生成的结果对应起来,这样才能是模型正确学习到东西,否则就被带歪了...

预测结果生成 (ii)

score map 就不多说了,上图注释中已经解释了。对于 loc,也就是 d1~d4,由于它们对应的是输入图像中每点到其所属文本框边界上下左右的距离,那么它们的取值肯定是要在输入图像尺寸范围内的。另外,对于角度,由于在标签生成时,我们对旋转角的搜索范围是 -π/2~π/2,因此这里输出预测结果时也要对应起来。对于标签生成不太清楚的,可以看这个系列的第一篇文 EAST 算法超详细源码解析(一)、数据预处理与标签生成 。

哦,最后有一点在这里提下,在本文开篇展示的那副 EAST 框架图中,在预测结果生成部分,还有个 QUAD geometry,是8个通道的,每个通道代表的是每点与所属文本框的四个顶点之间的横、纵坐标之差,而本文解析的代码中的预测方式称为 RBOX geometry,因其带有旋转角度,所以叫作旋转框 —— Rotated Bounding Box。在实际的实现中,可根据数据集的情况,选择一种方式来实现。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,504评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,434评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,089评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,378评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,472评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,506评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,519评论 3 413
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,292评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,738评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,022评论 2 329
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,194评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,873评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,536评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,162评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,413评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,075评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,080评论 2 352