1. 程式人生 > >ARCore之路-計算機視覺概述

ARCore之路-計算機視覺概述

  計算機視覺(Computer vision)是一個當前極為熱門,同時又處於高速發展的一門科學,計算機視覺的應用領域也在不斷擴充套件,已經滲透到我們日常生活的方方面面,而且當前最火的所有創業的方向都跟計算機視覺相關。其中包括我們經常提到的無人駕駛、無人安防、人臉識別、人工智慧等等。人臉識別相對來說已經是一個最成熟的應用領域了,然後還有文字識別、車輛車牌識別、語音識別,還有以圖搜圖、 VR/AR,還包括 3D 重構,以及醫學影象分析。 同時,計算機視覺又是一門跨學科的科學,其與電腦科學和工程、人工智慧、資訊工程、固體物理學、神經生物學、訊號處理、概率與數理統計、微積分、線性代數與矩陣都有密切聯絡,計算機視覺發展到現在,各類文獻浩如煙海。我們前面學習的影象識別也只是計算機視覺領域中的非常小的一個分支,鑑於我們的主題,我們也不打算深入探究這個領域,但我們還是有必要作一簡明介紹。

DavidWang原創

一、計算機視覺的定義

  計算機視覺是一個跨學科的領域,研究如何使計算機從數字影象或視訊中獲得高層次的理解。從工程的角度來看,它試圖使人類視覺系統能夠完成的任務自動化。計算機視覺涉及從單個影象或影象序列中自動提取、分析和理解有用資訊。計算機視覺主要任務包括獲取、處理、分析和理解數字影象的方法,以及從現實世界中提取高維資料的方法,以便產生數字或符號資訊。例如,在這種情況下的理解意味著將視覺影象(視網膜的輸入)轉化為對世界的描述,能夠與其他思維過程相結合並引起適當的行動。這種影象理解可以看作是利用幾何、物理、統計和學習理論構建的模型,將符號資訊從影象資料中分離出來。計算機視覺的子域包括物體識別和檢測(Object Detection)、語義分割(Semantic Segmentation)、運動和跟蹤(Motion & Tracking)、三維重建(3D Reconstruction)、視覺問答(Visual Question & Answering)、動作識別(Action Recognition)等等。

  計算機視覺、圖象處理、影象分析、機器人視覺和機器視覺、模式識別是彼此緊密關聯的學科。在技術和應用領域上他們都有著相當大部分的重疊,他們的基礎理論大致是相同的。
計算機視覺的研究物件主要是對映到單幅或多幅影象上的三維場景,例如三維場景的重建。計算機視覺的研究很大程度上針對影象的內容。

  圖象處理與影象分析的研究物件主要是二維影象,實現影象的轉化,尤其針對畫素級的操作,例如提高影象對比度、邊緣提取、去噪聲和幾何變換如影象旋轉等等。這一特徵表明無論是影象處理還是影象分析其研究內容都和影象的具體內容無關。

  機器視覺主要是指工業領域的視覺研究,例如自主機器人的視覺,用於檢測和測量的視覺。這表明在這一領域通過軟體硬體,影象感知與控制理論往往與影象處理得到緊密結合來實現高效的機器人控制或各種實時操作。

  模式識別使用各種方法從訊號中提取資訊,主要運用統計學的理論。此領域的一個主要方向便是從影象資料中提取資訊。

  還有一個領域被稱為成像技術。這一領域最初的研究內容主要是製作影象,但有時也涉及到影象分析和處理。例如,醫學成像就包含大量的醫學領域的影象分析。

DavidWang原創

二、計算機視覺的歷史

  在20世紀60年代末,計算機視覺開始於開創人工智慧的大學。它的目標是模仿人類的視覺系統,作為賦予機器人智慧行為的基礎。1966年,人們相信這可以通過一個將相機附在計算機上並讓它“描述它所看到的”夏季專案(summer project)來實現,後來發現這個目標太過巨集大,為此,大量學者進行了深入的研究,並由此開啟了計算機視覺學科的大門。20世紀70年代的研究為今天存在的許多計算機視覺演算法奠定了早期的基礎,包括從影象中提取邊緣、線的標記、非多面體和多面體建模、將物體表示為較小結構的相互連線、光流和運動估計等等。

  在接下來的十年裡,基於更嚴格的數學分析和計算機視覺的定量方面進行了大量研究。這些包括尺度空間(scale-space)的概念,從不同的線索,如陰影、紋理、焦點、以及輪廓模型對形狀的推斷。研究人員還認識到,這些數學概念中的許多可以與正則化(regularization)和馬爾可夫隨機場(Markov random fields)在同一個優化框架內處理。1982年馬爾( David Marr )《視覺》(Marr, 1982)一書的問世,標誌著計算機視覺成為了一門獨立學科。到了20世紀90年代,以前的一些研究課題變得更加活躍。對投影三維重建的研究使人們對攝像機標定有了更好的理解。隨著相機標定優化方法的出現,人們發現,在攝影測量領域裡,光束平差理論(Bundle Adjustment)中的許多思想已經得到了探索,這就導致了從多幅影象中的三維場景重建(sparse 3-D reconstructions of scenes)方法的出現,在稠密立體對應問題和進一步的多視點立體技術(multi-view stereo)方面也取得了進展,同時,利用圖形切分變化來解決影象分割問題也發展起來。這十年也標誌著統計學習技術首次在實踐中被用來識別影象中的人臉。20世紀90年代末,隨著計算機圖形學和計算機視覺領域相互作用的增加,出現了重大變化。這包括基於影象的繪製、影象變形、檢視內插、全景影象拼接和早期光場繪製。20世紀末開始,深度學習技術開始登上歷史舞臺。在深度學習演算法出來之前,對於視覺演算法來說,大致可以分為以下5個步驟:特徵感知,影象預處理,特徵提取,特徵篩選,推理預測與識別。早期的機器學習中,佔優勢的統計機器學習群體中,對特徵是不大關心的。卷積神經網路(Convoltional Neural Networks, CNN)也被設計出來,加之計算機軟硬體的飛速發展,應用卷積神經網路深度學習技術出現了突飛猛進的發展,在很多學術領域,比非深度學習演算法往往有20-30%成績的提高,計算機視覺隨之進入到一個新的發展階段。

DavidWang原創

三、計算機視覺的主要研究方向

  計算機視覺任務包括獲取、處理、分析和理解數字影象的方法,以及從現實世界中提取高維資料的方法,以便產生數字或符號資訊或者說是影象理解,這種影象理解可以看作是利用幾何、物理、統計和學習理論構建的模型,將符號資訊從影象資料中分離出來。
  計算機視覺本身又包括了諸多不同的研究方向,比較基礎和熱門的幾個方向主要包括了:物體識別和檢測(Object Detection),語義分割(Semantic Segmentation),運動和跟蹤(Motion & Tracking),三維重建(3D Reconstruction),視覺問答(Visual Question & Answering),動作識別(Action Recognition)等。

  1、物體識別和檢測
  物體檢測一直是計算機視覺中非常基礎且重要的一個研究方向,大多數新的演算法或深度學習網路結構都首先在物體檢測中得以應用如VGG-net, GoogLeNet, ResNet等等,每年在imagenet資料集上面都不斷有新的演算法湧現,一次次突破歷史,創下新的記錄,而這些新的演算法或網路結構很快就會成為這一年的熱點,並被改進應用到計算機視覺中的其它應用中去。物體識別和檢測,即給定一張輸入圖片,演算法能夠自動找出圖片中的常見物體,並將其所屬類別及位置輸出出來。計算機視覺的經典問題就是確定影象資料是否包含特定的物件、特徵或活動。它又包括物體識別(可以識別一個或幾個預先指定或學習的物件或物件類,通常與它們在影象中的2d位置或場景中的3D姿態一起識別)、物體鑑定(識別物件的單個例項。例如識別特定人的臉或指紋、識別手寫數字、或識別特定車輛)、物體檢測(掃描影象資料以確定滿足特定條件的物體。例如,在醫學影象中檢測可能出現的異常細胞或組織,或在自動道路收費系統中檢測車輛),目前,解決這類問題的最佳演算法是卷積神經網路。

  2、語義分割
  影象語義分割,簡單而言就是給定一張圖片,對圖片上的每一個畫素點分類。物體檢測和識別通常是將物體在原影象上框出,可以說是“巨集觀”上的物體,而語義分割是從每一個畫素上進行分類,影象中的每一個畫素都有屬於自己的類別。與其他計算機視覺任務一樣,卷積神經網路在分割任務上取得了巨大成功。

  3、運動和跟蹤
  跟蹤也屬於計算機視覺領域內的基礎問題之一,在近年來也得到了非常充足的發展,方法也由過去的非深度演算法跨越向了深度學習演算法,精度也越來越高,不過實時的深度學習跟蹤演算法精度一直難以提升,而精度非常高的跟蹤演算法速度又十分之慢,因此在實際應用中也很難派上用場。 就目前而言,學術界對待跟蹤的評判標準主要是在一段給定的視訊中,在第一幀給出被跟蹤物體的位置及尺度大小,在後續的視訊當中,跟蹤演算法需要從視訊中去尋找到被跟蹤物體的位置,並適應各類光照變換,運動模糊以及表觀的變化等。但實際上跟蹤是一個不適定問題(ill posed problem),比如跟蹤一輛車,如果從車的尾部開始跟蹤,若是車輛在行進過程中表觀發生了非常大的變化,如旋轉了180度變成了側面,那麼現有的跟蹤演算法很大的可能性是跟蹤不到的,因為它們的模型大多基於第一幀的學習,雖然在隨後的跟蹤過程中也會更新,但受限於訓練樣本過少,所以難以得到一個良好的跟蹤模型,在被跟蹤物體的表觀發生巨大變化時,就難以適應了。跟蹤很多演算法都改進自檢測或識別演算法。

  4、三維重建
  三維重建是指給定一個場景的二張或多張影象或者一段錄影,場景重建尋求為該場景建立一個計算機三維模型。最簡單的情況便是生成一組三維空間中的點,更復雜的情況下會建立起完整的三維表面模型。前幾天看華為的mate 20 手機,對特定模型的三維重建已經做得比較好了。深度感測器的出現,不僅給娛樂應用帶來了變革,同樣對科學研究提供了新的方向,尤其是在三維重建領域。然而由於三維重建過程涉及到大量密集的點雲資料處理,計算量巨大,所以對系統進行相應的效能優化顯得非常的重要。

  5、視覺問答
  視覺問答也簡稱VQA(Visual Question Answering),其目的旨在根據輸入影象,由使用者進行提問,而演算法自動根據提問內容進行回答。除了問答以外,還有一種演算法被稱為標題生成演算法(Caption Generation),即計算機根據影象自動生成一段描述該影象的文字,而不進行問答。對於這類跨越兩種資料形態(如文字和影象)的演算法,有時候也可以稱之為多模態,或跨模態問題。

  6、動作識別
  動作識別是指從視訊剪輯(一串二維幀序列)中識別不同的動作,其中的動作可能貫穿整個視訊,也可能不會。這是影象分類任務的一種自然擴充套件,即在多幀視訊中進行影象識別,然後從每一個幀中聚集預測結果。從視訊中進行動作識別需要從整個視訊中捕捉上下文資訊而不只是從每一幀中捕捉資訊。目前準確識別動作在通常意義上來講還有很大的困難,但對特定動作的識別卻有了非常大的提高,如對手指動作的識別、對人體步態的識別。

四、計算機視覺的若干發展趨勢

  (1) 基於學習的物體視覺和基於幾何的空間視覺繼續“相互獨立”進行。深度學習在短時期內很難代替幾何視覺。在深度網路中如何引入“魯棒外點剔除模組”將是一個探索方向,但短時間內估計很難有實質性進展;

  (2) 基於視覺的定位將更加趨向“應用性研究”,特別是多感測器融合的視覺定位技術。

  (3) 三維點雲重建技術已經比較成熟,如何從“點雲”到“語義”是未來研究重點。“語義重建”將點雲重建、物體分割和物體識別同時進行,是三維重建走向實用的前提。

  (4)對室外場景的三維重建,如何重建符合“城市管理規範”的模型是一個有待解決的問題。室內場景重建估計最大的潛在應用是“家庭服務機器人”。 鑑於室內重建的應用還缺乏非常具體的應用需求和驅動,在加上室內環境的複雜性,估計在3-5年內很難有突破性進展。

  (5)對物體識別而言,基於深度學習的物體識別估計將從“通用識別”向“特定領域物體的識別”發展。“特定領域”可以提供更加明確和具體的先驗資訊,可以有效提高識別的精度和效率,更加具有實用性;

  (6)目前基於RCNN 對視訊理解的趨勢將會持續;

  (7) 解析深度網路機理的工作具有重大的理論意義和挑戰性,鑑於深度網路的複雜性,估計近期很難取得突破性進展;

  (8)具有“反饋機制”的深度網路結構(architecture)研究必將是下一個研究熱點。

五、當前主流的框架(庫)

  OpenCV
  OpenCV是一個很經典的計算機視覺庫,它基於BSD許可(開源)發行的跨平臺計算機視覺庫,可以執行在Linux、Windows、Android和Mac OS作業系統上。它輕量級而且高效(由一系列 C 函式和少量 C++ 類構成),同時提供了Python、Ruby、MATLAB等語言的介面,實現了影象處理和計算機視覺方面的很多通用演算法。

  Caffe
  Caffe,全稱Convolutional Architecture for Fast Feature Embedding。是一種常用的深度學習框架,主要應用在視訊、影象處理方面的應用上。caffe是一個清晰,可讀性高,快速的深度學習框架。核心語言是C++。支援命令列、Python和Matlab介面,它既可以在CPU上執行也可以在GPU上執行。

  TensorFlow
  TensorFlow是一個Google開源的程式碼庫,用於進行高效能數值計算。藉助其靈活的架構,使用者可以輕鬆地將計算工作部署到多種平臺(CPU、GPU、TPU)和裝置(桌面裝置、伺服器叢集、移動裝置、邊緣裝置等),可為機器學習和深度學習提供強力支援,並且其靈活的數值計算核心廣泛應用於許多其他科學領域。它擅長於訓練深度神經網路,版本迭代也非常快,目前非常火。

參考文獻

1、維基百科 維基百科
2、百度百科 百度百科
3、計算機視覺簡介:歷史、現狀和發展趨勢 計算機視覺簡介:歷史、現狀和發展趨勢新增連結描述