【产品实操】三分钟教你快速搭建字符识别CNN模型
深度学习中最令人兴奋的领域之一就是计算机视觉。通过卷积神经网络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”、“字符串索引”、“设置角色”、“人工神经网络”、“应用模型”、“性能(分类)”拖动至右侧工作区并按照下图进行连接:
算子连接示意图
算子的连接也可以参考下方视频进行操作:
,时长00:59
主流程算子连接
算子参数设置如下:“字符串索引” 算子
算子的参数配置也可以参考下方视频进行操作:
,时长01:06
主流程参数配置
可以选择 “人工神经网络” 算子,右键菜单点击 “重命名”,重命名该算子为 “卷积神经网络CNN”:
右键菜单
重命名后双击该算子,进入子流程:
神经网络算子子流程
可以看到子流程中空无一物,需要您自己搭建子流程。
4. 搭建模型
从左侧将多个 “2D卷积层” 算子与 “最大池化层2D” 算子拖动至右侧并按照下图连接:
子流程算子连接1
子流程中算子的连接也可以参考下方视频进行操作:
,时长01:13
子流程算子连接
参数设置如下:“2D卷积层” 算子
所有的 “2D卷积层” 算子与 “最大池化层2D” 算子都沿用以上参数设置。
至此,我们已经在神经网络算子中设立了三层。最开始的 “2D卷积层” 算子与 “最大池化层2D” 算子作为第一层;第二个 “2D卷积层” 算子作为第二层;最后的 “2D卷积层” 算子与 “最大池化层2D” 算子作为第三层。
神经网络前三层
接下来,将“压平”算子拖动至右侧,将“最大池化层2D”算子的输出连接至“压平”算子的输入。“压平”算子可以将多维的输出一维化:
“压平”算子连接
然后,从左侧将多个 “Dense层” 算子(全连接层算子)与 “Dropout层” 算子拖动至右侧并按照下图连接:
子流程算子连接2
参数设置如下:“Dense层” 算子
所有的 “Dense层” 算子与 “Dropout层” 算子都沿用以上参数设置。
以上算子的参数也可以参考下方视频进行操作:
,时长00:25
子流程算子参数配置
至此,我们已经在神经网络算子中设立了五层。最开始的 “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实际操作,可以登录网址https://cloud.transwarp.cn/home 进行查看。
进入首页-下拉至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可以辅助人工录入,规避如设备型号、序列码是较长的数字、字母序列,人工录入出错的风险,辅助完成资产信息化,高效管理企业资产。
资产入库
【产品实操】三分钟教你快速搭建字符识别CNN模型相关推荐
- sketch android 切图,三分钟教你快速设置Sketch切图方案
Sketch想必小伙伴们都已经用的挺熟悉的啦,在你的工作中,应该常常碰到各样切图尺寸大小的问题.陈踢缺er曾在设计App项目中也遇到过各种这样的问题,下面我来结合实际操作来分享给大家使用sketch如 ...
- 【产品实操】手把手教你安装 TDH8.1.0
Transwarp Data Hub是星环科技自主研发的企业级一站式多模型数据管理平台,自诞生以来,TDH采用业内领先的计算引擎与创新的系统架构,持续为企业用户智能化管理以及开发数据赋能,帮助数千家企 ...
- java给英雄加血,能给小兵加血的英雄你知道吗?三分钟教你快速入门!
王者荣耀当中有很多英雄,每个英雄都有些自己独特的技能和特点.有的英雄天生自带复活甲,有的英雄天生自带暴击率,有的英雄天生可以给队友加血,今天我们来讲一个更奇葩的英雄,居然开局可以给小兵加血!今天我们就 ...
- 三分钟教你快速选择机器视觉传感器
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|新机器视觉 六招教您合理选择机器视觉传感器 传感器是一种 ...
- 梦幻西游三维获取服务器信息,梦幻西游三维版:潜能果上线后经验紧缺?五分钟教你快速获得经验...
原标题:梦幻西游三维版:潜能果上线后经验紧缺?五分钟教你快速获得经验 目前<梦幻西游三维版>服务器等级最高在89级,其实从80级到89级需要不少的时间,再加上新上线了"潜能果&q ...
- php三极管驱动蜂鸣器计算,三分钟教你如何用三极管驱动蜂鸣器
原标题:三分钟教你如何用三极管驱动蜂鸣器 背景知识 NPN型三极管,由三块半导体构成,其中两块N型和一块P型半导体组成,P型半导体在中间,两块N型半导体在两侧.三极管是电子电路中最重要的器件,它最主要 ...
- mongodb 输出数组字段_三分钟 mongodb 开发快速上手
三分钟 mongodb 开发快速上手 小熊昨天晚上做了一个非常真实的噩梦,有读者朋友催我"怎么又没有发文!让我们等的好辛苦",今天一睁开眼眼看后台留言,特么,居然是真的! 我bil ...
- 带您探究云存储的奥秘,三分钟帮您快速了解OSS
摘要: 快来,带您探究云存储的奥秘,三分钟帮您快速了解OSS. 阿里云对象存储服务,简称 OSS,是一种面向海量数据规模的分布式存储服务,具有稳定.可靠.安全.低成本的特点,能够提供十一个九的数据可靠 ...
- 元件怎么反转_电气图纸怎么看?三分钟教你学会看懂,受用一生
图纸一般用于设计方面,设计师绘制出图纸,我们再根据图纸进行操作,尤其是电气图纸,上面有很多符号,很难看懂,下面通过三分钟教你学会看懂电气图纸. 一.什么是电气图 用电气图形符号.带注释的围框或简化外形 ...
最新文章
- centos6 安装 redis
- C语言并发执行的进程怎么写,多进程并发写文件 多进程并发售票 用c语言写
- 从0开始配置Flutter并运行demo
- jQuery Dom 操作,动态生成dom,绑定事件
- Android—Bitmap图片大小计算、压缩与三级缓存
- java怎么引入html文件路径_如何在public_html中读取文件但在域外?使用相对路径...
- 数据结构实习-迷宫(基于Qt实现)
- Orchard源码分析(5.3):EndRequest事件处理(DefaultOrchardHost.EndRequest方法)
- inDesign教程,如何创建、修改和使用母版页?
- 卡第那思让法铁的螺丝紧固件的数量一年内减少了15%
- 聋校计算机教学案例,聋校汉语拼音b、p的教学案例
- 用计算机做电子贺卡送祝福,泰山版信息技术五年级上册第2课《电子贺卡送祝福》教案.doc...
- 优秀logo,最基础的设计技巧(二)
- 常吃这9种食物 牙齿坏得快
- 如何协助企业IT架构转型
- 牛客网数据库8:获取员工其当前的薪水比其manager当前薪水还高的相关信息
- 群晖wordpress如何连接mysql,「全网首发」群晖wordpress二级目录下实现IP加端口访问教程...
- ARM汇编寄存器和常用指令详解
- java模拟post发送文件
- 平衡面板数据中的缺失值可以存在吗?