版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
家用家具分类算法的设计案例目录TOC\o"1-3"\h\u19010家用家具分类算法的设计案例 1178481.1家用家具数据集 1305361.2数据增强 213891.3卷积神经网络的算法设计 216501.3.1卷积神经网络的训练方式 213371.3.2卷积神经网络的架构设计 3140331.3.3卷积神经网络的训练结果 5158571.4卷积神经网络的设计要点 1091621.4.1局部响应归一化LRN 10214381.4.2重叠池化单元 11260721.4.3数据拼接Concat层 11139201.4.4数据压平Flatten层 11108061.4.5单热编码One-Hot 11288221.4.6批标准化BatchNormalization 123151.4.7学习率LearningRate 1319641.4.8丢失Dropout 14246171.4.9交叉熵损失函数 1652391.5卷积神经网络算法的不足之处 161.1家用家具数据集在公开的cifar-100数据集中,有着家用家具householdfurniture超类,超类中包含着床,椅子,沙发,桌子,衣柜5个基本类。下载网址链接有:CIFAR-10andCIFAR-100datasets()。所使用的版本为CIFAR-100pythonversion。该超类中每个基本类含有600张图片,分为500张训练图片和100张测试图片。下载相应的版本包,并用官方所提供的unpickle函数进行解包。通过家用家具超类相应的标签找到床(5->0),椅子(20->1),沙发(25->2),桌子(84->3),衣柜(94->4)5个精细标签,然后生成相应的训练集和测试集的图片。之后在进行数据划分的操作,由于在训练过程中(具体在1.x节提到)会使用验证集,故将500张训练图片,划分成400张图片作为训练集,100张图片作为验证集。此处使用了numpy,cv2,pickle库进行相关实现。可以看出,各个类别的家用家具图片数量都达不到训练所需的数量,无法支撑卷积神经网络的训练。故本文采取了数据增强的方法,以解决家用家具数据集中数据量较少的问题。具体的操作方法在1.2节中进行说明。1.2数据增强数据增强(DataAugmentation)[14],就是用已有的数据来创造新数据的过程。一般来说,当我们数据量不够时,我们不便于去采集大量的新的数据,所以我们想通过使用数据增强来获得更大的数据集。所以,为了得到足够的数据集来训练卷积神经网络,并减少模型的过拟合的情况的出现,本文对现有数据集的家用家具图片进行图像增强处理。数据增强有着几种常见的方式,分别是翻转,旋转,比例缩放,裁剪,移位,加噪,颜色空间变换。翻转,可以对图片进行水平或垂直翻转。旋转,就是让图片旋转设置好的角度,其中可能涉及到填充问题。比例缩放,可以让图片按照一定大小的比例缩小,放大图片。裁剪,与缩放不同,只是从原始图片中随机抽样一个部分,然后把它的大小调整为原始图片的大小。移位,通过把图片沿着X轴或Y轴(或两者)移动。加噪,给图片加入相关的噪音,如高斯噪声,椒盐噪声。颜色空间变换,通过变换图片的色域空间来生成图片。本文采用了翻转和颜色空间变换两种图像增强方法来扩展训练数据集。每个类别进行数据增强后数量为1200张,总共6000张图片进行卷积神经网络进行训练。1.3卷积神经网络的算法设计1.3.1卷积神经网络的训练方式在整个卷积神经网络的训练过程中,本文将学习率(LearningRate)设置为0.0001。整个数据集中的图片分成训练集,验证集和测试集三个部分,其中有6000张训练集图片参与训练,500张验证集图片作进行验证,500张测试集图片进行测试。本文将整个训练过程的训练集的批量大小(batch_size)设为200,就是说每次训练时会读取200张训练集图片参与喂入相关的卷积神经网络。而验证集和测试集的批量大小(val_batch_size)直接设置成500,就是说验证和测试的时候,直接将所用的图片喂入相关的卷积神经网络。同时类个数(num_classes)设置成5,对应着床,椅子,沙发,桌子,衣柜5个类。最后设置验证标志(val_iters)为50,意思是每间隔50次训练就进行一次验证。三个网络的训练次数不定,不同网络有着些不同的参数,后续再进行说明。1.3.2卷积神经网络的架构设计AlexNet模型的架构设计本文设计的AlexNet模型大体参考图2-1,模型的深度即5层卷积层,3层池化层。但由于cifar-100python数据集中的图片像素大小为32×32,RGB的3个通道。与AlexNet模型的图片输入尺寸有所不同。所以打算在不改变AlexNet模型的模型深度的同时,在相关参数上进行改动(后续几个模型不再进行说明)。具体需要进行调整的参数有:进行卷积的核大小及数量、池化方式、神经元的个数、Batch的大小、LRN和BN的选择,以及Dropout率和学习率的调整。然后便开始模型的训练,AlexNet模型训练次数大致在1500轮左右,每间隔50轮便进行1次验证。同时会保存模型的数据,生成的相关信息将会写入到日志文件中,以便后续测试及演示系统搭建时使用和观察。AlexNet的具体架构设计如下表4-1所示:表41AlexNet模型的架构设计输入(大小为32×32的图片)5×5Conv-96(ReLU)MaxPoolLRN5×5Conv-256(ReLU)MaxPool3×3Conv-384(ReLU)3×3Conv-384(ReLU)3×3Conv-256(ReLU)MaxPoolFC-2048(BN+ReLU+Dropout)FC-1024(BN+ReLU+Dropout)FC-num_classessoftmaxDenseNet模型的架构设计本文设计的DenseNet模型大体参考图2-3,主要由DenseBlock和Transition组成。DenseBlock和Transition其内部组成如下表4-2,4-3所示:表42DenseBlock的内部组成BN(BatchNormalization)ReLU1×1Conv-96DropoutBN(BatchNormalization)ReLU3×3Conv-24Dropout表43Transition的内部组成BN(BatchNormalization)ReLU1×1Conv-24Dropout2×2AvgPool上表4-2中未体现出在channel维度上进行concat拼接,详细可见代码或自行搜索相关资料了解。故DenseNet具体的架构设计如下表4-4所示:表44DenseNet模型的架构设计输入(大小为32×32的图片)7×7Conv-48MaxPoolDenseBlockTransitionDenseBlockTransitionDenseBlockTransitionBN(BatchNormalization)ReLUGlobal_AvgPoolFlatten+DensesoftmaxGoogLeNet模型的架构设计本文设计的GoogLeNet模型大体参考图2-4,图2-5。Inception是GoogLeNet中最为核心的部分。故本部分将主要进行介绍GoogLeNet中的核心模块Inceptionv1。其内部组成如下表4-5所示:表45Inception的内部组成输入x对x进行1×1Conv-16操作对x进行3×3Conv-16操作对x进行5×5Conv-16操作对x进行MaxPool操作上述四个操作进行Concat拼接故GoogLeNet的具体的架构设计如下表4-6所示:表46GoogLeNet模型的架构设计输入(大小为32×32的图片)3×3Conv-32(ReLU)MaxPoolInception_aInception_bMaxPoolInception_cInception_dMaxPoolFlattenDensesoftmax1.3.3卷积神经网络的训练结果本文设计的3个卷积神经网络AlexNet,DenseNet,GoogLeNet,在训练之后,训练集的准确率接近100%,并且此时验证集的准确率也已经收敛。最终上述设计的3个卷积神经网络的验证集准确率为70%。图4-1,图4-2,图4-3分别对应着AlexNet模型的训练集准确率,验证集准确率以及Loss曲线。图41AlexNet在训练集上的准确率变化曲线图42AlexNet在验证集上的准确率变化曲线图43AlexNet的Loss曲线图4-4,图4-5,图4-6分别对应着DenseNet模型的训练集准确率,验证集准确率以及Loss曲线。图44DenseNet在训练集上的准确率变化曲线图45DenseNet在验证集上的准确率变化曲线图46AlexNet的Loss曲线图4-7,图4-8,图4-9分别对应着GoogLeNet模型的训练集准确率,验证集准确率以及Loss曲线。图47GoogLeNet在训练集上的准确率变化曲线图48GoogLeNet在验证集上的准确率变化曲线图49GoogLeNet的Loss曲线可以看出,Loss曲线在训练的过程中不断下降并已经收敛。3个卷积神经网络算法在验证集上的准确率为70%。1.4卷积神经网络的设计要点1.4.1局部响应归一化LRN在AlexNet中引入了局部响应归一化层(LocalResponseNormalization),简称LRN[15],是深度学习中提高准确率的技术方法,用于AlexNet中。LRN参考了生物学上神经网络侧抑制的功能,即指被激活的神经元抑制相邻的神经元。归一化的目的就是抑制,LRN就是借鉴这种侧抑制来实现局部抑制的效果,尤其是我们在使用ReLU的时候,这种侧抑制很有效,因而在AlexNet中很有效果。且LRN有助于快速收敛,对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈比较小的神经元,增强了模型的泛化能力。具体公式如公式(4-1)所示: bx,yi其中a代表在featuremap中第i个卷积核(x,y)坐标经过了ReLU激活函数的输出,n表示相邻的几个卷积核。N表示这一层总的卷积核数量。k,n,α和β是hyper-parameters,他们的值是在验证集上实验得到的,其中k=2,n=5,α=0.0001,β=0.75。这种归一化操作实现了某种形式的横向抑制,这也是受真实神经元的某种行为启发的。1.4.2重叠池化单元重叠池化(OverlappingPooling),即相邻池化窗口之间会有重叠的区域。一般来说是在池化窗口大小z大于位移s时发生。是在AlexNet中提出和使用的。相对于传统的no-overlapping-pooling,即正常池化(窗口z=2,步长s=2)。而正常池化在输入图片数据很大的时候,池化后的特征维度会变得非常高。故进一步加深网络的深度是一个解决方法,但是这样多层池化后输出的特征维数必然会下降,但深度学习中并不是网络层数越多模型的性能就会越好。故采用重叠池化(窗口z=3,步长s=2)不仅可以提升精度,可以减少top-1,top-5分别为0.4%,0.3%,同时在一定程度上可以减缓过拟合。1.4.3数据拼接Concat层数据拼接Concat[16]层的主要功能是实现输入数据的拼接。在DenseNet和GoogLeNet中都使用到了这个技术。Concat层将多个输入连接到一个输出(按照给定的axis,注意除了规定的axis以外,被concat的输入的其他维度的size必须一致)。一般的数据有着4个维度,num×channels×height×width。默认值为0就表示在num这个维度上,即数量上进行叠加。为1表示在channels通道上进行拼接。除了拼接维度外的其他维度都必须相等。1.4.4数据压平Flatten层Flatten层用来将输入数据压平,即把多维的输入一维化,常用在从卷积层到全连接层的过渡。Flatten不会影响batch的大小。使用Flatten可以大大的减少参数的使用量,减缓过拟合现象。为了更好的理解Flatten层的作用,可参考下表4-7。表47Flatten层的作用InputLayer(None,3,32,32)Conv2d(None,3,32,64)Flatten(None,6144)1.4.5单热编码One-Hot单热编码[17](独热编码,One-HotEncoding),又称一位有效编码,主要采用N位状态寄存器来对N个状态进行编码,每个状态都由它独立的寄存器位,并在任意的时候只有一位有效。单热编码是因为大部分算法是基于向量空间中的度量来进行计算的,为了使非偏序关系的变量取值不具有偏序性,并且到圆点是等距的。使用one-hot编码,将离散特征的取值扩展到了欧氏空间,离散特征的某个取值就对应欧氏空间的某个点。将离散特征使用one-hot编码,会让特征之间的距离计算更加合理。离散特征进行one-hot编码后,编码后的特征,其实每一维度的特征都可以看作是连续的特征。就可以跟对连续型特征的归一化方法一样,对每一维特征进行归一化。比如归一化到[-1,1]或归一化到均值为0,方差为1。单热编码就是利用0和1表示一些参数,使用N位寄存器来对N个状态进行编码。在1.1中说过床(5->0),椅子(20->1),沙发(25->2),桌子(84->3),衣柜(94->4),上述的箭头便是进行类别划分,用于后续的单热编码处理。比如若归属于床类,则输出应为[1,0,0,0,0],若为椅子则[0,1,0,0,0],后续同理。单热编码解决了分类器不好处理属性数据的问题,在一定程度上也起到了扩充特征的作用。它的值只有0和1,不同的类型存储在垂直的空间。但当类别的数量很多时,特征空间会变得非常大。在这种情况下,一般可以用PCA来减少维度。而且one-hotencoding+PCA这种组合在实际中也非常有用。1.4.6批标准化BatchNormalization批标准化[18]BatchNormalization,也称批归一化,是一种用于通过重新居中和重新缩放来对图层的输入进行规范化,从而使人工神经网络更快、更稳定的方法。BatchNormalization是神经网络中一种特殊的层,如今是各种流行的卷积神经网络的标配了。在原论文中,BN被建议插在ReLU激活函数前。如果batchsize为m,则在前向传播的过程中,网络中每个节点都有m个输出,所谓的BN,就是对该层的每个节点的这m个输出进行归一化再输出,具体计算如下表4-8:表48Flatten层的作用InputValuesofxoveramini-batch:β={Mini-batchmeanμMini-batchvarianceσNormalizexOutput(Scaleandshift)y操作大致可以分为两步:Standardization,Scaleandshift。Standardization,对m个x进行Standardization,得到zeromeanunitvariance分布的x。Scaleandshift,然后再对x进行scaleandshift,缩放并平移得到新的分布y,具有新的均值β方差γ。使用BatchNormalization,有着以下几点好处:可以使用更大的学习率,训练过程更加稳定,极大提高了训练速度;可以将bias设置为0,因为BatchNormalization的Standardization过程会移除直流分量,所以不再需要bias;对权重初始化不再敏感,通常权重采样自0均值某方差的高斯分布,以往对高斯分布的方差十分重要,有了BatchNormalization后,对与同一个输出节点相连的权重进行放缩,其标准差σ也会放缩同样的倍数,相除抵消;对权重的尺度不再敏感,理由同上,尺度统一由参数1.4.7学习率LearningRate在卷积神经网络中,卷积层的权重参数开始时是随机的初值(服从正态分布),最终经过多次训练优化,得到最终值。在卷积神经网络的训练中,这个过程也被称作随机梯度下降。随机梯度下降是通过BP算法来逐渐的更新相应的权重的。学习率[19](LearningRate)作为监督学习以及深度学习中重要的超参数,其决定着目标函数能否收敛到局部最小值以及何时收敛到最小值。学习率即每一步训练中权重改变的大小的比例。具体公式如公式(4-2)所示: θj←当学习率设置过小时,收敛过程如下图4-10:图410学习率过小时的收敛过程当学习率设置过大时,收敛过程如下图4-11:图411学习率过大时的收敛过程从上图4-10,4-11可以看出,学习率过小时收敛过程会变得十分缓慢。而学习率过大时可能会在最小值之间来回振荡,甚至可能无法收敛。故选择合适的学习率能够使目标函数更快地达到Loss的最小值,同时保证收敛的Loss值是神经网络的局部最优解。1.4.8丢失DropoutDropout是指在深度学习网络的训练过程中,对于神经网络单元,按照一定概率将其暂时从网络中丢弃。对于传统的神经网络而言,有着两个缺点,费时,容易过拟合。过拟合是机器学习的通病,过拟合的模型一般都不会进行采用。所以为了解决过拟合的问题,提出了Dropout的方法。Dropout是一种在深度学习环境中应用的正规化手段。在一次循环内先随机选择神经层中一些神经元将其失活,然后再进行该次循环神经网络中的训练和优化过程。在下一次循环时,又失活另外一些神经元,如此到循环结束。Dropout大致如图4-12:图412神经网络Dropout前后Dropout有着取平均的作用。一开始,普通的模型是没有Dropout的,当我们用相同的训练数据喂入5个不同的神经网络,一般来说,这5个模型会得到不同的结果。此时我们可以采用“对5个结果取平均”或“多数胜出”的投票策略,去决定最终结果。例如,3个网络模型判定数字图像的结果为3,那么很有可能真正的结果就是数字3,其他2个网络模型给出了错误的结果。这种“取平均”的策略通常可以有效的防止一些过拟合的问题。因为不同网络可能产生不同情况的过拟合,“取平均”则有可能会让一些“相反的”拟合相互抵消。而Dropout掉不同的隐藏神经元就类似在训练不同的网络,然后随机的删除掉一些隐藏神经元导致网络结构发生变化。整个Dropout的过程就相当于对很多不同的神经网络进行取平均的操作
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年行政强制执行协议分期履行及中止执行情形测验
- 2026年可燃气体探测报警系统题
- 2026年自然博物馆科研项目管理岗位面试
- 2026年社区重阳节敬老爱老线下问答活动题
- 2026年城镇燃气安全事故应急处置题库
- 2026年高血压患者健康管理服务题库
- 2026年园区知识产权保护规范知识题
- 2026年基层干部社会保险法知识竞赛试题
- 平安建设品牌机制方案
- 美团业务中台建设方案
- ISO9001 认证辅导服务协议
- 永辉生鲜采购制度
- 盘锦北方沥青股份有限公司招聘笔试题库2026
- 广西三支一扶2026年真题
- 危重病人血液透析护理
- 音体美新教师培训
- 《半纤维素》团体标准(征求意见稿)-0629
- 2026年叉车人员培训考试题库及完整答案一套
- (正式版)DB61∕T 2103-2025 《砖瓦用页岩矿资源储量核实技术规范》
- 药用植物育种学课件
- 2025苏超联赛考试真题及答案
评论
0/150
提交评论