- OpenCV+TensorFlow深度學習與計算機視覺實戰
- 王曉華
- 2238字
- 2019-07-30 17:37:02
1.1 計算機視覺與深度學習的關系
長期以來,讓計算機能看會聽可以說是計算機科學家孜孜不倦的追求目標,這個目標中最基礎的就是讓計算機能夠看見這個世界,賦予計算機一雙和人類一樣的眼睛,讓它們也能看懂這個美好的世界,這也是激勵作者及所有為之奮斗的計算機工作者的主要動力。雖然目前計算機并不能達到動畫片中變形金剛的十分之一的能力,但是技術進步是不會停止的。
1.1.1 人類視覺神經的啟迪
20世紀50年代,Torsten Wiesel和David Hubel兩位神經科學家在貓和猴子身上做了一項非常有名的關于動物視覺的實驗(如圖1-2所示)。

圖1-2 腦部連入電極的貓
實驗中貓的頭部被固定,視野只能落在一個顯示屏區域,顯示屏上會不時出現小光點或者劃過小光條,而一條導線直接連入貓的腦部區域中的視覺皮層位置。
Torsten Wiesel和David Hubel通過實驗發現,當有小光點出現在屏幕上時,貓視覺皮層的一部分區域被激活,隨著不同光點的閃現,不同腦部視覺神經區域被激活。而當屏幕上出現光條時,則有更多的神經細胞被激活,區域也更為豐富。他們的研究還發現,有些腦部視覺細胞對于明暗對比非常敏感,對視野中光亮的方向(不是位置)和光亮移動的方向具有選擇性。
自從Torsten Wiesel和David Hubel做了這個有名的腦部視覺神經實驗之后,視覺神經科學(如圖1-3所示)正式被人們所確立。截至目前,關于視覺神經的幾個廣為接受的觀點是:
- 大腦對視覺信息的處理是分層級的,低級腦區可能處理邊度、邊緣的信息,高級腦區處理更抽象的信息,比如人臉、房子、物體的運動之類的。信息被一層一層地提取出來往上傳遞進行處理。
- 大腦對視覺信息的處理也是并行的,不同的腦區提取出不同的信息,干不同的活,有的負責處理這個物體是什么,有的負責處理這個物體是怎么動的。
- 腦區之間存在著廣泛的聯系,同時高級皮層對低級皮層也有很多的反饋投射。
- 信息的處理普遍受到自上而下和自下而上的調控。也就是說,大腦可能選擇性地對某些空間或者某些特征進行更加精細的加工。

圖1-3 視覺神經科學
進一步的研究發現,當一個特定物體出現在視野的任意一個范圍,某些腦部的視覺神經元會一直處于固定的活躍狀態。從視覺神經科學的角度解釋,就是人類的視覺辨識是從視網膜到腦皮層,神經系統從識別細微細小的特征演變為目標識別。對計算機來說,如果擁有這么一個“腦皮層”對信號進行轉換,那么計算機仿照人類擁有視覺就會變為現實。
1.1.2 計算機視覺的難點與人工神經網絡
盡管通過大量的研究,人類視覺的秘密正在逐漸被揭開,但是相同的想法和經驗用于計算機上卻并非易事。計算機識別往往有嚴格的限制和規格,即使同一張圖片或者場景,一旦光線,甚至于觀察角度發生變化,那么計算機的判別也會發生變化。對于計算機來說,識別兩個獨立的物體容易,但是在不同的場景下識別同一個物體則困難得多。
因此,計算機視覺的核心在于如何忽略同一個物體內部的差異而強化不同物體之間的分別(如圖1-4所示),即同一個物體相似,而不同的物體之間有很大的差別。

圖1-4 計算機視覺
長期以來,對于解決計算機視覺識別問題,大量的研究人員投入了很多的精力,貢獻了很多不同的算法和解決方案。經過不懈的努力和無數次嘗試,最終計算機視覺研究人員發現,使用人工神經網絡用以解決計算機視覺問題是最好的解決辦法。
人工神經網絡在20世紀60年代就產生萌芽,但是限于當時的計算機硬件資源,其理論只能停留在簡單的模型之上,無法得到全面的發展和驗證。
隨著人們對人工神經網絡的進一步研究,20世紀80年代人工神經網絡具有里程碑意義的理論基礎“反向傳播算法”的發明,將原本非常復雜的鏈式法則拆解為一個個獨立的、只有前后關系的連接層,并按各自的權重分配錯誤更新。這種方法使得人工神經網絡從繁重的、幾乎不可能解決的樣本計算中脫離出來,通過學習已有的數據統計規律,對未定位的事件做出預測。
隨著研究的進一步深入,2006年,多倫多大學的Geoffrey Hinton在深層神經網絡的訓練上取得了突破。他首次證明了使用更多隱層和更多神經元的人工神經網絡具有更好的學習能力。其基本原理就是使用具有一定分布規律的數據,保證神經網絡模型初始化,再使用監督數據在初始化好的網絡上進行計算,使用反向傳播對神經元進行優化調整。
1.1.3 應用深度學習解決計算機視覺問題
受前人研究的啟發,“帶有卷積結構的深度神經網絡(CNN)”被大量應用于計算機視覺之中。這是一種仿照生物視覺的逐層分解算法,分配不同的層級對圖像進行處理(如圖1-5所示)。例如,第一層檢測物體的邊緣、角點、尖銳或不平滑的區域,這一層幾乎不包含語義信息;第二層基于第一層檢測的結果進行組合,檢測不同物體的位置、紋路、形狀等,并將這些組合傳遞給下一層。以此類推,使得計算機和生物一樣擁有視覺能力、辨識能力和精度。

圖1-5 分層的視覺處理算法
因此CNN,特別是其基本原理和算法被視為計算機視覺的首選解決方案,這就是深度學習的一個應用。除此之外,深度學習應用于計算機視覺上還有其他優點,主要表現如下:
- 深度學習算法的通用性很強,在傳統算法里面,針對不同的物體需要定制不同的算法。相比來看,基于深度學習的算法更加通用,比如在傳統CNN基礎上發展起來的faster RCNN,在人臉、行人、一般物體檢測任務上都可以取得非常好的效果(如圖1-6所示)。
- 深度學習獲得的特征(feature)有很強的遷移能力。所謂特征遷移能力,指的是在A任務上學習到一些特征,在B任務上使用也可以獲得非常好的效果。例如在ImageNet(物體為主)上學習到的特征,在場景分類任務上也能取得非常好的效果。
- 工程開發、優化、維護成本低。深度學習計算主要是卷積和矩陣乘法,針對這種計算優化,所有深度學習算法都可以提升性能。

圖1-6 計算機視覺辨識圖片
- Excel圖表與表格實戰技巧精粹
- 中文版Maya 2012實用教程(第2版)
- Celtx: Open Source Screenwriting Beginner's Guide
- 數碼攝影后期處理秘笈:Photoshop CC專業調色(第2版)
- 專業級音樂制作理論與實踐Pro Tools:從入門到應用
- 攝影輕松入門:Photoshop后期處理
- 深入理解OpenCV:實用計算機視覺項目解析(原書第3版)
- Premiere pro CC中文版自學視頻教程
- ASP.NET Core 3從入門到實戰
- 邊做邊學:Illustrator CS6平面設計案例教程(微課版)
- 原片蛻變:Photoshop CC商業修圖必修課
- 新編 中文版Photoshop平面設計入門與提高
- 24小時玩賺剪映
- Audition CC音頻處理完全自學一本通
- Flash ActionScript 3.0互動設計項目教程