1. 程式人生 > >Tensoflow-程式碼實戰篇--Deeplab-V3+--程式碼復現(二)

Tensoflow-程式碼實戰篇--Deeplab-V3+--程式碼復現(二)

在上篇博文中,我詳細的介紹瞭如何在資料集Cityscapes復現Deeplab(v3+),這篇文章主要介紹一下對資料集VOC2012的驗證。

一、參考資料:

二、準備工作:

環境:

資料集準備:

1、下載資料集:

自己先下好voc2012的資料集,解壓放在本地。 我的本地資料存在目錄如下: 在這裡插入圖片描述 圖中:除了SegmentationClassRaw和tfrecord之外的幾個資料夾是有下載的資料集解壓得到的,而SegmentationClassRaw和tfrecord這兩個資料夾使我們自己建立的;SegmentationClassRaw: 是我們將原始的三通道(彩色)Lable轉換成單通道(黑白)的,詳細轉換過程見下步;**tfrecord:**是我們將圖片和單通道lable轉換用於tensorflow計算的資料格式,轉換過程見下.

3、資料格式轉換:

  • 三通道—to—單通道 下載的資料集中只提供了三通道(彩色)的標註(lable)(SegmentationClass資料夾中),但是我們訓練和後面的測試中必須得用到單通道(黑白)的,所以第一步應該將其進行轉換(不過我不是很明白為嘛訓練要用單通道的,難道是因為單通道的計算量小,希望哪路大神看見此文幫我解答一下);官方提供的程式碼中提供了格式轉換檔案【/home/jerry/Deeplab/research/deeplab/datasets/remove_gt_colormap.py】,我在看博文時發現有大神用其他程式碼轉換格式的,很厲害。我就直接用了官方的,程式碼很簡單。我編了個sh指令碼檔案,直接呼叫該檔案,不需要對【remove_gt_colormap.py】進行任何修改。 在這裡插入圖片描述
    轉換成後的資料儲存在SegmentationClassRaw中,該資料夾最好自己先建好,然後在sh中修改相關路徑就ok。
  • 生成tfrecord檔案 官方提供的檔案中,同樣有將voc2012資料轉換成tfrecord的程式碼【/home/jerry/Deeplab/research/deeplab/datasets/build_voc2012_data.py】,同樣,編寫sh指令碼檔案,修改部分路徑,然後直接生成tfrecord檔案,程式碼見上圖後半部分。同樣,最好先自己建立tfreord資料夾。
  • 引數說明: –image_folder=“儲存images的路徑” \ –semantic_segmentation_folder=“儲存labels的路徑” \ –list_folder=“儲存train.txt檔案的路徑” \ –image_format=“jpg(image格式)” \ –output_dir=“生成tfrecord格式的資料所要儲存的位置”

資料都準備好了之後,就可以直接開始呼叫程式碼,進行訓練和測試了。

三、訓練

訓練這部分,沒有什麼難的,直接將官方程式碼執行就好。個人為了麻煩,全部將需要調參的寫成了sh指令碼檔案,下面直接貼出我的程式碼。 在這裡插入圖片描述 指令碼中的相關引數含義可見我的上文https://blog.csdn.net/qq_38437505/article/details/82952024 利用官方提供的ckpt,我訓練的loss大約1.4左右。

四、測試:

在這裡插入圖片描述 利用官方的訓練ckpt模型,我的最終,Miou達到了81.5%,由於機器以及部分引數的原因,沒法達到論文中準確率。

五、視覺化結果

在這裡插入圖片描述 最後將我最終得到訓練結果給大家看看,還是很不錯的。 在這裡插入圖片描述 在這裡插入圖片描述