1. 程式人生 > >CAFFE之將圖片轉化為lmdb格式指令碼【直接執行版】(內含生成train.txt和test.txt)

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的示例,可以看到不僅要在檔案中存放圖片的名字,還要有子路徑和所屬類別。

image_1bgs70kfc1ph31fil13244clsksm.png-230.3kB

所以我們也需要一個指令碼來自動完成這項功能。

三.程式包簡介及使用說明

完整的程式包應該是下面這個樣子的。

image_1bgs76ru8162e1rqkfjb17201d5b13.png-163.7kB

在執行前建議看看readme.md檔案,裡面也有詳細的操作說明。

下面介紹各個資料夾的作用:
/data :用於存放生成的lmdb格式檔案和mean檔案,裡面如下圖:

image_1bgs7b64b1as31sur7tn1rdo1h1m1g.png-159.5kB

當然指令碼沒有執行時裡面是沒有mean檔案的。
/sh :用於存放生成train.txt、test.txt、lmdb和mean的指令碼檔案,裡面如下圖:

image_1bgs7f58257v1hu4svt10gp1n562a.png-155.9kB

/tools :用於存放呼叫的caffe的convert_imageset和compute_image_mean兩個可執行檔案,需要手動從你的caffe目錄下,build/toools/目錄裡拷貝到這裡,拷貝后里面是這個樣的:

image_1bgs7i0li1tu3kpc28i1q4taj237.png-157.7kB

/train :用於存放你需要轉換成lmdb格式的源訓練圖片,裡面是按類分好的子資料夾,有幾類就有幾個資料夾,命名從0開始(例:我的訓練資料有兩類,男和女,那麼0代表男,1代表女),如下圖所示:

image_1bgs7mulk1a9i1ja74rsvu21tln3k.png-154.9kB

其中0資料夾中存放屬於該類的圖片(例:男),如下:

image_1bgs7phstjre10d8jops1j3m41.png-572.5kB

另一個1資料夾中存放屬於該類的圖片(例:女),如下:

image_1bgs7r0e61nq31hmk1qnillfmek4e.png-480.1kB

/test :用於存放你需要轉換成lmdb格式的源測試圖片,裡面是暗雷分好的子資料夾,有幾類就有幾個資料夾,命名從0開始(例:同上,也是男女),不過這裡需要注意,測試的圖片不僅要按類放在各個子資料夾中,還要存放在/test資料夾下,test資料夾內部如下所示:

image_1bgs807ac1erl4r59no1mij1kmf4r.png-613.5kB

其中0檔案中也存放其中屬於該類的圖片(例:男),如下:

image_1bgs81ibedji19hh1ng71h981p2458.png-342.1kB

另一個1資料夾中存放屬於該類的圖片(例:女),如下:

image_1bgs82h431o8v1649fmdd0c1v6s5l.png-422.4kB

data_create.sh指令碼檔案就是我們要執行的檔案。

四.執行指令碼

將訓練圖片、測試圖片和兩個可執行檔案都拷入對應位置後,就可以執行指令碼了。
在命令列中進入create_lmdb目錄,輸入下列程式碼:
./data_create.sh
即可。
執行介面如下:
image_1bgs8bro615itpfjqe7fvs10r16i.png-80.4kB
之後就會在create_lmdb目錄下生成train.txt和test.txt兩個檔案,並且在/create_lmdb/data目錄下生成mean.binaryproto,且在兩個子目錄中生成各自的lmdb檔案。

大功告成!