本文整理自多篇博客。雖然不是原創,但是也是費了心血整理的O(∩_∩)O
CNN:圖像、視頻
卷積神經網絡是一類包含卷積計算且具有深度結構的前饋神經網絡,是深度學習的代表算法之一 。
由於卷積神經網絡能夠進行平移不變分類,因此也被稱爲平移不變人工神經網絡(Shift-Invariant Artificial Neural Networks, SIANN)。
1.CNN解決了什麼問題?
在CNN出現之前,圖像對於人工智能來說是一個難題。原因如下。
1.1.將大數據量的圖片降維成小數據量
圖像需要處理的數據量太大,導致成本很高,效率很低。
圖像是由像素構成的,每個像素又是由顏色構成的。
現在隨隨便便一張圖片都是1000×1000像素以上的, 每個像素都有RGB 3個參數來表示顏色信息。
假如我們處理一張1000×1000像素的圖片,我們就需要處理1000×1000×3=300W個參數!
CNN把大量參數降維成少量參數,再做處理。
在大部分場景下,降維並不會影響結果。比如1000像素的圖片縮小成200像素,並不影響肉眼認出來圖片中是一隻貓還是一隻狗,機器也是如此。
1.2.保留圖片特徵,符合圖片處理的原則
圖像在數字化的過程中很難保留原有的特徵,導致圖像處理的準確率不高。
CNN用類似視覺的方式保留了圖像的特徵,當圖像做翻轉、旋轉或變換位置時,它也能有效的識別出來是類似的圖像。
2.CNN的思想來源
- 模仿人類大腦的特點,構造多層的神經網絡。
- 較低層的識別初級的圖像特徵。
- 若干底層特徵組成更上一層特徵。
- 通過多個層級的組合,最終在頂層做出分類。
人類的視覺原理:
- 攝入原始信號:瞳孔攝入像素 Pixels
- 初步處理:大腦皮層某些細胞發現邊緣和方向
- 抽象:大腦判定,眼前的物體的形狀,是圓形的
- 進一步抽象:大腦進一步判定該物體是隻氣球
在最底層特徵基本上是類似的,就是各種邊緣。越往上,越能提取出此類物體的一些特徵(輪子、眼睛、軀幹等)。到最上層,不同的高級特徵最終組合成相應的圖像,從而能夠讓人類準確的區分不同的物體。
3.基本原理
3.1.卷積層:提取特徵
使用一個過濾器(卷積核) 來過濾圖像的各個小區域,從而得到這些小區域的特徵值(即,提取出圖片中局部的特徵),跟上面提到的人類視覺的特徵提取類似。
在具體應用中,往往有多個卷積核。每個卷積核代表了一種圖像模式,如果某個圖像塊與此卷積核卷積出的值大,則認爲此圖像塊十分接近於此卷積核。
如果我們設計了6個卷積核,可以理解爲:
我們認爲這個圖像上有6種底層紋理模式,也就是我們用6種基礎模式就能描繪出一副圖像。
以下是25種不同的卷積核的示例:
用一個卷積核掃完整張圖片,運算過程如下圖。
3.2.池化層:下采樣、降維、避免過擬合
即使做完了卷積,圖像仍然很大(因爲卷積核比較小),所以爲了降低數據維度,就進行下采樣。
池化層相比卷積層可以更有效的降低數據維度,這麼做不但可以大大減少運算量,還可以有效的避免過擬合。
例:原始圖片是20×20的。下采樣窗口爲10×10,最終將其下采樣成爲一個大小2×2的特徵圖。
3.3.全連接層:輸出結果
經過卷積層和池化層降維過的數據,全連接層才能“跑得動”,不然數據量太大,計算成本高,效率低下。
4.結構
典型的CNN並非只是3層結構,而是多層結構。
LeNet-5 的結構:卷積層 – 池化層- 卷積層 – 池化層 – 卷積層 – 全連接層,如下圖所示:
5.梯度的求法和反向傳播過程
6.Python實現
6.應用
- 圖像分類、檢索
- 目標定位監測:自動駕駛、安防、醫療
- 目標分割:美圖秀秀、視頻後期加工、圖像生成
- 人臉識別:安防、金融、生活
- 骨骼識別:安防、電影、圖像視頻生成、遊戲
以上內容大部分整理自公衆號:AI知識庫。
科普:計算機視覺
- 計算機視覺是人工智能的一個重要分支,它要解決的問題就是:看懂圖像裏的內容。
- 計算機視覺是一個跨學科的科學領域,涉及如何製作計算機以從數字圖像或視頻中獲得高層次的理解。從工程的角度來看,它尋求自動化人類視覺系統可以完成的任務。
1.原理:同CNN【2.CNN的思想來源】
構造多層的神經網絡,較低層的識別初級的圖像特徵,若干底層特徵組成更上一層特徵,最終通過多個層級的組合,最終在頂層做出分類。
2.挑戰:同CNN【1.CNN解決了什麼問題?】
- 特徵難以提取
同一只貓在不同的角度、不同的光線、不同的動作下,像素差異是非常大的。就算是同一張照片,旋轉90度後,其像素差異也非常大!
哪怕圖片裏的內容相似甚至相同,但是在像素層面,其變化會非常大。 - 需要計算的數據量巨大
手機上隨便一張1000*2000像素的照片就要處理600萬個參數,再算算現在越來越流行的4K視頻。就知道這個計算量級有多恐怖了。
CNN解決了上面的兩大難題(見上面CNN章節)
3.CV的8大任務
具體任務的詳情見網頁
4.CV的具體應用實例
以上內容整理自公衆號:AI知識庫
科普:人臉識別
- 人臉識別,是基於人的臉部特徵信息進行身份識別的一種生物識別技術。
- 人臉識別是身份識別的一種方式,目的就是要判斷圖片和視頻中人臉的身份是什麼。
1.特點
- 便捷性: 人臉是生物特徵,不需要攜帶類似身份證的東西
- 非強制性: 識別的過程甚至不需要對象的配合,只要拍攝到人臉就可以進行識別,例如安防領域就是如此。
- 非接觸性: 不需要跟設備進行接觸,相比指紋更加安全一些。
- 並行處理: 一張照片裏有多個人臉時可以一起處理,不像指紋和虹膜,需要一個一個來。
2.關鍵步驟
2.1.人臉檢測
目的: 尋找圖片中人臉的位置。當發現有人臉出現在圖片中時,不管這個臉是誰,都會標記出人臉的座標信息,或者將人臉切割出來。
方法: 可以使用方向梯度直方圖(HOG) 來檢測人臉位置。先將圖片灰度化,接着計算圖像中像素的梯度。通過將圖像轉變成HOG形式,就可以獲得人臉位置。
2.2.人臉對齊
目的: 將不同角度的人臉圖像,對齊成同一種標準的形狀。
方法: 先定位人臉上的特徵點,然後通過幾何變換(仿射、旋轉、縮放),使各個特徵點對齊(將眼睛、嘴等部位移到相同位置)。
2.3.人臉編碼
目的: 人臉圖像的像素值會被轉換成緊湊且可判別的特徵向量,這也被稱爲模板(template)。
注意: 理想情況下,同一個主體的所有人臉都應該映射到相似的特徵向量。
2.4.人臉匹配
目的: 比較兩個模板,得到相似度分數。該分數給出了兩者屬於同一個主體的可能性。
3.難點
人臉圖像在現實世界中的呈現具有高度的可變性。
4.算法發展歷程
4.1.傳統機器學習算法的3個階段
- 幾何特徵階段
- 表象特徵階段
- 紋理特徵階段
4.2.深度學習算法的3個階段
- 網絡更深、更寬: VGG 網絡→ Inception 網絡→ Resnet 網絡。
- 擴大數據集,提高算法性能: 曠視、商湯等在學術公開競賽中取得好成績的廠商,開始發展實際業務。
- 更加輕量化: 與第一階段相反,大家開始在不降低識別性能的基礎上,研究網絡的輕量化。輕量化的主要目的:(1)提升算法速度,甚至能夠部署到移動端;(2)便於硬件實現,從而將人臉識別算法直接做成一個硬件模塊。
5.應用實例
- 門禁系統
- 安防系統
- 無人超市
- 電子護照及身份證
- 自主服務系統(如ATM)
- 信息安全系統,如刷臉支付
- 娛樂型應用,如抖音裏的部分道具
參考
https://easyai.tech/ai-definition/cnn/
https://easyai.tech/ai-definition/computer-vision/
https://easyai.tech/ai-definition/facial-recognition/