该部分是使用Eigen矩阵库实现卷积神经网络基本功能的实现
为了方便,使用C++ Eigen库实现卷积网络的前向推导
即输入装甲板图案部分的ROI图像,经过该卷积网络推导后,获得装甲板图像分类结果
头文件主要是一些类方法、变量的声明,看看注释大概知道有哪些内容就好。
重点看.cpp文件实现部分的代码
1、首先使用Eigen库实现了卷积网络常见的一些基本操作
比如载入参数、卷积操作、池化操作、激活函数等,这些功能待会会用到
这是为了在初始化类时,载入模型文件内的参数。这些参数待会会用于网络的前向推导计算,是训练出来的(训练代码不在这,用python写的,,,不是这里讨论的重点)
完成载入模型文件参数后,就可以开始传入图像,进行卷积网络分类了。但在图像导入之前,还需要加入输入图像的预处理这一环节,保证输入图像尺寸、通道满足网络设计(这是必须要做的)
传入图像后,由于是opencv的mat类型,所以需要现将彩色图的三通道拆分,分别转换为eigen的矩阵类型存储。
在这里你可以看到这个简单卷积网络的设计如下:
卷积(提取特征)
激活(过滤)
池化(抽象)
卷积(提取特征)
激活(过滤)
池化(抽象)
卷积(提取特征)
激活(过滤)
降维(将输入“压平”,即把多维的输入一维化,常用在从卷积层到全连接层的过渡)(295行)
再对单维度推理(296~300行)
softmax激活,获得推理结果 (301行)
最后输出分类的结果 fc2
http://39.107.251.38:307/wordpress/