- 操作系統:ubuntu22.04
- IDE:Visual Studio Code
- 編程語言:C++11
算法描述
目標檢測(Object Detection)、圖像分類(Image Classification)、語義分割(Semantic Segmentation) 是計算機視覺三大核心任務,它們在輸入、輸出、應用場景和算法思路上有本質區別。
下面我用通俗語言 + 技術對比 + 應用舉例 + 輸出形式圖示的方式,幫你徹底搞懂它們的區別。
一句話通俗理解
任務 | 一句話解釋 |
---|---|
圖像分類 | “這張圖里是什么?” → 輸出一個標簽(如“貓”) |
目標檢測 | “這張圖里有什么,在哪?” → 輸出多個框 + 標簽(如“貓在左上角”) |
語義分割 | “這張圖里每個像素屬于什么?” → 輸出每個像素的類別(精細到像素級) |
技術對比表
維度 | 圖像分類 | 目標檢測 | 語義分割 |
---|---|---|---|
輸入 | 一張圖像 | 一張圖像 | 一張圖像 |
輸出 | 1 個類別標簽 | 多個邊界框 + 類別標簽 | 每個像素的類別標簽(H×W 的 mask) |
定位能力 | ? 無 | ? 有(矩形框) | ? 精確到像素 |
多目標支持 | ? 通常只識別“主要物體” | ? 支持多個目標 | ? 支持多個目標 |
重疊目標處理 | ? 無法區分 | ? 可區分不同框 | ? 可區分不同像素歸屬 |
常用模型 | ResNet, VGG, EfficientNet | YOLO, SSD, Faster R-CNN | U-Net, DeepLab, FCN |
評估指標 | Accuracy, Top-1/5 | mAP, IoU, Precision/Recall | mIoU, Pixel Accuracy |
計算復雜度 | ? | ?? | ??? |
應用舉例 | 相冊自動分類、內容審核 | 人臉檢測、自動駕駛、工業缺陷定位 | 醫學圖像分割、遙感地物分析 |
輸出形式圖示(想象一張街景圖)
假設輸入是一張街景圖,包含:汽車、行人、交通燈。
任務 | 輸出形式 |
---|---|
圖像分類 | “街景” 或 “包含車輛和行人”(只有一個標簽) |
目標檢測 | 三個框: – [汽車, (x1,y1,x2,y2)] – [行人, (x3,y3,x4,y4)] – [交通燈, (x5,y5,x6,y6)] |
語義分割 | 一張和原圖一樣大小的彩色圖, 每個像素被染色: – 紅色=汽車像素 – 藍色=行人像素 – 綠色=交通燈像素 |
💡 語義分割不區分“這是第幾輛汽車”,只關心“這些像素屬于汽車”。
算法思想差異
-
圖像分類
- 核心思想:提取整張圖的全局特征 → 映射到類別
- 網絡結構:CNN → Global Average Pooling → FC → Softmax
- 代表模型:ResNet, VGG, MobileNet
-
目標檢測
- 核心思想:既要分類,又要定位 → 輸出框坐標 + 類別
- 兩階段(如 Faster R-CNN):
- 先生成候選框(Region Proposal)
- 再對每個框分類 + 精修坐標
- 單階段(如 YOLO, SSD):
- 直接在網格上預測框和類別,速度快
- 關鍵模塊:Anchor機制、NMS、IoU Loss
- 語義分割
- 核心思想:為每個像素做分類 → 輸出 H×W 的類別圖
- 網絡結構:Encoder-Decoder(如 U-Net),或帶空洞卷積(DeepLab)
- 關鍵技術:上采樣、跳躍連接(skip connection)、多尺度融合
應用場景對比
場景 | 適合任務 | 原因 |
---|---|---|
手機相冊自動分類 | 圖像分類 | 只需知道“這是風景/人物/寵物” |
自動駕駛識別車輛行人 | 目標檢測 | 需要知道“車在哪,有多大,是什么類型” |
醫學影像腫瘤區域分割 | 語義分割 | 需要精確知道“哪些像素是腫瘤” |
工業缺陷檢測 | 目標檢測 or 語義分割 | 粗定位用檢測,精細輪廓用分割 |
人臉考勤 | 目標檢測 + 分類 | 先檢測人臉框,再分類是誰 |
常見誤區
誤區 | 正解 |
---|---|
“目標檢測就是多個圖像分類” | ? 錯!目標檢測需要同時預測位置和類別,且要處理重疊、尺度變化 |
“語義分割就是超精細的目標檢測” | ? 錯!語義分割不區分實例(兩個挨著的汽車會被染成同一顏色) |
“圖像分類不能用于多物體圖” | ?? 不完全錯,但效果差。分類模型通常關注“最顯著物體” |
? 如果你想區分“第一輛車”和“第二輛車”,需要用實例分割(Instance Segmentation),如 Mask R-CNN ——
它是目標檢測 + 語義分割的結合體。
總結一句話:
圖像分類告訴你“是什么”,目標檢測告訴你“是什么+在哪里”,語義分割告訴你“每個像素是什么”。
掌握這三者的區別,是你理解計算機視覺任務體系的第一步,也是面試高頻考點!
📌 面試加分回答示例:
“圖像分類是整圖打標簽,目標檢測是畫框+分類,語義分割是像素級分類。我在工業項目中用目標檢測定位缺陷位置,因為需要知道缺陷坐標用于機械臂抓取;而在醫學圖像中用語義分割,因為醫生需要知道病灶的精確邊界。”