博客
关于我
【卡号识别】基于matlab CNN银行卡数字识别【含Matlab源码 004期】
阅读量:713 次
发布时间:2019-03-21

本文共 2950 字,大约阅读时间需要 9 分钟。

#CNN 基本原理与应用


一、CNN 简介

卷积神经网络(CNN,Convolutional Neural Network)是一种深度学习模型,广泛应用于图像处理和自然语言处理等领域。其核心设计理念是通过局部感知和参数共享机制,提取图像中的空间特征,从而减少了训练时间和模型复杂度。

1.1 CNN 的应用领域

CNN在以下几个方面有显著应用:

  • 图像处理:图像识别、物体检测、图像生成等。
  • 视频处理:视频分类、内容摘要等。
  • 自然语言处理(NLP):对话生成、机器翻译等。
  • 其他领域:机器人控制、 Recommender 系统等。

1.2 CNN 的网络结构

CNN的网络结构主要包括输入层、卷积层、激活层、池化层、全连接层以及可能存在的批量归一化层(Batch Normalization Layer)。

与传统神经网络的异同点

  • 网络功能
    • CNN强调局部感知和参数共享,传统NN则是全连接结构。
  • 激活函数
    • CNN通常使用ReLU激活函数,传统NN常用Sigmoid或Tanh。
  • 池化作用
    • CNN通过池化层降低维度,提取图像的高频信息。
  • 应用场景
    • CNN在图像分类、物体识别等任务中表现优异。
  • 1.3 CNN 的主要层次

  • 输入层
    • 接收外部输入数据,通常需要进行预处理(如均值化、归一化等)。
  • 卷积层(CONV Layer):
    • 通过固定大小的卷积核(filter),一种局部感知机制,实现图像的局部特征提取。
    • 核心属性:参数共享、滑动窗口、重叠处理。
  • 激活层(ReLU Layer)
    • 对卷积输出进行非线性映射,激活ReLU函数。
  • 池化层(Pooling Layer)
    • 减小特征图的空间尺寸,压缩数据量通常采用Max Pooling或Average Pooling。
  • 全连接层(FC Layer)
    • 作为CNN的输出阶段,整合前面提取的局部特征,完成分类或其他任务。
  • 二、数据预处理

    对于CNN的训练效果,数据预处理起着至关重要的作用。

  • 预处理方法

    • 均值化:将数据集中心化到零区间。
    • 归一化:在均值化基础上除以数据的方差。
    • PCA降维:提取低维表示。
    • 白化:在PCA基础上对特征进行归一化。
  • 实现代码示例

  • x = x - np.mean(x, 0);  % 去均值cov = np.dot(x.T, x) / x.shape[0];  % 计算协方差u, s, v = np.linalg.svd(cov);  % SVD 分解xrot = np.dot(x, u);  % 转置后的矩阵分解x = np.dot(x, u[:, :2]);  %PCA 降维x = xrot / np.sqrt(s + 1e-5);  % 白化

    三、CNN 的优缺点

    3.1 优势

  • 高效特征提取
    • 局部感知机制和参数共享大幅减少了计算复杂度。
  • 深度表达能力
    • CNN能够捕捉图像的深层次特征,模型表达能力强。
  • 自动特征学习
    • 无需手动选择特征,通过卷积核自动提取。
  • 3.2 缺点

  • 训练难度
    • 需要大量数据和长时间计算,通常采用GPU加速。
  • 缺乏解释性
    • 每一层的输出难以解释其物理意义。

  • 四、实际应用代码

    以下为一个简单的CNN模型识别应用实例代码(基于MATLAB):

    % 定位银行卡号clc; clear; close all; addpath('util/'); addpath('data/'); inputpath='data/'; fdir=dir(strcat(inputpath,'*.jpg'));p = size(fdir);method=2; % 定位方法levelth=0.3; % 水平分割缩放阈值for i=2:p    im=imread(fdir(i).name); % 读取图片    imtp=imresize(im,0.25); % 缩放图片    % 灰度化    if (length(size(im))>1)        im=double(rgb2gray(im));    else        im=double(im);    end    im=imresize(im,0.25); % � 终灰度化并缩放    th=graythresh(im); % 灰度阈值    pt=size(im);        % 提取上下位面    if (method==1)        im=GuassSmoothfilter(im)*255; % 平滑        [Labels,BW]=KmeansSg(im,2); % K均值聚类        [pMax,pMin]=Findline(BW); % Hough 变换        downlevel=pMax.y-(pMax.y-pMin.y)*0.30; % 定位方法        uplevel=pMin.y+(pMax.y-pMin.y)*0.55;    else        [pMax,pMin,pxMax,pxMin]=levelSg(im,levelth); % 水平集分割        downlevel=pMax-(pMax-pMin)*0.29;        uplevel=pMin+(pMax-pMin)*0.55;    end        imcrop=im(uplevel:downlevel,:); % 裁剪定位区域    po=size(imcrop);    imtpcrop=zeros(po(1),po(2),3);    imtpcrop(1:po(1),:1)=imtp(uplevel:downlevel,:); % 红通道    imtpcrop(1:po(1),:2)=imtp(uplevel:downlevel,:); % 绿通道    imtpcrop(1:po(1),:3)=imtp(uplevel:downlevel,:); % 蓝通道    figure; imshow(imcrop,[]); title('灰度切割');    figure; imshow(imtpcrop,[]); title('彩色切割');    srcyuv=rgb2yuv(imtpcrop); % 转换为YUV通道    figure; imshow(srcyuv(:,:,2),[]); title('YUV-Y通道');    edg=edge(srcyuv(:,:,3),'sobel'); % Canny 边缘检测    figure; imshow(edg,[]); title('边缘检测');    B=im2bw(uint8(imcrop),0.2); % 二值化    figure; imshow(B,[]); title('二值图');    % 提取联通区域    [L,num]=bwlabel(~B,4);    imwrite(uint8((~B)*255),'x.jpg');    recognize; % 卡号识别end

    五、备注

    • 版本:2014a
    • 完整代码代写:联系QQ 912100926

    转载地址:http://kejrz.baihongyu.com/

    你可能感兴趣的文章
    MyEcplise中SpringBoot怎样定制启动banner?
    查看>>
    MyPython
    查看>>
    MTD技术介绍
    查看>>
    MySQL
    查看>>
    MySQL
    查看>>
    mysql
    查看>>
    MTK Android 如何获取系统权限
    查看>>
    MySQL - 4种基本索引、聚簇索引和非聚索引、索引失效情况、SQL 优化
    查看>>
    MySQL - ERROR 1406
    查看>>
    mysql - 视图
    查看>>
    MySQL - 解读MySQL事务与锁机制
    查看>>
    MTTR、MTBF、MTTF的大白话理解
    查看>>
    mt_rand
    查看>>
    mysql -存储过程
    查看>>
    mysql /*! 50100 ... */ 条件编译
    查看>>
    mudbox卸载/完美解决安装失败/如何彻底卸载清除干净mudbox各种残留注册表和文件的方法...
    查看>>
    mysql 1264_关于mysql 出现 1264 Out of range value for column 错误的解决办法
    查看>>
    mysql 1593_Linux高可用(HA)之MySQL主从复制中出现1593错误码的低级错误
    查看>>
    mysql 5.6 修改端口_mysql5.6.24怎么修改端口号
    查看>>
    MySQL 8.0 恢复孤立文件每表ibd文件
    查看>>