Windows环境下使用 Caffe在ImageNet上训练网络
在配置好Windows版的Caffe之后,可以使用Windows Caffe訓(xùn)練ImageNet網(wǎng)絡(luò),主要有4個(gè)步驟:
(1)準(zhǔn)備圖片數(shù)據(jù)庫(kù)
(2)將圖片數(shù)據(jù)轉(zhuǎn)換為Caffe可以使用的LMDB或者LevelDB類型
(3)取數(shù)據(jù)庫(kù)均值
(4)開(kāi)始用Caffe訓(xùn)練網(wǎng)絡(luò)
1 準(zhǔn)備圖片數(shù)據(jù)庫(kù)
可以從網(wǎng)上找到ImageNet的數(shù)據(jù),選擇幾個(gè)圖片類別下載下來(lái)。我是從ilsvrc2012的數(shù)據(jù)中找了幾個(gè)類別。我找到的數(shù)據(jù)庫(kù)是這樣的:
上面每個(gè)文件中都是如下的一堆圖片:
任意選擇幾個(gè)類別作為訓(xùn)練數(shù)據(jù)。我選了如下的三類。每個(gè)類別中有1300張圖片,在每個(gè)類別中抽取100張圖片作為驗(yàn)證集,余下的1200張作為訓(xùn)練集。將訓(xùn)練集和驗(yàn)證集存儲(chǔ)在相應(yīng)的路徑下。
運(yùn)行如下兩個(gè)matlab腳本(腳本來(lái)自“http://blog.csdn.net/u013657981/article/details/49497753”),可以生成制作數(shù)據(jù)庫(kù)所需要的train.txt和val.txt。
clear all clc foodDir='F:\caffe-windows\data\ilsvrc12\train'; numClasses=3 classes=dir(foodDir) classes = classes([classes.isdir]) ; classes = {classes(3:numClasses+2).name} imageName={}; fp = fopen('train.txt','a'); for ci = 1:length(classes)ims = dir(fullfile(foodDir, classes{ci}, '*.JPEG')) for ii=1:length(ims)fprintf(fp,classes{ci});fprintf(fp,'/');fprintf(fp,ims(ii).name);fprintf(fp,' ');fprintf(fp,'%d',ci);fprintf(fp,'\r\n');end end fclose(fp);然后把生成的train.txt和val.txt拷貝到合適的路徑下以備使用(我是把它們拷貝到了F:\caffe-windows\data\ilsvrc12 路徑下)。兩個(gè)文件內(nèi)容如下所示。
2 生成數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)可以選擇LMDB或者LevelDB兩種類型。
使用如下批處理命令,可以實(shí)現(xiàn)訓(xùn)練集的轉(zhuǎn)化,生成LMDB數(shù)據(jù)庫(kù)。
F:\caffe-windows\Build\x64\Release\convert_imageset.exe --resize_height=256 --resize_width=256 --shuffle --backend="lmdb" F:\caffe-windows\data\ilsvrc12\train\ F:\caffe-windows\data\ilsvrc12\train.txt F:\caffe-windows\examples\imagenet\ilsvrc12_train_lmdb Pause在使用如下命令,可以實(shí)現(xiàn)驗(yàn)證集的數(shù)據(jù)庫(kù)轉(zhuǎn)化。
F:\caffe-windows\Build\x64\Release\convert_imageset.exe --resize_height=256 --resize_width=256 --shuffle --backend="lmdb" F:\caffe-windows\data\ilsvrc12\val\ F:\caffe-windows\data\ilsvrc12\val.txt F:\caffe-windows\examples\imagenet\ilsvrc12_val_lmdb Pause
3 數(shù)據(jù)庫(kù)均值
F:\caffe-windows\Build\x64\Release\compute_image_mean.exe --backend="lmdb" F:\caffe-windows\examples\imagenet\ilsvrc12_train_lmdb F:\caffe-windows\examples\imagenet\train_mean.binaryproto Pause4 訓(xùn)練網(wǎng)絡(luò)
我們采用的是caffe自帶的一些網(wǎng)絡(luò),一些參數(shù)如下,有些我們可以根據(jù)自己的需要修改。比如,我將最大迭代次數(shù)改為了30000。“train_val.prototxt”文件位于F:\caffe-windows\models\bvlc_alexnet 路徑中(我的caffe的根目錄是F:\caffe-windows)。
在同一個(gè)目錄下還有文件“solver.prototxt”。網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)中,要把數(shù)據(jù)庫(kù)文件和均值文件路徑寫對(duì)。用了相對(duì)路徑的地方,默認(rèn)是從caffe的根目錄執(zhí)行。
由于上面文件中有的參數(shù)使用了相對(duì)路徑,所以我們需要打開(kāi)Windows命令行窗口,cd到caffe的根目錄,執(zhí)行以下命令:
F:\caffe-windows\Build\x64\Release\caffe.exe train --solver=F:\caffe-windows\models\bvlc_alexnet\solver.prototxt pause
或者把它寫到一個(gè)批處理文件中,在caffe根目錄下執(zhí)行該文件。運(yùn)行中截圖如下:
運(yùn)行完成后截圖如下。在使用了GPU的前提下,我的電腦總共花了2個(gè)半小時(shí)來(lái)完成這個(gè)任務(wù)。
轉(zhuǎn)載于:https://www.cnblogs.com/yanhuiqingkong/p/7770057.html
總結(jié)
以上是生活随笔為你收集整理的Windows环境下使用 Caffe在ImageNet上训练网络的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 文字两边的横线实现
- 下一篇: 《嵌入式系统可靠性设计技术及案例解析》读