AI-For-Beginners/translations/hk/lessons/4-ComputerVision/12-Segmentation/README.md

78 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "d7f8a25ff13cfe9f4cd671cc23351fad",
"translation_date": "2025-08-24T21:56:17+00:00",
"source_file": "lessons/4-ComputerVision/12-Segmentation/README.md",
"language_code": "hk"
}
-->
# 分割
我們之前學過物件偵測,這讓我們能夠透過預測物件的*邊界框*來定位影像中的物件。然而,對於某些任務來說,我們不僅需要邊界框,還需要更精確的物件定位。這項任務被稱為**分割**。
## [課前小測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112)
分割可以被視為**像素分類**,也就是說,我們需要為影像中的**每一個**像素預測其類別(*背景*也是其中一個類別)。主要有兩種分割演算法:
* **語義分割**僅告訴像素的類別,並不區分同一類別中的不同物件。
* **實例分割**將類別分為不同的實例。
例如,對於實例分割,這些羊是不同的物件;但對於語義分割,所有的羊都被表示為同一類別。
<img src="images/instance_vs_semantic.jpeg" width="50%">
> 圖片來源:[這篇部落格文章](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50)
分割有不同的神經網絡架構,但它們的結構都是相似的。在某種程度上,它與你之前學過的自編碼器相似,但我們的目標不是重建原始影像,而是重建一個**遮罩**。因此,分割網絡包含以下部分:
* **編碼器**從輸入影像中提取特徵。
* **解碼器**將這些特徵轉換為**遮罩影像**,其大小與通道數與類別數相同。
<img src="images/segm.png" width="80%">
> 圖片來源:[這篇論文](https://arxiv.org/pdf/2001.05566.pdf)
我們特別需要提到分割中使用的損失函數。在使用傳統自編碼器時我們需要測量兩張影像之間的相似性這可以使用均方誤差MSE來完成。而在分割中目標遮罩影像中的每個像素代表一個類別編號在第三維度上進行獨熱編碼因此我們需要使用特定於分類的損失函數——交叉熵損失並對所有像素取平均。如果遮罩是二元的則使用**二元交叉熵損失**BCE
> ✅ 獨熱編碼是一種將類別標籤編碼為向量的方法,其長度等於類別數量。可以參考[這篇文章](https://datagy.io/sklearn-one-hot-encode/)了解這項技術。
## 醫學影像中的分割
在這節課中,我們將通過訓練網絡來識別醫學影像中的人類痣(也稱為痣),以實際應用分割技術。我們將使用<a href="https://www.fc.up.pt/addi/ph2%20database.html">PH<sup>2</sup>資料庫</a>中的皮膚鏡影像作為影像來源。這個資料集包含200張影像分為三類典型痣、不典型痣和黑色素瘤。所有影像也包含對應的**遮罩**,用於勾勒痣的輪廓。
> ✅ 這項技術特別適合這種類型的醫學影像,但你還能想到哪些其他的現實應用場景?
<img alt="navi" src="images/navi.png"/>
> 圖片來源PH<sup>2</sup>資料庫
我們將訓練一個模型,將任何痣從背景中分割出來。
## ✍️ 練習:語義分割
打開以下筆記本,了解更多不同的語義分割架構,練習使用它們,並觀察它們的實際效果。
* [語義分割 Pytorch](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb)
* [語義分割 TensorFlow](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb)
## [課後小測驗](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212)
## 總結
分割是一種非常強大的影像分類技術,超越了邊界框,實現了像素級的分類。這項技術被廣泛應用於醫學影像等領域。
## 🚀 挑戰
人體分割只是我們可以對人物影像執行的常見任務之一。其他重要的任務還包括**骨架檢測**和**姿勢檢測**。試試[OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose)庫,看看姿勢檢測如何被應用。
## 複習與自學
這篇[維基百科文章](https://wikipedia.org/wiki/Image_segmentation)提供了這項技術的各種應用的良好概述。深入了解實例分割和全景分割這些子領域。
## [作業](lab/README.md)
在這次實驗中嘗試使用來自Kaggle的[Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset)進行**人體分割**。
**免責聲明**
本文件已使用人工智能翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原文文件作為權威來源。如涉及關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋概不負責。