一路學到這裡,我們已經介紹了許多數位影像處理的方法。
從 Pixel、Histogram、Convolution。
到 Filter、Edge Detection、Morphology。
再到 Corner、Feature、Hough Transform。
看到這裡,相信大家會有一個疑問:
在現在這個大AI時代,大家都在談 AI、CNN、YOLO。
那我們花了這麼多時間學傳統影像處理,還有用嗎?
答案是:有,而且非常重要。
傳統影像處理與深度學習並不是互相競爭的關係。
他們各自負責了不同的工作。
很多電腦視覺的系統其實都是兩者一起使用。
傳統影像處理最大的特色,就是每一步都非常明確。
例如:
如果圖片太暗可以調整亮度。
如果圖片有雜訊可以使用 Gaussian Blur 或 Median Filter。
如果想找出物體輪廓可以使用 Canny Edge Detection。
如果想找到直線可以使用 Hough Transform。
每一個演算法都有明確的目的,也知道它為什麼會得到這樣的結果。
因此,它具有很好的可解釋性,而且通常不需要大量資料就能使用。
相較之下,深度學習最大的特色,是不需要人自己設計規則。
例如:
如果今天想辨識貓和狗,傳統方法可能要自己思考:
耳朵長什麼樣子?
眼睛在哪裡?
毛髮有什麼特徵?
但是深度學習會直接從大量資料中學習,自己找到最適合辨識的方法。
因此,面對複雜的影像任務,深度學習通常具有更好的表現。
像是常見的:
幾乎都以深度學習為主。
我認為,答案仍然是需要。
原因是因為深度學習仍然需要處理影像。
例如:
訓練之前,可能需要先做資料前處理,像是裁切、縮放、去除雜訊。
推論之後也常需要後處理,例如 Non-Maximum Suppression(NMS)、形態學運算,或輪廓分析。
除此之外,很多嵌入式系統因為硬體資源有限仍然會大量使用傳統影像處理。
例如:
工業 AOI。
條碼辨識。
文件掃描。
OCR 前處理。
甚至醫療影像。
都仍然可以看到許多傳統方法的身影。
在電腦視覺中,最重要的是知道 什麼時候該使用哪一種工具。
有些問題,一個 Threshold 就能解決,根本不需要訓練一個神經網路。
有些問題則需要大量資料與模型才能達到足夠好的效果。
真正重要的,是知道每種方法適合解決什麼問題。
今天,我們回頭看了這段時間學過的內容。
傳統影像處理與深度學習,並不是互相取代的關係,而是在不同的場景中,各自發揮自己的優勢。
理解傳統方法,不只是單純為了學會幾個工具的使用方式,更重要的是建立分析影像、理解影像的思考方式。
不過,看到這裡,也許你會有另一個疑問:既然現在大部分的電腦視覺都建立在深度學習之上,為什麼 CNN 能夠逐漸取代許多傳統的手工特徵?
下一篇,我們就來聊聊這個問題。