1.前言
計算機視覺(Computer Vision),通常簡稱CV,是一個通過技術幫助計算機“看到”并“看懂”圖像的研究領域,比如使計算機理解照片或視頻的內容。
這篇文章將對計算機視覺進行整體介紹。本文章共分為六個部分,分別是:
計算機視覺為何重要
什么是計算機視覺
計算機視覺的基本原理
計算機視覺的典型任務
計算機視覺在日常生活中的應用場景
計算機視覺面臨的挑戰
2.計算機視覺為何重要
在生理學上,視覺(Vision)的產生都始于視覺器官感受細胞的興奮,并于視覺神經系統對收集到的信息進行加工之后形成。我們人類通過視覺來直觀地了解眼前事物的形體和狀態,大部分人依靠視覺來完成做飯、越過障礙、讀路牌、看視頻以及無數其他任務。實際上,假如不是盲人這類特殊群體,絕大多數人對外界信息的獲取都是通過視覺完成的,而這個占比高達80%以上——這個比例并不是沒有根據的,著名實驗心理學家赤瑞特拉(Treicher)曾通過大量的實驗證實:人類獲取的信息的83%來自視覺,11%來自聽覺,剩下的6%來自嗅覺、觸覺、味覺。所以,對于人類來說,視覺無疑是最重要的一種感覺。
不僅人類是“視覺動物”,對于大多數動物來說,視覺也都起到十分重要的作用。通過視覺,人和動物感知外界物體的大小、明暗、顏色、動靜,獲得對機體生存具有重要意義的各種信息,通過這些信息能夠得知,周圍的世界是怎樣的,以及怎樣和世界交互。
而在計算機視覺出現之前,圖像對于計算機來說是黑盒的狀態。一張圖像對于計算機來說只是一個文件、一串數據。計算機并不知道圖片里的內容到底是什么,只知道這張圖片是什么尺寸,占多少內存大小,什么格式的等等。
假如計算機、AI想要在現實世界發揮重要作用,就必須看懂圖片!故此,半個世紀以來,計算機科學家一直在想辦法讓計算機也擁有視覺,從而產生了“計算機視覺”這個領域。
網絡的迅速發展也令計算機視覺變得尤為重要。下圖是2020年以來網絡上新增數據量的走勢圖。灰色圖形是結構化數據,藍色圖形是非結構化數據(大部分都是圖片和視頻)。可以很明顯的發現,圖片和視頻的數量正在以指數級的速度瘋狂增長。
互聯網由文本和圖像組成。搜索文本相對簡單,但為了搜索圖像,算法需要知道圖像包括的內容。在很長的一段時間內,人類沒有足夠的技術來理解圖像和視頻的內容,只能依靠人工標注來獲取圖像或視頻的描述。怎樣能讓計算機更好地理解這些圖像信息,便是當今計算機技術面臨的一大挑戰。為了充分利用圖像或視頻數據,需要讓計算機“查看”圖像或視頻,并理解內容。
3.什么是計算機視覺
計算機視覺是AI領域的一個重要分支,簡單來說,它要解決的問題就是:讓計算機看懂圖像或者視頻里的內容。譬如:圖片里的寵物是貓還是狗?圖片里的人是老張還是老王?視頻里的人在做什么事情?更進一步的說,計算機視覺就是指用攝影機和電腦代替人眼對目標進行識別、跟蹤和測量等,并進一步做圖形處理,得到更適合人眼觀察或傳送給儀器檢測的圖像。作為一個科學學科,計算機視覺研究相關的理論和技術,試圖建立能夠從圖像或者多維數據中獲取高層次信息的AI系統。從工程的角度來看,它尋求利用自動化系統模仿人類視覺系統來完成任務。計算機視覺的最終目標是使計算機能像人那樣通過視覺觀察和理解世界,具有自主適應環境的能力。但能真正實現計算機能夠通過攝像機感知這個世界卻是非常之難,因為雖說攝像機拍攝的圖像和我們平時所見是一樣的,但對于計算機來說,任何圖像都只是像素值的排列組合,是一堆死板的數字。怎樣讓計算機從這些死板的數字里面讀取到有意義的視覺線索,是計算機視覺應該解決的問題。
4.計算機視覺的基本原理
用過相機或手機的都知道,計算機擅長拍出有驚人保真度和細節的照片,從某種程度上來說,計算機的人工“視覺”比人類與生自來的視覺能力強多了。但正像我們平日所說的“聽見不等于聽懂”一樣,“看見”也不等于“看懂”,要想讓計算機真正地“看懂”圖像,那就不是一件簡單的事情了。圖像是一個大像素網格,每個像素有顏色,顏色是三種基色的組合:紅,綠,藍。通過組合三種顏色的強度——即叫做RGB值,我們可以得到任何顏色。最簡單的、最適合拿來入門的計算機視覺算法是:跟蹤一個有顏色的物體,譬如一個粉色的球,我們首先記下球的顏色,保存最中心像素的RGB值,然后給程序喂入圖像,讓程序找最接近這個顏色的像素。算法可以從左上角開始,檢查每個像素,計算和目標顏色的差異。檢查了每個像素后,最貼近的一部分像素,很可能就是球所在的像素。這個算法并不限制于在這單張圖片上運行,我們可以把算法運行在視頻的每一幀圖像上,跟蹤球的位置。當然,因為光線、陰影和其他因素的影響,球的顏色會有變化,不會和我們存的RGB值完全一樣,但會很接近。不過在一些極端的情況下,譬如晚上進行足球比賽,追蹤效果就可能會非常差;而且假如其中一隊的球衣顏色和球的顏色一樣,算法就完全“暈了”。故此,除非環境可以嚴格控制,這類顏色跟蹤算法極少會被真正投入使用。而如今更多使用的計算機視覺算法一般都會涉及“深度學習”(Deep Learning)的方法和技術,其中,卷積神經網絡(CNN)因為其優越的性能,使用最為廣泛。由于“深度學習”所涉及的知識過于廣泛,本篇就不對其進行更詳細的敘述了。如想了解更多有關“深度學習”的相關知識,不妨看下人工智能入門課程——《英特爾® OpenVINO™工具套件初級課程》。它從人工智能的基本概念開始,介紹AI與視覺應用的相關知識,幫助用戶快速理解英特爾®OpenVINO™工具套件的基本概念及應用場景。整個課程包括了視頻的處理,深度學習的相關知識,AI應用的推理加速,以及英特爾®OpenVINO™工具套件的Demo演示,由淺入深,一步一步帶你掌握深度學習。
5.計算機視覺的典型任務
圖像分類
圖像分類是根據圖像的語義信息對不同類別圖像進行區分,是計算機視覺的核心,是物體檢測、圖像分割、物體跟蹤、行為分析、面部識別等其他高層次視覺任務的基礎。比如下圖,通過圖像分類,計算機識別到圖像中有人(person)、樹(tree)、草地(grass)、天空(sky)。
圖像分類在很多領域都有著廣泛的應用,如:安防領域的面部識別和智能視頻分析等,交通領域的交通場景識別,互聯網領域基于內容的圖像檢索和相冊自動歸類,醫學領域的圖像識別等。
目標檢測
目標檢測任務的目標是給定一張圖像或是一個視頻幀,讓計算機找出其中所有目標的位置,并給出每個目標的具體類別。如下圖,以識別和檢測人為例,用邊框標記圖像中所有人的位置。
而在多類別目標檢測中,一般使用不同顏色的邊框對檢測到的不同物體的位置進行標記,如下圖所示。
語義分割
語義分割是計算機視覺中的基本任務,在語義分割中我們需要將視覺輸入分為不同的語義可解釋類別。它將整個圖像分成像素組,然后對像素組進行標記和分類。比如,我們可能需要區分圖像中屬于汽車的所有像素,并把這些像素涂成藍色。如下圖,把圖像分為人(紅色)、樹木(深綠)、草地(淺綠)、天空(藍色)標簽。
實例分割實例分割是目標檢測和語義分割的結合,在圖像中將目標檢測出來(目標檢測),然后對每個像素打上標簽(語義分割)。對比上圖、下圖可見,如以人為目標,語義分割不區分屬于相同類別的不同實例(所有人都標為紅色),實例分割區分同類的不同實例(使用不同顏色區分不同的人)。
目標追蹤目標跟蹤是指對圖像序列中的運動目標進行檢測、提取、識別和跟蹤,獲得運動目標的運動參數,進行處理與分析,實現對運動目標的行為理解,以完成更高一級的檢測任務。
6.計算機視覺在日常生活中的應用場景
計算機視覺的應用場景非常廣泛,下面列舉幾個生活中常見的應用場景。·門禁、支付寶上的面部識別
停車場、收費站的車牌識別
?上傳視頻到網站或APP時的風險識別
抖音等APP上的各種自拍道具(需要先識別出人臉的位置)
7.計算機視覺面臨的挑戰
現下,計算機視覺技術發展迅速,已具備初步的產業規模。未來計算機視覺技術的發展主要面臨以下挑戰:一是怎樣在不同的應用領域和其他技術更好的結合,計算機視覺在解決某些問題時可以廣泛利用大數據,已經逐漸成熟并且可以超過人類,而在某些問題上卻無法達到很高的精度;二是怎樣降低計算機視覺算法的開發時間和人力成本,現下計算機視覺算法需要大量的數據與人工標注,需要較長的研發周期以達到應用領域所要求的精度與耗時;三是怎樣加快新型算法的設計開發,伴隨新的成像硬件與AI芯片的出現,針對不同芯片與數據采集設備的計算機視覺算法的設計與開發也是挑戰之一。
8.結語
計算機視覺作為AI細分領域中發展最快、應用最為廣泛的技術之一,它如同AI的“眼睛”,為各行各業捕捉和分析更多信息。伴隨算法的更迭、硬件算力的升級、數據的大爆發,以及未來5G技術發展帶來的高速網絡,計算機視覺在應用方面也將會有更加廣闊的發展空間,讓我們拭目以待吧!