发明名称 基于深度脊波神经网络的图像分类方法
摘要 本发明公开了一种基于深度脊波神经网络的图像分类方法,主要解决现有技术基于神经网络的图像分类训练时间长,分类精度不高的问题。其实现步骤为:1.对图像库中的数据选择10%比例作为训练样本,其余作为测试样本;2.建立深度脊波神经网络的网络结构,并将训练样本作为网络的输入;3.分别对深度脊波神经网络中每一层的参数用脊波自编码器进行分层学;4.将分层学的参数结果作为深度脊波神经网络中参数的初始值,对整个网络中的参数利用梯度下降法进行训练,得到训练好的网络;5.将测试样本输入网络,得到每一个测试样本的类标。本发明具有分类精度高,训练速度快的优点,可用于到目标识别、目标分析以及社会活动检测。
申请公布号 CN106529570A 申请公布日期 2017.03.22
申请号 CN201610898502.X 申请日期 2016.10.14
申请人 西安电子科技大学 发明人 刘芳;郝红侠;石程;焦李成;杨淑媛;尚荣华;马文萍;马晶晶
分类号 G06K9/62(2006.01)I;G06N3/08(2006.01)I 主分类号 G06K9/62(2006.01)I
代理机构 陕西电子工业专利中心 61205 代理人 王品华;朱红星
主权项 一种基于深度脊波神经网络的图像分类方法,包括如下步骤:1)从图像库中随机选择所有图像样本的10%作为训练图像样本集,其中第n个训练图像样本记为P(n),n=1,...,N为训练图像样本的个数,第n个训练图像样本的类标记为L(n),其余样本作为测试图像样本,Q(m)为第m个测试图像样本,m=1,...,M,M为测试图像样本的个数;2)对每一个训练图像样本P(n),按照行优先的规则,重新排列为一个列向量S<sub>1</sub>(n):<maths num="0001"><math><![CDATA[<mrow><msub><mi>S</mi><mn>1</mn></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>=</mo><msup><mrow><mo>(</mo><msubsup><mi>x</mi><mn>1</mn><mn>1</mn></msubsup><mo>(</mo><mi>n</mi><mo>)</mo><mo>,</mo><msubsup><mi>x</mi><mn>2</mn><mn>1</mn></msubsup><mo>(</mo><mi>n</mi><mo>)</mo><mo>,</mo><mo>...</mo><mo>,</mo><msubsup><mi>x</mi><mi>i</mi><mn>1</mn></msubsup><mo>(</mo><mi>n</mi><mo>)</mo><mo>,</mo><mo>...</mo><mo>,</mo><msubsup><mi>x</mi><mi>I</mi><mn>1</mn></msubsup><mo>(</mo><mi>n</mi><mo>)</mo><mo>)</mo></mrow><mi>T</mi></msup><mo>,</mo></mrow>]]></math><img file="FDA0001130689180000011.GIF" wi="757" he="79" /></maths>其中,<img file="FDA0001130689180000012.GIF" wi="92" he="55" />表示列向量S<sub>1</sub>(n)中第i个元素值,i∈I,I为输入样本元素的个数;3)建立四层深度脊波神经网络的结构,其中第一层样本输入层为l<sub>1</sub>,有I<sub>1</sub>个神经元,第二层特征学习层为l<sub>2</sub>,有I<sub>2</sub>个神经元,第三层特征学习层为l<sub>3</sub>,有I<sub>3</sub>个神经元,第四层分类层为l<sub>4</sub>;将S<sub>1</sub>(n)作为深度脊波神经网络第一层的输入,令I=I<sub>1</sub>;4)建立三层脊波自编码器,用来得到四层深度脊波神经网络的初始化权值。该三层脊波自编码器包括自编码输入层I<sub>1</sub>个神经元,自编码隐层I<sub>2</sub>个神经元和自编码输出层I<sub>1</sub>个神经元;5)将步骤2)中的列向量S<sub>1</sub>(n)作为脊波自编码器的输入,得到脊波自编码器的实际输出Z<sub>1</sub>(n):<maths num="0002"><math><![CDATA[<mrow><msub><mi>Z</mi><mn>1</mn></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>=</mo><msup><mrow><mo>(</mo><msubsup><mi>z</mi><mn>1</mn><mn>1</mn></msubsup><mo>(</mo><mi>n</mi><mo>)</mo><mo>,</mo><msubsup><mi>z</mi><mn>2</mn><mn>1</mn></msubsup><mo>(</mo><mi>n</mi><mo>)</mo><mo>,</mo><mo>...</mo><mo>,</mo><msubsup><mi>z</mi><mi>k</mi><mn>1</mn></msubsup><mo>(</mo><mi>n</mi><mo>)</mo><mo>,</mo><mo>...</mo><mo>,</mo><msubsup><mi>z</mi><msub><mi>I</mi><mn>1</mn></msub><mn>1</mn></msubsup><mo>(</mo><mi>n</mi><mo>)</mo><mo>)</mo></mrow><mi>T</mi></msup><mo>,</mo></mrow>]]></math><img file="FDA0001130689180000013.GIF" wi="773" he="86" /></maths>其中,<img file="FDA0001130689180000014.GIF" wi="107" he="70" />表示第k个神经元的实际输出:<img file="FDA0001130689180000015.GIF" wi="813" he="223" />式中ψ<sub>j</sub>(·)表示自编码隐层第j个神经元的脊波函数,w<sub>j,i</sub>是连接自编码输入层第i个神经元和自编码隐层第j个神经元的权重值,λ<sub>j</sub>是自编码隐层第j个神经元的位移参数,u<sub>j</sub>是自编码隐层第j个神经元的尺度参数,w<sub>k,j</sub>是连接自编码隐层第j个神经元和自编码输出层第k个神经元的权重值,b<sub>k</sub>是自编码输出层第k个神经元的阈值,i,k∈I<sub>1</sub>,j∈I<sub>2</sub>;6)将步骤2)中的列向量S<sub>1</sub>(n)作为脊波自编码器的理想输出,建立自编码器损失函数ξ<sub>1</sub>(n),最小化ξ<sub>1</sub>(n)并利用梯度下降法,对步骤5)中的参数w<sub>j,i</sub>、λ<sub>j</sub>、u<sub>j</sub>、w<sub>k,j</sub>和b<sub>k</sub>进行反向调节更新;7)重复步骤5)和步骤6),直至达到设定的迭代次数,得到更新后的参数值w<sub>j,i</sub>、λ<sub>j</sub>、u<sub>j</sub>、w<sub>k,j</sub>和b<sub>k</sub>;8)根据步骤7)更新后得到的所述参数w<sub>j,i</sub>、λ<sub>j</sub>和u<sub>j</sub>,计算深度脊波神经网络第二层第j个神经元的值:<img file="FDA0001130689180000021.GIF" wi="518" he="150" />得到第二层学习到的特征为:<maths num="0003"><math><![CDATA[<mrow><msub><mi>S</mi><mn>2</mn></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>=</mo><msup><mrow><mo>(</mo><msubsup><mi>x</mi><mn>1</mn><mn>2</mn></msubsup><mo>(</mo><mi>n</mi><mo>)</mo><mo>,</mo><msubsup><mi>x</mi><mn>2</mn><mn>2</mn></msubsup><mo>(</mo><mi>n</mi><mo>)</mo><mo>,</mo><mo>...</mo><mo>,</mo><msubsup><mi>x</mi><mi>j</mi><mn>2</mn></msubsup><mo>(</mo><mi>n</mi><mo>)</mo><mo>,</mo><mo>...</mo><mo>,</mo><msubsup><mi>x</mi><msub><mi>I</mi><mn>2</mn></msub><mn>2</mn></msubsup><mo>(</mo><mi>n</mi><mo>)</mo><mo>)</mo></mrow><mi>T</mi></msup><mo>,</mo><mi>j</mi><mo>&Element;</mo><msub><mi>I</mi><mn>2</mn></msub><mo>;</mo></mrow>]]></math><img file="FDA0001130689180000022.GIF" wi="1053" he="87" /></maths>9)用深度脊波神经网络第二层的特征S<sub>2</sub>(n)代替步骤2)中的自编码输入层S<sub>1</sub>(n),令自编码输入层包含I<sub>2</sub>个神经元,自编码隐层包含I<sub>3</sub>个神经元,自编码输出层包含I<sub>2</sub>个神经元,重复步骤5)‑8),得到深度脊波神经网络第三层学到的特征:<maths num="0004"><math><![CDATA[<mrow><msub><mi>S</mi><mn>3</mn></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>=</mo><msup><mrow><mo>(</mo><msubsup><mi>x</mi><mn>1</mn><mn>3</mn></msubsup><mo>(</mo><mi>n</mi><mo>)</mo><mo>,</mo><msubsup><mi>x</mi><mn>2</mn><mn>3</mn></msubsup><mo>(</mo><mi>n</mi><mo>)</mo><mo>,</mo><mo>...</mo><mo>,</mo><msubsup><mi>x</mi><mi>r</mi><mn>3</mn></msubsup><mo>(</mo><mi>n</mi><mo>)</mo><mo>,</mo><mo>...</mo><mo>,</mo><msubsup><mi>x</mi><msub><mi>I</mi><mn>3</mn></msub><mn>3</mn></msubsup><mo>(</mo><mi>n</mi><mo>)</mo><mo>)</mo></mrow><mi>T</mi></msup><mo>,</mo><mi>r</mi><mo>&Element;</mo><msub><mi>I</mi><mn>3</mn></msub><mo>;</mo></mrow>]]></math><img file="FDA0001130689180000023.GIF" wi="1030" he="93" /></maths>10)将第三层学到的的特征S<sub>3</sub>(n)作为第四层分类层的输入,得到脊波神经网络分类层l<sub>4</sub>的类标输出:<img file="FDA0001130689180000024.GIF" wi="422" he="87" />其中Num为该样本的的类别数,并根据样本的理想输出类标L(n)和得到的输出类标S<sub>4</sub>(n)的误差,建立分类器损失函数ξ<sub>2</sub>(n),最小化该分类器损失函数ξ<sub>2</sub>(n)并按照梯度下降法,对分类层选择的softmax分类器进行训练,得到分类器的参数θ;11)将步骤4)‑10)得到的深度脊波神经网络的每一层的参数值,作为深度脊波神经网络中参数的初始值,将S<sub>1</sub>(n)作为深度脊波神经网络的输入,按照下式对网络进行前向计算,得到深度脊波神经网络中第二层和第三层第j个神经元的输出:<maths num="0005"><math><![CDATA[<mrow><msubsup><mi>x</mi><mi>j</mi><mrow><mi>l</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>=</mo><msubsup><mi>&psi;</mi><mi>j</mi><mrow><mi>l</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mrow><mo>(</mo><mfrac><mrow><munder><mo>&Sigma;</mo><mrow><mi>i</mi><mo>&Element;</mo><msub><mi>I</mi><mi>l</mi></msub></mrow></munder><msubsup><mi>w</mi><mrow><mi>j</mi><mo>,</mo><mi>i</mi></mrow><mrow><mi>l</mi><mo>+</mo><mn>1</mn></mrow></msubsup><msubsup><mi>x</mi><mi>i</mi><mi>l</mi></msubsup><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>-</mo><msubsup><mi>&lambda;</mi><mi>j</mi><mrow><mi>l</mi><mo>+</mo><mn>1</mn></mrow></msubsup></mrow><msup><mn>2</mn><msubsup><mi>u</mi><mi>j</mi><mrow><mi>l</mi><mo>+</mo><mn>1</mn></mrow></msubsup></msup></mfrac><mo>)</mo></mrow><mo>,</mo><mi>l</mi><mo>=</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>;</mo><mi>j</mi><mo>&Element;</mo><msub><mi>I</mi><mrow><mi>l</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>,</mo></mrow>]]></math><img file="FDA0001130689180000025.GIF" wi="846" he="149" /></maths>其中,当l=1时表示特征学习层l<sub>2</sub>的第j个神经元的输出,当l=2时表示特征学习层l<sub>3</sub>的第j个神经元的输出,式中<img file="FDA0001130689180000027.GIF" wi="91" he="55" />表示第l层第i个神经元的值,<img file="FDA0001130689180000026.GIF" wi="114" he="63" />表示第l+1层第j个神经元的值,<img file="FDA0001130689180000031.GIF" wi="118" he="61" />表示l+1层第j个神经元的脊波函数值,<img file="FDA0001130689180000032.GIF" wi="67" he="61" />表示连接第l层第i个神经元和第l+1层第j个神经元的权重值,<img file="FDA0001130689180000033.GIF" wi="62" he="62" />表示第l+1层第j个神经元的位移参数,<img file="FDA0001130689180000034.GIF" wi="76" he="71" />表示第l+1层第j个神经元的尺度参数;12)将深度脊波神经网络第三层的学到的特征S<sub>3</sub>(n)作为softmax分类器的输入,计算得到样本的输出类标S<sub>4</sub>(n),按照梯度下降法,根据输出类标S<sub>4</sub>(n)和真实类标L(n)的差异,建立分类器损失函数ξ<sub>2</sub>(n),对深度脊波神经网络中误差进行反向传播,对参数进行更新;13)重复步骤11)‑12),直到达到设定迭代次数,得到训练好的网络的所有参数值,完成深度脊波神经网络的训练;14)将每一个测试样本Q(m),按照行优先的规则重新排列为一个列向量<img file="FDA0001130689180000035.GIF" wi="819" he="71" />根据网络训练好的参数值,按照整个网络前向传播的计算过程,得到测试样本的类标,完成分类。
地址 710071 陕西省西安市雁塔区太白南路2号