圖像特徵與邊緣(image features and edges)
/ IM-ij FEE-churs and EJ-iz /
在機器能認出一張臉或一條路之前,它得先在原始的像素汪洋裡找到可以抓住的東西。特徵就是那些抓手:邊緣(亮度的劇烈變化,比如深色屋頂與明亮天空相接處的那條輪廓線)、角點、斑塊和紋理。邊緣是最基本的特徵——它標記出一條邊界。角點,也就是兩條邊緣相交之處,則更有用,因為它很容易在另一張照片裡重新找到。這些細小而獨特的地標,就是拼寫出更高層級辨識的字母表。
幾十年來,研究者手工設計出種種巧妙的配方來偵測這些特徵——你可能會遇到的名字包括Canny邊緣偵測器,以及SIFT、ORB這類關鍵點方法。其思路是把一張雜亂的照片濃縮成一組緊湊而穩定的地標,再在不同圖像之間匹配這些地標。全景拼接就是這樣把你的照片縫在一起的,手機也是這樣追蹤世界來實現擴增實境的,更早的辨識系統在深度學習之前也是這樣工作的。
這裡有一個誠實的歷史轉折。現代深度網路很少直接使用這些手工特徵;它們改為從數據中學出自己的特徵,而一個訓練好的網路,其前幾層最終往往會自己重新發現出邊緣與角點偵測器。所以這個概念,一半是奠基性的歷史,一半仍是活生生的工程:當數據稀缺、當你需要速度與透明度、或者面對像「對齊兩張照片」這樣的幾何任務(學得來的特徵在此並無明顯優勢)時,手工特徵依然有它的價值。
對一張肖像跑邊緣偵測器,照片就化成了黑底上的白線:臉的輪廓、眼鏡的邊框、頭髮的分縫——而平滑、色調均勻的臉頰則一片空白,因為平坦的區域裡沒有邊緣可找。
邊緣存在於亮度劇烈變化之處;平坦的區域則消失不見。它們是辨識賴以建立的原始地標。
一個常見的誤解,是以為深度學習讓手工特徵過時了。實際上,訓練好的網路其前幾層反正也會重新發明出邊緣與角點偵測器,而在低數據、低功耗,或像圖像對齊這樣的幾何任務上,顯式的特徵仍然佔優。這兩種路子是表親,而非對手。