本發(fā)明涉及一種張量分解方法。特別是涉及一種針對非等長視頻手勢識別的張量分解方法。
背景技術(shù):
隨著可以獲得的視頻數(shù)量的急劇增加,基于內(nèi)容的視頻分析已經(jīng)廣泛的應(yīng)用到視頻檢索、動作識別、視頻摘要等。相比于人體的其它部位,手和手指具有很高的靈巧度,因此它是最有效的和通用的與外界交互的方式之一。作為人類動作語義分析中的重要組成部分,手勢識別已經(jīng)獲得了廣泛的應(yīng)用。例如在醫(yī)院就診中一個手勢識別系統(tǒng)可以使醫(yī)生通過手勢去操縱數(shù)字圖像。
手勢識別的目的是對手勢視頻序列進(jìn)行正確的分類。盡管已有一些手勢識別的工作,但從現(xiàn)實應(yīng)用的角度設(shè)計一個魯棒、貼近實際應(yīng)用的手勢識別算法仍面臨很多挑戰(zhàn)。傳統(tǒng)的手勢識別算法通常將視頻序列轉(zhuǎn)換為向量或矩陣的形式,這種處理方式不僅會造成視頻中數(shù)據(jù)點(diǎn)的結(jié)構(gòu)信息的損失,而且還會破壞視頻序在時域上的平滑性。由于張量可以很自然的將原始的手勢視頻序列建模為一個三階張量的形式。為更好的解決這個問題,最近一些工作從張量分解的角度運(yùn)用多線性代數(shù)解決手勢識別問題。張量分解的兩種典型的形式為CP分解和Tucker分解。其主要區(qū)別在于CP分解是將張量分解為一系列的秩一張量之和的形式,Tucker分解則將張量分解成核張量與一組映射矩陣的模乘形式。然而,基于張量的手勢識別算法存在一個基本但卻容易被忽視的問題,即所有的視頻序列在時域上需要有統(tǒng)一的長度。當(dāng)前一種最普遍的處理方式是從視頻序列中間選擇固定長度的視頻幀構(gòu)建新的視頻序列,從而使得這些視頻序列的長度統(tǒng)一。然而這種處理方式會導(dǎo)致以下的不足之處:1)新構(gòu)建的視頻序列不能夠全面的表征手勢;2)不能夠依靠手勢動作中速度的變化去自動的捕獲視頻序列中的關(guān)鍵幀;3)由于需要預(yù)先獲知視頻的長度,因此并不能有效、實時的應(yīng)用于實際需求中。
技術(shù)實現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是,提供一種能夠解決手勢視頻序列識別問題,提高視頻序列分類準(zhǔn)確率的一種針對非等長視頻手勢識別的張量分解方法。
本發(fā)明所采用的技術(shù)方案是:一種針對非等長視頻手勢識別的張量分解方法,包括如下步驟:
1)將一個原始的視頻表示成一個三階張量其中I1,I2和T分別表示為一個視頻的寬度、高度和視頻幀數(shù),I1×I2表示視頻幀的大?。?/p>
2)對三階張量Α進(jìn)行Tucker分解獲得維度減少的核張量
3)求解核張量,通過動態(tài)學(xué)習(xí)更新結(jié)果直到算法收斂結(jié)果達(dá)到最優(yōu);
4)重復(fù)步驟1)~步驟3)將所有的視頻表示為相同大小的核張量,即將視頻序列縮放到相同尺度;
5)實現(xiàn)非等長條件下張量分解。
步驟2)所述的三階張量Α的核張量寫為如下形式:
其中,U3∈RK×T,令張量F=Α×1U1×2U1,則核張量簡寫為:
步驟3)所述的求解核張量,包括:
(1)初始化:給定原始三階張量Α,隨機(jī)初始化矩陣U1及U2;
(2)求解張量F:
F=Α×1U1×2U1 (3)
(3)求解U3,為了將視頻縮放到相同的尺度,對U3采用關(guān)鍵幀選擇方法,即采用稀疏編碼的方法從張量F中選取最優(yōu)的K個切片構(gòu)成基,其中,K<T,再用最優(yōu)的基重構(gòu)原始的視頻,對張量F按照時間域展開得到矩陣令設(shè)定目標(biāo)函數(shù)如下:
其中C為系數(shù)矩陣,為從G中選取的K列向量構(gòu)成的基,定義Sij={0,1},表示去掉G·S矩陣的全零列后構(gòu)成的大小為J1J2×K的矩陣;目標(biāo)函數(shù)中的第二項λ||C||2,1為系數(shù)矩陣C的約束條件,保證了系數(shù)矩陣C稀疏性,第三項保證了視頻信息的差異性,即盡可能多的保留原始視頻的有效信息;
利用如下的等價關(guān)系:
其中W為除對角線以外其余值均為1的矩陣,D為對角矩陣且對角線的值令L=D-W,則目標(biāo)函數(shù)轉(zhuǎn)化為如下形式:
存在線性映射G=f(B),滿足:
A(3)=GU3=(BC+E)U3 (7)
其中E表示誤差,則:
U3=(BC+E)+A(3) (8)
其中(BC+E)+為矩陣BC+E的偽逆;
通過從中隨機(jī)選擇K列初始化基B={b1,…,bk…,bK},再次轉(zhuǎn)化目標(biāo)函數(shù)為如下目標(biāo)函數(shù):
定義誤差函數(shù)通過如下函數(shù)尋找使得誤差函數(shù)e(bk)最小的列bp,即:
從基B中去掉使得誤差函數(shù)e(bk)最小的列bp得到
令選擇一個向量替換掉使得誤差函數(shù)e(bk)最小的列bp,即向量滿足如下條件:
然后迭代更新計算基B、系數(shù)矩陣C和矩陣S直至算法收斂;
利用U3=B+G求得U3,從而得到核張量
步驟5)所述的實現(xiàn)非等長條件下張量分解,是基于Tucker分解的基本形式進(jìn)行如下過程:
(1)將U1及U3作為已知求解U2;
(2)將U2及U3作為已知求解U1;
(3)重復(fù)第(1)~第(2)步直至收斂。
本發(fā)明的一種針對非等長視頻手勢識別的張量分解方法,降低了手勢識別的難度,提高了手勢識別的準(zhǔn)確性,為后續(xù)的視頻序列分類提供了良好的條件,能夠較大程度提升視頻序列分類的準(zhǔn)確率。
具體實施方式
下面結(jié)合實施例對本發(fā)明的一種針對非等長視頻手勢識別的張量分解方法做出詳細(xì)說明。
本發(fā)明的一種針對非等長視頻手勢識別的張量分解方法,包括如下步驟:
1)將一個原始的視頻表示成一個三階張量其中I1,I2和T分別表示為一個視頻的寬度、高度和視頻幀數(shù),I1×I2表示視頻幀的大??;
2)對三階張量Α進(jìn)行Tucker分解獲得維度減少的核張量所述的三階張量Α的核張量寫為如下形式:
其中,U3∈RK×T,令張量F=Α×1U1×2U1,則核張量簡寫為:
3)求解核張量,通過動態(tài)學(xué)習(xí)更新結(jié)果直到算法收斂結(jié)果達(dá)到最優(yōu),所述的求解核張量,包括:
(1)初始化:給定原始三階張量Α,隨機(jī)初始化矩陣U1及U2;
(2)求解張量F:
F=Α×1U1×2U1 (3)
(3)求解U3,為了將視頻縮放到相同的尺度,對U3采用關(guān)鍵幀選擇方法,即采用稀疏編碼的方法從張量F中選取最優(yōu)的K個切片(slice)構(gòu)成基,其中,K<T,再用最優(yōu)的基重構(gòu)原始的視頻,對張量F按照時間域展開得到矩陣令設(shè)定目標(biāo)函數(shù)如下:
其中C為系數(shù)矩陣,為從G中選取的K列向量構(gòu)成的基,定義Sij={0,1},表示去掉G·S矩陣的全零列后構(gòu)成的大小為J1J2×K的矩陣;目標(biāo)函數(shù)中的第二項λ||C||2,1為系數(shù)矩陣C的約束條件,保證了系數(shù)矩陣C稀疏性,第三項保證了視頻信息的差異性,即盡可能多的保留有效信息;
利用如下的等價關(guān)系:
其中W為除對角線以外其余值均為1的矩陣,D為對角矩陣且對角線的值令L=D-W,則目標(biāo)函數(shù)轉(zhuǎn)化為如下形式:
存在線性映射G=f(B),滿足:
A(3)=GU3=(BC+E)U3 (7)
其中E表示誤差,則:
U3=(BC+E)+A(3) (8)
其中(BC+E)+為矩陣BC+E的偽逆;
通過從中隨機(jī)選擇K列初始化基B={b1,…,bk…,bK},再次轉(zhuǎn)化目標(biāo)函數(shù)為如下目標(biāo)函數(shù):
定義誤差函數(shù)通過如下函數(shù)尋找使得誤差函數(shù)e(bk)最小的列bp,即:
從基B中去掉使得誤差函數(shù)e(bk)最小的列bp得到
令選擇一個向量替換使得誤差函數(shù)e(bk)最小的列bp,即向量滿足如下條件:
然后迭代更新計算基B、系數(shù)矩陣C和矩陣S直至算法收斂;
利用U3=B+G求得U3,從而得到核張量
4)重復(fù)步驟1)~步驟3)將所有的視頻表示為相同大小的核張量,即將視頻序列縮放到相同尺度;
5)實現(xiàn)非等長條件下張量分解,所述的實現(xiàn)非等長條件下張量分解,是基于Tucker分解的基本形式進(jìn)行如下過程:
(1)將U1及U3作為已知求解U2;
(2)將U2及U3作為已知求解U1;
(3)重復(fù)第(1)~第(2)步直至收斂。