发明名称 基于Centering Trick卷积限制玻尔兹曼机的物体识别方法
摘要 本发明涉及基于centering trick卷积限制玻尔兹曼机的物体识别方法,包括构造训练数据库,对图像进行重构,进行白化预处理,采用融合centering trick的CRBM模型对训练集进行特征提取,将三维特征矩阵变换为一维特征向量,采用Softmax分类器对特征进行分类,获取测试集并对其进行重组和白化,计算池化层输出所对应的假设值S<sub>i</sub>,根据S<sub>i</sub>是否等于测试集标签判断分类是否正确。本发明在特征提取过程中充分利用图像自身的二维性及像素间的联系,使用CRBM模型实现权重共享,减少了运算所需内存,提高了运算速度。利用centering trick减少了每一层输入时的噪声,提高了运算的准确性和模型的稳定性。
申请公布号 CN104036242A 申请公布日期 2014.09.10
申请号 CN201410241967.9 申请日期 2014.06.03
申请人 北京工业大学 发明人 杨金福;高晶钰;张珊珊;李明爱;张济昭
分类号 G06K9/00(2006.01)I;G06K9/66(2006.01)I 主分类号 G06K9/00(2006.01)I
代理机构 北京思海天达知识产权代理有限公司 11203 代理人 沈波
主权项 基于Centering Trick卷积限制玻尔兹曼机的物体识别方法,其特征在于在计算机中依次按以下步骤执行:训练阶段,按以下步骤进行训练:步骤1,构造训练数据库;计算机采集并输入N<sub>V</sub>×N<sub>V</sub>像素大小的物体图像,并按物体类别划分为N种类别、类别编号为1~N,每类物体图像中包含T幅训练图像,构造训练图像集合,用P<sub>train</sub>表示,总数为:N×T=Q幅图像;步骤2,依次对P<sub>train</sub>中的每幅图像进行重构;将原有表示2维图像的2维矩阵重构为4维矩阵;第1、2维分别表示高和宽,且图像高与宽相等,均记作N<sub>V</sub>;第3维表示图像的颜色,记为color,若图像为RGB图像color=3,否则color=1;第4维表示图像的数量,即Q;重构好的图像集表示记为data={data<sub>i</sub>,i=1,2,3,…,Q},data为N<sub>V</sub>×N<sub>V</sub>×color×Q矩阵,其对应的标签集合为L={L<sub>i</sub>,i=1,2,…,Q},集合L中的值可分为N类,对应训练数据库中的图像的N个类别;步骤3,对集合data中的图像data<sub>i</sub>进行白化预处理,即data<sub>i</sub>的协方差矩阵除以其对角元素的值λ<sub>i</sub>的算术平方根;集合data白化后的结果记为data<sub>whiteni</sub>={data<sub>whiten,i</sub>,i=1,2,3,…,Q};步骤4,采用融合centering trick的CRBM模型对训练集P<sub>train</sub>进行特征提取,方法如下:步骤4.1,将data<sub>white,i</sub>随机划分为numbatches组,每一组含有numcases个图像,新产生的小数据集记为batchdata<sub>n</sub>,n=1,2,3,…,numcases;numcases根据训练集的大小可取10~100范围内任意整十数,numbatches的取值为QNumcases,Q为训练集中的样本个数;步骤4.2,可视层v、探测层h与池化层p形成CRBM网络;在CRBM模型中,隐含层被分成K组,每组由N<sub>H</sub>×N<sub>H</sub>个二进制单元组成,因此隐含层的节点数为<img file="FDA0000514958810000011.GIF" wi="122" he="76" />每组又与N<sub>W</sub>×N<sub>W</sub>滤波器相连,且<img file="FDA0000514958810000012.GIF" wi="466" he="67" />将探测层的每一组分成C*C块,每一块对应着池化层的节点<img file="FDA0000514958810000013.GIF" wi="82" he="76" />池化层每组的大小为N<sub>p</sub>,且N<sub>p</sub>=N<sub>H</sub>/C;模型层数为Maxlayer,考虑到模型的复杂度,Maxlayer一般取3~7范围内的任意整数;将batchdata作为可视层的输入v,在输入层引入centering trick算法,改进其能量函数的定义,并结合最大池化概率方法,计算隐含层和池化层;步骤4.3,计算已知可视层v,探测层h的概率,公式如下:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mi>poshidprobs</mi><mo>=</mo><mi>P</mi><mrow><mo>(</mo><msubsup><mi>h</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mi>k</mi></msubsup><mo>=</mo><mn>1</mn><mo>|</mo><mi>v</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><mi>exp</mi><mrow><mo>(</mo><mi>I</mi><mrow><mo>(</mo><msubsup><mi>h</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mi>k</mi></msubsup><mo>)</mo></mrow><mo>)</mo></mrow></mrow><mrow><mn>1</mn><mo>+</mo><msub><mi>&Sigma;</mi><mrow><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>&prime;</mo><mo>&prime;</mo><mo>)</mo></mrow><mo>&Element;</mo><msub><mi>B</mi><mi>&alpha;</mi></msub></mrow></msub><mi>exp</mi><mrow><mo>(</mo><mi>I</mi><mrow><mo>(</mo><msubsup><mi>h</mi><mrow><mi>i</mi><mo>&prime;</mo><mo>,</mo><mi>j</mi><mo>&prime;</mo></mrow><mi>k</mi></msubsup><mo>)</mo></mrow><mo>)</mo></mrow></mrow></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000514958810000014.GIF" wi="1568" he="190" /></maths>其中,v表示可视层节点的值,h表示隐含层节点的值0或1,个数为<img file="FDA0000514958810000021.GIF" wi="208" he="86" />表示第K组的第i行j列的节点,B<sub>α</sub>表示<img file="FDA0000514958810000022.GIF" wi="68" he="86" />所在的区域;<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mi>I</mi><mrow><mo>(</mo><msubsup><mi>h</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mi>k</mi></msubsup><mo>)</mo></mrow><mo>=</mo><msub><mi>b</mi><mi>k</mi></msub><mo>+</mo><msub><mrow><mo>(</mo><mi>W</mi><mo>*</mo><mrow><mo>(</mo><mi>v</mi><mo>-</mo><msub><mi>&beta;</mi><mi>v</mi></msub><mo>)</mo></mrow><mo>)</mo></mrow><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>,</mo></mrow>]]></math><img file="FDA0000514958810000023.GIF" wi="694" he="98" /></maths>b表示隐含层偏移量,β<sub>v</sub>表示centering trick中可视层的center因子,W表示可视层到隐含层的权重,是大小为N<sub>W*</sub>N<sub>W*colors*</sub>K的4维矩阵,“*”表示卷积运算;步骤4.4,计算已知可视层v,池化层p的概率,公式如下:<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><mi>poshidprobs</mi><mo>=</mo><mi>P</mi><mrow><mo>(</mo><msubsup><mi>p</mi><mi>&alpha;</mi><mi>k</mi></msubsup><mo>=</mo><mn>0</mn><mo>|</mo><mi>v</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><mi>exp</mi><mrow><mo>(</mo><mi>I</mi><mrow><mo>(</mo><msubsup><mi>h</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mi>k</mi></msubsup><mo>)</mo></mrow><mo>)</mo></mrow></mrow><mrow><mn>1</mn><mo>+</mo><msub><mi>&Sigma;</mi><mrow><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>&prime;</mo><mo>&prime;</mo><mo>)</mo></mrow><mo>&Element;</mo><msub><mi>B</mi><mi>&alpha;</mi></msub></mrow></msub><mi>exp</mi><mrow><mo>(</mo><mi>I</mi><mrow><mo>(</mo><msubsup><mi>h</mi><mrow><mi>i</mi><mo>&prime;</mo><mo>,</mo><mi>j</mi><mo>&prime;</mo></mrow><mi>k</mi></msubsup><mo>)</mo></mrow><mo>)</mo></mrow></mrow></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000514958810000024.GIF" wi="1587" he="153" /></maths>步骤4.5,将poshidprobs记为探测层h的输入,利用吉布斯采样计算可视层v,结果即为recon:<maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><mi>recon</mi><mo>=</mo><mi>P</mi><mrow><mo>(</mo><msubsup><mi>v</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mi>k</mi></msubsup><mo>=</mo><mn>1</mn><mo>|</mo><mi>h</mi><mo>)</mo></mrow><mo>=</mo><mi>&sigma;</mi><mrow><mo>(</mo><mrow><mo>(</mo><msup><mi>W</mi><mi>k</mi></msup><mo>*</mo><mrow><mo>(</mo><msup><mi>h</mi><mi>k</mi></msup><mo>-</mo><msub><mi>&beta;</mi><mi>h</mi></msub><mo>)</mo></mrow><mo>)</mo></mrow><mo>+</mo><mi>c</mi><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000514958810000025.GIF" wi="1421" he="105" /></maths>其中,c表示可视层偏移量,σ为sigmoid函数,其表达形式为σ=f(x)=1/(1+e<sup>‑x</sup>),β<sub>h</sub>表示centering trick中隐含层的center因子;步骤4.6,将recon作为可视层输入v,重复步骤4.3将结果记为neghidprobs;步骤4.7,将recon作为可视层输入v,重复步骤4.4将结果记为negpoolprobs;步骤4.8,更新权重W:ddw=batchdata*poshidprobs‑recon*neshidprobs (4)<maths num="0005" id="cmaths0005"><math><![CDATA[<mrow><mi>dW</mi><mo>&LeftArrow;</mo><mi>pW</mi><mo>&times;</mo><mi>dW</mi><mo>+</mo><mfrac><mi>ddw</mi><mi>szBatch</mi></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000514958810000026.GIF" wi="1394" he="102" /></maths>W←W+epsW×(dW‑decayw×W) (6)其中,pW=0.95,szBatch=10,epsW=0.01,decayw=0.01;步骤4.9,更新可视层偏移量c:<maths num="0006" id="cmaths0006"><math><![CDATA[<mrow><mi>dc</mi><mo>=</mo><mfrac><mrow><mi>batchdata</mi><mo>-</mo><mi>recon</mi><mo>/</mo><msup><mi>Nv</mi><mn>2</mn></msup></mrow><mi>szBatch</mi></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>7</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000514958810000027.GIF" wi="1348" he="111" /></maths>c←c+epsvbias×dc (8)其中,epsvbias=0.1;步骤4.10,更新隐含层偏移量b:<maths num="0007" id="cmaths0007"><math><![CDATA[<mrow><mi>db</mi><mo>=</mo><mfrac><mrow><mi>posprobs</mi><mo>-</mo><mi>negprobs</mi><mo>/</mo><msup><mi>Nw</mi><mn>2</mn></msup></mrow><mi>szBatch</mi></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>9</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000514958810000028.GIF" wi="1330" he="119" /></maths>b←b+epsvbias×db (10)其中,epsvbias=0.1;步骤4.11,重复步骤4.3~4.10numbatches次,将每个batchdata对应得到的pospoolprobs作为输出,即提取的特征,在训练过程中不断更新参数权重W,偏移量c,b;步骤4.12,重复步骤4.1~4.11epoch次,完成融合centering trick的CRBM网络学习,固定网络参数权值W和偏移量b、c;考虑到运算的复杂度,及运算的精度,epoch一般在100~500范围内;步骤4.13,利用贪婪算法,训练下一个融合centering trick的CRBM;将池化层的输出视为下一个CRBM的可视层v,新加入的探测层为h’,重复步骤4.3;步骤4.14,计算新一层的网络已知可视层v,池化层p的概率,重复步骤4.4;步骤4.15,计算新一层的网络已知原始可视层v、原始探测层h的条件下,新加入的探测层的概率h’:<maths num="0008" id="cmaths0008"><math><![CDATA[<mrow><mi>recon</mi><mo>=</mo><mi>P</mi><mrow><mo>(</mo><msubsup><mi>p</mi><mi>&alpha;</mi><mi>k</mi></msubsup><mo>=</mo><mn>0</mn><mo>|</mo><mi>v</mi><mo>,</mo><mi>h</mi><mo>&prime;</mo><mo>)</mo></mrow><mo>=</mo><mfrac><mn>1</mn><mrow><mn>1</mn><mo>+</mo><msub><mi>&Sigma;</mi><mrow><mrow><mo>(</mo><mi>i</mi><mo>&prime;</mo><mo>,</mo><mi>j</mi><mo>&prime;</mo><mo>)</mo></mrow><mo>&Element;</mo><msub><mi>B</mi><mi>&alpha;</mi></msub></mrow></msub><mi>exp</mi><mrow><mo>(</mo><mi>I</mi><mrow><mo>(</mo><msubsup><mi>h</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>&prime;</mo><mo>&prime;</mo></mrow><mi>k</mi></msubsup><mo>)</mo></mrow><mo>_</mo><mi>I</mi><mrow><mo>(</mo><msubsup><mi>p</mi><mi>&alpha;</mi><mi>k</mi></msubsup><mo>)</mo></mrow><mo>)</mo></mrow></mrow></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>11</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000514958810000031.GIF" wi="1577" he="153" /></maths>其中,<img file="FDA0000514958810000032.GIF" wi="447" he="88" />是h与h’之间的权重,是大小为N’<sub>W</sub>*N’<sub>W</sub>color*K的4维矩阵,N’<sub>W</sub>=N‘<sub>V</sub>N<sub>H</sub>+1,N‘<sub>V</sub>为新一层网络的可视层输入的第1、2维的大小;步骤4.16,重复步骤4.6~4.12,计算新一层网络的权值W和偏移量b、c;步骤4.17,重复步骤4.13~4.16,对新加入的网络进行学习以计算下一层网络权值,直至达到第Maxlayer层;所得到的结果pospoolprobs即为对输入特征提取后的结果,记为Z<sub>train</sub>={Z<sub>i</sub>,i=1,2,…,numcases},其对应的标签为L<sub>train</sub>={Li,i=1,2,…,numcases};步骤5,将三维特征矩阵Z<sub>i</sub>变换为一维的特征向量,记作Z<sub>train</sub>={Z<sub>i</sub>,i=1,2,…,numcases};步骤6,采用Softmax分类器对特征进行分类,其训练过程如下:步骤6.1,计算输入层Z<sub>i</sub>对应的假设值为S<sub>i</sub>,且S<sub>i</sub>=σ(θZ<sub>i</sub>),θ为Softmax输出层与输入层之间的权重,σ仍为sigmoid函数,见步骤4.5;步骤6.2,训练模型权重θ,使其代价函数取得最小值;采用梯度下降法最小化其代价函数,代价函数形式如下:<img file="FDA0000514958810000033.GIF" wi="1564" he="99" />其中y<sup>i</sup>即为Zi的标签L<sub>i</sub>,m即为numcases;步骤6.3,重复步骤6.1、步骤6.2,直至代价函数收敛;测试阶段按以下步骤进行:步骤7,按照步骤1获取测试集P<sub>test</sub>,并按照步骤2、3对测试集P<sub>test</sub>进行重组和白化;步骤8,将融合centering trick的CRBM模型参数,设定为步骤1~6训练得到的模型参数;按照公式(1)、(2)计算探测层与池化层的输出,并计算池化层输出所对应的假设值S<sub>i</sub>;步骤9,判断S<sub>i</sub>是否等于测试集的标签L<sub>i</sub>,若等于则说明分类正确;反之,则认为分类失败。
地址 100124 北京市朝阳区平乐园100号