IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> PaddleOCR的方向分类器代码解析(二) -> 正文阅读

[人工智能]PaddleOCR的方向分类器代码解析(二)

2021SC@SDUSC
??方向分类器是文本检测矫正的一部分。文本检测一般是检测四个点,通过对四个点的水平变化,把文本框矫正成水平方向,这一步在PaddleOCR中称为几何变换。但是文本框内的输入方向可能不是正向的。方向分类器的作用就是判断水平文本框中的文字是正向的还是倒向的(根据yml配置文件的label_list项可知,文本分类器仅支持这两种)。倒向的文字由方向分类器正向化后再去识别。
??具体的方向分类器模型的构造步骤依次为确立使用的神经网络,处理数据集,训练和评估模型,处理模型损失,反向推演优化学习率,后处理模型。在之前的博客中我介绍了方向分类器所使用的MobileNetV3_small_x0.35模型,所以我在这里就不赘述方向分类器的backbone了。现在来看它的head。在神经网络中,head是获取网络输出内容的网络,利用之前提取的特征,做出预测。以下是方向分类器的head代码。PaddleOCR-release-2.2->ppocr->modeling->heads->cls_head.py:

# copyright (c) 2020 PaddlePaddle Authors. All Rights Reserve.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import math
import paddle
from paddle import nn, ParamAttr
import paddle.nn.functional as F


class ClsHead(nn.Layer):
    """
    Class orientation

    Args:

        params(dict): super parameters for build Class network
    """

    #__init__函数主要用来做参数初始化用,比如我们要初始化卷积的一些参数,就可以放到这里面。
    def __init__(self, in_channels, class_dim, **kwargs):
        super(ClsHead, self).__init__()
        self.pool = nn.AdaptiveAvgPool2D(1)
        stdv = 1.0 / math.sqrt(in_channels * 1.0)
        self.fc = nn.Linear(
            in_channels,
            class_dim,
            weight_attr=ParamAttr(
                name="fc_0.w_0",
                initializer=nn.initializer.Uniform(-stdv, stdv)),
            bias_attr=ParamAttr(name="fc_0.b_0"), )

    #forward函数是表示一个前向传播,构建网络层的先后运算步骤。
    def forward(self, x, targets=None):
        x = self.pool(x)
        x = paddle.reshape(x, shape=[x.shape[0], x.shape[1]])
        x = self.fc(x)
        if not self.training:
            x = F.softmax(x, axis=1)
        return x

??__init__函数中的super(ClsHead, self).init()为调用父类的初始函数以构造父类的对象。AdaptiveAvgPool2D(二元自适应均值池化函数)主要是对二维数据进行处理。其中2D是二维数据的意思。Pool指池化层,它主要负责对数据在空间维度(宽度和高度)上进行降采样(downsampling)操作。降采样就是从样本里再选样本的过程。通过这样的操作,池化层能够抽取出图像数据中最重要的特征,减小了数据尺寸,也降低了计算量,还能有效控制过拟合。Avg(均值)指定了池化层在进行降采样操作时所采用的计算方法。Adaptive(自适应)能够在我们给定输入数据和输出数据的大小后自动帮助我们计算核的大小和每次移动的步长。所以第二行代码的作用是将head的汇聚层的张量定义为1。第四行的代码中,nn.Linear()函数是用于设置网络中的全连接层的,代码中的in_channels是每个输入样本的大小,class_dim是每个输出样本的大小(在PPOCR中含义为输出分类数,并在yml文件中定义方向分类器的class_dim值为2),weight_attr是权重,bias_attr是偏差,在函数中定义了后面两个的变量和weight_attr的初值。fc代表全连接层,即将前面经过多次卷积后高度抽象化的特征进行整合,然后可以进行归一化,对各种分类情况都输出一个概率,之后的分类器(Classifier)可以根据全连接得到的概率进行分类。
??forward函数中先后定义了池化层和全连接层。倒数第二行中的softmax函数又称归一化指数函数。它是二分类函数sigmoid在多分类上的推广,目的是将多分类的结果以概率的形式展现出来。它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类。在最后选取输出结点的时候,我们就可以选取概率最大(也就是值对应最大的)结点,作为我们的预测目标。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-11-27 09:54:11  更:2021-11-27 09:55:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 3:12:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码