【MATLAB画像処理の実践事例を詳しく解説(20)】—BPニューラルネットワークで顔向き判定を実現

1. 問題の説明

BP ニューラル ネットワークは、出力後の誤差を使用して出力層の直接先行層の誤差を推定し、次にこの誤差を使用して前の層の誤差を推定します。他のすべての層の誤差。

BP アルゴリズムは、多層パーセプトロンの誤差逆伝搬アルゴリズムを使用しており、その基本的な考え方は、学習プロセスが信号の順方向伝搬と誤差の逆伝搬の 2 つのプロセスからなるというものです。

順伝播中、入力サンプルは入力層から渡され、各隠れ層によって層ごとに処理され、出力層に渡されます。出力層の実際の出力が期待される出力と一致しない場合、エラーの逆送信段階に変わります。

誤差逆伝播とは、何らかの形で隠れ層を介して層ごとに出力誤差を入力層に戻し、各層のすべてのユニットに誤差を分配して、ユニットの各層の誤差信号を取得することです。誤差信号を各ユニットの補正に使用 重みの根拠

BP ニューラル ネットワークの基本的なフローチャートは次のとおりです。
ここに画像の説明を挿入

このホワイト ペーパーの目的は、BP ニューラル ネットワークを使用して顔の方向を予測し、顔のデータベース イメージに対して合理的に顔の方向を特定することです。

2. アルゴリズムの手順

2.1 データを読み込んで特徴を抽出する

コードは以下のように表示されます:

for j=1:N_train
      for i=1:M_train
        %读取图像,连接字符串形成图像的文件名。
        str=strcat('Images\',num2str(i),'_',num2str(j),'.bmp'); 
        img= imread(str);  
        [rows cols]= size(img);%获得图像的行和列值。
        img_edge=edge(img,'Sobel');

        %由于在分割图片中,人脸的眼睛部分位置变化比较大,边缘检测效果好
        sub_rows=floor(rows/6);%最接近的最小整数,分成6行
        sub_cols=floor(cols/8);%最接近的最小整数,分成8列
        sample_num=M_train*N_train;%前5个是第一幅人脸的5个角度

        sample_number=sample_number+1;
        for subblock_i=1:8 %因为这还在i,j的循环中,所以不可以用i 
            block_num=subblock_i;
            pixel_value(sample_number,block_num)=0;  
            for ii=sub_rows:(2*sub_rows)
                for jj=(subblock_i-1)*sub_cols+1:subblock_i*sub_cols
                    pixel_value(sample_number,block_num)=pixel_value(sample_number,block_num)+img_edge(ii,jj);          
                end
            end     
        end  
    end
end

2.2 ニューラル ネットワークの作成とトレーニング

コードは以下のように表示されます:

%  创建一个新的前向神经网络  
net_1=newff(minmax(P),[10,3],{
    
    'tansig','purelin'},'traingdm')
%  调用 TRAINGDM 算法训练 BP 网络
[net_1,tr]=train(net_1,P,T); 

2.3 テスト

コードは以下のように表示されます:

%  对 BP 网络进行仿真
A = sim(net_1,P); 
%  计算仿真误差  
E = T - A; 
MSE=mse(E) 

x=[0.14 0 1 1 0 1 1 1.2]';
sim(net_1,x)

3. 結果分析

操作の結果は次のとおりです。
ここに画像の説明を挿入

二乗平均平方根誤差:
ここに画像の説明を挿入

この結果から、BP ニューラル ネットワークを使用して顔の向きを予測すると、予測誤差が非常に小さく、二乗平均平方根誤差が 0.00099931 であり、予測結果が実際の結果に近いことがわかります。 BP ニューラル ネットワークは、より優れたデータ予測とフィッティング能力を備えており、幅広い用途があります。BP ニューラル ネットワークには次の利点があります:
(1) 非線形マッピング機能: BP ニューラル ネットワークは本質的に入力から出力へのマッピング関数を実現します. 数学理論は、3 層ニューラル ネットワークが任意の精度で任意の非線形連続関数を近似できることを証明しています. . これにより、複雑な内部メカニズムを持つ問題を解決するのに特に適しています。つまり、BP ニューラル ネットワークには強力な非線形マッピング機能があります。
(2)自己学習と自己適応能力:トレーニング中、BPニューラルネットワークは、学習を通じて出力と出力データの間の「合理的なルール」を自動的に抽出し、ネットワークの重みで学習内容を適応的に記憶できます。つまり、BP ニューラル ネットワークには高度な自己学習機能と自己適応機能があります。
(3) 汎化能力: いわゆる汎化能力とは、パターン分類器を設計する際に、ネットワークが必要な分類オブジェクトを正しく分類できることを考慮し、ネットワークが目に見えないものを分類できるかどうかを考慮する必要があることを意味します。トレーニング後のオブジェクト、またはノイズで汚染されたパターンを正しく分類します。つまり、BP ニューラル ネットワークには、学習結果を新しい知識に適用する機能があります。
(4) フォールト トレランス: BP ニューラル ネットワークは、局所的または部分的なニューロンが損傷した後、全体的なトレーニング結果に大きな影響を与えることはありません。つまり、部分的に損傷した場合でも、システムは正常に動作します。つまり、BP ニューラル ネットワークには一定のフォールト トレランスがあります。


記事の制限により、完全な顔向きデータ セットと BP ニューラル ネットワーク コードはhttps://download.csdn.net/download/didi_ya/87741778からダウンロードできます。

おすすめ

転載: blog.csdn.net/didi_ya/article/details/130438268