訓(xùn)練和測試自己的圖片

學(xué)習(xí)caffe的目的餐蔬,最終還是要用到自己的實際項目或科研中碎紊。因此,本文介紹一下樊诺,從自己的原始圖片到lmdb數(shù)據(jù)仗考,再到訓(xùn)練和測試模型的整個流程。

1词爬、準(zhǔn)備數(shù)據(jù)

有條件的同學(xué)秃嗜,可以去imagenet官網(wǎng),下載imagenet圖片來訓(xùn)練顿膨。不過在baidu網(wǎng)盤這兒也可以下載我的數(shù)據(jù)锅锨,共有500張圖片,分為大巴車恋沃、恐龍必搞、大象、鮮花和馬五個類囊咏,每個類100張恕洲。

編號分別以3,4梅割,5霜第,6,7開頭炮捧,各為一類庶诡。我從其中每類選出20張作為測試,其余80張作為訓(xùn)練咆课。因此最終訓(xùn)練圖片400張末誓,測試圖片100張,共5類书蚪。我將圖片放在caffe根目錄下的data文件夾下面喇澡。即訓(xùn)練圖片目錄:data/re/train/ ,測試圖片目錄: data/re/test/

2、轉(zhuǎn)換為lmdb格式

具體的轉(zhuǎn)換過程殊校,可參考:圖像數(shù)據(jù)轉(zhuǎn)換成db(leveldb/lmdb)文件

首先晴玖,在examples下面創(chuàng)建一個myfile的文件夾,來用存放配置文件和腳本文件。然后編寫一個腳本create_filelist.sh呕屎,用來生成train.txt和test.txt清單文件

sudo mkdir examples/myfile
sudo gedit examples/myfile/create_filelist.sh

編輯此文件让簿,寫入如下代碼,并保存

#!/usr/bin/env sh
DATA=data/re/
MY=examples/myfile

echo "Create train.txt..."
rm -rf $MY/train.txt
for i in 3 4 5 6 7 
do
find $DATA/train -name $i*.jpg | cut -d '/' -f4-5 | sed "s/$/ $i/">>$MY/train.txt
done
echo "Create test.txt..."
rm -rf $MY/test.txt
for i in 3 4 5 6 7
do
find $DATA/test -name $i*.jpg | cut -d '/' -f4-5 | sed "s/$/ $i/">>$MY/test.txt
done
echo "All done"

然后秀睛,運行此腳本
sudo sh examples/myfile/create_filelist.sh
成功的話尔当,就會在examples/myfile/ 文件夾下生成train.txt和test.txt兩個文本文件,里面就是圖片的列表清單蹂安。

接著再編寫一個腳本文件椭迎,調(diào)用convert_imageset命令來轉(zhuǎn)換數(shù)據(jù)格式。
sudo gedit examples/myfile/create_lmdb.sh
插入:

#!/usr/bin/env sh
MY=examples/myfile

echo "Create train lmdb.."
rm -rf $MY/img_train_lmdb
build/tools/convert_imageset \
--shuffle \
--resize_height=256 \
--resize_width=256 \
/home/xxx/caffe/data/re/ \
$MY/train.txt \
$MY/img_train_lmdb

echo "Create test lmdb.."
rm -rf $MY/img_test_lmdb
build/tools/convert_imageset \
--shuffle \
--resize_width=256 \
--resize_height=256 \
/home/xxx/caffe/data/re/ \
$MY/test.txt \
$MY/img_test_lmdb

echo "All Done.."

因為圖片大小不一田盈,因此我統(tǒng)一轉(zhuǎn)換成256*256大小畜号。運行成功后,會在 examples/myfile下面生成兩個文件夾img_train_lmdb和img_test_lmdb允瞧,分別用于保存圖片轉(zhuǎn)換后的lmdb文件简软。


3、計算均值并保存

圖片減去均值再訓(xùn)練述暂,會提高訓(xùn)練速度和精度替饿。因此,一般都會有這個操作贸典。
caffe程序提供了一個計算均值的文件compute_image_mean.cpp,我們直接使用就可以了
sudo build/tools/compute_image_mean examples/myfile/img_train_lmdb examples/myfile/mean.binaryproto
compute_image_mean帶兩個參數(shù)踱卵,第一個參數(shù)是lmdb訓(xùn)練數(shù)據(jù)位置廊驼,第二個參數(shù)設(shè)定均值文件的名字及保存路徑。
運行成功后惋砂,會在 examples/myfile/ 下面生成一個mean.binaryproto的均值文件妒挎。

4、創(chuàng)建模型并編寫配置文件

模型就用程序自帶的caffenet模型西饵,位置在 models/bvlc_reference_caffenet/文件夾下, 將需要的兩個配置文件酝掩,復(fù)制到myfile文件夾內(nèi)

 sudo cp models/bvlc_reference_caffenet/solver.prototxt examples/myfile/
 sudo cp models/bvlc_reference_caffenet/train_val.prototxt examples/myfile/

修改其中的solver.prototxt
sudo gedit examples/myfile/solver.prototxt

net: "examples/myfile/train_val.prototxt"
test_iter: 2
test_interval: 50
base_lr: 0.001
lr_policy: "step"
gamma: 0.1
stepsize: 100
display: 20
max_iter: 500
momentum: 0.9
weight_decay: 0.005
solver_mode: GPU

100個測試數(shù)據(jù),batch_size為50眷柔,因此test_iter設(shè)置為2期虾,就能全cover了。在訓(xùn)練過程中驯嘱,調(diào)整學(xué)習(xí)率镶苞,逐步變小。

修改train_val.protxt鞠评,只需要修改兩個階段的data層就可以了茂蚓,其它可以不用管。

name: "CaffeNet"
layer {
  name: "data"
  type: "Data"
  top: "data"
  top: "label"
  include {
    phase: TRAIN
  }
  transform_param {
    mirror: true
    crop_size: 227
    mean_file: "examples/myfile/mean.binaryproto"
  }
  data_param {
    source: "examples/myfile/img_train_lmdb"
    batch_size: 256
    backend: LMDB
  }
}
layer {
  name: "data"
  type: "Data"
  top: "data"
  top: "label"
  include {
    phase: TEST
  }
  transform_param {
    mirror: false
    crop_size: 227
    mean_file: "examples/myfile/mean.binaryproto"
  }
  data_param {
    source: "examples/myfile/img_test_lmdb"
    batch_size: 50
    backend: LMDB
  }
}

實際上就是修改兩個data layer的mean_file和source這兩個地方,其它都沒有變化 聋涨。

5晾浴、訓(xùn)練和測試

如果前面都沒有問題,數(shù)據(jù)準(zhǔn)備好了牍白,配置文件也配置好了脊凰,這一步就比較簡單了。
sudo build/tools/caffe train -solver examples/myfile/solver.prototxt
運行時間和最后的精確度淹朋,會根據(jù)機器配置笙各,參數(shù)設(shè)置的不同而不同。950MGPU+cudnn運行500次础芍。
accuracy = 0.92杈抢,loss = 0.169632.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市仑性,隨后出現(xiàn)的幾起案子惶楼,更是在濱河造成了極大的恐慌,老刑警劉巖诊杆,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件歼捐,死亡現(xiàn)場離奇詭異,居然都是意外死亡晨汹,警方通過查閱死者的電腦和手機豹储,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來淘这,“玉大人剥扣,你說我怎么就攤上這事÷燎睿” “怎么了钠怯?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長曙聂。 經(jīng)常有香客問我晦炊,道長,這世上最難降的妖魔是什么宁脊? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任断国,我火速辦了婚禮,結(jié)果婚禮上榆苞,老公的妹妹穿的比我還像新娘并思。我一直安慰自己,他們只是感情好语稠,可當(dāng)我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布宋彼。 她就那樣靜靜地躺著弄砍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪输涕。 梳的紋絲不亂的頭發(fā)上音婶,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天,我揣著相機與錄音莱坎,去河邊找鬼衣式。 笑死,一個胖子當(dāng)著我的面吹牛檐什,可吹牛的內(nèi)容都是我干的碴卧。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼乃正,長吁一口氣:“原來是場噩夢啊……” “哼住册!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起瓮具,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤荧飞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后名党,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體叹阔,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年传睹,在試婚紗的時候發(fā)現(xiàn)自己被綠了耳幢。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡欧啤,死狀恐怖帅掘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情堂油,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布碧绞,位于F島的核電站府框,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏讥邻。R本人自食惡果不足惜迫靖,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望兴使。 院中可真熱鬧系宜,春花似錦、人聲如沸发魄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至汰寓,卻和暖如春口柳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背有滑。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工跃闹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人毛好。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓望艺,卻偏偏與公主長得像,于是被迫代替她去往敵國和親肌访。 傳聞我的和親對象是個殘疾皇子找默,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 目錄faster rcnn論文備注caffe代碼框架簡介faster rcnn代碼分析后記 faster rcnn...
    db24cc閱讀 9,599評論 2 12
  • Google Openimages Dataset 1. Caffe最優(yōu)求解過程 1.1 Solver介紹 Caf...
    sixfold_yuan閱讀 1,074評論 0 0
  • 關(guān)于機器學(xué)習(xí)原理的介紹比比皆是,而基于這些原理該如何操作才能應(yīng)用機器學(xué)習(xí)完成一些工作任務(wù)呢场靴。本文旨在盡可能詳細(xì)地介...
    小樓又春風(fēng)閱讀 405評論 0 5
  • 每個人都是一本書啡莉,封面是否平凡并不重要,重要的是旨剥,怎么在歲月的琢磨中咧欣,讓自己的書即便外表簡約,內(nèi)里依舊如詩如畫轨帜。
    宜陌閱讀 80評論 0 0
  • 莫名的傷感魄咕,淚水灑落在三毛的文字里頭。不想再寫作文了蚌父,也不想再說話哮兰。一個人的世界,只有沉沉的靜寂才合適苟弛。 從來就是...
    菡萏琪玲閱讀 92評論 0 0