【学习笔记】零基础入门CV之街道字符识别-搭建字符识别模型

本文介绍了如何从零开始使用卷积神经网络(CNN)搭建字符识别模型,涵盖了CNN的基础原理、层级结构,并详细讲解了字符识别模型的构建过程。
摘要由CSDN通过智能技术生成

我们已经了解了赛题的背景并学习了如何读取数据,如何进行数据扩增,接下来,我们基于卷积神经网络(CNN)搭建字符识别模型。

1.学习目标

(1)学习CNN的基础和原理
(2)使用pytorch搭建字符识别模型

2.CNN简介

卷积神经网络(简称CNN)是一类特殊的人工神经网络,是深度学习中重要的一个分支。CNN在很多领域都表现优异,精度和速度比传统计算学习算法高很多。特别是在计算机视觉领域,CNN是解决图像分类、图像检索、物体检测和语义分割的主流模型。

2.1引子

先来看看卷积神经网络的神奇之处,我们先来看一个边界检测是例子[1]。以下是一张8x8的图片,数字代表该位置的像素值,像素值越大,颜色越亮。图的中间两个颜色的分界线就是我们要检测的边界。
在这里插入图片描述

图1 边界检测原图

我们设计这样的一个滤波器(filter,也称为kernel),大小3×3:
在这里插入图片描述

图2 kernel

然后,用这个kernel,以步长1逐次往图上覆盖,每次覆盖一块跟kernel一样大的区域之后,对应元素相乘后求和,直到把原图片的每一个角落都覆盖到了为止,这个过程就是 “卷积”。
这个过程结束后,我们得到一个6x6的矩阵:

在这里插入图片描述

图3 边界检测结果

在新的图片中,中间颜色浅,两边颜色深,这说明原图片中间的边界被检测出来了!
CNN就是通过一个个的kernel,不断地提取特征,从局部的特征到总体的特征,从而实现图像特征识别等功能。

2.2CNN的层级结构

CNN的层级结构一般包括[2]
(1)数据输入层:该层要做的处理主要是对原始图像数据进行预处理,包括去均值、归一化、PCA降维、白化等。
(2)卷积层:主要用于提取图像特征。
在这里插入图片描述

图4 卷积示意图

(3)激励层:把卷积层输出结果做非线性映射。
在这里插入图片描述

图5 ReLU激励函数

(4)池化层(pooling):为了压缩图像,进行特征降维。常用的池化方法有Max pooling 和 average pooling。
在这里插入图片描述

图6 Max Pooling

(5)全连接层。

3.字符识别模型搭建

接下来,我们基于CNN搭建简单的字符识别模型,这个模型包括两个卷积层,两个ReLU激励层,两个Max pooling层,最后并联6个全连接网络层。
模型搭建:

import torch
torch.manual_seed(0)
torch.backends.cudnn.deterministic = False
torch.backends.cudnn.benchmark = True

import torchvision.models as models
import torchvision.transforms as transforms
import torchvision.datasets as datasets
import torch.nn as nn
import torch.nn.functional as F
import torch
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值