人脸识别及数据流处理
文章目錄
- 人臉識別及數據流處理
- 1人臉識別
- 1.1 基礎簡介
- 1.1.1 人臉識別技術
- 1.1.2 技術介紹
- 1.2 原理
- 1.3識別過程
- 1.4 技術流程
- 1.4.1 人臉圖像采集及檢測
- 1.4.2 人臉圖像預處理
- 1.4.3 人臉圖像特征提取
- 1.4.4 人臉圖像匹配與識別
- 1.5 功能模塊
- 1.5.1 人臉捕獲與跟蹤功能
- 1.5.2 人臉識別對比
- 1.5.3 人臉的建模與檢索
- 1.5.4 真人鑒別功能
- 1.5.5 圖像質量檢測
- 1.6 分析算法
- 1.6.1 主要人臉識別方法
- 1.7 基礎小結
- 1.8 基于cv2 人臉識別的簡單例子
- 1.9 優缺點
- 2 視頻數據流處理
- 2.1 基本概念
- 2.2 視頻數據處理技術
- 2.2.1 視頻的編輯
- 2.2.2 視頻的壓縮
- 3 數據流處理相關概念
- 3.1 產生背景
- 3.2 區別特征
- 3.3 數據流分類
- 3.4 模型描述
- 3.5 相關思路
人臉識別及數據流處理
今天看了一些基礎的人臉識別概念知識,下面把內容復制粘貼過來一下,方便自己看一下吧,都是些百度百科上現有的理論知識。
1人臉識別
1.1 基礎簡介
1.1.1 人臉識別技術
人臉識別技術是指利用分析比較的計算機技術識別人臉。人臉識別是一項熱門的計算機技術研究領域,其中包括人臉追蹤偵測,自動調整影像放大,夜間紅外偵測,自動調整曝光強度等技術。
人臉識別技術屬于生物特征識別技術,是對生物體(一般特指人)本身的生物特征來區分生物體個體。
1.1.2 技術介紹
人臉識別技術是基于人的臉部特征,對輸入的人臉圖像或者視頻流 . 首先判斷其是否存在人臉 , 如果存在人臉,則進一步的給出每個臉的位置、大小和各個主要面部器官的位置信息。并依據這些信息,進一步提取每個人臉中所蘊涵的身份特征,并將其與已知的人臉進行對比,從而識別每個人臉的身份。
廣義的人臉識別實際包括構建人臉識別系統的一系列相關技術,包括人臉圖像采集、人臉定位、人臉識別預處理、身份確認以及身份查找等;而狹義的人臉識別特指通過人臉進行身份確認或者身份查找的技術或系統。
生物特征識別技術所研究的生物特征包括臉、指紋、手掌紋、虹膜、視網膜、聲音(語音)、體形、個人習慣(例如敲擊鍵盤的力度和頻率、簽字)等,相應的識別技術就有人臉識別、指紋識別、掌紋識別、虹膜識別、視網膜識別、語音識別(用語音識別可以進行身份識別,也可以進行語音內容的識別,只有前者屬于生物特征識別技術)、體形識別、鍵盤敲擊識別、簽字識別等。
1.2 原理
1.2.1 技術原理
人臉識別技術包括三個部分:人臉檢測、人臉跟蹤和人臉對比。
1)人臉檢測
面貌檢測是指在動態的場景與復雜的背景中判斷是否存在面像,并分離出這種面像。一般有下列幾種方法:
①參考模板法
首先設計一個或數個標準人臉的模板,然后計算測試采集的樣品與標準模板之間的匹配程度,并通過閾值來判斷是否存在人臉;
②人臉規則法
由于人臉具有一定的結構分布特征,所謂人臉規則的方法即提取這些特征生成相應的規則以判斷測試樣品是否包含人臉;
③樣品學習法
這種方法即采用模式識別中人工神經網絡的方法,即通過對面像樣品集和非面像樣品集的學習產生分類器;
④膚色模型法
這種方法是依據面貌膚色在色彩空間中分布相對集中的規律來進行檢測。
⑤特征子臉法
這種方法是將所有面像集合視為一個面像子空間,并基于檢測樣品與其在子空間的投影之間的距離判斷是否存在面像。
值得提出的是,上述5種方法在實際檢測系統中也可綜合采用。
2)人臉跟蹤
面貌跟蹤是指對被檢測到的面貌進行動態目標跟蹤。具體采用基于模型的方法或基于運動與模型相結合的方法。此外,利用膚色模型跟蹤也不失為一種簡單而有效的手段。
3)人臉對比
面貌比對是對被檢測到的面貌像進行身份確認或在面像庫中進行目標搜索。這實際上就是說,將采樣到的面像與庫存的面像依次進行比對,并找出最佳的匹配對象。所以,面像的描述決定了面像識別的具體方法與性能。主要采用特征向量與面紋模板兩種描述方法:
①特征向量法
該方法是先確定眼虹膜、鼻翼、嘴角等面像五官輪廓的大小、位置、距離等屬性,然后再計算出它們的幾何特征量,而這些特征量形成一描述該面像的特征向量。
②面紋模板法
該方法是在庫中存貯若干標準面像模板或面像器官模板,在進行比對時,將采樣面像所有象素與庫中所有模板采用歸一化相關量度量進行匹配。此外,還有采用模式識別的自相關網絡或特征與模板相結合的方法。
人臉識別技術的核心實際為“局部人體特征分析”和“圖形/神經識別算法。”這種算法是利用人體面部各器官及特征部位的方法。如對應幾何關系多數據形成識別參數與數據庫中所有的原始參數進行比較、判斷與確認。一般要求判斷時間低于1秒。
1.3識別過程
一般分三步:
(1)首先建立人臉的面像檔案。即用攝像機采集單位人員的人臉的面像文件或取他們的照片形成面像文件,并將這些面像文件生成面紋(Faceprint)編碼貯存起來。
(2)獲取當前的人體面像。即用攝像機捕捉的當前出入人員的面像,或取照片輸入,并將當前的面像文件生成面紋編碼。
(3)用當前的面紋編碼與檔案庫存的比對。即將當前的面像的面紋編碼與檔案庫存中的面紋編碼進行檢索比對。上述的“面紋編碼”方式是根據人臉臉部的本質特征和開頭來工作的。這種面紋編碼可以抵抗光線、皮膚色調、面部毛發、發型、眼鏡、表情和姿態的變化,具有強大的可靠性,從而使它可以從百萬人中精確地辨認出某個人。人臉的識別過程,利用普通的圖像處理設備就能自動、連續、實時地完成。
1.4 技術流程
人臉識別系統主要包括四個組成部分,分別為:人臉圖像采集及檢測、人臉圖像預處理、人臉圖像特征提取以及匹配與識別。
1.4.1 人臉圖像采集及檢測
人臉圖像采集:不同的人臉圖像都能通過攝像鏡頭采集下來,比如靜態圖像、動態圖像、不同的位置、不同表情等方面都可以得到很好的采集。當用戶在采集設備的拍攝范圍內時,采集設備會自動搜索并拍攝用戶的人臉圖像。
人臉檢測:人臉檢測在實際中主要用于人臉識別的預處理,即在圖像中準確標定出人臉的位置和大小。人臉圖像中包含的模式特征十分豐富,如直方圖特征、顏色特征、模板特征、結構特征及Haar特征等。人臉檢測就是把這其中有用的信息挑出來,并利用這些特征實現人臉檢測。
主流的人臉檢測方法基于以上特征采用Adaboost學習算法,Adaboost算法是一種用來分類的方法,它把一些比較弱的分類方法合在一起,組合出新的很強的分類方法。
人臉檢測過程中使用Adaboost算法挑選出一些最能代表人臉的矩形特征(弱分類器),按照加權投票的方式將弱分類器構造為一個強分類器,再將訓練得到的若干強分類器串聯組成一個級聯結構的層疊分類器,有效地提高分類器的檢測速度。
1.4.2 人臉圖像預處理
人臉圖像預處理:對于人臉的圖像預處理是基于人臉檢測結果,對圖像進行處理并最終服務于特征提取的過程。系統獲取的原始圖像由于受到各種條件的限制和隨機 干擾,往往不能直接使用,必須在圖像處理的早期階段對它進行灰度校正、噪聲過濾等圖像預處理。對于人臉圖像而言,其預處理過程主要包括人臉圖像的光線補償、灰度變換、直方圖均衡化、歸一化、幾何校正、濾波以及銳化等。
1.4.3 人臉圖像特征提取
人臉圖像特征提取:人臉識別系統可使用的特征通常分為視覺特征、像素統計特征、人臉圖像變換系數特征、人臉圖像代數特征等。人臉特征提取就是針對人臉的某些特征進行的。人臉特征提取,也稱人臉表征,它是對人臉進行特征建模的過程。人臉特征提取的方法歸納起來分為兩大 類:一種是基于知識的表征方法;另外一種是基于代數特征或統計學習的表征方法。
基于知識的表征方法主要是根據人臉器官的形狀描述以及他們之間的距離特性來獲得有助于人臉分類的特征數據,其特征分量通常包括特征點間的歐氏距離、曲率和角度等。人臉由眼睛、鼻子、嘴、下巴等局部構成,對這些局部和它們之間結構關系的幾何描述,可作為識別人臉的重要特征,這些特征被稱為幾何特征。基于知識的人臉表征主要包括基于幾何特征的方法和模板匹配法。
1.4.4 人臉圖像匹配與識別
人臉圖像匹配與識別:提取的人臉圖像的特征數據與數據庫中存儲的特征模板進行搜索匹配,通過設定一個閾值,當相似度超過這一閾值,則把匹配得到的結果輸出。人臉識別就是將待識別的人臉特征與已得到的人臉特征模板進行比較,根據相似程度對人臉的身份信息進行判斷。這一過程又分為兩類:一類是確認,是一對一進行圖像比較的過程,另一類是辨認,是一對多進行圖像匹配對比的過程。
1.5 功能模塊
1.5.1 人臉捕獲與跟蹤功能
人臉捕獲是指在一幅圖像或視頻流的一幀中檢測出人像并將人像從背景中分離出來,并自動地將其保存。人像跟蹤是指利用人像捕獲技術,當指定的人像在攝像頭拍攝的范圍內移動時自動地對其進行跟蹤。
1.5.2 人臉識別對比
人臉識別分核實式和搜索式二種比對模式。核實式是對指將捕獲得到的人像或是指定的人像與數據庫中已登記的某一對像作比對核實確定其是否為同一人。搜索式的比對是指,從數據庫中已登記的所有人像中搜索查找是否有指定的人像存在。
1.5.3 人臉的建模與檢索
可以將登記入庫的人像數據進行建模提取人臉的特征,并將其生成人臉模板(人臉特征文件)保存到數據庫中。在進行人臉搜索時(搜索式),將指定的人像進行建模,再將其與數據庫中的所有人的模板相比對識別,最終將根據所比對的相似值列出最相似的人員列表。
1.5.4 真人鑒別功能
系統可以識別得出攝像頭前的人是一個真正的人還是一幅照片。以此杜絕使用者用照片作假。此項技術需要使用者作臉部表情的配合動作。
1.5.5 圖像質量檢測
圖像質量的好壞直接影響到識別的效果,圖像質量的檢測功能能對即將進行比對的照片進行圖像質量評估,并給出相應的建議值來輔助識別
1.6 分析算法
人臉識別技術中被廣泛采用的區域特征分析算法,它融合了計算機圖像處理技術與生物統計學原理于一體,利用計算機圖像處理技術從視頻中提取人像特征點,利用生物統計學的原理進行分析建立數學模型,即人臉特征模板。利用已建成的人臉特征模板與被測者的人的面像進行特征分析,根據分析的結果來給出一個相似值。通過這個值即可確定是否為同一人。
1.6.1 主要人臉識別方法
(1)幾何特征的人臉識別方法:
幾何特征可以是眼、鼻、嘴等的形狀和它們之間的幾何關系(如相互之間的距離)。這些算法識別速度快,需要的內存小,但識別率較低。
(2)基于特征臉(PCA)的人臉識別方法:
特征臉方法是基于KL變換的人臉識別方法,KL變換是圖像壓縮的一種最優正交變換。高維的圖像空間經過KL變換后得到一組新的正交基,保留其中重要的正交基,由這些基可以張成低維線性空間。如果假設人臉在這些低維線性空間的投影具有可分性,就可以將這些投影用作識別的特征矢量,這就是特征臉方法的基本思想。這些方法需要較多的訓練樣本,而且完全是基于圖像灰度的統計特性的。目前有一些改進型的特征臉方法。
(3)神經網絡的人臉識別方法:
神經網絡的輸入可以是降低分辨率的人臉圖像、局部區域的自相關函數、局部紋理的二階矩等。這類方法同樣需要較多的樣本進行訓練,而在許多應用中,樣本數量是很有限的。
(4)彈性圖匹配的人臉識別方法:
彈性圖匹配法在二維的空間中定義了一種對于通常的人臉變形具有一定的不變性的距離,并采用屬性拓撲圖來代表人臉,拓撲圖的任一頂點均包含一特征向量,用來記錄人臉在該頂點位置附近的信息。該方法結合了灰度特性和幾何因素,在比對時可以允許圖像存在彈性形變,在克服表情變化對識別的影響方面收到了較好的效果,同時對于單個人也不再需要多個樣本進行訓練。
(5)線段Hausdorff 距離(LHD) 的人臉識別方法:
心理學的研究表明,人類在識別輪廓圖(比如漫畫)的速度和準確度上絲毫不比識別灰度圖差。LHD是基于從人臉灰度圖像中提取出來的線段圖的,它定義的是兩個線段集之間的距離,與眾不同的是,LHD并不建立不同線段集之間線段的一一對應關系,因此它更能適應線段圖之間的微小變化。實驗結果表明,LHD在不同光照條件下和不同姿態情況下都有非常出色的表現,但是它在大表情的情況下識別效果不好。
(6)支持向量機(SVM) 的人臉識別方法:
支持向量機是統計模式識別領域的一個新的熱點,它試圖使得學習機在經驗風險和泛化能力上達到一種妥協,從而提高學習機的性能。支持向量機主要解決的是一個2分類問題,它的基本思想是試圖把一個低維的線性不可分的問題轉化成一個高維的線性可分的問題。通常的實驗結果表明SVM有較好的識別率,但是它需要大量的訓練樣本(每類300個),這在實際應用中往往是不現實的。而且支持向量機訓練時間長,方法實現復雜,該函數的取法沒有統一的理論。
1.7 基礎小結
一般來說,人臉識別系統包括圖像攝取、人臉定位、圖像預處理、以及人臉識別(身份確認或者身份查找)。系統輸入一般是一張或者一系列含有未確定身份的人臉圖像,以及人臉數據庫中的若干已知身份的人臉圖象或者相應的編碼,而其輸出則是一系列相似度得分,表明待識別的人臉的身份。
人臉識別的算法可以分類為:
基于人臉特征點的識別算法(Feature-based recognition algorithms)。
基于整幅人臉圖像的識別算法(Appearance-based recognition algorithms)。
基于模板的識別算法(Template-based recognition algorithms)。
利用神經網絡進行識別的算法(Recognition algorithms using neural network)
1.8 基于cv2 人臉識別的簡單例子
import cv2 # 打開顯示圖片 # #讀取圖片 # image=cv2.imread('img/obama.jpg') # #顯示圖片窗口 # cv2.imshow('faces',image) # #窗口暫停 # cv2.waitKey(0) # #銷毀窗口資源 # cv2.destoryAllWindows() # # 識別圖片上的人臉 #讀取圖片 image=cv2.imread('img/obama.jpg') #加載人臉模型庫 #自己找到自己安裝的文件未知 face_model=cv2.CascadeClassifier('plugins/opencv/haarcascade_frontalcatface.xml') face_model=cv2.CascadeClassifier('E:/anaconda/Lib/site-packages/cv2/data/haarcascade_frontalcatface.xml') #圖片進行灰度處理 gray = cv2.cvtColor(image,cv2.COLOR_RGB2GRAY) #人臉檢測 faces = face_model.detectMultiScale(gray) #標記人臉 for (x,y,w,h) in faces:#1.原始圖片;2坐標點;3.矩形寬高 4.顏色值(RGB);5.線框cv2.rectangle(image,(x,y),(x+w,y+h),(0,255,0),2) #顯示圖片窗口 cv2.imshow('faces',image) #窗口暫停 cv2.waitKey(0) #銷毀窗口 cv2.destroyAllWindows()結果展示:
1.9 優缺點
人臉識別優點
相比較其他生物識別技術而言:
非接觸的,用戶不需要和設備直接接觸;
非強制性,被識別的人臉圖像信息可以主動獲取;
并發性,即實際應用場景下可以進行多個人臉的分揀、判斷及識別。
人臉識別的弱點
對周圍的光線環境敏感,可能影響識別的準確性;
人體面部的頭發、飾物等遮擋物,人臉變老等因素,需要進行人工智能補償;(如可通過識別人臉的部分關鍵特性做修正)。
2 視頻數據流處理
視頻信號有模擬信號和數字信號之分,視頻處理泛指對視頻信息的所有操作,視頻數據處理技術包括視頻的編輯、視頻的壓縮等方面,目的是增強視頻的觀賞性。視頻數據處理軟件主要包括5種:Adobe Premiere、Ulead Media Studio Pro、Ulead Video Studio、Windows Movie Maker、Pinnacle Studio。數字化的視頻編輯技術不僅讓人們體驗到了前所未有的視覺沖擊效果,也為人們的日常生活帶來了無窮的樂趣。
2.1 基本概念
1)視頻信號
視頻信號有模擬信號和數字信號之分,模擬視頻信號就是常見的電視信號,采用的模擬方式對圖像進行還原處理,這種圖像被稱為視頻模擬圖像。
2)視頻文件
視頻文件主要包括兩類,即動畫文件和影像文件,動畫文件是指由相互關聯的若干個靜止的圖像組成的圖像序列,這些靜止的圖像序列連續播放時形成了動畫;影像文件是指包含實時的音頻和視頻信息的多媒體文件,其多媒體信息通常通過視頻輸入設備輸入到計算機中,該類型的文件包含的信息豐富,文件較大。
3)視頻素材的采集
視頻素材的采集分為從模擬視頻設備中采集和從數字視頻中采集兩種方式。
4)視頻文件格式
常見的視頻文件格式有7種:
(1)AVI,英文全稱為Audio Video Interleaved,即音頻視頻交錯格式;
(2)MOV,MOV是Quick Time for Windows視頻處理軟件使用的視頻文件格式;
(3)MPG,MPG采用MPEG標準,該類型的文件采用高密度壓縮比;
(4)ASF,英文全稱為Advanced Streaming Format,它是微軟為了和Real Player競爭而推出的一種視頻格式;
(5)WMV,英文全稱為Windows Media Video,也是微軟推出的一種采用獨立編碼方式并且可以直接在網上實時觀看視頻節目的文件壓縮格式;
(6)RM,英文全稱為Real Media;
(7)RMVB格式,它是由RM視頻格式升級延伸出的新視頻格式;
2.2 視頻數據處理技術
視頻處理泛指對視頻信息的所有操作,視頻處理技術包括視頻的編輯、視頻的壓縮等方面,目的是增強視頻的觀賞性。
2.2.1 視頻的編輯
采集到的數字視頻文件一般要經過編輯加工后,才能在多媒體系統中使用。數字視頻的編輯工作主要靠軟件來完成,常見的視頻編輯操作有如下幾種:
(1)基本編輯。
視頻的基本編輯主要是針對選取的視頻片段進行編排、剪切、復制等操作。在時間軸上將視頻片段從頭到尾排列,形成從頭到尾連續播放的視頻節目。
(2)過渡特技。
視頻是一組連續播放的畫面,兩個場景之間如果直接連接起來,在許多情況下會感到突兀,剪輯時如果畫面間的連接不當,會造成跳動、畫面拖沓等感覺。使用過渡特技可以使畫面連接自然流暢。
(3)視頻特技。
視頻特技是指對片段本身做的處理,如透明處理、運動處理、速度處理、色彩處理等。透明效果可以將兩個片段的畫面內容疊加在一起,常用在表示回憶的場景中。運動處理可以使靜止的畫面移動。
(4)字幕。
視頻上疊加的文字稱為字幕。在電視節目、廣告、卡拉0K等視頻中常常使用字幕顯示相關的文字信息。視頻中出現的文字在畫面變化的情況下要保持一段時間,不同的畫面內容要配合顯示不同的文字說明,不僅是文字,圖形、照片、標記等都可以作為字幕放在視頻作品中。字幕可以向臺標一樣靜止在屏幕一角,也可以做成節目結束后滾動的工作人員名單。字幕可以選用不同的出現方式,如:移入、溶解、放大、縮小、旋轉、変色等,以產生不同的視覺效果。
(5)配音。
視頻節目制作中除了音樂之外,往往還需要添加適當的配音進行旁白。在錄制節目的同時錄下當時的環境聲音稱為同期聲,編輯時可以單獨處理,進行剪輯或添加效果,也可以為語音解說配上背景音樂。
2.2.2 視頻的壓縮
數字化的視頻信號以視頻文件形式存儲在磁盤上,所占硬盤空間非常大,而視頻經過壓縮后,存儲時會更方便。數字視頻壓縮以后并不影響其最終的視覺效果,原因是它利用人的心理視覺冗余進行壓縮處理。所謂心理視覺冗余是指眼睛并不是對所有信息有相同的敏感度,有些信息通常在視覺過程中與另外一些信息相比來說并不是那么重要。
視頻壓縮的目標是在盡可能保證視覺效果的前提下減少視頻數據率。視頻壓縮比一般是指壓縮后的數據量與壓縮前的數據量之比。標準的數字攝像機的壓縮率為5:1,有的格式可使視頻的壓縮率達到100:1,但過分壓縮也不是件好事。因為壓縮得越多,丟失的數據就越多。由于視頻是連續的靜態圖像,因此其壓縮編碼算法與靜態圖像的壓縮編碼算法有某些共同之處,但是運動的視頻還有其自身的特性,因此在壓縮時還應考慮其運動特性才能達到高壓縮的目標。視頻壓縮的相關概念如下:
(1)有損和無損壓縮。
在視頻壓縮中有損和無損的概念與靜態圖像中基本裝似。無損壓縮即壓縮前和解壓縮后的數據完全一致。多數的無損壓縮都來用RLE行程編碼算法。有損壓縮意味著解壓縮后的數據與壓縮前的數據不一致。在壓縮的過程中要丟失一些人眼和人耳所不敏感的圖像或音頻信息,而且丟失的信息不可恢復。幾乎所有高壓縮的算法都采用有損壓縮,這樣才能達到低數據率的目標。丟失的數據率與壓縮比有關,壓縮比越小,丟失的數據越多,解壓縮后的效果一般越差。此外,某些有損壓縮算法采用多次重復壓縮的方式。這樣還會引起額外的數據丟失。
(2)幀內和幀間壓縮。
幀內壓縮也稱為空間壓縮。當壓縮一幀圖像時,僅考慮本幀的數據而不考慮相鄰幀之間的冗余信息,這實際上與靜態圖像壓縮類似。幀內一般采用有損壓縮算法,由于幀內壓縮時各個幀之間沒有相互關系,所以壓縮后的視頻資料仍可以以幀為單位進行編輯。幀內壓縮一般達不到很高的壓縮。
幀間壓縮是基于許多視頻或動畫的連續前后兩幀具有很大的相關性,或者說前后兩幀信息變化很小的特點,即連續的視頻其相鄰兩幀之同具有冗余信息,根據這一特性,壓縮相鄰幀之間的冗余量就可以進一步提高壓縮量,減小壓縮比。幀間壓縮也稱為時間壓縮,它通過比較時間軸上不同幀之間的數據進行壓縮。幀間壓縮一般是無損的。幀差值算法是一種典型的時間壓縮法,它通過比較本幀與相幀之間的差異,僅記錄本幀與其相鄰幀的差值,這樣可以大大減少數據量。
(3)對稱和不對稱編碼。
對稱性是壓縮編碼的一個關鍵特征。對稱意味著壓縮和解壓縮占用相同的計算處理能力和時間,對稱算法適合于實時壓縮和傳送視頻,如視頻會議應用就以采用對稱的壓縮編碼算法為好。而在電子出版和其他多媒體應用中,一般是把視頻預先壓縮處理好,然后再播放,因此可以采用不對稱編碼。不對稱或非對稱意味著壓縮時需要花費大量的處理能力和時間,而解壓縮時則能較好地實時回放,即以不同的速度進行壓縮和解壓縮。一般來說,壓縮一段視頻的時間比回放(解壓縮)該視頻的時間要多得多。例如,壓縮一段3分鐘的視頻片斷可能需要10多分鐘的時間,而該片斷實時回放時間只有3分鐘。
有多種視頻壓縮編碼方法,但其中最有代表性的是MPEG數字視頻格式和AVI數字視頻格式。
3 數據流處理相關概念
3.1 產生背景
數據流應用的產生的發展是以下兩個因素的結果:
細節數據
已經能夠持續自動產生大量的細節數據。這類數據最早出現于傳統的銀行和股票交易領域,后來則也出現為地質測量、氣象、天文觀測等方面。尤其是互聯網(網絡流量監控,點擊流)和無線通信網(通話記錄)的出現,產生了大量的數據流類型的數據。我們注意到這類數據大都與地理信息有一定關聯,這主要是因為地理信息的維度較大,容易產生這類大量的細節數據。
復雜分析
需要以近實時的方式對更新流進行復雜分析。對以上領域的數據進行復雜分析(如趨勢分析,預測)以前往往是(在數據倉庫中)脫機進行的,然而一些新的應用(尤其是在網絡安全和國家安全領域)對時間都非常敏感,如檢測互聯網上的極端事件、欺詐、入侵、異常,復雜人群監控,趨勢監控(track trend),探查性分析(exploratory analyses),和諧度分析(harmonic analysis)等,都需要進行聯機的分析。
在此之后,學術界基本認可了這個定義,有的文章也在此基礎上對定義稍微進行了修改。例如,S. Guha等[88]認為,數據流是“只能被讀取一次或少數幾次的點的有序序列”,這里放寬了前述定義中的“一遍”限制。
為什么在數據流的處理中,強調對數據讀取次數的限制呢?S. Muthukrishnan[89]指出數據流是指“以非常高的速度到來的輸入數據”,因此對數據流數據的傳輸、計算和存儲都將變得很困難。在這種情況下,只有在數據最初到達時有機會對其進行一次處理,其他時候很難再存取到這些數據(因為沒有也無法保存這些數據)。
3.2 區別特征
與傳統的關系數據模式區別
B.Babcock等[90]認為數據流模式在以下幾個方面不同于傳統的關系數據模式:
三個特征
當前所研究的數據流計算之所以不同于傳統的計算模式,關鍵在于這些數據流數據本身具有如下三個特點:
數據的到達—快速
這意味著短時間內可能會有大量的輸入數據需要處理。這對處理器和輸入輸出設備來說都是一個較大的負擔,因此對數據流的處理應盡可能簡單
數據的范圍—廣域
這是指數據屬性(維)的取值范圍非常大,可能取的值非常多,如地域、手機號碼、人、網絡節點等。這才是導致數據流無法在內存或硬盤中存儲的主要原因。如果維度小,即使到來的數據量很大,也可以在較小的存儲器中保存這些數據。例如,對于無線通信網來說,同樣的100萬條通話記錄,如果只有1000個用戶,那么使用1000個存儲單位就可以保存足夠多和足夠精確的數據來回答“某一用戶的累計通話時間有多長”的問題;而如果共有100000個用戶,要保存這些信息,就需要100000個存儲單位。數據流數據的屬性大多與地理信息、IP地址、手機號碼等有關,而且往往與時間聯系在一起。這時,數據的維度遠遠超過了內存和硬盤容量,這意味著系統無法完整保存這些信息,通常只能在數據到達的時候存取數據一次。
數據到達的時間—持續
數據的持續到達意味著數據量可能是無限的。而且,對數據進行處理的結果不會是最終的結果,因為數據還會不斷地到達。因此,對數據流的查詢的結果往往不是一次性而是持續的,即隨著底層數據的到達而不斷返回最新的結果。
以上數據流的特點決定了數據流處理的特點一次存取,持續處理,有限存儲, 近似結果,快速響應。
近似結果是在前三個條件限制下產生的必然結果。由于只能存取數據一次,而且只有相對較小的有限空間存儲數據,因此產生精確的計算結果通常是不可能的。而將對結果的要求從過去的“精確”改為“近似”后,實現數據流查詢的快速響應也就成為了可能。
3.3 數據流分類
數據的性質、格式不同,則對流的處理方法也不同,因此,在Java的輸入/輸出類庫中,有不同的流類來對應不同性質的輸入/輸出流。在java.io包中,基本輸入/輸出流類可按其讀寫數據的類型之不同分為兩種:字節流和字符流。
輸入流與輸出流
數據流分為輸入流(InputStream)和輸出流(OutputStream)兩類。輸入流只能讀不能寫,而輸出流只能寫不能讀。通常程序中使用輸入流讀出數據,輸出流寫入數據,就好像數據流入到程序并從程序中流出。采用數據流使程序的輸入輸出操作獨立與相關設備。
輸入流可從鍵盤或文件中獲得數據,輸出流可向顯示器、打印機或文件中傳輸數據。緩沖流
為了提高數據的傳輸效率,通常使用緩沖流(Buffered Stream),即為一個流配有一個緩沖區(buffer),一個緩沖區就是專門用于傳輸數據的內存塊。當向一個緩沖流寫入數據時,系統不直接發送到外部設備,而是將數據發送到緩沖區。緩沖區自動記錄數據,當緩沖區滿時,系統將數據全部發送到相應的設備。
當從一個緩沖流中讀取數據時,系統實際是從緩沖區中讀取數據。當緩沖區空時,系統就會從相關設備自動讀取數據,并讀取盡可能多的數據充滿緩沖區。
3.4 模型描述
們試圖從數據集合、數據屬性和計算類型三個不同方面對數據流的模型進行歸納和描述。實際上,很多文章提出了各種各樣的數據流模型,我們并沒有包括所有這些模型,只是將其中比較重要的和常見的進行了歸納和分類。
形式化
數據集合
我們首先考慮在進行數據流計算時,有哪些數據被包含在計算范圍之內。關于這個問題,主要有三種不同的模型:分別是數據流模型(data stream model)、滑動窗口模型(sliding window model)和n-of-N模型。
數據流模型(data stream model)在數據流模型中,從某個特定時間開始的所有數據都要被納入計算范圍。此時,s=0,即在時刻0,α是0向量。即這是數據流最初和最普遍的模型。
滑動窗口模型(sliding window model ,計算最近的N個數據)滑動窗口模型是指,從計算時算起,向前追溯的N個數據要被納入計算范圍。此時,s = t . N,即在時刻t . N,α是0向量。換句話說,要計算最近的N個數據。由于數據流的數據是不斷涌現的,所以直觀的看,這種模式就像用一個不變的窗口,數據隨時間的推移經過窗口,出現窗口內的數據就是被計算的數據集合。M. Datar等[91]首先提出這一模式,隨后得到了廣泛響應。
n-of-N模型(計算最近的n個數據,其中0 <n ≤ N),這種模型建立在滑動窗口模型的基礎之上,比滑動窗口模型更為靈活:被納入計算范圍的是從計算時算起,向前追溯的n個數據。此時,s = t . n,即在時刻t . n,α是0向量。注意,其中n ≤ N,而且是可以隨查詢要求變化的。而在滑動窗口模型中,n = N而且是固定不變的。對于數據流處理系統來說,要能夠回答所有長度小于等于N的滑動窗口問題。
數據屬性
數據本身的特征:
時間序列(time series model) 數據按照其屬性(實際上就是時間)的順序前來。在這種情況下,i = t,即一個t時刻的更新為(t, ct)。此時對α的更新操作為αt(t)= ct, 且對于i. =.t,αi. (t)= αi. (t . 1)。這種模型適用于時序數據,如某特定IP的傳出的數據,或股票的定期更新數據等。
收款機模型(cash register model) 同一屬性的數據相加,數據為正。在這種模型中,ct >=0。這意味著對于所有的i和t來說,αi(t)總是不小于零,而且是遞增的。實際上,這種模型被認為是最常用的,例如可以用于對收款機(收款機模型由此得名),各個IP的網絡傳輸量,手機用戶的通話時長的監控等等。
十字轉門模型(turnstile model) 同一屬性的數據相加,數據為正或負。在這種模型中,ct可以大于0也可以小于0。這是最通用的模型。S. Muthukrishnan[89]稱其為十字轉門模型起因于這種模型的功能就象地鐵站的十字轉門,可以用來計算有多少人到達和離開,從而得出地鐵中的人數。
計算類型
對數據流數據的計算可以分為兩類:基本計算和復雜計算。基本計算主要包括對點查詢、范圍查詢和內積查詢這三種查詢的計算。復雜計算包括對分位數的計算、頻繁項的計算以及數據挖掘等。
3.5 相關思路
簡介
數據流處理過程中的主要難點在于如何將存儲數據所花費的空間控制在一定范圍之內。查詢響應時間問題雖然也很重要,但相對容易解決。作為研究領域的一個熱點,數據流處理問題得到了廣泛的研究,出現了很多算法。
解決數據流龐大的數據量與有限的存儲空間之間的矛盾的一個思路是使用采樣,另一個思路是,構造一個小的、能提供近似結果的數據結構存放壓縮的數據流數據,這個結構能存放在存儲器中。略圖(Sketch)、直方圖(histogram)和小波(wavelet)實際上就都是這樣的數據結構中最重要的三種。
以上方法實際上大都已用于傳統數據庫領域,問題在于如何將它們應用于數據流的特殊環境。
隨機采樣
隨機采樣(Random sampling)可以通過抽取少量樣本來捕捉數據集合的基本特性。一個很常見的簡單方法就是一致性采樣(uniform sample)。作為一個備選的采樣方法分層采樣(strati.ed sampling)可以減少數據的不均勻分布所帶來的誤差。不過,對于復雜的分析,普通的采樣算法還是需要太大的空間。
對于數據流的一些特殊計算,已經出現了一些有趣的采樣算法。粘采樣(Sticky sampling)[95]用于頻繁項(frequent items)的計算。粘采樣使用的方法是,在內存中存放二元組(i,f)所構成的集合S,對于每到來的一個數據,如果其鍵i已經存在于S,則對應的f加1;否則,以1 r 的概率進行采樣,如果該項被選中,在S中增加一組(i,1);每過一段時間,對S中的組進行一遍掃描,對其中的值進行更新。然后增加r的值;結束(或用戶要求結果)時,輸出所有f.(s-e)N的組。
. Gibbons提出的distinct sampling[104]用于distinct counting ,即找出數據流中不同值的個數。它使用哈希(hash )函數對每一個到來的不同值以2.(i+1)的概率映射到級別i上;如果i ≥內存級別L(L的初始值為0),將其加入內存,否則拋棄;內存滿時,將內存中級別為L的值刪除,并將L加1;最終對distinct count的估計為內存中不同的值乘以2L。distinct counting是數據庫處理中的一個老問題,這種算法的優點是,通過設置合適的參數,可應用于帶謂詞的查詢(即對數據流的一個子集進行distinct counting)。
采樣算法的缺點是:它們對異常數據不夠敏感。而且,即使它們可以很好的應用于普通的數據流模型,但如果要用于滑動窗口模型(sliding window model)[91] 或n-of-N模型[93],還需要進行較大的修改。
構造略圖
構造略圖(sketching)是指使用隨機映射(Random projections)將數據流投射在一個小的存儲空間內作為整個數據流的概要,這個小空間存儲的概要數據稱為略圖,可用于近似回答特定的查詢。不同的略圖可用于對數據流的不同Lp范數的估算,進而這些Lp范數可用于回答其它類型的查詢。如L0范數可用于估算數據流的不同值(distinct count);L1范數可用于計算分位數(quantile)和頻繁項(frequent items);L2范數可用于估算自連接的長度等等。
直方圖
直方圖(histogram)有兩個含義:一個是普通意義上的直方圖,是一種用于顯示近似統計的視覺手段;另外,它還是一種捕捉數據的近似分布的數據結構/方法。作為后者出現時時,直方圖是這樣構造的:將數據按其屬性分到多個不相交的子集(稱為桶)并用某種統一的方式近似表示桶中的值[107]。
直方圖方法主要用于信號處理、統計、圖像處理、計算機視覺和數據庫。在數據庫領域,直方圖原先主要用于選擇性估計(selectivity estimation),用于選擇查詢優化和近似查詢處理。直方圖是一種最簡單、最靈活的近似處理方法,同時也是最有效的一種。只要解決好數據更新問題,就可以將原有的直方圖運用到數據流處理中。這類根據新的數據自動調節的直方圖被稱為動態(或自適應/自調節)直方圖。
L. Fu等[108]提出的直方圖主要用于中值函數(Median )和其他分位數函數的計算,可用于近似計算,也可用于精確查詢。它通過確定性分桶(Deterministic Bucketing )和隨機分桶(Randomized Bucketing )技術,構造多個不同精度的桶(buckets),然后將輸入數據逐級分到這些桶中,從而完成了動態直方圖的構造。
由于將靜態直方圖直接應用到數據流處理比較困難。S. Guha等[88]雖然可以動態地構造近最優的V-optimal 直方圖,但只能應用于時間序列模型(time series model) 下的數據流。
一個常采用的方法是將整個算法分為兩步:首先構造一個數據流數據的略圖;然后從這個略圖中構造合適的直方圖。這種方法可以利用略圖數據易于更新的特點,又能實現直方圖的動態化。N. Thaper等[109]首先是構造一個近似反映數據流數據的略圖,利用略圖的優良的更新性能來實現數據的更新,然后從這個略圖中導出一個直方圖來實現對數據流數據的近似。由于從略圖中導出最佳的直方圖是一個NP-hard問題,作者提供了一個啟發式算法(貪婪算法)來搜索一個較佳的直方圖。
A. Gilbert等[110]構造了一個概要的數據結構,該結構使用一組與文獻[106]中類似的隨機和結構來保存不同粒度級別的dyadic interval的值。隨后,將不同粒度級別的dyadic interval([111])從大到小地加入所要構造的直方圖中,這樣就將近似誤差降到最低(求精)。
A. Gilbert等在文獻[112]中主要考慮的是如何降低對數據流中每個輸入數據的處理復雜度。他們先將輸入數據轉化為小波系數(利用小波系數是信號與基向量的內積),然后采用了與文獻[110]類似的dyadic interval處理方法。略圖與直方圖有很密切的聯系,從某種方面來說,可以認為直方圖是略圖的一種特殊情況。
小波變換
小波變換(wavelet transformation)常用于生成數據的概要信息。這是因為通常小波系數只有很少一部分是重要的,大部分系數或者值很小,或者本身不重要。所以,如果忽略數據經過小波變換后生成的不重要系數,就可以使用很少的空間完成對原數據的近似。
Y. Matias等首先針對數據流數據構造一個直方圖,使用小波對其進行模擬。隨后保留若干最重要的小波系數實現對直方圖的模擬。當新的數據出現時,通過對這些小波系數進行更新以實現直方圖的更新。
文獻提出的實際上是一種直方圖方法,只不過使用了小波變換。A. Gilbert等指出小波變換可以認為是信號與一組正交的長度為N的向量集合所作的內積,因此構造一組數據流數據的略圖,由于略圖可以相當容易和準確地計算信號與一組向量的內積,則可以從略圖計算出小波系數,從而用于點查詢和范圍查詢的估計。
總結
以上是生活随笔為你收集整理的人脸识别及数据流处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不知道为什么IList.Contains
- 下一篇: 基于FPGA的人脸识别