1、贝叶斯决

假设对于测试样本xxx,共有mmm中类别可能 {w1,⋯,wm}\{ w_1 , ⋯ , w _m\}{w1,,wm},则判断样本类别的贝叶斯决策是:
max⁡{p(w1∣x),p(w2∣x),⋯ ,p(wm∣x)}\max \{ p({w_1}\left| x \right.),p({w_2}\left| x \right.), \cdots ,p({w_m}\left| x \right.)\}max{p(w1x),p(w2x),,p(wmx)}

2、PNN网络

如下图所示,假设特征有三个维度,被分为三大类。
在这里插入图片描述
首先我们计算待分类数据到各个子类中心{x11...x33}\{x_{11}... x_{33}\}{x11...x33}的距离,并使用高斯核函数作为映射函数,计算结果{y11...y33}\{y_{11}... y_{33}\}{y11...y33}视为到该子类的概率。然后对属于某一大类下的所有子类概率进行求和,得到数据属于该大类的概率ggg,最后使用贝叶斯决策进行类别判断。

颜色判别案例

假设我们要将下列图像分割为前景色和背景色两大类(即二值化图像):
在这里插入图片描述
运用PNN神经网络分类像素点的颜色RBG值,将接近蓝色或者背景中出现的其他颜色分为A类,表示背景色;将接近白色的颜色分为B类,表示车牌号色。

再用0、1这两个数值来表示A类、B类,重新设置图片中像素的颜色实现了车牌号图像的二值化。

模式层里的每个神经元代表一种样本颜色

可以看到即使训练完了再添加其他样本颜色非常方便,只要添加一个神经元即可无须改动先前训练好的神经网络,这也是PNN神经网络的一个很大的优势

神经网络结构实现的伪代码如下:

  号码颜色模式总数countHM;
  背景颜色模式总数countBJ;
  分类模式总数:countN=countBJ+countHM
  double w[countN][3];//R、G、B三个维度
  int a[countN][2];//A、B两类

 

PNN神经网络判别某个像素的类别:
{
    FOR 每个模式层单元 j
        计算某个像素归一化颜色值:
        w[j][Xr,b,g]= X{r,b,g}/ sqrt(Xr*Xr+Xb*Xb+Xg*Xg); 
        判断像素所属类别:
         IF 颜色属于车牌号码  a[j][1]=1;
         IF 颜色属于车牌背景 a[j][0]=1;
}

PNN 神经网络图像分类算法为代码:
{
 FOR 每一行
 	FOR 每一列
 	   BJ=0 
 	   HM=0
        判断该像素点所属类别 estimate(Xr,b,g):
        {
           FOR 每一个模式层神经元{
             计算相似度
			 net=w[i][0]*Xr+w[i][1]*Xb+w[i][2]*Xg;
			 高斯核映射为概率:
			 pnet=exp((net-1)/(Q * Q)); //Q为判别颜色相似窗口大小
			 累计该子类所属的大类概率:
			 IF (a[i][0] == 1)
				BJ +=pnet
			 IF (a[i][1] == 1)
				HM +=pnet
           }
			取得max的类别,如果 BJ 则为背景,否则就是号码;
			//在BJ于HM 取相同值时默认为号码类
			IF BJ >= HM 
			        Val=0
			 ELSE
                  Val=1   
}

分类结果为:
在这里插入图片描述

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐