在根目錄下的tools文件夾下,提供了文件:convert_imageset。文件的左右是用於將圖片文件轉換成caffe框架中能直接使用的db文件。
文件使用格式:
convert_imageset [FLAGS] ROOTFOLDER/ LISTFILE DB_NAME
需要帶4個參數:
FLAGS:圖片參數組
ROOTFOLDER/:圖片存放的絕對路徑,從根目錄開始
LISTFILE:圖片文件列表清單,一般爲一個txt文件,一行一張照片
DB_NAME:最終生成的db文件存放目錄
如果圖片已經下載到本地,那麼首先需要創建一個列表清單,保存爲txt。
以下以caffe中自帶的圖片爲例,創建腳本生成train.txt文件
sudo vi examples/images/create_lmdb.sh
# /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.."
接下來了解FLAGS這個參數組:
-gray:是否以灰度圖的方式打開圖片。程序調用opencv中的imread打開圖片,默認false。
-shuffle:是否隨機打亂圖片順序。默認爲false。
-backend:需要轉換成的db文件格式,可選爲leveldb或lmdb,默認後者。
-resize_width/resize_height:改變圖片的大小。
-check_size:檢測所有的數據是否有相同的尺寸。默認爲false,不檢查。
-encoded:是否將原圖片編碼放入最終的數據中,默認爲false。
-encoded_type:與前一個參數對應,將圖片編碼爲哪一個格式:png,jpg
接下來可以調用命令來生成lmdb格式數據:
創建腳本
sudo vi examples/images/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/xxx/caffe/examples/images/ $DATA/train.txt $DATA/img_train_lmdb