Caffe:如何將圖片數據轉換成lmdb文件


1 圖片信息的轉換

  在caffe中經常使用的數據類型是lmdb或leveldb;不是常見的jpg,jpeg,png,tif等格式;因此,需要進行格式轉換,通過輸入你自己的圖片目錄(下有的大量圖片)轉換成一個lmdb庫文件輸出;這個過程一般由caffe工具convert_imageset完成,該工具在編譯過的caffe-master/build/tools目錄下;

2 格式轉換需要的條件

  格式轉換准備條件有:1)編譯好caffe,而且convert_imageset存在; 2)被轉換的圖片和目錄,注意這些都有格式要求 3)兩個標簽文件train.txt,val.txt; 4)用命令編輯好的shell腳本create-lmdb.sh;

3 被轉換圖片文件和存放目錄

      按照下面圖示安排轉換目錄:注意該例子中,圖片分為0類和1類兩個集合;

4 標簽文件train.txt和val.txt

轉換過程,除了上面提到的圖片文件目錄,還需要這些圖片的標簽文件;該文件存放圖片文件路徑,以及該圖片的標簽(屬於哪個類);一般來說,標簽文件有兩個,一個描述訓練集合-train.txt,一個描述測試集合-val.txt,這兩個文件格式有輕微差別,標簽文件格式如下:

train.txt文件:

1/T10034.jpg 1
0/096377_01M36.JPG 0
1/T580.jpg 1
1/T4151.jpg 1
0/100333_00F42.JPG 0
0/076902_04M36.JPG 0

注意:該文件包含路徑/1和/0;分別存放0,1兩類圖片。

val.txt文件:

T10034.jpg 1
221169_02M52.JPG 0
T580.jpg 1
T4694.jpg 1
332136_01M17.JPG 0
181085_02M28.JPG 0
133417_02M37.JPG 0

注意:該測試集的標簽文件無需分類存儲;與train.txt和val.txt相伴隨的目錄結構圖對照;顯然,文件內容和目錄是密切關聯的;

 

5 如何生成標簽文件train.txt和val.txt

  當圖片規模達到上千萬級別,上述兩個文件的生成需要程序實現,網上的找到一個shell腳本如下,

    # /usr/bin/env sh  
    DATA=examples/images  
    echo "Create train.txt..."  
    rm -rf $DATA/train.txt  
    find $DATA -name *cat.jpg | cut -d '/' -f3 | sed "s/$/ 1/">>$DATA/train.txt  
    find $DATA -name *bike.jpg | cut -d '/' -f3 | sed "s/$/ 2/">>$DATA/tmp.txt  
    cat $DATA/tmp.txt>>$DATA/train.txt  
    rm -rf $DATA/tmp.txt  
    echo "Done.."  

  將該文件拷貝到caffe-master目錄下執行,會在caffe-master/example/images目錄下生成如下的一個train.txt文件:

    cat.jpg 1  
    fish-bike.jpg 2 

  只要將上述文件稍加修改,不難產生你需要的腳本。

 6 用腳本命令生成lmdb

  編寫一個shell文件create_lmdb.sh,內容如下:

    #!/usr/bin/en sh  
    DATA=examples/images  
    rm -rf $DATA/img_train_lmdb  
    build/tools/convert_imageset --shuffle \  
    --resize_height=256 --resize_width=256 \  
    /home/my_name/caffe/examples/images/train  $DATA/train.txt  $DATA/img_train_lmdb  

7 執行腳本

  設置參數-shuffle,打亂圖片順序。設置參數-resize_height和-resize_width將所有圖片尺寸都變為256*256.

  /home/my_name/caffe/examples/images/train 為圖片保存的絕對路徑。最后,運行這個腳本文件

# sudo sh examples/images/create_lmdb.sh

  就會在examples/images/ 目錄下生成一個名為 img_train_lmdb的文件夾,里面的文件就是我們需要的db文件。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM