caffe-ssd 訓練自己的VOC資料集(一):轉換VOC xml資料為lmdb格式
假設你已經做好了VOC資料標籤,也就是xml檔案,並且已經配置好了caffe-ssd的環境
第一步,在caffe-ssd/data目錄下本身自帶有如下資料夾:
然後在caffe-ssd/data目錄下新建一個資料夾命名為VOCdevkit:
然後data目錄下有:
進入VOCdevkit目錄內,新建VOC2007資料夾,然後再進入VOC2007資料夾內新建Annotations,ImageSets,JPEGImages三個資料夾,在ImageSets資料夾內新建一個Main資料夾
最後目錄級別為:
- caffe-ssd/data/VOCdevkit/VOC2007
- -----------------------------------------------/Annotations
- -----------------------------------------------/ImageSets
- --------------------------------------------------------------/Main
- -----------------------------------------------/JPEGImages
再將自己做的資料集所有的jpg圖片全部放入JPEGImages資料夾內(下面這張路徑圖是windows可視之後。只是為了方便理解,我這篇部落格是基於LINUX下的,Windows下應該也差不多)
將自己做的資料集標籤(應該和放入JPEGImages檔案內的圖片名一樣且數量一樣多)xml檔案全部放入Annotations資料夾內
Main資料夾應該有(可以用matlab指令碼或者python指令碼生成,我會將matlab指令碼放置在下邊百度雲盤連線內):
訓練集: train.txt
訓練驗證集: trainval.txt
測試集: test.txt
驗證集: val.txt
這些txt檔案內容如下所示,記錄的都是資料集的名字不包括字尾:
好了,準備好以上工作後要正式開始將我們的VOC資料集轉換為lmdb格式的工作了。
1. 首先看到caffe-ssd/data目錄下,其中有我們新建的VOCdevkit資料夾還有一個VOC0712資料夾:
進入VOC0712資料夾內,可以看到:
create_data.sh, create_list.sh, labelmap_voc.prototxt三個檔案
create_list.sh: 用於生成訓練集,測試集的檔案路徑txt檔案和一個測試集目錄名和圖片大小的txt
create_data.sh: 用於生成lmdb格式的訓練資料集和測試集
labelmap_voc.prototxt: 裡頭是標籤的資訊
將這三個檔案複製到自己新建的VOCdevkit/VOC2007資料夾內:複製後VOC2007資料夾內檔案如下
然後要準備修改複製過來的這三個檔案
首先修改create_list.sh(改成自己的目錄就行)
總共需要改三處。
然後改create_data.sh(改成自己的目錄就行)
總共需要修改五處。
最後修改labelmap_voc.prototxt檔案:
除了第一個背景標籤部分不要改,其他改成自己的標籤就行,多的刪掉,少了新增進去就行
最後,再在caffe-ssd/examples資料夾內新建一個VOC2007資料夾就行(空的):新建後examples目錄內檔案如下:
2. 要開始生成lmdb的最後步驟了
先執行create_list.sh指令碼 用sh create_list.sh命令不行的話,就用 . create_list.sh命令,執行完後,會在自己建的VOCdevkit/VOC2007目錄內生成trainval.txt, test.txt, test_name_size.txt。
再執行create_data.sh指令碼 用 sh create_data.sh 命令不行的話,就用 . create_data.sh 命令,執行完後,會在會在自己建的VOCdevkit/VOC2007目錄內生成lmdb資料夾:
lmdb資料夾內有:
這兩個資料夾內有訓練集和測試集的lmdb格式的資料:
例如測試集lmdb資料夾內:
到此,VOC資料集轉換為lmdb格式資料集就成功了。雙擊666!!!