【語義分割小白教程】手把手教你訓練自己的數據集(基於輕量級的FCN-DenseNet)

0. 任務描述:

正好這幾天有時間,就寫一下一個小白教程,用來教大家如何用一個輕量級的 FCN-DenseNet 訓練自己的數據集,我們以分割魔方爲例:

在這裏插入圖片描述

1. 標註數據:

1.1 Labelme 的安裝:

語義分割標註我們使用 labelme,它是一個圖形界面的圖像標註軟件,是用 PyQt5 編寫的圖形界面。

安裝方式:

pip3 install labelme --user

報錯:
在這裏插入圖片描述
我們換清華源試一下:

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -U labelme --user --default-time=1000 --user

解決:
在這裏插入圖片描述

1.2 Labelme 的使用:

在終端輸入 labelme:
在這裏插入圖片描述
打開界面如圖:
在這裏插入圖片描述
點擊OpenDir選擇需要標註的圖片的路徑:
在這裏插入圖片描述
在這裏插入圖片描述
點擊標註按鍵開始標註:
在這裏插入圖片描述
在這裏插入圖片描述
閉合標註區域後,填入標籤:
在這裏插入圖片描述
點擊Save保存:
在這裏插入圖片描述
在這裏插入圖片描述
另一張也如法炮製:
在這裏插入圖片描述
最後得到兩個標註的json文件:
在這裏插入圖片描述

1.3 轉換標註格式:

這一步我們需要把 json 文件轉換成 VOC 格式的顏色掩碼圖,像這樣:
在這裏插入圖片描述

我們只需要在終端輸入:

labelme_json_to_dataset <文件名>.json

即:
在這裏插入圖片描述

就可以看到在該目錄下,生成了相應的文件:

在這裏插入圖片描述
在這裏插入圖片描述
對於 1.json 也同樣操作;

最終我們只需要保留兩種標註的掩碼圖(注意需要改成跟原圖相同的圖片名):
在這裏插入圖片描述

2. 數據的目錄結構:

我們需要安排一下圖片和標註的文件目錄;

首先新建一個 Data 文件夾:
在這裏插入圖片描述
裏面創建 2 個文件夾:

在這裏插入圖片描述

train/images 文件夾放訓練原圖:
在這裏插入圖片描述
train/masks 放訓練標註圖:

在這裏插入圖片描述
同樣那個 val 下面的 images 和 masks 分別放測試原圖和測試標註圖;

3. 下載源碼:

源碼地址(記得給一個Star哦~):
https://github.com/Sharpiless/FCN-DenseNet

在這裏插入圖片描述
下載完成後解壓:

在這裏插入圖片描述
在這裏插入圖片描述

4. 下載預訓練模型:

預訓練模型地址:
http://download.pytorch.org/models/densenet121-a639ec97.pth

下載完成後放到源碼目錄下:

在這裏插入圖片描述

5. 安裝 pytorch:

Linux 安裝比較容易,這裏就着重講一下怎麼在 Windows 下安裝吧;

(我的是 python3.7,其他的版本同理)

到這個網站:
https://www.lfd.uci.edu/~gohlke/pythonlibs/

找到對應的 torch 版本下載:
在這裏插入圖片描述

下載完成後,在相應目錄下 shift+右鍵 選擇打開 Windows Powershell:

在這裏插入圖片描述
輸入:

pip3 install torch‑1.0.1‑cp37‑cp37m‑win_amd64.whl --user

然後再:

pip3 install torchvision --user

如果還有報錯 ‘No modul named ***’,也是直接用:

pip3 install *** --user

6. 運行訓練:

在編輯器(我用的 VSCode)打開 FCN-DenseNet:
在這裏插入圖片描述
運行 train.py 即可開始訓練:
在這裏插入圖片描述

下面是訓練的參數,都有註釋說明,需要改的話在 default 裏面改就 ok:

在這裏插入圖片描述訓練時的模型參數保存在這裏:
在這裏插入圖片描述
在這裏插入圖片描述

7. 測試圖片:

運行 test.py 即可:
在這裏插入圖片描述
會在目錄下生成一個 output 文件夾,裏面是測試集的分割結果(這裏是因爲我只有兩張圖片做例子,所以測試集跟訓練集是一樣的):

在這裏插入圖片描述
大功告成!

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