「产品实操」三分钟教你快速搭建字符识别CNN模型
来源:雪球App,作者: 星环科技,(https://xueqiu.com/6110106168/198678908)
深度学习中最令人兴奋的领域之一就是计算机视觉。通过卷积神经网络CNN(Convolutional Neural Networks),我们已经能够创建自动驾驶系统、面部检测系统和自动医学图像分析等。但如果不是专业的数据工程师与行业人员,您几乎没有机会了解CNN。今天, 本文将从理论与实践两种方式,带领各位来了解CNN的内部构造 ,以及CNN是如何实现具体功能的。
01
第一部分:卷积神经网络CNN
什么是卷积神经网络
我们常常听说的神经网络,全名人工神经网络ANN(Artificial Neural Network),是一种模仿生物神经网络的结构和功能的数学模型或计算模型。而卷积神经网络CNN是一种 前馈神经网络 ,在图像处理方面CNN的表现十分出色。
为什么使用卷积神经网络?
全连接神经网络不适合用于处理图像,因为会有以下三方面的问题:没有利用像素之间位置信息;参数过多效率低下,训练困难;大量的参数导致网络过拟合。
使用卷积神经网络CNN可以解决上面的问题。CNN在原来的全连接层前面加入多个卷积层、激活函数与池化层,其中每层的神经元将只与前一层中的一小块区域连接,而不是采取全连接方式, 避免参数爆炸的同时扩展了神经网络的层数,使深度学习成为可能。
传统神经网络(左)与卷积神经网络CNN(右)
工作原理
卷积神经网络CNN中主要由 输入层、卷积层、激活函数、池化层以及全连接层 组成。CNN的工作原理类似大脑识别图像的过程,不同的大脑区域可以识别图像不同维度的特征。CNN中的每个卷积层都包含多个卷积核。这些卷积核从左到右,从上到下扫描整个图像以得到特征图。在经过多个卷积层的计算后可以得到图像在不同维度的抽象表示,从而获取图像特征以识别图像。
卷积计算示意图(图片来源:github mlonotebook)
为了让各位对CNN有一个具体的印象,接下来本文将对CNN的每一层进行讲解。
卷积层
通过卷积层,我们可以完成对图像的去噪、锐化、边缘检测、模糊等操作,从而达到 提取图像不同特征 的目的。
在卷积层中,包含多个可学习的卷积核,让上一层输出的特征图与卷积核进行卷积操作,即输入项与卷积核之间进行点积运算,然后将结果送入激活函数,就可以得到输出特征图。
以下图为例。图中输入图像大小为32*32*3,3是它的深度(RGB),卷积层的卷积核大小为5*5*3。通过一个卷积核与输入图像的卷积就可以得到一个28*28*1的特征图。
卷积计算示例
第一层卷积层只能提取一些低级的特征,如边缘、线条和角等层级,而更多层的网路就能从低级特征中迭代提取更复杂的特征。
下图是输入图像分别经过1个/2个/3个卷积核卷积后输出的特征图,可以看到经过迭代后我们获得了更深层次的特征图。
卷积特征图
通过卷积核,CNN可以提取图片的一部分,相当于传统神经网络的一个特征。多个卷积核对应多个特征,产生多个特征的同时使用卷积的方式避免了参数爆炸。
激活函数
激活函数又称 非线性映射。 若干线性操作层(卷积层)的堆叠只能起到线性映射的作用,无法形成复杂的函数。激活函数可以引入非线性因素,增加整个网络的表达能力。因此每次卷积完成后,都需要使用激活函数对结果进行处理。
常见的激活函数有 Sigmoud、tanh、Maxout以及我们最常用的Relu 等。
常见的激活函数
以ReLu为例,该函数可以将图片中的负像素值替换为零,以此对特征提取的结果进行修正。
ReLu处理特征图像
池化层
池化层又称 下采样层 ,主要的作用是对激活函数处理后的结果进行降维,压缩数据和参数的量来保留最显著的特征,防止过拟合。
以常用的最大池化为例,在最大池化过程中,输入图像大小为4*4,在每2*2的区域中计算最大值。最后输出的池化特征大小为2*2,这个过程中分辨率变为原来的一半。
最大池化示例
全连接层
全连接层可以把所有局部特征通过 权值矩阵 重新整合为一个完整的特征视图,其输出值可以采用 softmax分类器 进行分类。
全连接层示意图
Softmax分类器常用于多分类任务,它可以将多个神经元的输出映射到(0,1)的区间中,以概率的形式完成多分类。
Dropout函数
Dropout函数是指在深度学习网络的训练过程中,让某个神经元的激活值以一定的概率p停止工作。这样可以使模型泛化性更强,因为它不会太依赖某些局部的特征。
Dropout函数示例
02
第二部分:实验
实验——手写数字识别
读完了上面的内容,相信您对卷积神经网络CNN有了初步的了解。接下来,本文将通过实验的方式直观地展现 CNN的搭建,训练以及测试过程。
本实验将在Sophon Base中构建一个简单的卷积神经网络,并使用一部分MNIST数据集训练它识别手写数字。
1. 数据集介绍
MNIST数据集包含60000个训练集和10000测试数据集。分为 图片和标签, 图片是28*28的像素矩阵,标签为0~9共10个数字。
MINST数据集
本次实验使用的数据集为Sophon Base平台提供的images_small_minst数据集,该数据集选取了MINST数据集的一小部分图片,训练集加测试集总共500个。具体字段如下所示:
small_minst数据集
2. 实验环境
星环科技 Sophon Base数据科学平台
3. 开始实验
在创建项目之前,本文默认您的sophon平台及各种配置文件已经成功安装,正常运行,并且您已成功注册sophon 用户。
进入项目首页,点击 “+新建项目” 以新建一个项目。
在项目首页,点击创建好的项目。点击左侧的实验,点击实验以新建空白实验。实验创建后会自动进入该实验界面。
从左侧将算子 “images_small_minst”、“字符串索引”、“设置角色”、“人工神经网络”、“应用模型”、“性能(分类)” 拖动至右侧工作区并按照下图进行连接:
算子连接示意图
算子参数设置如下:“字符串索引” 算子
可以选择 “人工神经网络” 算子,右键菜单点击 “重命名”,重命名该算子为 “卷积神经网络CNN”:
右键菜单
重命名后双击该算子,进入子流程:
神经网络算子子流程
可以看到子流程中空无一物,需要您自己搭建子流程。
4. 搭建模型
从左侧将多个 “2D卷积层” 算子与 “最大池化层2D” 算子拖动至右侧并按照下图连接:
子流程算子连接1
参数设置如下:“2D卷积层” 算子
所有的 “2D卷积层” 算子与 “最大池化层2D” 算子都沿用以上参数设置。
至此,我们已经在神经网络算子中设立了三层。最开始的 “2D卷积层” 算子与 “最大池化层2D” 算子作为第一层;第二个 “2D卷积层” 算子作为第二层;最后的 “2D卷积层” 算子与 “最大池化层2D” 算子作为第三层。
神经网络前三层
接下来,将“压平”算子拖动至右侧,将“最大池化层2D”算子的输出连接至“压平”算子的输入。“压平”算子可以将多维的输出一维化:
“压平”算子连接
然后,从左侧将多个 “Dense层” 算子(全连接层算子)与 “Dropout层” 算子拖动至右侧并按照下图连接:
子流程算子连接2
参数设置如下:“Dense层” 算子
所有的 “Dense层” 算子与 “Dropout层” 算子都沿用以上参数设置。
至此,我们已经在神经网络算子中设立了五层。最开始的 “Dense层” 算子与 “Dropout层” 算子作为第四层;最后的 “Dense层” 作为第五层。
神经网络后2层
最后,从左侧将 “Softmax函数” 算子、“交叉熵(Sparse vs login)” 算子与 “ReduceMean函数” 算子拖动至右侧并按照下图连接:
子流程算子连接3
这三个算子可以帮助模型计算模型损失和多分类概率。至此,子流程搭建完成。
5. 运行实验
退出后回到主流程,我们可以直接点击上方的执行按钮运行实验。运行过程需要一段时间。
运行完成后,可以跳转到实验结果:
混淆矩阵
正确率与召回率
由于平台提供的样例数据集中数据量较少,训练出的模型正确率较低。如果有需要,您可以自己准备数据集导入。 Sophon Base除了跟Transwarp Data Hub做深度对接以外,还支持多种数据源,包括RDBS、HDFS、ORC、Parquet、本地CSV等。 另外,本文中算子的参数设置与模型搭建仅供演示使用,您可以根据自己的需要改进模型或调整参数以求得到更优秀的模型。
您也可以在实验结果页面查看到模型对每个测试数据的预测结果:
测试结果
关于Sophon
Sophon是一款一站式人工智能平台。该平台包含3个主要模块: Sophon Base,Sophon Edge,Sophon KG。 其中Sophon Base 数据科学基础平台具备完整的数据探索、多数据源接入、实验调度、智能分析、用户资产以及平台管理等功能;为用户提供完整的模型上线闭环,全流程图形化帮助用户更加便捷地对线上服务进行管理,实现模型价值。
如果想要使用sophon实际操作,可以登录网址 网页链接 进行查看。
进入首页-下拉至Sophon查看详情-点击申请试用-即可免费获得7天使用权限
03
第三部分:其他选择
“我觉得训练模型太麻烦了,有没有可以拿过来直接用的产品,而且要多场景,高效率,高准确度!”
对于这些客户,Sophon OCR可以完美满足需求。
Sophon OCR是 星环科技 人工智能产品Sophon旗下的一款企业级轻量化OCR平台。Sophon OCR基于自主研发的高性能算法,可以实现全行业、多场景的高效OCR识别,并确保极高的识别效率。它提供 全文识别、自定义识别以及标准识别 三种识别模式,满足不同场景的识别需要。
在金融领域,Sophon OCR可以对身份证、银行卡等金融相关卡证类进行 精确识别、提取、录入,解决用户信息快速录入与认证 ;也能够对财险、医疗保险、车险等所需的多场景固定版式单据和信息进行自动识别,实现快速核保。
银行卡识别
保险单据识别
在财务领域,Sophon OCR支持扫描并自动识别各种票据,如发票、支票、银行票据等,提取票据上的文字、数字及出现频率较高的印章覆盖文本等信息匹配到凭证模板,并在系统中生成凭证;扫描的纸质票据在生成凭证时自动存储为凭证的电子附件,并上传至云端存储,实现财务附件的电子化管理。
单据识别1
单据识别2
在法务领域,Sophon OCR支持对企业内部法务合同的扫描件、司法行业卷宗管理系统的卷宗进行OCR识别、分类、在线校对与电子化存储。对固定版式的文本和表格混合的复杂卷宗,使用自定义识别提取版式模板,获取更为精确的识别结果,使用作业流审校功能保证识别结果的绝对准确,有效提升办公效率。
合同审核
卷宗管理
在其他领域Sophon OCR也能发挥作用,Sophon OCR可以对实时流媒体数据进行解析,准确识别出图像中车牌位置,输出车牌位置坐标、车牌类型、车牌号码、车牌号码置信度、车牌置信度等字段信息,处理为结构化数据后对接到业务系统。
车牌识别
另外,Sophon OCR可以辅助人工录入,规避如设备型号、序列码是较长的数字、字母序列,人工录入出错的风险, 辅助完成资产信息化,高效管理企业资产。
资产入库