用自己的數(shù)據(jù)完成“分類”

深度學(xué)習(xí)框架用的是caffe吊宋;網(wǎng)絡(luò)模型是CaffeNet(AlexNet的變形)澳盐。

1.準(zhǔn)備數(shù)據(jù)

我用的是Fish4knowledge數(shù)據(jù)集曙寡,數(shù)據(jù)集內(nèi)總共有27370張圖片,23類轧邪,每一類的數(shù)量不等且差異大刽脖。將其按照5:1:1的比例分為訓(xùn)練集、驗(yàn)證集忌愚、測(cè)試集曲管。(記住由于每類的數(shù)據(jù)不均衡,所以一定要隨機(jī)分配)

  • 訓(xùn)練集:19550張圖片
  • 驗(yàn)證集:3910張圖片
  • 測(cè)試集:3910張圖片

2.生成filelist的txt文件

接下來(lái)要生成三個(gè)文件列表菜循,train.txt翘地、val.txt、test.txt癌幕。文件中的每一行存放的是一張圖片的文件名(包含相對(duì)路徑)和類別號(hào)衙耕,中間用空格隔開。我的類別號(hào)從1開始勺远,到23橙喘。
可以用python\matlab\shell,任意挑一種你熟練的語(yǔ)言遍歷整個(gè)數(shù)據(jù)集胶逢,獲取文件名列表以及每個(gè)文件的類別厅瞎。

3.轉(zhuǎn)換為lmdb格式

在深度學(xué)習(xí)的實(shí)際應(yīng)用中,我們經(jīng)常用到的原始數(shù)據(jù)是圖片文件初坠,如jpg,jpeg,png,tif等格式的和簸,而且有可能圖片的大小還不一致。因此我們可以調(diào)用caffe里的convert_imageset工具來(lái)將圖片文件轉(zhuǎn)換成caffe框架中能直接使用的db文件碟刺。create_lmdb.sh 且數(shù)據(jù)集中的圖片大小根據(jù)情況統(tǒng)一成47*47锁保。

#!/usr/bin/en sh
rm -rf img_lmdb_train
/home/zh/caffe/build/tools/convert_imageset --shuffle \    #  "\" 是另起一行的意思 
--resize_height=47 --resize_width=47 \
Image/train/ \
ImageSets/train.txt img_lmdb_train

rm -rf img_lmdb_val
/home/zh/caffe/build/tools/convert_imageset --shuffle \
--resize_height=47 --resize_width=47 \
Image/val/ \
ImageSets/val.txt img_lmdb_val

rm -rf img_lmdb_test
/home/zh/caffe/build/tools/convert_imageset --shuffle \
--resize_height=47 --resize_width=47 \
Image/test/ \
ImageSets/test.txt img_lmdb_test

convert_imageset的使用格式:

convert_imageset [FLAGS] ROOTFOLDER/ LISTFILE DB_NAME

FLAGS: 圖片參數(shù) # --shuffle是打亂數(shù)據(jù)順序,--backend設(shè)置生成的數(shù)據(jù)形式:lmdb或者leveldb半沽,默認(rèn)生成lmdb爽柒。
ROOTFOLDER/: 圖片存放路徑
LISTFILE: 圖片文件列表清單
DB_NAME: 最終生成的db文件存放目錄

4.計(jì)算均值并保存

圖片減去均值再訓(xùn)練,會(huì)提高訓(xùn)練速度和精度者填。因此浩村,一般都會(huì)有這個(gè)操作。
caffe程序提供了一個(gè)計(jì)算均值的可執(zhí)行文件compute_image_mean占哟,我們直接使用就可以了心墅。
compute_image_mean帶兩個(gè)參數(shù),第一個(gè)參數(shù)是lmdb訓(xùn)練數(shù)據(jù)位置榨乎,第二個(gè)參數(shù)設(shè)定均值文件的名字及保存路徑嗓化。
運(yùn)行成功后,會(huì)在 設(shè)定的保存路徑下面生成一個(gè)mean.binaryproto的均值文件谬哀。

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

模型就用caffe自帶的"CaffeNet"模型( AlexNet的一個(gè)變體)刺覆,位置在 models/bvlc_reference_caffenet/文件夾下, 將需要的兩個(gè)配置文件solver.prototxt,train_val.prototxt 復(fù)制到自己的工程文件夾下;在models/文件夾下史煎,除了CaffeNet還有AlexNet谦屑、GoogleNet、R-CNN等網(wǎng)絡(luò)篇梭。

  1. 修改solver.prototxt

3910個(gè)測(cè)試數(shù)據(jù)氢橙,測(cè)試集的batch_size為50,因此test_iter設(shè)置為80恬偷,就能全cover了悍手。

net: "/home/zh/data/fish4knowledge/Fish_species_recognition/train_val.prototxt"
test_iter: 80         # 測(cè)試集的迭代次數(shù)
test_interval: 80      #訓(xùn)練的時(shí)候,每迭代test_interval次就進(jìn)行一次測(cè)試,得到準(zhǔn)確率值坦康。
base_lr: 0.01          #初始的學(xué)習(xí)率
lr_policy: "step"
gamma: 0.1
stepsize: 5000    #每隔stepsize次竣付,學(xué)習(xí)率降低gamma倍
display: 20              #每隔20次打印一次loss
max_iter: 25000   #訓(xùn)練的最大迭代次數(shù)
momentum: 0.9
weight_decay: 0.0005
snapshot: 10000    #每迭代10000次備份一次中間caffemodel
snapshot_prefix: "models/bvlc_reference_caffenet/caffenet_train"      #中間模型的保存地址和命名前綴
solver_mode: GPU  

2.修改train_val.prototx

只需要修改train和test的data層就可以了,其它可以不用管滞欠。

  name: "CaffeNet"
layer {
  name: "data"
  type: "Data"
  top: "data"
  top: "label"
  include {
    phase: TRAIN       #這個(gè)層僅在train階段     
  }
  transform_param {          #數(shù)據(jù)的預(yù)處理
    mirror: true
    crop_size: 47   ##change
    mean_file: "/home/zh/data/fish4knowledge/Fish_species_recognition/mean.binaryproto"   ##change
  }
  data_param {
    source: "/home/zh/data/fish4knowledge/Fish_species_recognition/img_lmdb_train"    ##change
    batch_size: 256
    backend: LMDB
  }
}
layer {
  name: "data"
  type: "Data"
  top: "data"
  top: "label"
  include {
    phase: TEST       #這個(gè)層僅在test階段  
  }
  transform_param {
    mirror: false
    crop_size: 47  ##change
    mean_file: "/home/zh/data/fish4knowledge/Fish_species_recognition/mean.binaryproto"   ##change
  }
  data_param {
    source: "/home/zh/data/fish4knowledge/Fish_species_recognition/img_lmdb_test"   ##change
    batch_size: 50    #測(cè)試集的batch_size
    backend: LMDB
  }
}

6.訓(xùn)練和測(cè)試

如果前面都沒(méi)有問(wèn)題古胆,數(shù)據(jù)準(zhǔn)備好了,配置文件也配置好了筛璧,這一步就比較簡(jiǎn)單了逸绎。

build/tools/caffe train -solver 絕對(duì)路徑/solver.prototxt
實(shí)驗(yàn)結(jié)果截圖
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市夭谤,隨后出現(xiàn)的幾起案子棺牧,更是在濱河造成了極大的恐慌,老刑警劉巖朗儒,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件陨帆,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡采蚀,警方通過(guò)查閱死者的電腦和手機(jī)疲牵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)榆鼠,“玉大人纲爸,你說(shuō)我怎么就攤上這事∽惫唬” “怎么了识啦?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)神妹。 經(jīng)常有香客問(wèn)我颓哮,道長(zhǎng),這世上最難降的妖魔是什么鸵荠? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任冕茅,我火速辦了婚禮,結(jié)果婚禮上蛹找,老公的妹妹穿的比我還像新娘姨伤。我一直安慰自己,他們只是感情好庸疾,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布乍楚。 她就那樣靜靜地躺著,像睡著了一般届慈。 火紅的嫁衣襯著肌膚如雪徒溪。 梳的紋絲不亂的頭發(fā)上忿偷,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音臊泌,去河邊找鬼鲤桥。 笑死,一個(gè)胖子當(dāng)著我的面吹牛缺虐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播礁凡,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼高氮,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了顷牌?” 一聲冷哼從身側(cè)響起剪芍,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎窟蓝,沒(méi)想到半個(gè)月后罪裹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡运挫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年状共,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谁帕。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡峡继,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出匈挖,到底是詐尸還是另有隱情碾牌,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布儡循,位于F島的核電站舶吗,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏择膝。R本人自食惡果不足惜誓琼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望肴捉。 院中可真熱鬧踊赠,春花似錦、人聲如沸每庆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)缤灵。三九已至伦籍,卻和暖如春蓝晒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背帖鸦。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工芝薇, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人作儿。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓洛二,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親攻锰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子晾嘶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

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