AI 如何識別圖片?從畫素到 CNN 的通俗指南

AI神經網路啟蒙 ·

人臉解鎖、相簿按人物分類、拍照識別植物——這些背後都是同一件事:讓機器看懂影像。理解它的鑰匙其實很簡單:先弄清楚數字長什麼樣,再弄清楚網路如何把這些數字組合成“特徵”。

影像在機器眼裡是一張數字網格

一張彩色照片由成千上萬個畫素組成,每個畫素記錄著紅、綠、藍三個亮度的數值,通常在 0 到 255 之間。所以一張圖片交給網路時,實際是一大串數字,躺在一個整齊的網格里。

對這種“數字網格”來說,網路能做的第一步很樸素:在網格里尋找區域性的小變化,比如相鄰畫素之間亮度突然上升或下降,也就是一條邊緣。

從畫素到特徵:層層組合

單個邊緣本身說明不了什麼,但把它們組合起來就有意義了。靠後的層會把簡單的邊緣拼成曲線、拐角和紋理,更靠後的層再把這些拼成眼睛、鼻子、輪子或花瓣這樣的部件。

這個過程不需要人手工寫規則,而是網路在訓練中自己學出來的。每一層學到的“特徵”都是上一層輸出的重新組合,越往深走,抽象程度越高。

經典例子:MNIST 手寫數字

學習影像識別時,幾乎所有人都會從 MNIST 開始。它是幾萬張 28×28 畫素的手寫數字圖片,每張都已經標註了 0 到 9 的正確答案,用來練習“看圖分類”再合適不過。

因為圖片小、類別少,一個不復雜的網路幾分鐘就能達到很高的準確率,非常適合用來觀察“訓練到底發生了什麼”。看懂 MNIST,再看更復雜的影像任務,思路就順了。

CNN 比普通網路多了什麼

如果把每種畫素位置都直接連到下一層,引數會多到難以訓練。CNN 的關鍵想法是“卷積”:用一個小小的視窗在整張圖上滑動,反覆使用同一組權重去找同一種花紋。這樣既能保留位置關係,又大大減少了引數。

此外,CNN 還常用“池化”來把特徵圖縮小,讓網路更關注“有沒有這個特徵”而不是它精確落在哪個畫素上,從而對輕微位移更穩健。卷積與池化層層疊加,就是現代影像識別的基礎骨架。

FAQ

灰度圖為什麼只有一個通道,彩色圖有三個?

灰度圖每個畫素只需要一個亮度值,所以是一個通道;彩色圖每個畫素要記錄紅、綠、藍三個亮度,所以是三個通道。網路處理方式相同,只是輸入的數字多了一些。

訓練影像識別需要很多圖片嗎?

通常越多越好,但可以藉助“資料增強”——把圖片做輕微旋轉、裁剪、翻轉——來變相增加數量。此外還可以用已經在海量圖片上訓練好的模型做“遷移學習”,自己只需少量圖片做微調。

AI 看圖會不會被“錯覺”騙到?

可以。改動少量畫素就可能讓模型把 A 認成 B,這類例子被稱為“對抗樣本”。它說明模型學的是統計上的相似性,而不是像人那樣真正理解影像,因此在安全場景中需要額外防護。

AI神經網路啟蒙

用 AI Neural 一步步看懂影像識別

開啟 AI Neural,用互動示例觀察畫素如何變成邊緣、邊緣如何變成部件,直觀感受 CNN 的思路,比死記概念輕鬆得多。

App Store ↗

← AI神經網路啟蒙