核模型(核密度估計)
1、核模型(Kernel function)
線上性模型中,多項式或三角函式等基函式與訓練樣本{(xi,yi)}毫不相關的。下面我們介紹一種模型,在基函式設計的時候會使用到輸入樣本{xi}。
note:是在基函式設計的時候使用到樣本,那麼訓練的是什麼?下面看公式。
核模型,是以使用被稱為 核模型的 二元函式 K(.,.),
的線性結合方式加以定義的。
上面的theta就是我們要學習的物件 ,注意 theta為一個向量,可以表述為下面的形式。
可以把公式中的xi看做標記點(landmark),並將樣本x和標記點之間相似特徵;這裡面可以看成一種廣義的距離(相似程度),這種距離度量的方式就稱之為核函式。
最常見的核函式是高斯核函式:
上面的 xi(有的書中寫作c)就是核函式的 標記點,也可稱之為均值;
h稱為頻寬;一般的頻寬選擇有技巧,頻寬小怎麼樣?頻寬小,擬合的比較緊湊。具體Google。
xi稱之為均值,說是均值但是選取的時候怎麼選,還是從訓練樣本中選取。
下面給出核函式是如何衡量距離的?
在高斯核模型中,對各個輸入的樣本{xi}進行高斯核的學習,並把其引數 theta進行學習。
2、KDE(核密度估計)
下面是上課時候的一個作業,直接貼出出來。
作業要求:
文件中將程式的執行結果貼出,結果應包括兩個部分,第一部分是一個維的彩色KDE估計圖三(最好用MATLAB畫);第二部分是測試圖片的運動目標二值影象檢測結果(運動員用白色畫素,背景用黑色)。
程式平臺:MATLAB R2018 ;處理器:Intel®Core™i5-4210M CPU 2.6GHZ;4G記憶體。
視屏序列來源:(1)課上提供資料
(2)從https://www.bilibili.com/video/av23096534?t=97下載視屏序列; 使用Kmplayer視屏播放軟體進行連續幀的擷取(1秒3幀)。
一、演算法
核密度估計(Kernel Destiny Estimation)不利用有關資料分佈的先驗知識,對資料分佈不附加任何假定,是一種從資料集樣本本身出發研究資料分佈特徵的方法。
核密度估計函式表示推導如下:
二、MATLAB程式碼
%KDE,目標檢測 clc close all N=20;%訓練集數目 h=40; %頻寬 thr=0.000002;%閾值 train_set=cell(1,N); par=double(15/(8*pi*N*h^3));%核函式係數 %讀取並存儲訓練集 for i=1:N train_set{i}=double(imread(strcat('frame_',num2str(i),'.jpg'))); end test=double(imread('frame_0777.jpg')); [m,n,d]=size(test);%影象規格 KDE=zeros(m,n); %儲存KDE值 %利用EP核函式計算概率 tic for i=1:N %N張圖片,計算每張圖片KDE mul=1; for j=1:d %d通道計算 current_frame=train_set{i}; temp=((current_frame(:,:,j)-test(:,:,j))./h).^2;%EP核函式 temp=max(1-temp,0); %EP核函式 %temp=exp(-(current_frame(:,:,j)-test(:,:,j)).^2/2/h^2);%高斯核函式 mul=mul.*temp; End KDE=KDE+mul;%累加一張圖片KDE End KDE=KDE*par;%得到KDE toc %繪製三維KDE圖 mesh(KDE) colorbar title('道路 KDE 估計圖'); xlabel('X軸'); ylabel('Y軸'); zlabel('Z軸'); %目標檢測 motion=(KDE<thr); %閾值比較 result=mat2gray(motion); %轉換為灰度影象 figure;imshow(result); title('道路目標檢測結果圖')
二、執行結果
下列執行結果採用基於EP核函式的KDE;(1)中為所提供的訓練集,共20幀,頻寬h選擇為40;(2)中為自己在網際網路上找的連續幀,訓練集為15幀,頻寬h為40。