一、问题描述
当我们在处理图像辨认或者图像分类或者其他机械进修义务的时刻,我们老是迷茫于做出哪些改进可以或许晋升模型的机能(辨认率、分类精确率)。。。或者说我们在漫长而忧?的调参过程中到底调的是哪些参数。。。所以,我花了一部分时光在公开数据集CIFAR-10 [1] 长进行摸索,来总结出一套办法可以或许快速高效并且有目标性地进行收集练习和参数调剂。
CIFAR-10数据集有60000张图片,每张图片均为分辨率为32*32的彩色图片(分为RGB3个信道)。CIFAR-10的分类义务是将每张图片分成青蛙、卡车、飞机等10个类别中的一个类别。本文重要应用基于卷积神经收集的办法(CNN)来设计模型,完成分类义务。
起首,为了可以或许在练习收集的同时可以或许检测收集的机能,我对数据集进行了练习集/验证集/测试集的划分。练习集重要用户进行模型练习,验证集重要进行参数调剂,测试集重要进行模型机能的评估。是以,我将60000个样本的数据集分成了,45000个样本作为练习集,5000个样本作为验证集,10000个样本作为测试集。接下来,我们一步步来分析,如不雅进行模型设计和改进。
二、搭建最简单版本的CNN
对于任何的机械进修问题,我们一上来肯定是采取最简单的模型,一方面可以或许快速地run一个模型,以懂得这个义务的难度,另一方面可以或许有一个baseline版本的模型,利于进行比较实验。所以,我按照以往经验和网友的推荐,设计了以下的模型。
模型的输入数据是收集的输入是一个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。
该收集是一个有三层卷积层的神经收集,可以或许快速地完成图像地特点提取。全连接层用于将图像特点整合成分类特点,分类层用于分类。cross entropy也是最常用的目标函数之一,分类义务应用cross entropy作为目标函数异常合适。Adam梯度降低法也是如今异常风行的梯度降低法的改进办法之一,进修率过大年夜会导致模型难以找到较优解,设置过小则会降低模型练习效力,是以选择适中的0.001。如许,我们最基本版本的CNN模型就已经搭建好了,接下来进行练习和测试以不雅察结不雅。
练习5000轮,不雅察到loss变更曲线、练习集精确率变更曲线和验证集精确率变更曲线如下图。测试集精确率为69.36%。
结不雅分析:起首我们不雅察练习loss(目标函数值)变更,刚开端loss大年夜200赓续减小到接近0,然则在100轮阁下开端出现震动,并且跟着练习幅度越来越大年夜,解释模型不稳定。然后不雅察练习及谕验证集的精确率,发明练习集精确率接近于1,验证集精确率稳定在70%阁下,解释模型的泛化才能不强并且出现了过拟合情况。最后评估测试集,发明精确率为69.36%,也没有达到很知足的程度,解释我们对模型须要进行很大年夜的改进,接下来进行漫长的调参之旅吧!
三、数据加强有很大年夜的感化
应用数据加强技巧(data augmentation),主如果在练习数据上增长渺小的扰动或者变更,一方面可以增长练习数据,大年夜而晋升模型的泛化才能,另一方面可以增长噪声数据,大年夜而加强模型的鲁棒性。重要的数据加强办法有:翻改变换 flip、随机修剪(random crop)、色彩颤抖(color jittering)、平移变换(shift)、标准变换(scale)、比较度变换(contrast)、噪声扰动(noise)、扭改变换/反射变换 (rotation/reflection)等,可以参考Keras的官方文档 [2] 。获取一个batch的练习数据,进行数据加强步调之后赠予入收集进行练习。
我重要做的数据加强操作有如下方面:
- 图像切割:生成比图像尺寸小一些的矩形框,对图像进行随机的切割,最终以矩形框内的图像作为练习数据。
- 图像翻转:对图像进行阁下翻转。
- 图像白化:对图像进行白化操作,即将图像本身归一化成Gaussian(0,1)分布。
为了进行比较实验,不雅测不合数据加强办法的机能,实验1只进行图像切割,实验2只进行图像翻转,实验3只进行图像白化,实验4同时进行这三种数据加强办法,同样练习5000轮,不雅察到loss变更曲线、练习集精确率变更曲线和验证集精确率变更曲线对比如下图。
结不雅分析:我们不雅察练习曲线和验证曲线,很明显地发明图像白化的效不雅好,其次是图像切割,再次是图像翻转,而如不雅同时应用这三种数据加强技巧,不仅能使练习过程的loss更稳定,并且能使验证集的精确率晋升至82%阁下,晋升效不雅十分明显。而对于测试集,精确率也晋升至80.42%。解释图像加强确切经由过程增长练习集数据量达到了晋升模型泛化才能以及鲁棒性的效不雅,大年夜精确率上看也带来了将近10%阁下的晋升,是以,数据加强确切有很大年夜的感化。然则对于80%阁下的辨认精确率我们照样不敷知足,接下来持续调参。
推荐阅读
刘强东:我的大年夜学生活整体来说照样很充分的。读书的四年,我应用课余时光打工,也实现了上大年夜学之前给本身定的“不问家里要钱”的目标。大年夜学除了常识体系搭建和价值不雅的培养,我在经商膳绫擎>>>详细阅读
本文标题:如何一步一步提高图像分类准确率?
地址:http://www.17bianji.com/lsqh/37650.html
1/2 1