不知大家是否有注意到,最近幾年攝像頭的功能變得越來越強大。以身邊最常見的手機為例,幾年前手機的攝像頭僅限於拍照與攝像,而如今的手機攝像頭除了在這些基礎功能上做了優化,更具備了包括面部識別、二維碼掃描、拍照識別物體等一系列曾經難以想像的功能,這些強大功能背後的技術基礎,就是我們今天文章的主角——計算機視覺。
作為人工智慧的重要分支之一,計算機視覺與語音識別、自然語言處理等技術一同構成了人工智慧的感知基礎,賦予了計算機「看」的能力。史丹福大學教授李飛飛將這種的能力稱作「計算機科學領域最前沿的、具有革命性潛力的科技」。作為人類視覺的延伸,計算機視覺技術目前已經在人臉識別、圖像識別等領域有了大規模的應用,並逐步滲透到無人駕駛、智能安防以及智能家居等眾多領域當中。
下面,讓我們從計算機視覺的概念、新一代計算機視覺以及泛布計算的落地應用三方面出發,來簡單了解一下。
人類視覺與計算機視覺
計算機視覺(Computer Vision, CV)是一個跨領域的交叉學科,包括了計算機科學(圖形、算法、理論、系統、體系結構),數學(信息檢索、機器學習),工程學(機器人、語音、自然語言處理、圖像處理),物理學(光學 ),生物學(神經科學)和心理學(認知科學)等學科的知識。許多科學家認為,計算機視覺為人工智慧的發展開拓了道路。
從本質上來看,計算機視覺主要是研究如何讓計算機系統模擬與實現人類視覺系統功能。人類的視覺系統可以分為信號攝入與信號處理兩部分,通過瞳孔攝入影像信息並轉換為大腦可以接受與處理的電信號,大腦則進一步將電信號轉變為感知。受到人類視覺系統的啟發,用影像設備替代人眼攝入信息,再由計算機替代大腦完成對影像設備輸入信息的理解與處理,以完成對人類視覺系統的模擬,從而實現適應、理解外界環境和控制自身運動等複雜的智能功能。
和許多正在快速發展的學科一樣,計算機視覺目前很難給出一個嚴格準確的定義,從廣義上來說,計算機視覺是「賦予機器自然視覺能力」的學科。這裡的自然視覺能力,指的是生物視覺系統體現的視覺能力。從狹義上來看,計算機視覺就是研究視覺感知問題。視覺感知,根據維科百基(Wikipedia)的定義, 是指對「環境表達和理解中,對視覺信息的組織、識別和解釋的過程」。根據這種定義,計算機視覺的目標是對環境的表達和理解,核心問題是研究如何對輸入的圖像信息進行組織,對物體和場景進行識別,進而對圖像內容給予解釋。
目前絕大多數機器之所以能夠完成一些相對「智能」的任務和特定功能,很大部分是依靠計算機視覺技術的支撐,比如視覺感知、圖像識別、人臉識別、目標定位等。
計算機視覺的發展歷程
如果將1963年 Larry Roberts 發表第一篇計算機視覺博士論文《Machine Perception of Three-Dimensional Solids》視為人類對計算機視覺探索的起源,計算機視覺發展至今已經有了56年的歷史。在計算機視覺發展的這些年裡,研究人員和學者提出了大量的理論和方法對其進行完善與優化,下圖按照時間順序整理了CV領域中較為重要的技術,其中光流、圖像金字塔等技術經過不斷發展,仍作為研究的熱點問題被廣泛討論,在各種新的應用和技術的支持下斷展示其自身的優勢。
從技術理論的發展變化來看,在對計算機視覺的探索過程中有若干時期值得一提。
二十世紀50年代中期,此時期的統計模式識別算得上是對計算機視覺領域的初次探索,雖然當時的工作主要集中於二維圖像分析和識別上,如光學字符識別、工件表面、顯微圖片和航空圖片的分析和解釋等,尚接觸計算機視覺的本質與核心,但對於人類在計算機視覺領域的研究依舊具有啟發性。1963年,Larry Roberts發表的計算機視覺領域的第一篇博士論文《Machine Perception of Three-Dimensional Solids》,揭開了計算機視覺研究的序幕。在這篇文章裡,Roberts將現實世界簡化為由簡單的三維結構所組成的「積木世界」,並且使用計算機從「積木世界」中提取出了立方體、稜柱等多種三維結構並對物體的形狀和空間關係做出了描述。對「積木世界」的研究是計算機視覺早期的重要嘗試,其創造性的研究也給了人們以極大的啟發。1966年,著名的人工智慧學者Marvin Lee Minsky要求其學生通過編程讓計算機告訴使用者攝像頭所拍攝的內容,這一任務觸及到了計算機視覺的本質之一,也標誌著計算機視覺的正式誕生。
70年代中期,麻省理工學院人工智慧實驗室正式開設「計算機視覺」(Machine Vision)課程,由著名學者B.K.P.Horn教授主講,這成為了計算機視覺史上的標誌性事件之一。後來人工智慧實驗室的David Marr教授提出了著名的計算視覺理論,該理論提出的層次化三維重建框架,至今是計算機視覺中的主流方法。隨後,計算機視覺蓬勃發展,卷積神經網絡、主動視覺、目的視覺、重建理論、基於學習的視覺等重要的計算機視覺理論體系也相繼被提出,各類新算法和新理論百花齊放,為計算機視覺領域帶來了前所未有的繁榮。
進入二十一世紀後,機器學習成為了主流,計算機視覺進入了基於深度學習的進步時期。「機器學習」一詞源自IBM的一篇論文,指利用計算機實現或模仿人類的學習行為。不同於先前使用的方法,機器學習技術無需人為設計和提取特徵,而是通過特定的算法從大量的樣本中自動歸納學習。機器學習的應用需要大量的數據樣本來支撐,而二十一世紀以來的網際網路技術的飛速發展恰好為機器學習技術提供了所需的海量數據。
2006年之前,計算機視覺中所使用的模式識別方法主要是機器學習中的淺層學習技術,如支持向量機、決策樹等。這些方法存在特徵提取能力不足、容易出現過擬合等問題。2006年,Hinton等人提出了深度學習領域的第一個模型——深度臵信網絡模型(DBN)。通過將多個受限波爾茨曼機(RBM)堆疊成為一個深度網絡結構,獲得了淺層模型難以比擬的高層次抽象特徵提取能力,從而具備了更加優越的性能。此模型通過逐層預訓練和整體微調的方式使深層次的神經網絡的訓練成為了可能。
在深度學習技術的推動下,計算機視覺由原先精度低、複雜性高、人為幹預多的情況進入了發展的新時代。卷積神經網絡(CNN)是最常用於計算機視覺的深度學習技術之一。CNN借鑑了生物視覺的有關概念。網絡像生物視覺器官一樣逐層從輸入中提取局部特徵並在高層次進行匯總,最終完成對輸入的模式識別。除DBN和CNN外,遞歸神經網絡(RNN)、堆棧自編碼器(SAE)等深度學習技術也在計算機視覺等方面得到許多應用。
在之後的時間裡,其他深度網絡模型如雨後春筍一般湧現,各種深度學習模型被廣泛運用在計算機視覺中,為計算機視覺帶來了一場新的革命。
深度學習技術的突破給人工智慧等眾多領域注入了新的生命力,但在一波應用熱潮之後,卻出現了後繼乏力的現象。在今年5月份的一次採訪中,中科院院士、清華大學人工智慧研究院院長張鈸教授談到,目前基於深度學習的人工智慧在技術上已經觸及天花板。
張鈸教授認為,現在的深度學習本質是基於概率統計,是尋找那些重複出現的模式,利用沒有加工處理過的數據用概率學習的「黑箱」處理方法來尋找它的規律,這個方法本身通常無法找到「有意義」的規律,它只能找到重複出現的模式,重複多了就被認為是規律(真理),因此謊言重複一千遍就被認為真理,所以為什麼大數據有時會做出非常荒唐的結果,因為不管對不對,只要重複多了它就會按照這個規律走,就是誰說多了就是誰。也就是說,光靠數據是無法達到真正的智能。
而目前計算機視覺的研究算法大多是基於深度學習的,如果想在此方面繼續有所突破,新的研究思路和新的算法勢在必行。在這種大環境下,聯動北方推出了新一代的計算機視覺研究算法——泛布計算。
泛布計算的框架和模型
聯動北方多年研發的自主版權的泛布式計算系統,結合汲取了分布式計算、MR、高並發計算、網際網路終端植入式異構計算等算法優勢。
系計算框架採用總控+計算節點的異構模式,多個處理器協同工作,核心處理器負責處理最重要和最緊急的數據和任務,而非核心處理器則負責對數據進行預處理或處理一般性的數據和任務。
在異構模式下,總控只需要負責處理核心任務,就像在一個飯店裡,大廚只要需要負責完成烹飪,而準備原料等事項則可以直接交給幫廚去完成,在泛布計算裡,承擔「幫廚」任務的則是總控以外的其他計算節點。主控與多節點相互配合,並行處理多項任務,從而大大降低延時,打造一個高效、獨立、靈活、開放的系統。
模型方面,泛布計算的根基是聯動北方智慧樹模型,該模型以代數的群論、拓撲學以及模糊集合論、圖論等數學基礎作為支撐,是聯動AI技術的理論基礎,同時該模型支持可視化建模與並行流式處理,為後續功能的實現提供了強有力的支持。
泛布計算處理圖像步驟
1、面向邊界的計算
對於圖像邊緣處理,泛布計算採用了邊界八值法,即將每個元素視為一個對象,其邊界向量為周邊的八個點。如果該元素湮滅時,左右有相鄰元素,則左為右0,右為左0,有個邊界量重置為空或為0。邊界八值法的核心技巧,就是將1個點擴張切成9個點。
如果元素的邊界8值都為0,則將該該元素(對象)視為一個純「內點」,可以省略;如果元素邊界8值中有非0值的,則記錄坐標,該元素成為邊界點。與「內點」相反,還有「孔洞」的存在,就是湮滅象荷花頁上的水滴融和之後,出現一片水域之中的洞,空洞則需要根據其關鍵特徵(比如代碼中的注釋//,/*),判斷是否回填補滿,如果邊界8值的取值,除了0和1之外,還有更多值,則可以辨別顏色、灰度、梯度、勢差等等。
2、面向並發的計算
對於層次豐富的圖像,聯動北方則採取多層並行計算的方式以提高處理效率。
並行計算時,先同時並行計算每點的邊界8值,再同時並行計算2點的邊界10值,3點的邊界12值等等,因為有邊界湮滅,中間許多可以優化的略去,其方法類似於稀疏計算。
湮滅與分層,是生物並行計算的本質。先有湮滅,獲得基本形狀,之後才有形狀間組合的辨識,才有坐標軸旋轉,取最大正交系之類的對齊方式,在此期間,同樣需要「歸一化」處理,即不斷湮滅增長之後,做歸一化正交系。而對於縮放、旋轉、扭曲,則是邊界點雙向鍊表的成比例坐標變換。
3、面向矢量的計算
關於極坐標,不止是固定的多少角度做一個扇形,然後在每個扇形內看分布,而是要針對具體的標的,看它的錨點(左下角)、跨越多少個角度、以及每個射線的近值和遠值。
給予矩陣地圖上每個區域都作為極坐標的原點,去計算外圍多個區域的極坐標分布,所以有多個極坐標系,互相印證計算。通過極坐標系,可以看到的區域對象分布,才更加接近於真實人體對於事物的感知,才好決定哪些區域可以合併,而哪些需要再次分割。
所以地圖狀的全局區域柵格坐標是必要的,也便於在逐層遞歸Turtles時,可以遺留一部分,等到下N級時在融合。就像鞭炮一樣,抽象出每個細節,還需要能結構出整體,這是與深度學習不同的地方,它們是不關注細分結構與整體的,而只是關注像素硬比對或者卷積後特徵比對。
4、面向結構的計算
通過以上步驟提取圖形的公共結構之後,需要再進行個性化的標定,即建立具象與公共結構之間的非線性函數映射關係(參數)。
例如人臉識別,就是在個體與公共結構之間簡歷個性化的特徵映射函數,推而廣之,比如甲狀腺腫瘤的良惡性診斷,也是在公共結構之上,分析個性化,及個體片子與公共結構之間的廣義非線性映射函數,看此確定了參數的函數,其最大似然是哪種,從而由此函數來判定良性與惡性,比如找周邊鄰居算是其中一種極簡函數。當然,此函數參數,可能表現為一種矩陣,或者是一種超矩陣的張量,所以不只是要發現公共結構,找到個性化映射函數;更要建立公共結構組成更大結構之間的樹網,然後再做非線性函數。
如果把柵格計算退化成一種邊緣檢測的話,可以通過初分區域的融合,組合出各種邊緣提取後的形狀,然後通過圖形學看最像什麼,來決定應該怎麼融合;並發的,每一個區域跟它周邊鄰居2/3/4...組合,可以按極坐標逆時針,然後更外一層、更外一層進行處理。
目前,聯動北方提出的泛布計算已經在智能醫療、運動分析與格式排版等領域加以應用並取得了不錯的成效,具體技術實現與效果示意如下。
泛布計算之於智能醫療
傳統的視覺處理方式是對圖像進行柵格化計算以分析圖像的結構,而聯動北方的計算機視覺系統,除了對圖像進行柵格化計算,同時還會進行多層並行計算以提升圖像處理的速度、準度與精度。
對於醫療影像的處理,患者無需再經歷傳統模式下診斷前以及獲取診斷結果時漫長的等待,只需要輸入超聲檢測圖像便可在短時間拿到結果。具體處理流程為:系統接受用戶輸入的圖像,對圖像進行預處理,將用戶上傳文件處理成系統能識別的格式;預處理之後系統會對圖像進行特徵分析,逐層分析擬合圖像區域,在理解基礎上提取重點部位;之後會將特徵部位進行自學習與自堆疊、訓練出知識,判斷患病風險並輸出診斷結果。
通過計算機處理醫療影像,大大加快了醫療影像的處理過程,為患者與醫院減輕了負擔,提高了患者就診的效率。
目前,以自有核心知識圖譜技術為支撐,聯動北方在醫療影像領域,已經實現對目標影像進行切割、識別歸類、組合與 結構分析,生理和病理知識,最終完成智能疾病診斷,並在超聲與CT影像處理的實際應用方面取得了不錯的成果。
泛布計算之於運動分析
當前,深度學習在靜態圖像識別方面已經取得了很好的效果,對於一些領域的圖像識別甚至一度達到了99%的準確率,但是在運動分析領域卻依舊存在很大的不足。
從攝像機、無人機或其它設備採集到的圖像信息更多具有連續動態的特徵,比如運動中人或物體等,在實際使用中,更多的需求是對動態視頻進行分析以達到定位、跟蹤和預測這些目標的行動軌跡的目的。
當前對於運動分析研究的挑戰在於數據量巨大、圖像噪聲幹擾比較大,同時,自動跟蹤也涉及人工智慧與模糊控制方面的難點。因此,目前的商用人工智慧平臺幾乎沒有這部分功能。與靜態圖像識別不同,動態目標跟蹤技術的關鍵是要準確得到待測目標物體的空間坐標序列值,也就是要準確測得圖像上標識點的位置。標識點的選擇有兩個原則——易於識別與中心位置易於精確定位。
如下圖所示,圖(d)邊緣突出,中心對稱,對旋轉、變形有很好的適應。是比較理想的標識點,但在實際操作過程中,同一圖像存在多個標識點,這四類標識點都有應用。
除了數據量和噪聲,算力、存儲和帶寬也是運動分析需要面臨的挑戰,分布式計算是目前緩解存儲與帶寬壓力的一個策略,另外一個更有效的手段是數據壓縮。
以圖像壓縮為例。目前的分形圖像壓縮算法,能夠在保證重構圖像的清晰度與解析度的同時,提高圖像的壓縮比。但該方法依然存在兩類問題,其一是在編碼過程中過度追求最佳匹配塊,需要在碼本空間中逐一搜索而導致的編碼速度慢。其二是圖像塊分割方式固定和圖像塊變換方式過少而影響解碼圖像質量。
聯動北方通過引入非線性迭代函數系統,增強了圖像構建能力,提高了圖像處理的質量與速度,同時利用改進的遺傳算法在匹配搜索過程中獲取最佳的壓縮仿射變換參數,並參考壓縮迭代定理確定迭代次數,進一步提高參數的全局搜索能力和匹配的準確度,大大縮短搜索時間。
此外,聯動北方還將雙目視覺與多攝像頭視覺等技術引入到運動分析中。雙目視覺是當前機器視覺的一種重要形式,一般由雙攝像機從不同角度同時獲得被測物的兩幅數字圖像,或由單攝像機在不同時刻從不同角度獲得被測物的兩幅數字圖像,再基於視差原理恢復出物體的三維幾何信息,重建物體三維輪廓及位置。多攝像頭視覺則是在雙目視覺上的進一步拓展,在機器視覺領域有著廣泛的應用前景。
通過將泛布計算應用於運動分析,能夠在較複雜的環境中分辨與追蹤主要運動物體,同時能夠識別出物體的運動狀態與運動規律,以達到監測運動狀態和預測運動軌跡的目的。
泛布計算之于格式排版
格式排版主要應用於對多種格式的文字排版,當一篇文章中包含中文文字、代碼、英文片段以及圖像時,如何做到準確美觀的排版對於處理者來說是一個不小的挑戰,當數據量較小時可以通過人工操作來完成,但是數據量太大時,則需要藉助計算機視覺來輔助完成。聯動北方基於泛布計算的計算機視覺在格式排版方面效果顯著,主要處理過程如下:
對於原始數據,先將其進行湮滅處理,具體做法為——如果元素A與元素B在絕對坐標上相鄰(2維空間中的左右位置&上下位置)或元素A的右鄰(標記為Va(1,0))與元素B的左鄰(標記為Vb(-1,0))為同類型,以及元素A的上鄰(標記為Va(0,1))與元素B的下鄰(標記為Vb(0,-1))為同類型,則可進行湮滅處理。
如有湮滅,則將其合併(標記為Vab),同時繼續將Vab的右鄰(標記為Vab(1,0))與元素C的左鄰(標記為Vc(-1,0))進行湮滅處理,並不斷擴散處理。對於任何一組連續元素,其周圍邊界元素個數為(2n+6),則湮滅合併後則取(2n+6)個數量的邊界向量。
完成原始數據的預處理後,將中英文的每個元素視作一個對象,通過將每個對象擴張切成9個點(周圍8個邊界向量)——逐點計算|兩點計算|多點計算——不斷湮滅增長後,做歸一化正交集——對於縮放、旋轉、扭曲,則是邊界上雙向鍊表的成比例坐標變換——最終獲取同元素的區塊邊界。
智能排版的具體效果如下:
過聯動北方基於泛布計算的計算機視覺處理後,文字部分進行了自動換行等操作,文中的代碼部分被有效識別並加上你合適的代碼格式與底色以示區分,與人工操作效果相媲美甚至更好,同時計算機不會因為疏漏而產生錯誤,從而保證了排版結果的精準性。
計算機視覺的終極目標是讓機器具備一雙「慧眼」,從而真正理解現實世界中的一切事物並進行分析,雖然就目前來看,在技術和算法上還有提升的空間,但是這並不妨礙計算機視覺的光明前景。
「你看不見你自己,你能看見的只是自己的影子。」——泰戈爾