MATLAB CNN-SVM分类程序,含详细注释及数据,直接根据注释修改自己的文件就可。
以改进VGG网络为例,提取某一网络的某一层特征并用SVM完成分类。
以手写字体识别为例),识别率可达100%。
为什么要用CNN提取特征?
1.由于卷积和池化计算的性质,使得图像中的平移部分对于最后的特征向量是没有影响的。从这一角度说,提取到的特征更不容易过拟合。而且由于平移不变性,所以平移字符进行变造是无意义的,省去了再对样本进行变造的过程。
2.CNN抽取出的特征要比简单的投影、方向,重心都要更科学。不会让特征提取成为最后提高准确率的瓶颈、天花板
3.可以利用不同的卷积、池化和最后输出的特征向量的大小控制整体模型的拟合能力。在过拟合时可以降低特征向量的维数,在欠拟合时可以提高卷积层的输出维数。相比于其他特征提取方法更加灵活
流程:整理训练网络的数据,对样本进行处理 -> 建立卷积神经网络-> 将数据代入进行训练 -> 保存训练好的模型(从全连接层提取特征) -> 把数据代入模型获得特征向量 -> 用特征向量代替原本的输入送入SVM训练 -> 测试时同样将h_fc1转换为特征向量之后用SVM预测
- 1
- 2
前往页