基于ResNet18深度学习网络的mnist手写数字数据库识别matlab仿真

简介: 基于ResNet18深度学习网络的mnist手写数字数据库识别matlab仿真
+关注继续查看

1.算法仿真效果
matlab2022a仿真结果如下:

1.png
2.png
3.png

2.算法涉及理论知识概要
ResNet系列网络,图像分类领域的知名算法,经久不衰,历久弥新,直到今天依旧具有广泛的研究意义和应用场景。被业界各种改进,经常用于图像识别任务。ResNet-18,数字代表的是网络的深度,也就是说ResNet18 网络就是18层的吗?实则不然,其实这里的18指定的是带有权重的 18层,包括卷积层和全连接层,不包括池化层和BN层。图像分类(Image Classification)是计算机视觉中的一个基础任务,将图像的语义将不同图像划分到不同类别。很多任务也可以转换为图像分类任务。比如人脸检测就是判断一个区域内是否有人脸,可以看作一个二分类的图像分类任务。

    ResNet18的基本含义是,网络的基本架构是ResNet,网络的深度是18层。但是这里的网络深度指的是网络的权重层,也就是包括池化,激活,线性层。而不包括批量化归一层,池化层。下图就是一个ResNet18的基本网络架构,其中并未加入批量化归一和池化层。

(1)7*7卷积层
首先根据论文中所说的首先经过一个卷积层。这个卷积层的卷积核的大小为77,步长为2,padding为3,输出通道为64。

(2)池化层
这里通过一个最大池化层,这一层的卷积核的大小是33,步长为2,padding为1。最后输出数据的大小为6456*56.也就是说这个池化不改变数据的通道数量,而会减半数据的大小。

(3)第一个3*3卷积层
第一个卷积33卷积层,卷积核的大小为33,步长为1,padding为1。最后通过两个第一个卷积层的输出数据大小为645454,也就是这一层不改变数据的大小和通道数。

(4)第二个33卷积层
首先通过一个11的卷积层,并经过一个下采样。这样最后的输出数据为12828
28。也就是将输出通道翻倍,输出数据大小全部减半。

(5)第三个33卷积层
同样进行11卷积,和下采样。这样最后的输出为25614
14。也就是将输出通道翻倍,输出数据大小全部减半。

(6)第四个3*3卷积层
是将输出通道翻倍,输出数据大小全部减半。

(7)平均池化层
最后输出为51211

(8)线性层

3.MATLAB核心程序
```tempLayers = [
additionLayer(2,"Name","res5b")
reluLayer("Name","res5b_relu")
globalAveragePooling2dLayer("Name","pool5")
fullyConnectedLayer(10,"Name","fc10")
softmaxLayer("Name","prob")
classificationLayer("Name","ClassificationLayer_predictions")];
LG = addLayers(LG,tempLayers);

% clean up helper variable
clear tempLayers;

LG = connectLayers(LG,"pool1","res2a_branch2a");
LG = connectLayers(LG,"pool1","res2a/in2");
LG = connectLayers(LG,"bn2a_branch2b","res2a/in1");
LG = connectLayers(LG,"res2a_relu","res2b_branch2a");
LG = connectLayers(LG,"res2a_relu","res2b/in2");
LG = connectLayers(LG,"bn2b_branch2b","res2b/in1");
LG = connectLayers(LG,"res2b_relu","res3a_branch2a");
LG = connectLayers(LG,"res2b_relu","res3a_branch1");
LG = connectLayers(LG,"bn3a_branch1","res3a/in2");
LG = connectLayers(LG,"bn3a_branch2b","res3a/in1");
LG = connectLayers(LG,"res3a_relu","res3b_branch2a");
LG = connectLayers(LG,"res3a_relu","res3b/in2");
LG = connectLayers(LG,"bn3b_branch2b","res3b/in1");
LG = connectLayers(LG,"res3b_relu","res4a_branch2a");
LG = connectLayers(LG,"res3b_relu","res4a_branch1");
LG = connectLayers(LG,"bn4a_branch1","res4a/in2");
LG = connectLayers(LG,"bn4a_branch2b","res4a/in1");
LG = connectLayers(LG,"res4a_relu","res4b_branch2a");
LG = connectLayers(LG,"res4a_relu","res4b/in2");
LG = connectLayers(LG,"bn4b_branch2b","res4b/in1");
LG = connectLayers(LG,"res4b_relu","res5a_branch2a");
LG = connectLayers(LG,"res4b_relu","res5a_branch1");
LG = connectLayers(LG,"bn5a_branch1","res5a/in2");
LG = connectLayers(LG,"bn5a_branch2b","res5a/in1");
LG = connectLayers(LG,"res5a_relu","res5b_branch2a");
LG = connectLayers(LG,"res5a_relu","res5b/in2");
LG = connectLayers(LG,"bn5b_branch2b","res5b/in1");

net = trainNetwork(XTrain, YTrainCat, LG, options);

save Res18.mat net
```

相关文章
|
2天前
|
机器学习/深度学习 监控 算法
基于Vgg16和Vgg19深度学习网络的步态识别系统matlab仿真
基于Vgg16和Vgg19深度学习网络的步态识别系统matlab仿真
|
4天前
|
机器学习/深度学习 监控 算法
基于Yolov2深度学习网络的车辆检测算法matlab仿真
基于Yolov2深度学习网络的车辆检测算法matlab仿真
|
6天前
|
机器学习/深度学习 自然语言处理
深度学习LSTM网络:自然语言处理实践
深度学习LSTM网络:自然语言处理实践
20 0
|
7天前
|
机器学习/深度学习 人工智能 算法
基于FasterRCNN深度学习网络的车辆检测算法matlab仿真
基于FasterRCNN深度学习网络的车辆检测算法matlab仿真
|
10天前
|
机器学习/深度学习 算法
基于DNN深度学习网络的OFDM+QPSK信号检测算法matlab仿真
基于DNN深度学习网络的OFDM+QPSK信号检测算法matlab仿真
|
14天前
|
机器学习/深度学习 算法 计算机视觉
m基于深度学习网络的动物识别系统matlab仿真,带GUI界面
m基于深度学习网络的动物识别系统matlab仿真,带GUI界面
21 0
|
17天前
|
机器学习/深度学习 算法 计算机视觉
基于Mask-RCNN深度学习网络的人员检测算法matlab仿真
基于Mask-RCNN深度学习网络的人员检测算法matlab仿真
|
17天前
|
机器学习/深度学习 算法 数据可视化
基于RCNN深度学习网络的交通标志检测算法matlab仿真
基于RCNN深度学习网络的交通标志检测算法matlab仿真
|
19天前
|
机器学习/深度学习 存储 算法
基于Fast-RCNN深度学习网络的交通标志检测算法matlab仿真
基于Fast-RCNN深度学习网络的交通标志检测算法matlab仿真
|
1月前
|
机器学习/深度学习 数据采集 算法
基于Alexnet深度学习网络的ECG信号是否异常识别算法matlab仿真
基于Alexnet深度学习网络的ECG信号是否异常识别算法matlab仿真
相关产品
机器翻译
推荐文章
更多