圖像識別(image recognition)是如今的熱門技術。github
文字識別、車牌識別、人臉識別都是它的應用。可是,這些都算初級應用,如今的技術已經發展到了這樣一種地步:計算機能夠識別出,這是一張狗的照片,那是一張貓的照片。算法
這是怎麼作到的?ide
讓咱們從人眼提及,學者發現,人的視覺細胞對物體的邊緣特別敏感。也就是說,咱們先看到物體的輪廓,而後才判斷這究竟是什麼東西。ui
計算機科學家受到啓發,第一步也是先識別圖像的邊緣。url
加州大學的學生 Adit Deshpande 寫了一篇文章《A Beginner's Guide To Understanding Convolutional Neural Networks》,介紹了一種最簡單的算法,很是具備啓發性,體現了圖像識別的基本思路。3d
首先,咱們要明白,人看到的是圖像,計算機看到的是一個數字矩陣。所謂"圖像識別",就是從一大堆數字中找出規律。htm
怎樣將圖像轉爲數字呢?通常來講,爲了過濾掉干擾信息,能夠把圖像縮小(好比縮小到 49 x 49 像素),而且把每一個像素點的色彩信息轉爲灰度值,這樣就獲得了一個 49 x 49 的矩陣。blog
而後,從左上角開始,依次取出一個小區塊,進行計算。
上圖是取出一個 5 x 5 的區塊。下面的計算以 7 x 7 的區塊爲例。
接着,須要有一些現成的邊緣模式,好比垂直、直角、圓、銳角等等。
上圖右邊是一個圓角模式,左邊是它對應的 7 x 7 灰度矩陣。能夠看到,圓角所在的邊緣灰度值比較高,其餘地方都是0。
如今,就能夠進行邊緣識別了。下面是一張卡通老鼠的圖片。
取出左上角的區塊。
取樣矩陣與模式矩陣對應位置的值相乘,進行累加,獲得6600。這個值至關大,它說明什麼呢?
取樣矩陣移到老鼠頭部,與模式矩陣相乘,獲得的值是0。
乘積越大就說明越匹配,能夠判定區塊裏的圖像形狀是圓角。一般會預置幾十種模式,每一個區塊計算出最匹配的模式,而後再對整張圖進行判斷。
(完)