卷积神经网络手写体识别

2023-11-03

CNN

1995年, Yann LeCun 与Yoshua Bengio 提出了convolutional neural networks框架, 并用于手写体数字识别。

背景

在BP网络用于图像处理中, 如果要对输入图像分类, 可设计多层网络结构。如果采用全连接结构, 存在参数爆炸问题。 如对10001000的图像进行卷积, 大约需要1000100010001000个参数。利用局部卷积替换全连接结构, 可将参数降低至100010001010≈100M。
在这里插入图片描述
如果进一步采用权值共享的策略, 即同一特征图卷积核、Bias相同, 将卷积参数将至10
10。 为尽可能地保存信息, 可设计多个卷积特征图, 将参数将至10K。
在这里插入图片描述

卷积

函数卷积
函数f(x)与g(x)卷积的定义(一维) 为:
在这里插入图片描述
在这里插入图片描述
图像卷积
在图像处理中, 卷积也被称为滤波, 一般是由卷积核(滤波器) w与在图像中f(x, y)的卷积结果为:在这里插入图片描述
在这里插入图片描述

LeNet网络结构

在这里插入图片描述
输入层为3232图像, 一般限定字符最大范围为2020(居中)
C*: 卷基层
S*: 采样层(Pooling层)
F*: 全连接层

C1

在这里插入图片描述
输入层为3232图像, 卷积核大小为55
C1: 卷积层为6副28*28的特征图。 C1层具有如下特点:

  • 拓扑结构: 输入层相邻节点卷积后仍然相邻
  • 稀疏连接: 每个像素仅与输入层的相邻结点相连
  • 权值共享: 同一副特征图共享相同的卷积核

C1层神经元连接数量为2828(55+1)6=122304, 由于采用了权值共享,
因此待学习参数为(5
5+1)6=156。
如果采用全连接策略, 总参数量可达(32
32+1)
(28*28)*6

S2

在这里插入图片描述
S2: Pooling层将2828的特征图将采样为1414的图像:

  • 采用2*2非重叠采样。
  • S2层每个单元的4个输入相加, 乘以一个可训练参数, 再加上一个可
    训练偏置。
  • 结果通过sigmoid函数计算。

S2层神经元连接数量为1414(2*2+1)6=5880, 待学习参数为62=12。

C3

在这里插入图片描述
C3: 将6副2828的特征图卷积为16副1010的图像, 卷积核为5*5:

  • C3 中每副特征图与S2中的若干副特征图相关。
  • C3层神经元连接数量为151600, 待学习参数为1516。
    在这里插入图片描述

S4

在这里插入图片描述
S4: 将1010的特征图将采样为16副55的图像:

  • 降采样过程与S2层一致
  • S4层神经元连接数量为55(2*2+1)16=2000, 待学习参数为162=32

C5

在这里插入图片描述
C5: 将16副5*5的特征图卷积为长度为120的向量:

  • F6中每个神经元与S4所有神经元相连。
  • C5层神经元连接数量为120*(16*25+1) = 48120, 全部为待学习参数。

F6

在这里插入图片描述
F6: 构建84个神经元, 每个神经元与C5的120个神经元全连接:

  • F6层神经元连接数量为84*(120+1)=10164, 全部为待学习参数。

输出

输出层: 为10个神经元, 每个神经元的激活值表示对应字符的相应强度,
最大值则为对应的识别结果。

数据集

0-9共十个数字每个数字训练集在6000张图片左右。
训练图片中倾斜,扭曲,粗细不一致,甚至旋转,如
倾斜
在这里插入图片描述
扭曲
在这里插入图片描述
粗细不一致
在这里插入图片描述在这里插入图片描述
旋转(数字7)
在这里插入图片描述

代码及运行结果

import tensorflow as tf
import numpy as np
import tkinter as tk
from tkinter import filedialog
from PIL import Image, ImageTk
from tkinter import filedialog
import time


def creat_windows():
    win = tk.Tk() # 创建窗口
    sw = win.winfo_screenwidth()
    sh = win.winfo_screenheight()
    ww, wh = 400, 450
    x, y = (sw-ww)/2, (sh-wh)/2
    win.geometry("%dx%d+%d+%d"%(ww, wh, x, y-40)) # 居中放置窗口

    win.title('手写体识别') # 窗口命名

    bg1_open = Image.open("timg.jpg").resize((300, 300))
    bg1 = ImageTk.PhotoImage(bg1_open)
    canvas = tk.Label(win, image=bg1)
    canvas.pack()


    var = tk.StringVar() # 创建变量文字
    var.set('')
    tk.Label(win, textvariable=var, bg='#C1FFC1', font=('宋体', 21), width=20, height=2).pack()

    tk.Button(win, text='选择图片', width=20, height=2, bg='#FF8C00', command=lambda:main(var, canvas), font=('圆体'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

卷积神经网络手写体识别 的相关文章

  • 4个mos管驱动的全桥电路原理_逆变器工作原理

    逆变器工作原理 输入接口部分 输入部分有3个信号 12V直流输入VIN 工作使能电压ENB及Panel电流控制信号DIM VIN由Adapter提供 ENB电压由主板上的MCU提供 其值为0或3V 当ENB 0时 Inverter不工作 而
  • Node 中的 Buffer 的理解及应用场景

    一 是什么 在Node应用中 需要处理网络协议 操作数据库 处理图片 接收上传文件等 在网络流和文件的操作中 要处理大量二进制数据 而Buffer就是在内存中开辟一片区域 初次初始化为8KB 用来存放二进制数据 在上述操作中都会存在数据流动
  • Linux 操作系统的基本目录

    1 Linux 的基本目录 根目录 usr 系统存放程序的目录 home 普通用户默认存放的目录 bin 系统基础命令目录 boot 包含Linux内核及系统引导所需要的文件 dev 设备文件存储目录 etc 存放系统程序或工具配置文件目录
  • spring集成shiro详解

    最近项目中要用到shiro作为权限管理 以前都是用自定义的或者spring security 所以就开始看了一些网上的文章 但是感觉都写得很零散 而且大多数都只是给了几行代码 我们得项目相对比较复杂 需要进行一些额外得改造和扩展 所以自己也
  • 配置springboot踩到的坑

    1 卸载了eclipse 结果连带卸载了java JDK 因为没有意识到所以第一次编译报错 2 run configure不会写 最后网络上查到在run 里输入 spring boot run 普通的maven 工程 run里写 clean
  • ThinkPHP 2.x/3.0 漏洞复现

    ThinkPHP框架 ThinkPHP是一款从Struts结构移植过来进行改进和完善后的web应用的开源轻量级PHP框架 ThinkPHP可在 Windows和 Linux等操作系统运行 支持 MySql Sqlite和 PostgreSQ
  • 云服务器测速脚本_Linux VPS服务器带宽测速脚本:Speedtest Linux进行网络测速方法...

    新购买VPS服务器后 当然少不了对对VPS的性能做测试了 好让自己知道新购买到的VPS性能是怎么样的 下面就来为大家介绍一个Linux系统VPS带宽测速脚本Speedtest 和Linux VPS进行网络测试的方法 一 环境准备 我们使用的
  • Fibonacci 数列

    题目描述 输入一个正整数n 求 Fibonacci 数列的第n个数 Fibonacci 数列的特点 第1 2个数为1 1 从第3个数开始 概述是前面两个数之和 即 要求输入的正整数n不超过50 输入 一个不超过50的正整数 输出 Fibon
  • IntersectionObserver与无限滚动加载

    学习链接 IntersectionObserver MDN Api IntersectionObserver API详解 Intersection observer 的概念和用法 过去 要检测一个元素是否可见或者两个元素是否相交并不容易 比
  • 长连接、短连接与WebSocket 的区别

    1 长连接与短连接 1 短连接 HTTP1 0中默认使用短连接 也就是说 客户端和服务器每进行一次HTTP操作 就建立一次连接 任务结束就中断连接 HTTP的生命周期通过Request来界定 也就是说一个Request 一个Response
  • 网络请求库requests及数据解析xpath

    requests库 requests库也是一个网络请求库 基于urllib和urllib3封装的便捷使用的网络请求库 安装环境 pip install requests i https mirrors aliyun com pypi sim
  • Odoo字段设置索引-多列联合索引

    需求 在创建模块生成数据库表结构时 一般也要设计字段是否需要添加索引 或者多个字段联合索引 单字段添加索引 设置索引只需要在字段初始化时添加index参数 index bool default False index默认是False 如果需
  • 【ESP-IDF】使用SNTP进行时间同步

    description sntp初始化 return note 参考官方博客 static void esp initialize sntp void ESP LOGI TAG Initializing SNTP sntp setopera
  • 怎样招聘程序员

    在招聘程序员方面 没有所谓的神奇 银弹 但我可以分享一些建议和诀窍 它们经过我的实践证明是有效的 这些方法我多年来一直在用 我把它们总结如下 首先 要求通过几个简单的 Hello World 在线测试 我知道这听起来很疯狂 但有些自称是程序

随机推荐

  • 必会Python技能!教你如何从官网爬取高清皮肤壁纸

    目录标题 前言 开发环境 模块使用 代码基本四个步骤 代码展示 尾语 前言 大家早好 午好 晚好吖 欢迎光临本文章 开发环境 python 3 8 运行代码 pycharm 2022 3 辅助敲代码 模块使用 requests gt 数据请
  • JavaScript知识点DOM 模型详细讲解

    DOM 模型 DOM 全称是 Document Object Model 文档对象模型 大白话 就是把文档中的标签 属性 文本 转换成为对象来管理 Document 对象 Document对象的理解 第一点 Document 它管理了所有的
  • 《产品经理修炼之道》读后感

    费杰的这本 产品经理修炼之道 说实话确实是有点坑爹 话说这是我看过的第二本产品方面的书籍 但是和 人人都是产品经理 的差距真的不是一点 那一本可以说是内容详实 对于入门来说不管是理论还是实例都写得很不错 文字也是相当的多 而费杰的这本其实内
  • tensorflow(神经网络)学习笔记(七)自动机器学习(AutoML)介绍(学习笔记)

    神经网络结构搜索算法之一 网络结构 降低神经网络结构参数 如下图 彩色框框为生成单个神经的参数 使用循环神经网络去生成卷积神经网络 左边RNN可以生成LSTM的序列表达 然后把序列解析成网络表达结构 得到网络结构的表达 然后计算得到accu
  • ChatGPT底层原理及教程

    一 发展历史 1 什么是ChatGPT ChatGPT 美国OpenAI研发的聊天机器人程序 于2022年11月30日发布 ChatGPT是人工智能技术驱动的自然语言处理工具 它能够通过学习和理解人类的语言来进行对话 还能根据聊天的上下文进
  • vmos切换安卓版本_安卓之中还能运行安卓!神奇的安卓虚拟机App

    PC上的虚拟机大家玩得多了 手机上的虚拟机不知道大家玩过没 PC上装了虚拟机后 等于操作系统中多了另一个系统 可以在虚拟机的系统中安装各类软件 和真机互不干扰 而很多安卓玩家不知道的是 其实在安卓平台上 也有虚拟机类的app 这款VMOS
  • 祝您健康:抢救脑溢血患者的神奇秘方:针刺十宣穴,涌泉穴

    中风 脑出血 的抢救方法 中风 脑血管意外 是临床常见的急性病症 特别是对于中老人 更是致死致残的高发病 脑溢血抢救放血急救法是对中风最有效的一种急救方法 如能正确掌握和及时施救 将能很大程度地减少中风对人体的伤害 我想 对于每个血压有点高
  • 关于软件测试

    目录 一 了解软件测试 二 软件测试和软件开发的区别 三 一个优秀的软件测试人员需要具备的素质 一 了解软件测试 其实在早期是没有软件测试这个行业的 刚开始都是程序员自己进行调试 寻找其中的一系列问题 慢慢的人们发现测试在整个项目研发阶段都
  • centos7开启网卡命令_CentOS7 开启网卡,设置开机启用网卡

    默认centos和redhat7都是不启用有线网卡的 要么手动开启 要么安装时直接启用 安装时启用网卡和指定IP最省事 一 临时启用网卡 关机或重启后 网络不会自动开启 1 使用命令 ip addr 查看网卡的IP 1 ip addr 2
  • R语言DMwR报错问题

    使用包DMwR的SOMTE函数报错 Error in factor newCases a levels 1 nlevels data a labels levels data invalid labels length 0 should b
  • python绘制星空(菜鸟级)

    设计知识点 使用turtle绘图库与random库产生一个范围随机数完成绘制 编译环境 anaconda spyder 比较通俗 就不搞注释了 懒得写 废话不多说 直接上代码 绘制星空 import turtle as t random a
  • linux命令--umask

    一 umask介绍 在linux系统中 我们创建一个新的文件或者目录的时候 这些新的文件或目录都会有默认的访问权限 umask命令与文件和目录的默认访问权限有关 若用户创建一个文件 则文件的默认访问权限为 rw rw rw 创建目录的默认权
  • Jquery Ajax解决跨域请求session丢失的问题

    后端代码 ajax请求的跨域允许 resp setHeader Access Control Allow Credentials true 是否支持cookie跨域 resp setHeader Access Control Allow O
  • linux部署java项目

    这本阿里P8撰写的算法笔记 再次推荐给大家 身边不少朋友学完这本书最后加入大厂 Github 疯传 史上最强悍 阿里大佬 LeetCode刷题手册 开放下载了 linux部署java项目步骤 一 部署jdk 1 下载jdk 官网下载比较慢
  • 毕业设计-基于大数据的电影爬取与可视化分析系统-python

    目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生级别难度
  • apache beam_如何使用apache beam pub sub和sql为在线商店建立实时数据管道

    apache beam It is fascinating to see how malleable our data is becoming Nowadays we have tools to convert highly nested
  • 西瓜书_学习任务_更新至9.5号

    任务1 西瓜书3 1 3 2 3 3 章节学习 描述对数几率回归算法的过程 任务2 详细解释逻辑回归模型中每个超参的意义 任务3 西瓜书3 3节的扩展内容 softmax回归和3 6节学习 任务4 理解sklearn包中LogisticRe
  • Apache JMeter 5.5 下载安装以及设置中文教程

    Apache JMeter 5 5 下载安装以及设置中文教程 JMeter 下载Apache JMeter 5 5 配置环境变量 查看配置JDK 配置JMeter环境变量 运行JMeter 配置中文版 一次性 永久设置正文 JMeter 下
  • Qt 读写xxx.ini配置文件

    1 配置文件 ini 请注意 我们所讨论的是项目中的配置文件 它是整个项目共用的 所以它要有一个项目使用的文件名 其后缀是 ini 例如 端口配置 ini ini文件格式 INI文件由节 键 值组成 节 section 参数 键 值 nam
  • 卷积神经网络手写体识别

    CNN 背景 卷积 LeNet网络结构 C1 S2 C3 S4 C5 F6 输出 数据集 代码及运行结果 测试 CNN 1995年 Yann LeCun 与Yoshua Bengio 提出了convolutional neural netw