caffe使用教程
Caffe使用教程
Caffe安裝
(1)macOS安裝
1.安裝homebrew包管理工具
點擊http://brew.sh/進入homebrew官網,復制安裝命令到終端,等待安裝
2.安裝完成后,利用homebrew下載caffe依賴包,復制以下命令到終端
brew install -vd snappy leveldb gflags glog szip lmdb
brew install homebrew/science
brew install hdf5 opencv
brew install protobuf boost wget
3.下載caffe源代碼,復制一下命令到終端
git clone https://github.com/bvlc/caffe.git
注:若以上所需無下載速度,請翻墻下載
ubuntu安裝
略
Caffe調試
1.修改配置文件,復制以下命令到命令行
cd caffe/
mv Makefile.config.example Makefile.config
打開Makfile.config 找到#CPU_ONLY :=1,將#刪除
CPU_ONLY :=1
執行make -j編譯
注:可以指定線程,make -j8開啟八線程編譯
若其中報錯,請自行百度
數據集準備
準備圖片進行分類,首先需準備不同類別的圖片
首先將圖片分為兩批次:訓練集和驗證集,比例大約為5:1
比如有五種圖片需要進行分類,分別是cat,dog,fish,rabbit,mouse,則分別新建五個文件夾分別存放這幾類圖片,并將五個文件夾再放入一個文件夾,命名為train,即train文件夾下分別有cat,dog,fish,rabbit,mouse五個文件夾,五個文件夾下有各個類別的圖片
2新建一個文件夾命名為val,即我們需要的驗證集,將val文件夾放置在和train文件夾同一個目錄下如myself目錄,從train文件,抽取1/6圖片放入val文件夾下,也可在此之前提前分好。
3在train和val文件夾下創建train.txt和val.txt,以上總步驟如下圖所示
用python或腳本將train文件夾中的文件路徑文件名和文件標簽記錄到train.txt中,val.txt同理,其中文件名和標簽之間用空格隔開,標簽應該從0開始,假設dog目錄下有dog1和dog2兩張圖片,cat下有cat1和cat2兩張圖片,其他類似。則train.txt中的條目如下圖所示
val.txt文件如下圖所示
數據集轉換
1.將圖片轉換成lmdb格式,lmdb是caffe的輸入格式,我們caffe的examples文件夾中create_imagenet.sh腳本來轉換格式,也可以自己編寫腳本,格式類似。
2.新建一個文件夾用于存放我們需要用到的網絡和lmdb和其他腳本文件
3.修改create_imagenet.sh,將EXAMPLES中的路徑改成自己網絡的存放路徑
DATA路徑替換成自己存放圖片的路徑,TOOLS不變,將TRAIN_DATA_ROOT文件路徑 改為train文件夾的路徑,VAL_DATA_ROOT同理,可以看到TRAIN_DATA_ROOT的路徑和train.txt文件中路徑合起來剛好是圖片的完整路徑,VAL_DATA_ROOT同理
3.將RESIZE改為true,我們調整圖片大小使得輸入維度減少,增加訓練速度
4.GLOG路徑中最后$EXAMPLES即是產生的lmdb文件,一個是train一個是val,路徑保存到上圖中的EXAMPLES的路徑下,可自行修改lmdb名字
下面用lmdb生成meanfile,計算圖像均值,減少輸入,可以用imagenet中的make_imagenet_mean.sh做修改,并拷貝到自己的網絡目錄中,也可以自己寫腳本
compute_image_mean為計算圖像均值工具,EXANPLES后為剛生成的lmdb文件,若自己修改了上圖文本中的lmdb名字,請將名字對應,生成的meanfile是DATA路徑下的binaryproto,可自行修改binaryproto名字
配置文件修改
1.我們可以選用caffe自帶的網絡,也可以用自己的網絡,下面我選用alexnet網絡為例,將models中的alex網絡拷貝到自己的文件夾中,修改其中的solver.prototxt文件和train_val.prototxt文件,這兩個文件也可以自己寫
2.將我們需用的網絡net的完整路徑修改,里面各項參數都可以自行修改,在此不一一解釋,具體意義請自行查略,snapshot為model保存路徑,修改為網絡的完整路徑,solver_mode修改為cpu
3.修改train_val.prototxt文件,里面參數都可以自行修改,就不一一介紹,最主要的修改的地方,第一mean_file路徑修改為自己保存binaryproto的絕對路徑。下圖中的source和mean_file的路徑同上。
訓練網絡
命令行輸入以下命令
./build/tools/caffe train –solver=/Users/Songie/caffe/examples/myself/bvlc_alexnet/solver.prototxt
sovler路徑修改為自己solver的絕對路徑
使用model
命令行輸入以下命令
Model參數為定義網絡的prototxt文件的絕對路徑,weights參數為已經訓練好的權重和偏置的model,iterations為你想定義的迭代次數
總結
- 上一篇: Linux驱动设计ioctl函数的cmd
- 下一篇: (NFS移植到arm上)编译portma