基于pyqt和卷积网络CNN的中文汉字识别

直接上效果演示图:

 通过点击按钮可以实现在画板上写汉字识别和加载图片识别两个功能。

视频演示和demo仓库地址在b站视频001期:

到此一游7758258的个人空间-到此一游7758258个人主页-哔哩哔哩视频

所有代码展示:

十分的简洁,主要是01,02,03.py文件

运行01dataset.py可以将data文件下的图片数据集保存成txt格式记录。

运行02train.py可以读取txt记录的图片数据进行训练,训练的模型保存在本地,其中提供了10多种的模型可以任意的切换。包括:efficientnet、Alexnet、DenseNet、DLA、GoogleNet、Mobilenet、ResNet、ResNext、ShuffleNet、Swin_transformer、VGG等。

 训练结束后保存评价指标图在result文件下:

最后运行03pyqt.py可以展示一个可视化的交互界面,通过点击按钮来识别,这里弹出的界面上提供了第一个按钮为在画板上控制鼠标写出汉字识别。

第二个按钮为加载汉字图片进行识别。

 

 先是第一个按钮点击后,左侧为鼠标手写汉字界面,右侧为预测结果和控制按钮。

第二个按钮和第一个按钮界面展示一样,只不过手写变成了加载本地图片来识别。 

 

 科普下卷积神经网络相关知识:

CNN是卷积神经网络(Convolutional Neural Network)的缩写。它是一种前馈神经网络,特别适用于处理具有网格状结构的数据,例如图像、视频和声音等。CNN由多个卷积层、池化层和全连接层组成。

CNN的核心思想是通过卷积操作和池化操作来提取输入数据中的特征。卷积层使用卷积核对输入数据进行滑动窗口操作,以捕捉不同位置的局部特征。通过堆叠多个卷积层,网络可以学习到更加复杂的特征表示。池化层则用于降低数据维度,并保留最显著的特征。全连接层将特征映射到具体的输出类别上。

CNN在计算机视觉领域取得了巨大成功,广泛应用于图像分类、目标检测、人脸识别等任务。其优势在于能够自动学习具有平移不变性的特征,并且对于大规模数据集训练时具有较好的性能。

ALexNet是一种深度卷积神经网络(CNN),由Alex Krizhevsky等人于2012年提出。它是第一个在ImageNet Large-Scale Visual Recognition Challenge(ILSVRC)上取得显著优势的深度学习模型。

ALexNet采用了多层卷积层和全连接层的结构。相比于传统的浅层网络,ALexNet引入了更深的网络结构,包含5个卷积层和3个全连接层。同时,它还使用了非线性激活函数(ReLU)来增强模型的表达能力,并且引入了局部响应归一化(Local Response Normalization)层来提高泛化性能。

ALexNet的设计突破了之前的限制,通过大规模数据集的训练,成功地提升了图像分类任务的准确性。它在2012年的ILSVRC比赛中取得了远超其他模型的成绩,标志着深度学习方法在计算机视觉领域的崛起。

ALexNet的成功对深度学习的发展产生了重要影响,激发了更多研究者对深度神经网络的研究兴趣,并为后续的网络架构设计提供了启示。

GoogleNet,也称为Inception,是由Google团队在2014年提出的深度卷积神经网络(CNN)。它是为了参加ImageNet Large-Scale Visual Recognition Challenge(ILSVRC)而设计的。

GoogleNet采用了一种称为"Inception模块"的特殊结构,它允许网络在不同尺度上进行并行处理,以捕捉不同层次的特征。这种并行处理有助于减少参数量,并且在一定程度上缓解了过拟合问题。

与传统的网络相比,GoogleNet具有更深的结构,但通过合理的设计和使用1x1的卷积核进行降维操作,成功地减少了计算复杂度和参数数量。它在2014年的ILSVRC比赛中取得了显著的成果,并且提出的架构思想影响了后续深度学习模型的发展。

VGG是一种深度卷积神经网络(CNN),由牛津大学的研究团队在2014年提出。它被命名为VGG,以纪念论文作者之一Visual Geometry Group(视觉几何群)。

VGG网络的主要特点是其深度和简单性。相比于之前的模型,VGG采用了更多的卷积层和池化层,达到了16或19个卷积层的深度。同时,VGG中的卷积层都使用了较小的3x3卷积核,并且连续堆叠多次,以增加网络的非线性表达能力。

VGG网络的结构非常规整,逻辑清晰。它由多个卷积块组成,每个卷积块由连续的卷积层和一个池化层构成。最后的全连接层负责将提取到的特征映射到具体的输出类别上。

尽管VGG网络相对较深,但它在各种视觉任务上表现出色。VGG的设计思想启发了后续更深层次的神经网络架构,为深度学习的发展做出了重要贡献。

RESNET是一种深度残差网络(Residual Network),由微软研究院的研究团队在2015年提出。它是为了解决深度神经网络中的退化问题(degradation problem)而设计的。

在传统的深度神经网络中,随着网络层数的增加,模型的准确性通常会饱和或下降。这是因为较深层次的网络更难优化,容易出现梯度消失或梯度爆炸等问题。为了解决这个问题,RESNET引入了残差学习的思想。

RESNET通过跳过连接(skip connection)来构建残差块。跳过连接使得信息可以直接在网络中传递,绕过某些层,从而避免了信息丢失和退化。具体而言,每个残差块的输入通过一个恒等映射(identity mapping)与输出相加,然后再进入激活函数进行非线性变换。这种设计使得网络学习到残差的差异,从而更有效地优化模型。

RESNET的结构可以很容易地扩展到更深的层数,甚至达到数百层的深度。利用残差连接的设计,RESNET在ILSVRC比赛等各种视觉任务中取得了非常出色的结果,并且成为深度学习中非常重要的网络架构之一。

MobileNet是一种轻量级的深度卷积神经网络(CNN),由Google的研究团队于2017年提出。它的设计旨在实现在嵌入式设备和移动设备等资源受限的环境下进行高效的图像识别和分类。

MobileNet通过使用深度可分离卷积(depthwise separable convolution)来减少模型的计算量和参数数量。深度可分离卷积将标准卷积操作拆分为两个步骤:深度卷积(depthwise convolution)和逐点卷积(pointwise convolution)。深度卷积对每个输入通道单独执行卷积操作,而逐点卷积用于组合输出通道。这种方式可以大幅减少计算量,同时保持较好的模型准确性。

MobileNet还引入了宽度乘法器(width multiplier)和分辨率乘法器(resolution multiplier)的概念。宽度乘法器用于控制每一层的特征通道数,以进一步减少模型的计算负载。分辨率乘法器则用于调整输入图像的分辨率,从而在模型运行时降低计算需求。

MobileNet在保持相对较小模型大小和低计算成本的同时,仍能保持较高的识别准确率。这使得它在移动设备、嵌入式设备和实时应用等场景中受到广泛应用,例如图像分类、目标检测和人脸识别等任务。

ShuffleNet是一种轻量级的深度神经网络架构,由微软研究院的研究团队于2018年提出。它的设计目标是在计算资源受限的设备上实现高效的图像分类和目标检测。

ShuffleNet通过引入逐通道组卷积(channel shuffling)和分组卷积(group convolution)等操作来减少模型的计算复杂度和参数量。逐通道组卷积将输入特征图的通道重新排列,以增加不同通道之间的交互性。分组卷积将输入特征图分为多个组,并对每个组进行卷积操作,以减少计算量。

ShuffleNet的核心结构是Shuffle Unit,它包含了逐通道组卷积、分组卷积和特征重组(feature shuffle)等操作。Shuffle Unit的设计使得网络在同时保持较低计算负担的前提下,能够学习到更丰富的特征表示。

ShuffleNet具有较小的模型大小和低计算需求,适合在移动设备、嵌入式设备和实时应用等场景中部署。它在保持相对较高的准确率的同时,有效地优化了计算资源的利用。ShuffleNet已经在图像分类、目标检测和人脸识别等领域取得了显著的成果,并为轻量级深度学习模型的发展提供了重要思路。

EfficientNet是一种高效的深度卷积神经网络(CNN)架构,由Google Brain团队在2019年提出。它通过联合优化模型深度、宽度和分辨率来实现更好的性能和计算效率。

EfficientNet的设计思想是基于两个观察结果:首先,较大的模型往往具有更好的性能,但训练和推理成本也更高;其次,网络的深度、宽度和分辨率之间存在着相互依赖的关系。基于这些观察结果,EfficientNet使用了一个称为Compound Scaling的方法,同时增加了模型的深度、宽度和分辨率,以在资源受限的环境下取得更好的性能。

EfficientNet的核心结构是EfficientNet-B0到EfficientNet-B7,它们是由不同层数和通道数的组合构成的。通过使用复合缩放方法,每个EfficientNet模型都可以根据任务和计算资源进行调整,并在准确性和计算效率之间找到一个平衡点。

EfficientNet在许多计算机视觉任务上表现出色,包括图像分类、目标检测和语义分割等。它已经成为当今领先的深度学习模型之一,为在资源受限的设备上实现高效而准确的推理提供了重要的解决方案。

Swin Transformer是一种新兴的视觉感知模型,由香港中文大学的研究团队在2021年提出。它结合了Transformer架构和局部窗口注意力机制,通过分解嵌入式图像处理的长距离依赖性问题。

传统的Transformer模型在处理图像时会面临计算和内存开销的挑战,因为图像具有高分辨率和大量的位置信息。为了解决这个问题,Swin Transformer引入了一个细粒度的分割策略和基于窗口的局部注意力机制。

Swin Transformer首先将输入图像分成小的非重叠路径块(patch),然后在这些路径块上应用Transformer的自注意力机制。接下来,通过使用窗口化的局部注意力机制,模型能够同时处理局部和全局的信息。这种设计不仅降低了计算和内存开销,还有效地捕捉到了图像中不同尺度的特征。

Swin Transformer在多个计算机视觉任务上取得了令人印象深刻的结果,包括图像分类、目标检测和语义分割等。它兼具高效性和表现力,在减少计算复杂度的同时,保持了较好的准确性和泛化性能。Swin Transformer为图像处理领域带来了新的思路和突破,并吸引了广泛的关注和研究。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/36841.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

jni编程(windows+JDK11+clion)

JNI是Java Native Interface的缩写,通过使用 Java本地接口书写程序,可以确保代码在不同的平台上方便移植。 一、java代码 package org.example;public class Main {static {System.load("");}public static void main(String[] args) {Syste…

医学图像处理——读取和解读NII文件

一 预备知识 NII文件的存储格式网上有很多资料,在此只做一点简单的描述。nii是一种文件格式,它存储的是在空间中占有一定体积的小方块的物理位置和该位置对应的像素值。这个小方块我们也称之为体素(voxel)。存储的形式是一个三维数组(3D array)&#xf…

ESP32连接云服务器【WebSocket】

ESP32连接云服务器【ESP32宝塔面板】 文章目录 ESP32连接云服务器【ESP32宝塔面板】👨‍🏫内容1:背景👨‍⚖️内容2:服务器配置👨‍💻内容3:ESP32配置 👨‍🏫…

k8s 就绪探针

【k8s 系列】k8s 学习二十,就绪探针 提起探针,不知兄dei 们是否有印象,之前我们分享过存活探针,分享存活探针是如何确保异常容器自动重启来保持应用程序的正常运行,感兴趣的可以查看文章 k8s 系列k8s 学习十七&#x…

windows下使用arp 协议

/ //自动扫描局域网存活主机 本程序是利用arp协议去获取局域网中的存活主机 arp协议概述 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请…

音视频——码率、帧率越高越清晰?分辨率、像素、dpi的关系

一 前言 本期我介绍一下视频的一些基础概念,如帧率、码率、分辨率、像素、dpi、视频帧、I帧、P帧、gop等。我i初步学习音视频,给这些专业词汇进行扫盲 会解释多少码率是清晰的,是否帧率越高越流畅等问题。 这些概念是比较杂乱的&#xff0c…

CentOS 7镜像下载 以及 DVD ISO 和 Minimal ISO 等各版本的区别介绍

1.官网下载 官网下载地址:官网下载链接 点击进入下载页面,随便选择一个下载即可(不推荐,推荐阿里云下载,见下文) 阿里云下载站点(速度非常快推荐) 阿里云下载链接: http…

二叉树(上)——“数据结构与算法”

各位CSDN的uu们好呀,好久没有更新我的数据结构与算法专栏啦,今天,小雅兰继续来更新二叉树的内容,下面,让我们进入链式二叉树的世界吧!!! 二叉树链式结构的实现 二叉树链式结构的实现…

MySQL进阶SQL语句(二)

MySQL进阶SQL语句(二) 一、MySQL进阶SQL语句1.1 连接查询1.2 CREATE VIEW视图,可以被当作是虚拟表或存储查询1.3 UNION 联集1.4 CASE1.5 空值(NULL) 和 无值() 的区别1.6 正则表达式 二、存储过程2.1 存储过程定义2.2 存储过程的优点2.3 存储…

【数据结构】栈和队列详解

⭐️ 往期相关文章 ✨链接1:数据结构和算法的概念以及时间复杂度空间复杂度详解 ✨链接2:【数据结构】手撕顺序表 ✨链接3:【数据结构】手撕单链表 ✨链接4:【数据结构】双向带头循环链表 ⭐️ 栈和队列 🌠 栈 栈是…

OpenCV对图片进行缩放处理

在下面的代码中,我会为你优化和解释这段程序: #include <opencv2/opencv.hpp>using namespace cv;int main() {// 读取源图片Mat srcImage = imread("../51_resize.jpg"

目标检测学习

目录 1、目标定位 2、特征点检测 3、目标检测 4、滑动窗口的卷积实现 5、Bounding Box 预测&#xff08;Bounding box predictions&#xff09; 6、交并化 7、非极大值抑制 8、Anchor Boxes 9、YOLO算法 1、目标定位 2、特征点检测 如何检测特征点&#xff08;以人的部…

HTML5新特性总结

新增语义化标签 新增了很多语义化标签&#xff0c;如header、footer、nav、article、section(页面中的某段文字&#xff0c;或文章中的某段文字)、aside、main 其中article标签里可以包含多个section&#xff1b; section强调的是分段或分块&#xff0c;若想将一块内容分成几…

【Vscode】解决 An SSH installation couldn‘t be found

【Vscode】解决 An SSH installation couldn‘t be found 背景描述&#xff1a;在vscode中使用ssh进行连接到时候&#xff0c;已经安装了ssh romote的plugin插件&#xff0c;但是在输入了ssh连接命令之后&#xff0c;仍然出现报错&#xff1a;an ssh installation could not be…

OpenCV 入门教程:中值滤波和双边滤波

OpenCV 入门教程&#xff1a;中值滤波和双边滤波 导语一、中值滤波二、双边滤波三、示例应用3.1 图像去噪3.2 图像平滑 总结 导语 在图像处理和计算机视觉领域&#xff0c;中值滤波和双边滤波是两种常见的滤波方法&#xff0c;用于平滑图像、去除噪声等。 OpenCV 提供了中值滤…

sap abap,forms,smartforms 导出pdf

4种方法&#xff1a; 1.安装pdf程序&#xff0c;Foxit Reader,先敲回车 自动带出&#xff0c;如下图&#xff1a; 直接打印就会弹出保存pdf文档路径&#xff0c;点保存。这种方式是最简单的&#xff0c;可 forms 和 smartforms 。 2. forms 和 smartforms 打印到spool 中&…

Maven工程开发中的继承与聚合

1. 聚合工程概念 设置一个空的maven工程&#xff0c;工程里面只有pom文件&#xff0c;另外将这个工程的打包方式设置为pom。 在聚合工程里面添加聚合工程里面管理的模块 2.聚合总结 3.继承 例如下面02工程继承上面的01工程&#xff0c;在02工程的pom文件中要配置要继承的父工…

保护你的JavaScript代码:深入了解JS混淆加密及其特点

当涉及到JavaScript代码的保护和隐藏时&#xff0c;混淆加密是一种常见的技术。它通过对代码进行转换和重组&#xff0c;使其难以理解和逆向工程。以下是JS混淆加密的几个特点以及它们各自的优缺点&#xff1a; 变量和函数名压缩&#xff1a; 特点&#xff1a;将代码中的变量和…

Hystrix熔断器

雪崩 当山坡积雪内部的内聚力抗拒不了它所受到的重力拉引时&#xff0c;积雪便向下滑动&#xff0c;引起⼤量雪体崩塌&#xff0c;人们把这种自然现象称作雪崩 微服务中&#xff0c;一个请求可能需要多个微服务接口才能实现&#xff0c;会形成复杂的调用链路 …

Holoens证书过期

1. 删除Assets\WSATestCertificate.pfx证书文件。 2. 在Player Settings的Publishing Settings下找到Certificate,选择一个有效的证书。 3. 如果没有其他有效证书,需要生成一个新的测试证书: - Windows: MakeCert.exe -r -pe -n "CNTemporary Certificate" -ss MY …