大家新年快樂哇, 武漢加油,我的家鄉溫州也加油,中國加油!向前線人員致敬!
最近在家裏做遷移學習,受限於筆記本的限制,深度方向做不了,開始看師兄的論文,發現論文裏提到最大方差法,但是沒有具體說明出處,去查找相應的出處,也就看到了大津算法,但很奇怪的是,好多人都是很簡略地說了思想,到底怎麼出來的,還是沒明白,因此自己找唄~
將進行一個閾值即兩類的推導,讓思想動起來!
大津算法提出了兩個方差(若有人知道更早的出處歡迎留言指出)。
1.within-class variance 類內方差
2.between-class variance 類間方差
提前指出結論
1.大津法的目標就是最大化類間方差
2.實現最大化類間方差同時就實現了類內方差最小化,因爲二者的平方和爲定值
3.最優閾值點一定存在
具體程序就麻煩小夥伴自己找找啦。
~~ 進入正題 ~~
現在有一張灰度圖含有背景圖像和目標圖像(C0,C1),我們要找到一個閾值將像素值分爲兩塊使兩者最好的區分。
圖來源於網絡,右圖類間差異大,區分明顯。所以最大化類間差異
現在再來看看公式推導
將圖片的像素值分爲 [1, 2, …, L] 個水平,用ni表示各個水平像素值的像素個數,那麼很容易得到總像素個數爲
N=n1+n2+...+nL
我們利用像素值對應個數與總數的商作爲某個像素值出現的概率,定義pi
pi=ni/Ni,pi≥0,i=1∑Lpi=1
定義兩個量w0,w1爲C0,C1的局部概率之和,並且得到二者的關係
w0=Pr(C0)=i=1∑kpi=w(k)
w1=Pr(C1)=i=k+1∑Lpi=1−w(k)
由此我們得到總的數學期望和C0,C1各自的數學期望並指出三者的關係,式中i代表像素值,除於各自概率的和用於進行歸一。
uT=u(L)=i=1∑Li∗pi
u0=i=1∑ki∗Pr(i∣C0)=i=1∑ki∗pi/w0=w(k)u(k)
u1=i=k+1∑Li∗Pr(i∣C1)=i=k+1∑Li∗pi/w1=1−w(k)uT−u(k)
並指出以上公式之間的關係:
w0u0+w1u1=uT w0+w1=1
除了數學期望,計算各自局部方差和總方差
σT2=i=1∑L(i−uT)2pi
σ02=i=1∑k(i−u0)2Pr(i∣C0)=i=1∑k(i−u0)2pi/w0
σ01=i=k+1∑L(i−u1)2Pr(i∣C1)=i=k+1∑L(i−u1)2pi/w0
基礎打完,爲了大家翻遍查閱,列一個表格方便查閱
變量/公式 |
相關含義 |
pi |
某個像素值可能出現的概率 |
w0/w(k),w1 |
C0,C1 對應的概率和 |
uT,u0,u1 |
整個圖像,C0,C1,像素的數學期望 |
σT,σ0,σ1 |
整個圖像,C0,C1,像素的方差 |
∑i∗pi |
數學期望的求解公式 |
∑(i−u)2∗pi |
方差的求解公式 |
定義完以上變量,作者提出
within_class variance 類內差異
σw2=w0σ02+w1σ12
between_class variance 類間差異
σb2=w0(u0−uT)2+w1(u1−uT)2
之前指出,作者要求最大化類間差異,我們可以從圖中明白這個道理,那麼爲什麼最大化類間差異就是最小化類內差異?
有意思的來了, 因爲二者的和爲定值
σw2+σb2=σT2
以下爲推導公式
我們取σw2,σb2中的w0σ02和w0(u0−uT)2兩項,先將w0σ02展開
=w0[w10∗i=0∑k(i−u0)2pi]=w0[w10∗i=0∑k((i−uT)+(uT−u0))2pi]
=w0[w10∗i=0∑k((i−uT)2+2(i−uT)(uT−u0)+(uT−u0)2)pi]
=i=0∑k(i−uT)2∗pi
+i=0∑k2(i−uT)(uT−u0)∗pi
+(uT−u0)2∗i=0∑kpi
展開∑i=0k2(i−uT)(uT−u0)∗pi
=2(uT−u0)i=0∑k(i−uT)pi
=2(uT−u0)[i=0∑kipi+uTi=0∑kpi]
根據數學期望和局部概率和的定義得到
i=0∑k2(i−uT)(uT−u0)∗pi=2(uT−u0)w0(u0−uT)=−2w0(uT−u0)2
得w0σ02化簡爲
=i=0∑k(i−uT)2∗pi−w0(uT−u0)2
從σb2的第一項可以發現,二者的和恰爲
i=0∑k(i−uT)2∗pi
同理推得第二項,則
σb2+σw2=i=0∑k(i−uT)2pi+i=k+1∑L(i−uT)2pi=i=0∑L(i−uT)2pi=σT2
因此類內差異與類間差異的和爲總的方差,爲一定值
那麼爲什麼最優閾值一定存在呢?
從σb2的定義出發
已知
w0u0+w1u1=uT
因此
σb2=w0(u0−uT)2+w1(u1−uT)2
=w0(u0−(w0u0+w1u1))2+w1(u1−(w0u0+w1u1))2
=w0w1(u1−u0)2
再根據
u0=w(k)u(k) u1=1−w(k)uT−u(k)
得
σb2=w(k)[1−w(k)][uTw(k)−u(k)]2
求解最大類間差異可寫作
σb2(k∗)=1≤k<Lmaxσb2(k)
由上述σb2的分母可以發現,w(k)可以取到1也可以取到0,因此在邊界上σb2可以無窮大,而在開集(0,1)則類間方差有限,因此在定義域
S∗=k:w0w1=w(k)[1−w(k)]>0
總存在最優解。
完成三條結論的推導
等等~
會不會有小夥伴在想
1≤k<Lmaxσb2(k)
這個問題怎麼解哇!
哈哈,我也不會,目前就是一個點一個點的代入哇,找到最大值即可。但是我最近在學凸優化這門課,相信自己學完是能解決這個的!
一起加油!
元宵快樂,芝麻湯圓最好吃了!