Pytorch深度学习实战教程(一):语义分割基础与环境搭建
Pytorch的基本使用&&語義分割算法講解
先從最簡單的語義分割基礎與開發環境搭建開始講解。
二、語義分割
語義分割是什么?
語義分割(semantic segmentation) : 就是按照“語義”給圖像上目標類別中的每一點打一個標簽,使得不同種類的東西在圖像上被區分開來。可以理解成像素級別的分類任務,直白點,就是對每個像素點進行分類。
簡而言之,我們的目標是給定一幅RGB彩色圖像(高x寬x3)或一幅灰度圖像(高x寬x1),輸出一個分割圖譜,其中包括每個像素的類別標注(高x寬x1)。具體如下圖所示:
注意:為了視覺上清晰,上面的預測圖是一個低分辨率的圖。在實際應用中,分割標注的分辨率需要與原始圖像的分辨率相同。
這里對圖片分為五類:Person(人)、Purse(包)、Plants/Grass(植物/草)、Sidewalk(人行道)、Building/Structures(建筑物)。
與標準分類值(standard categorical values)的做法相似,這里也是創建一個one-hot編碼的目標類別標注——本質上即為每個類別創建一個輸出通道。因為上圖有5個類別,所以網絡輸出的通道數也為5,如下圖所示:
如上圖所示,預測的結果可以通過對每個像素在深度上求argmax的方式被整合到一張分割圖中。進而,我們可以輕松地通過重疊的方式觀察到每個目標。
argmax的方式也很好理解。如上圖所示,每個通道只有0或1,以Person的通道為例,紅色的1表示為Person的像素,其他像素均為0。其他通道也是如此,并且不存在同一個像素點在兩個以上的通道均為1的情況。因此,通過argmax就找到每個像素點的最大索引通道值。最終得到結果為:
當只有一層通道被重疊至原始圖像時,我們稱之為mask,即只指示某一特定類別所存在的區域。
高分辨率的結果如下圖所示,不同的顏色代表不同的類別:
三、數據集
常見的語義分割算法屬于有監督學習,因此標注好的數據集必不可少。
公開的語義分割數據集有很多,目前學術界主要有三個benchmark(數據集)用于模型訓練和測試。
第一個常用的數據集是Pascal VOC系列。這個系列中目前較流行的是VOC2012,Pascal Context等類似的數據集也有用到。
第二個常用的數據集是Microsoft COCO。COCO一共有80個類別,雖然有很詳細的像素級別的標注,但是官方沒有專門對語義分割的評測。這個數據集主要用于實例級別的分割以及圖片描述。所以COCO數據集往往被當成是額外的訓練數據集用于模型的訓練。
第三個數據集是輔助駕駛(自動駕駛)環境的Cityscapes,使用比較常見的19個類別用于評測。
可以用于語義分割訓練的數據集有很多:
Pascal Voc 2012:比較常見的物體分類,共21個類別;
MS COCO:由微軟贊助,幾乎成為了圖像語義理解算法性能評價的“標準”數據集,共80個類別;
Cityscapes:包含50個歐洲城市不同場景、不同背景、不同季節的街景的33類標注物體;
Pascal-Context:對于PASCAL-VOC 2010識別競賽的擴展,共59個類別;
KITTI:用于移動機器人及自動駕駛研究的最受歡迎的數據集之一,共11個類別;
NYUDv2:2.5維數據集,它包含1449張由微軟Kinect設備捕獲的室內的RGB-D圖像;
SUN-RGBD:由四個RGB-D傳感器得來,包含10000張RGB-D圖像,尺寸與PASCAL VOC一致;
ADE20K_MIT:一個場景理解的新的數據集,這個數據集是可以免費下載的,共151個類別。
數據集有很多,本系列教程不局限于具體數據集,可能也會用到Kaggle比賽之類的數據集,具體每個數據集怎么處理,數據集的格式是什么樣的,后續文章用到什么數據集會具體講解。
四、GPU機器
對于語義分割任務,有個帶有高端GPU顯卡的機器還是非常有必要的,如果沒有,訓練收斂會很慢。
最佳的開發環境為Linux,因為在公司的日常工作,基本都是使用Linux云服務器進行模型開發的工作,提前適應Linux操作系統還是有好處的。
對于學生黨,如果實驗室是做深度學習方向研究的,并且資源完備,那么GPU服務器應該還是能有的,對于GPU服務器的問題不用愁。
但可能由于條件限制,實驗室沒有配備GPU服務器,還想學習深度學習相關的知識,有三種方法:
1、免費云服務器Google Colab
勉強可以一用的是Google Colab,它是一個Google提供的免費GPU服務器,提供的GPU算力還算可以,但是它的主要問題在于需要翻墻和存儲空間小,Google Colab的存儲空間是通過掛載Google Drive得到的,Google Drive只提供15G的免費存儲空間,想要擴展空間,還是需要花錢的。
想使用免費云服務器Google Colab的,可以自行百度教程。
2、阿里云付費GPU云服務器
阿里云提供GPU云服務器資源,有兩種付費模式:包月和按流量付費。有P4服務器,甚至吊炸天的V100服務器。性能強勁,價格也很感人,兩個字形容就是很貴,個人使用者并不推薦購買。除了阿里云提供GPU云服務,騰訊、百度、華為都有相應的服務,但是都很貴。
3、配置一臺電腦主機
可以自己配置一臺臺式主機,也算是對自己的一種投資。配置一臺不錯的,可以用于深度學習訓練的主機需要6000元左右。
深度學習的訓練很依賴顯卡的性能,因此需要配置一個較好的N卡,也就是NVIDIA的顯卡,選顯卡的技巧就是看下顯卡天梯圖:
這個顯卡天梯圖主要包括的是市面常用的顯卡排名,不包括類似V100這樣的價格上10萬的顯卡。
天梯圖,越靠上,顯卡的性能越高,不要選擇右側的AMD顯卡,雖然性能好,但A卡是不支持CUDA的。
根據自己的預算,選擇顯卡,顯卡的顯存盡量選擇8G以上的,深度學習模型訓練很吃顯存資源。
本人買了微星的RTX 2060 Super,買時的價格是3399元,顯卡很不保值,價格會隨時間越來越低。
配置電腦其實能寫很多,比如CPU、電腦主板、電源、內存、散熱器的選擇等,這里就不擴展了。沒有精力自己組裝臺式機的,可以直接買配備相應顯卡的臺式機,但價格相對自己組裝的臺式機,價格會貴一些。
五、開發環境搭建
有條件的,推薦使用Ubuntu系統配置開發環境,Ubuntu是Linux的一個發行版之一,適合新手,界面友好,操作簡單。
由于本人購買的電腦主板,不支持Linux架構的系統安裝,因此后續會以Windows作為開發環境,但這并不影響算法原理與代碼的講解。
本人的臺式機配置情況:
CPU:Intel i7 9700k
顯卡:RTX 2060 Super
系統:Windows 10
安裝好Windows系統和必要的驅動后,需要安裝的工具有:CUDA、Anaconda3、cuDNN、Pytorch-gpu、Fluent Terminal(可選)。
1、CUDA
CUDA,是顯卡廠商NVIDIA推出的運算平臺。我們需要根據自己顯卡的型號選擇支持的CUDA版本,例如RTX 2060 Super支持CUDA 10,下載地址:點擊查看
傻瓜式安裝,很簡單。
安裝好后,需要再配置下系統的環境變量,電腦->鼠標右鍵->屬性->高級系統設置->環境變量->Path:
添加自己的NVSMI路徑到環境變量中,我采用的是默認安裝地址:
配置好后,就可以在cmd中使用nvidia-smi指令查看顯卡了。
2、Anaconda3
Anaconda是Python的包管理器和環境管理器,可以方便我們安裝Python的第三方庫。
下載地址:點擊查看
選擇Python 3.7的版本,安裝也很簡單,傻瓜式下一步即可。
安裝好后,需要添加系統環境變量,方法與安裝CUDA時一樣:
D:\Anaconda D:\Anaconda\Scripts路徑改為自己安裝的Anaconda路徑即可。
配置好后,在cmd中運行conda -V沒有報錯,有版本信息輸出,說明配置成功。
3、cuDNN和Pytorch安裝
cuDNN是用于深度神經網絡的GPU加速庫。它強調性能、易用性和低內存開銷。
安裝好Anaconda之后,可以使用conda安裝cuDNN和Pytorch。
打開Anaconda Prompt,這是Anaconda自帶的命令行工具,先一定要用這個工具創建環境,直接用系統自帶的cmd,可能遇到一些奇怪的問題,例如CondaHTTPError的錯誤。在Anaconda Prompt中輸入:
conda create -n your_name jupyter notebook這句話的意思是創建一個名字為your_name的虛擬環境,并且這個虛擬環境額外安裝jupyter notebook第三方庫。可以將your_name改為你自己喜歡的名字,這個名字是你的虛擬環境的名字,自己隨便取,比如jack。
隨后,輸入y進行安裝:
安裝好后,可以通過指令conda info -e查看已有環境情況。
從上圖可以看到,有兩個環境,一個是base,自帶的基礎環境,另一個是我們新創建的名為jack的環境。新建環境的原因是,我們可以分開管理我們配置的環境。
安裝好環境后,我們就可以激活jack環境,并安裝cuDNN和GPU版的Pytorch了。激活名為jack的環境:
activate jack
可以看到,我們的環境由base變成了jack。在jack環境中安裝cuDNN:
conda install cudnn
安裝cuDNN好后,安裝Pytorch,打開Pytorch官網:點擊查看
根據自己的環境選擇,選擇好后,網頁會自動給出需要運行的指令。這里可能需要區分下Python的版本和CUDA的版本。
Python版本查看方法:直接在命令行中輸入python,會看到Python的版本。
CUDA版本查看方法,在命令行中輸入nvidia-smi:
確定好版本后,就可以通過Pytorch官網提供的指令安裝GPU版本的Pytorch了。
至此,基礎的環境搭建已經完成,恭喜。
4、Fluent Terminal
基礎環境配好了,正常使用已經夠了。
但是追求顏值的人,可能會覺得,Windows自帶的命令行工具和Anaconda提供的命令行工具都太丑了。
有沒有好看,又好用的Terminal?答案是有的,不過需要自己配置,并且還有一些坑需要慢慢踩。
例如Fluent Terminal,它是現代的、也是我比較推薦的終端工具。它是專屬于 Windows 平臺,并利用UWP技術打造的顏值超高的終端模擬器。先看下顏值:
總結
以上是生活随笔為你收集整理的Pytorch深度学习实战教程(一):语义分割基础与环境搭建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: winhex可以编程c语言吗,如何用wi
- 下一篇: agv ti 毫米波雷达_一种基于毫米波