從前面幾篇文章中可以知道,影像絕對是AI應用的大宗。 但我們在談到影像的AI的時候,常常都會對一些用詞感到疑惑或誤用--當然,只要溝通的人聽得懂,實際上是沒有什麼誤用的事情。但在學界,對於這些名詞的定義和範圍是有明確界定的。 本篇我們就稍微來說明一下,影像辨識、影像偵測與影像分割的定義與差別。 ### 影像辨識 最基礎的類別,也是一開始學影像AI的標準任務。還記得我們前面提過的TeachableMachine嗎? ![](https://hackmd.io/_uploads/ByONX7VRn.png) 在TeachableMachine中,我們拍攝照片讓AI學習標籤,**模型是對整張照片做出一個分類結果**,這種AI稱為影像辨識。他沒有定位物體的能力,僅僅是把圖片分為某個類別而已。 影像辨識開始起飛的時候就是大家熟知的CNN,而近代一些奇怪的辨識模型用了更奇怪的技術達成辨識--比方說CLIP這種可以藉由更改敘述去辨識不同東西的異類。 ### 影像偵測 如YOLO和SSD這類,會同時把物體框起來並分類的任務稱為影像偵測: ![](https://hackmd.io/_uploads/rysaXQ402.png) 最早最早的偵測模型是利用一個移動框,輪流在原圖上截出區塊再送給影像辨識模型。雖然原理簡單,但很顯然的運算時間會驚人的成長,因此並不能實用。 近代影像偵測會分為兩個部分來完成。一個部分是和影像辨識相同的分類器;另一個部分是用來生成候選物件框的網路。通常來看,因為經過兩段網路肯定是比影像辨識慢上一點的,但藉由一些特徵共用的技術,如今的影像偵測已經有實時運算等級。 影像偵測的應用範圍以目前來說應該是最廣的,智慧執法、人流統計,甚至是機場的X光安檢系統都有可能看到它的存在。更別提自駕車所需要的道路資訊,如行人、號誌、標誌等,都會使用到影像偵測技術。 偵測技術以往比較有名的是RCNN,但近期大概都是以YOLO系列技術為主流。 ### 影像分割 單純看到分割很難想像這到底是什麼技術。以英文來看這種技術叫做Image Segmentation,翻成影像分割,也有人會稱為Semantic Segmentation,語意分割。如果說,影像偵測是把物體框出來並分類,那麼影像分割就是把一張照片中屬於該物體的像素也標記出來: ![](https://hackmd.io/_uploads/B1yOdm4C3.png) 影像分割最著名的實用案例就是各種影像自動去背功能了。現行一些網站AI去背、甚至一些商用軟體的去背功能都有影像分割的影子在。另一個例子則是協助醫生判讀照片,以AI來標註腫瘤的範圍。 至於是怎麼達到這種像素等級的分類結果呢...目前有兩種方式:基於影像偵測後的框進行遮罩的mask-RCNN,以及直接把影像作非監督式學習的AutoEncoder。mask-RCNN會在一般的RCNN後加上對範圍內像素的01遮罩,因此疊加後會比偵測再慢一些(但後來YOLOV7提出了復用隱性特徵的方式達成多任務並行的架構,速度幾乎感覺不到差別,有興趣者可以google一下)。而AutoEncoder系列的分割方案就很好想像了--把圖片壓成小向量後解壓縮成遮罩: ![](https://hackmd.io/_uploads/BkorNSV02.png) 這邊借用了U-net作為範例,可以清楚看到Encoder和Decoder的架構。當然,在實行過程中也出現過諸如細節丟失等等的問題,慢慢演進後影像分割如同大多數的AutoEncoder模型一樣,加入了Transformer的大軍中。