CAFFE之將圖片轉化為lmdb格式指令碼【直接執行版】(內含生成train.txt和test.txt)
標籤: caffe 深度學習
作者:賈金讓
一.指令碼實現的功能
1.將訓練資料集轉化為lmdb格式;
2.將測試資料集轉化為lmdb格式;
3.生成mean.binaryproto檔案。
二.原理簡述
對於使用caffe的人來說,預處理中非常重要的一步就是格式的轉換,將常用的圖片(.jpg、.png等)轉換為caffe使用的lmdb是非常必要的一步。
caffe中提供了將圖片轉化為lmdb的可執行檔案,即處於caffe/build/tools目錄下的convert_imageset可執行檔案,不過它的使用有三個輸入引數,即需要轉化成lmdb的圖片檔案,用於轉化的train.txt檔案(或test.txt)以及生成lmdb的位置引數。
其中train.txt(test.txt)檔案是需要我們自己生成的,對於大資料來說,手動生成非常之繁瑣和麻煩。下圖是train.txt的示例,可以看到不僅要在檔案中存放圖片的名字,還要有子路徑和所屬類別。
所以我們也需要一個指令碼來自動完成這項功能。
三.程式包簡介及使用說明
完整的程式包應該是下面這個樣子的。
在執行前建議看看readme.md檔案,裡面也有詳細的操作說明。
下面介紹各個資料夾的作用:
/data :用於存放生成的lmdb格式檔案和mean檔案,裡面如下圖:
當然指令碼沒有執行時裡面是沒有mean檔案的。
/sh :用於存放生成train.txt、test.txt、lmdb和mean的指令碼檔案,裡面如下圖:
/tools :用於存放呼叫的caffe的convert_imageset和compute_image_mean兩個可執行檔案,需要手動從你的caffe目錄下,build/toools/目錄裡拷貝到這裡,拷貝后里面是這個樣的:
/train :用於存放你需要轉換成lmdb格式的源訓練圖片,裡面是按類分好的子資料夾,有幾類就有幾個資料夾,命名從0開始(例:我的訓練資料有兩類,男和女,那麼0代表男,1代表女),如下圖所示:
其中0資料夾中存放屬於該類的圖片(例:男),如下:
另一個1資料夾中存放屬於該類的圖片(例:女),如下:
/test :用於存放你需要轉換成lmdb格式的源測試圖片,裡面是暗雷分好的子資料夾,有幾類就有幾個資料夾,命名從0開始(例:同上,也是男女),不過這裡需要注意,測試的圖片不僅要按類放在各個子資料夾中,還要存放在/test資料夾下,test資料夾內部如下所示:
其中0檔案中也存放其中屬於該類的圖片(例:男),如下:
另一個1資料夾中存放屬於該類的圖片(例:女),如下:
data_create.sh指令碼檔案就是我們要執行的檔案。
四.執行指令碼
將訓練圖片、測試圖片和兩個可執行檔案都拷入對應位置後,就可以執行指令碼了。
在命令列中進入create_lmdb目錄,輸入下列程式碼:
./data_create.sh
即可。
執行介面如下:
之後就會在create_lmdb目錄下生成train.txt和test.txt兩個檔案,並且在/create_lmdb/data目錄下生成mean.binaryproto,且在兩個子目錄中生成各自的lmdb檔案。
大功告成!