語義分割:基於openCV和深度學習(一)

語義分割:基於openCV和深度學習(一)

Semantic segmentation with OpenCV and deep learning

介紹如何使用OpenCV、深度學習和ENet架構執行語義分段。閱讀完今天的文章後,能夠使用OpenCV對圖像和視頻應用語義分割。深度學習有助於提高計算機視覺的前所未有的準確性,包括圖像分類、目標檢測,現在甚至分割。

傳統的分割方法是將圖像分割爲若干部分(標準化切割、圖形切割、抓取切割、超像素等);然而,算法並沒有真正理解這些部分所代表的內容。

另一方面,語義分割算法試圖:

把圖像分成有意義的部分,同時,將輸入圖像中的每個像素與類標籤(即人、路、車、公共汽車等)相關聯,語義分割算法非常強大,有很多用例,包括自動駕駛汽車——展示如何將語義分割應用於道路場景圖像/視頻!要學習如何使用OpenCV和深度學習應用語義分割,請繼續閱讀!

尋找這篇文章的源代碼?直接跳到下載部分。OpenCV語義分割與深度學習 在文章的第一部分,將討論ENet深度學習體系結構。

在這裏,將演示如何使用ENet對圖像和視頻流應用語義分割。在這一過程中,將分享來自分段的示例輸出,將語義分段應用於項目時感受到預期的結果。

The ENet semantic segmentation architecture
在這裏插入圖片描述

Figure 1: The ENet deep learning semantic segmentation architecture.

  ENet的一個主要優點是它的速度比大型模型快18倍,需要的參數比大型模型少79倍,具有相似或更好的精度。型號本身只有3.2兆!              在的計算機上,一次CPU轉發需要0.2秒——如果使用GPU,這個分段網絡可以運行得更快。Paszke等人。在Cityscapes數據集上訓練該數據集,這是一個語義的、實例化的、密集的像素註釋,包含20-30個類(取決於使用的模型)。顧名思義,城市景觀數據集包括可用於城市場景理解的圖像示例,包括自動駕駛車輛。

使用的特定模型在20個課題中進行了訓練,包括:

在這裏插入圖片描述

如何應用語義分割來提取圖像和視頻流中每個類的密集像素映射。如果有興趣,在自定義數據集上訓練自己的ENet模型進行分段。

Semantic segmentation with OpenCV and deep learning

$ tree --dirsfirst

.

├── enet-cityscapes

│ ├── enet-classes.txt

│ ├── enet-colors.txt

│ └── enet-model.net

├── images

│ ├── example_01.png

│ ├── example_02.jpg

│ ├── example_03.jpg

│ └── example_04.png

├── videos

│ ├── massachusetts.mp4

│ └── toronto.mp4

├── output

├── segment.py

└── segment_video.py

4
directories, 11 files

項目有四個目錄:

enet cityscapes/:包含預先訓練的深度學習模型、項目列表和與項目對應的顏色標籤。 images/:選擇四個樣本圖像來測試圖像分割腳本。

videos/:包括兩個用於測試深度學習分段視頻腳本的示例視頻。這些視頻的點數列在“視頻分割結果”部分。

output/:出於組織目的,喜歡讓腳本將處理過的視頻保存到output文件夾中。不包括在下載的輸出圖像/視頻,因爲文件的大小相當大。需要使用的代碼自行生成它們。 回顧兩個Python腳本:

segment.py:對單個圖像執行深度學習語義分割。將通過這個腳本來學習分割的工作原理,然後在轉到視頻之前對單個圖像進行測試。

segment_video.py:顧名思義,此腳本將對視頻執行語義分割。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章