Caffe 中怎樣準備訓練資料

2021-08-10 20:41:55 字數 4519 閱讀 4268

caffe中怎樣準備訓練資料

用caffe訓練自己的資料,首先要準備資料,使得資料能夠輸入到訓練網路中,caffe支援多種方式的資料輸入

1 caffe中訓練資料的輸入方式

(1)資料來自於資料庫

(leveldb

或lmdb格式的資料)

層型別(

layertype):data

必須設定的引數:

source:包含資料庫的目錄名稱,如examples/mnist/mnist_train_lmdb

batch_size:每次處理的資料個數,如64

可選的引數:

rand_skip:在開始的時候,路過某個資料的輸入。通常對非同步的sgd很有用

backend:選擇是採用leveldb還是lmdb,預設是leveldb.示例:

layer

transform_param

data_param

}(2)

資料來自於記憶體

層型別:

memorydata

必須設定的引數:

batch_size:每一次處理的資料個數,比如2

channels:通道數

height:高度

width:寬度

示例:

layer

transform_param }

(3)資料來自於

層型別:

imagedata

必須設定的引數:

source:乙個文字檔案的名字,每一行給定乙個檔案的名稱和標籤(label)

batch_size:每一次處理的資料個數,即數

可選引數:

rand_skip:在開始的時候,路過某個資料的輸入。通常對非同步的sgd很有用。

shuffle:隨機打亂順序,預設值為false

new_height,new_width:如果設定,則將進行resize

示例:

layer

image_data_param }

(4)資料來自於

hdf5

層型別:

hdf5data

必須設定的引數:

source:讀取的檔名稱

batch_size:每一次處理的資料個數

示例:

layer }

(5)資料**於

windows

層型別:

windowdata

必須設定的引數:

source:乙個文字檔案的名字

batch_size:每一次處理的資料個數,即數

示例:

layer

輸入層常用的層型別是

data

和imagedata

2.2

如何將訓練資料轉換為資料庫格式(lmdb或leveldb)的輸入資料

第一步:建立檔案列表清單,一般為乙個

txt檔案,其中每一行對應著一張

,格式為:

檔名 類別

例如:

名字後面的數字是類別標籤

第二步:使用

caffe

工具命令

(是個可執行程式,是由

caffe

中的原始碼檔案

convert_imageset.cpp

經過編譯後生產的)

convert_imageset[flags] [rootfolder/] [listfile] [db_name]

需要帶四個引數:

flags:

引數組

-gray:是否以灰度圖的方式開啟。程式呼叫opencv庫中的imread()函式來開啟,預設為false

-shuffle:是否隨機打亂順序。預設為false

-backend:需要轉換成的db檔案格式,可選為leveldb或lmdb,預設為lmdb

-resize_width/resize_height:改變的大小。在執行中,要求所有的尺寸一致,因此需要改變

大小。程式呼叫opencv庫的resize()函式來對放大縮小,預設為

0,不改變

-check_size:檢查所有的資料是否有相同的尺寸。預設為false,不檢查

-encoded:是否將原編碼放入最終的資料中,預設為false

-encode_type:與前乙個引數對應,將編碼為哪乙個格式:『png','jpg'......

rootfolder/:

存放的絕對路徑,從

linux

系統根目錄開始

listfile:

檔案列表清單,一般為乙個

txt檔案,一行一張

db_name:

最終生成的

db檔案存放目錄例如:

mark@ubuntu:~/study/caffe/image$

convert_imageset   /home/mark/study/caffe/image/

./train_list.txt    t_train_lmdb

成功後,在

~/study/caffe/image

下生成目錄

t_train_lmdb

注意:rootfolder

和第一步中的檔名連線起來是個的訪問到該檔案的絕對路徑

2.

3建立均值檔案

根據需要可以用下面的命令來所有訓練資料的均值儲存為檔案,減去均值後,再進行訓練,會提高訓練的速度和精度

compute_image_mean[train_lmdb] [mean.binaryproto]例如:

mark@ubuntu:~/study/caffe/image$

compute_image_mean   t_train_lmdb   train.mean.binaryproto

i111610:23:11.811018 18283 db_lmdb.cpp:35] opened lmdb t_train_lmdb

i111610:23:11.811309 18283 compute_image_mean.cpp:70] starting iteration

i111610:23:11.811520 18283 compute_image_mean.cpp:101] processed 20 files.

i111610:23:11.811661 18283 compute_image_mean.cpp:108] write totrain.mean.binaryproto

i111610:23:11.811934 18283 compute_image_mean.cpp:114] number of channels:3

i111610:23:11.811954 18283 compute_image_mean.cpp:119] mean_value channel[0]: 222.026

i111610:23:11.811982 18283 compute_image_mean.cpp:119] mean_value channel[1]: 224.084

i111610:23:11.811998 18283 compute_image_mean.cpp:119] mean_value channel[2]: 220.869

mark@ubuntu:~/study/caffe/image$

caffe訓練自己的資料

本文介紹如何使用 caffe 對自己的影象資料進行分類。1 資料庫準備 由於資料收集比較費時,為了簡單說明,我用了兩類,dog和 bird 每種約 300張。train200 張,val100張。新建乙個資料夾 mine 放自己的資料,在 mine 資料夾下新建 train 和val 資料夾,tra...

caffe訓練資料流程

cifar10訓練例項 sudo sh data cifar10 get cifar10.sh 2.轉換資料格式為lmdb sudo sh examples cifar10 create cifar10.sh 轉換成功後,會在 examples cifar10 資料夾下生成兩個資料夾,cifar10...

使用caffe訓練自己的資料

這裡先介紹採用image net來訓練自己的資料 假設放在 data train 假設放在 data val 格式樣例 格式樣例 假設這兩個檔案均放在 data 這裡將資料最好放在自己的使用者組裡面,放在別的使用者組,在呼叫image net的時候可能會涉及到許可權問題導致執行失敗。example ...