如何提高图像分类准确率?
一、问题描述
本文使用的数据集是CIFAR-10数据集,该数据集有50000张图片,每张图片均为分辨率为32*32的彩色图片(分为3个信道)。分类任务需要分成青蛙、卡车、飞机等10个类别。本文设计一种卷积神经网络用于处理图像分类任务,接下来介绍基于卷积神经网络的分类模型,并且重点说明如果通过不同的技术一步步地提高分类准确率。
为了训练该网络,首先将数据分为训练集、验证集和测试集3个数据集,训练集样本个数为45000,验证集样本个数为5000,测试集样本个数为10000。CIFAR-10图像分类示例图像如图1。
图1、CIFAR-10数据集示例图像
二、分类模型
模型1——基本卷积网络
模型的输入数据是网络的输入是一个4维tensor,尺寸为(128, 32, 32, 3),分别表示一批图片的个数128、图片的宽的像素点个数32、高的像素点个数32和信道个数3。首先使用多个卷积神经网络层进行图像的特征提取,卷积神经网络层的计算过程如下步骤:
卷积层1:卷积核大小3*3,卷积核移动步长1,卷积核个数64,池化大小2*2,池化步长2,池化类型为最大池化,激活函数ReLU。
卷积层2:卷积核大小3*3,卷积核移动步长1,卷积核个数128,池化大小2*2,池化步长2,池化类型为最大池化,激活函数ReLU。
卷积层3:卷积核大小3*3,卷积核移动步长1,卷积核个数256,池化大小2*2,池化步长2,池化类型为最大池化,激活函数ReLU。
全连接层:隐藏层单元数1024,激活函数ReLU。
分类层:隐藏层单元数10,激活函数softmax。
参数初始化:所有权重向量使用random_normal(0.0, 0.001),所有偏置向量使用constant(0.0),
使用cross entropy作为目标函数,使用Adam梯度下降法进行参数更新,学习率设为固定值0.001。
训练5000轮,观察到loss变化曲线、训练集准确率变化曲线和验证集准确率变化曲线如图2。测试集准确率为69.36%。
图2、模型1的loss