Ubuntu18 Win10搭建Caffe训练识别mnist手写数字demo
ubuntu 系統(tǒng)下的Caffe環(huán)境搭建
對(duì)于caffe的系統(tǒng)一般使用linux系統(tǒng),當(dāng)然也有windows版本的caffe,不過(guò)如果你一開(kāi)始使用了windows下面的caffe,后面學(xué)習(xí)的過(guò)程中,會(huì)經(jīng)常遇到各種錯(cuò)誤,網(wǎng)上下載的一些源碼、模型也往往不能快速的跑起來(lái),因?yàn)槊菜芻affe的官方只提供了linux版本,而且caffe在不斷的快速迭代更新中,如果不使用原版的話,后面編譯出現(xiàn)什么問(wèn)題,自己怎么錯(cuò)的,自己都不知道。本篇博文主要講解快速搭建caffe環(huán)境:
電腦系統(tǒng):ubuntu 14.04
顯卡:GTX 850
在ubuntu下要完整的搭建caffe,個(gè)人感覺(jué)最難的一步就是cuda的安裝了,特別是對(duì)于雙顯卡的電腦來(lái)說(shuō),很容易黑屏、無(wú)法登陸圖形界面,這個(gè)我安裝了n久,都沒(méi)裝成功,因?yàn)槲业碾娔X筆記本雙顯卡,每次裝完cuda就黑屏,網(wǎng)上的教程一大堆,但都中看不中用,導(dǎo)致我重裝了二三十次的系統(tǒng),最后才成功。這里為了講caffe的安裝,我們先不使用GPU,進(jìn)行安裝測(cè)試,因?yàn)闆](méi)有GPU我們依舊可以跑caffe,只是速度比較慢而已。
1、安裝caffe所需要的依賴庫(kù)
命令:
sudo apt-get install libatlas-base-dev sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler這些庫(kù)要安裝挺久的,請(qǐng)耐心等待。
2、下載caffe。
到github上下載caffe:https://github.com/BVLC/caffe。下載完成后,解壓caffe源碼包。解壓后,我們打開(kāi)文件,可以看到caffe的源碼包如下:
3、配置Make.config 文件。caffe文件解壓后,文件夾下面有一個(gè)Makefile.config.example文件,我們需要對(duì)這個(gè)文件進(jìn)行重命名為:Make.config ?。也就是去掉后綴example。然后我們打開(kāi)這個(gè)文件,可以看到如下內(nèi)容:
然后我們把:#CPU_ONLY:=1,那一行的注釋符號(hào)去掉:CPU_ONLY:=1。這是因?yàn)槲覀儧](méi)有安裝CUDA,還不能使用gpu,所以我們把配置改為只使用cpu。
4、編譯caffe。
方案一:
(1)在完成Make.config配置后,我們輸入命令:
make all進(jìn)行caffe源碼編譯.這一步有可能遇到如下錯(cuò)誤:
caffe/proto/caffe.pb.h: No such file or directory如果出現(xiàn)這個(gè)錯(cuò)誤,那么輸入命令:
protoc src/caffe/proto/caffe.proto --cpp_out=. mkdir include/caffe/proto mv src/caffe/proto/caffe.pb.h include/caffe/proto然后在進(jìn)行make all 就可以了
(2)編譯完成后,在安裝python接口,輸入命令:
make pycaffe這個(gè)如果不使用python接口,調(diào)用caffe模型的話也可以不用安裝,不過(guò)建議還是搞一下,就一句話的事。完事后,我們會(huì)發(fā)現(xiàn)caffe源碼目錄下,多了一個(gè)build文件,這個(gè)文件下面有個(gè)tools,打開(kāi)這個(gè)文件夾:
這個(gè)文件夾下面的工具可是個(gè)好東西啊,以后我們會(huì)經(jīng)常用到這些可執(zhí)行文件,最常用的就是可執(zhí)行文件:caffe,我們只要調(diào)用這個(gè)工具,就可以進(jìn)行訓(xùn)練。
(3)接著編譯test文件夾下面的源碼。命令如下:
make test make runtest采用這種方案一般沒(méi)問(wèn)題,不過(guò)我在使用c++調(diào)用的時(shí)候,會(huì)使用到鏈接庫(kù):libcaffe.so.1.0.0-rc3,這種方法編譯后沒(méi)有生成這個(gè)文件;經(jīng)過(guò)google查找,發(fā)現(xiàn)采用cmake編譯,才會(huì)生成libcaffe.so文件
方案二:直接采用cmake:
mkdir build cd build cmake .. make all -j85、測(cè)試階段
安裝完了,自然要測(cè)試一下能不能用咯。首先cd到caffe目錄,然后輸入命令:
sh data/mnist/get_mnist.sh sh examples/mnist/create_mnist.sh vim examples/mnist/lenet_solver.prototxt把lenet_solver.prototxt里面的solver_mode 改為 CPU。因?yàn)槲覀冞€沒(méi)裝GPU,暫時(shí)只使用CPU就好了。
然后我們運(yùn)行腳本:
./examples/mnist/train_lenet.sh這個(gè)時(shí)候,如果成功的話,就會(huì)開(kāi)始跑起來(lái):
說(shuō)明:如果在使用caffe、或者編譯安裝caffe過(guò)程中,出現(xiàn)如下錯(cuò)誤:
CXX/LD -o .build_release/tools/convert_imageset.bin .build_release/lib/libcaffe.so: undefined reference tocv::imread(cv::String const&, int)'.build_release/lib/libcaffe.so: undefined reference tocv::imencode(cv::String const&, cv::_InputArray const&, std::vector >&, std::vector > const&)'那么請(qǐng)修改上面的Makefile文件(不是Makefile.config):
LIBRARIES += glog gflags protobuf leveldb snappy \ lmdb boost_system hdf5_hl hdf5 m \ opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs也就是在libraries后面,加上opencv的相關(guān)庫(kù)文件。
接著就開(kāi)始caffe搞起吧,推薦個(gè)caffe模型網(wǎng)站:https://github.com/BVLC/caffe/wiki/Model-Zoo。本來(lái)個(gè)人不是很喜歡caffe的,就是因?yàn)檫@個(gè)網(wǎng)站吸引了我,這個(gè)網(wǎng)站可以搞到好多caffe模型、源碼,非常適合于我們學(xué)習(xí)。
二、在Eclipse中使用編譯調(diào)試caffe
1、首先就是安裝Eclipse,然后安裝c++開(kāi)發(fā)插件,這個(gè)可以百度搜一下,eclipse下面怎么進(jìn)行c++開(kāi)發(fā)。
2.導(dǎo)入caffe makefile工程到eclipse (由于是英文版,下面描述也用英文,省的翻譯,方便大家調(diào)試)
(1)File→New→Project→C/C++ →Makefile Project with Existing Code.
(2)Create a new Makefile Project from existing code
Projectname:?caffe-master
Existing code location:/home/user/caffe-workspace/caffe-master
Language:?choose C and C++
Toolchain:choose Linux GCC
(3)Then click on caffe-master in Project Explorer (set Window→Open ?Perspective → C/C++).
(4)Now go File → Properties → Run/Debug settings.Click ?New.., and choose C/C++ application
(5)Fill launch configurationproperties
· ? ? ? ?Arguments:
fill ? train –solver=examples/mnist/lenet_solver.prototxt
and change working directory from default to /home/user/caffe-workspace/caffe-master(change to your own directory)
(6)Now you can use debug caffe code: Run-> Debug
三、C++函數(shù)調(diào)用相關(guān)路徑,makefile
CC=g++CXXFLAGS = -O2 -Wall -D__STDC_CONSTANT_MACROS INCLUDE = -I/usr/local/cuda/include -I. -I/usr/local/cuda/include -I/home/hjimce/caffe/include/ -I/home/hjimce/caffe/src/LIBRARY = -L/usr/local/x86_64-linux-gnu/ -lprotobuf \-L/usr/lib/x86_64-linux-gnu/ -lglog \-L/usr/local/cuda/lib64/ -lcudart -lcublas -lcurand \-L/usr/local/lib/ -lm -lpthread -lavutil -lavformat -lavcodec -lswscale -lopencv_core -lopencv_imgproc -lopencv_highgui \-L/usr/lib/python2.7/config-x86_64-linux-gnu/ -lpython2.7 \-L/sur/lib32/ -lrt \-L../../caffe/build/lib/ -lcaffeall:$(CC) $(INCLUDE) $(OBJS) testcpp.cpp -o exercise $(LIBRARY)windows下的caffe環(huán)境搭建
最近在ubuntu搞了一個(gè)月的caffe,總感覺(jué)很不爽,因?yàn)閡buntn下面的c++集成開(kāi)發(fā)工具,eclipse用起來(lái)沒(méi)有vs爽,因?yàn)閷?duì)caffe的函數(shù)名不是很熟悉,所以需要借助vs的c++助手。然后前一個(gè)月大部分也是調(diào)用pycaffe,但是最近感覺(jué)需要對(duì)caffe的c++函數(shù)比較熟悉,才能把自己的能力進(jìn)一步提高,于是就開(kāi)始搞起了windows 下的caffe,借助vs的強(qiáng)大功能,快速學(xué)習(xí)caffe。一開(kāi)始采用vs2012,最后各種錯(cuò)誤,最后改成vs2013很容易就編譯成功了。
一、安裝編譯環(huán)境
1、 ? ?Visual studio2013
? ? ? ?這個(gè)比較簡(jiǎn)單,不寫步驟了。
2、python 2.7.6
? ? ? ?為了能使用python調(diào)用Caffe,首先需要安裝python,這個(gè)也簡(jiǎn)單,問(wèn)度娘很多。注意兩點(diǎn):
①安裝的時(shí)候記得勾選pip,這個(gè)工具很nice,可以為你省很多不必要的麻煩;
②安裝完后設(shè)置好環(huán)境變量。可以再cmd命令中輸入python檢查,如果不報(bào)錯(cuò),則恭喜。
? ? ? ?接下來(lái)利用pip工具安裝這幾個(gè)包:numpy、scipy、matplotlib、scikit-image、protobuf
在cmd命令行內(nèi)輸入:pip install numpy即可,其他幾個(gè)類似。
3、matalb
? ? ? ? 這個(gè)安裝過(guò)程比較慢,也沒(méi)什么需要注意的,這里直接略去。
二、安裝caffe
1、caffe源碼包
下載地址:https://github.com/Microsoft/caffe
2、編譯配置
? ? ? 將下載的caffe-windows.zip進(jìn)行解壓,并進(jìn)入其根目錄下的windows目錄,把這個(gè)CommonSettings.props.example文件復(fù)制到源目錄一份,然后重命名為CommonSettings.props。打開(kāi)并修改其中的配置項(xiàng)。有幾個(gè)需要注意的地方:
①是否只是用cpu。如果你的電腦顯卡支持GPU編程(是否支持可以去英偉達(dá)官網(wǎng)查詢),那么可以配置為false。否則CpuOnlyBuild = true
②是否使用cudnn加速?
③是否使用python和matalb,根據(jù)需要配置
④如果配置了python和matlab,這里需要把修改軟件目錄為自己電腦上的實(shí)際安裝目錄
⑤如果有cuda,則把CudaVersion修改為自己電腦的cuda版本
3、項(xiàng)目編譯
? ? ? ? 用Visual studio2013打開(kāi)caffe-master\windows下的Caffe.sln文件,進(jìn)去后如下圖(共16個(gè)項(xiàng)目):
(1)先生成【libcaffe】,右鍵生成;這里由于別的模塊用到了libcaffe,所以,首先生成libcaffe
(2)再選擇【解決方案Caffe】進(jìn)行生成,這里時(shí)間比較久,因?yàn)镹uget會(huì)提示下載一些東西,包括boost,opencv2.4.10,gflags,glog,hdf5,lmdb,LevelDB,OpenBLAS,protobuf等預(yù)編譯的依賴包。過(guò)程有點(diǎn)慢,多等會(huì)就ok。下載完成后會(huì)在caffe 的同級(jí)目錄生成NugetPackages的文件。
? ? 如果中途編譯失敗,出現(xiàn)錯(cuò)誤,不用緊張,雙擊出現(xiàn)如下對(duì)話框,確定然后保存,重新編譯即可。
4、運(yùn)行
? ? ? ? 右
同時(shí)在Build\x64\下生成了很多exe和dll文件。這些工具在后面訓(xùn)練網(wǎng)絡(luò)、測(cè)試時(shí)候很有用。
三、體驗(yàn)深度學(xué)習(xí)
? ? ?終于到這了,我們通過(guò)一個(gè)caffe自帶的簡(jiǎn)單例子來(lái)體驗(yàn)一下caffe的網(wǎng)絡(luò)訓(xùn)練和預(yù)測(cè)。 ?
? ? ?deep-learning屬于有監(jiān)督學(xué)習(xí)的一種,一般步驟分為:準(zhǔn)備數(shù)據(jù)、訓(xùn)練模型和測(cè)試模型。我們下邊也通過(guò)這三步來(lái)測(cè)試一個(gè)基于LeNet網(wǎng)絡(luò)的學(xué)習(xí)模型。
1、準(zhǔn)備訓(xùn)練數(shù)據(jù)
mnist數(shù)據(jù)集下載地址:http://yann.lecun.com/exdb/mnist/
下載后解壓到caffe-master目錄中的\data\mnist內(nèi)。分別在cmd下輸入以下命令
.\Build\x64\Release\convert_mnist_data.exe?.\data\mnist\mnist_train_lmdb\train-images.idx3-ubyte?.\data\mnist\mnist_train_lmdb\train-labels.idx1-ubyte?.\examples\mnist\mnist_train_lmdb
.\Build\x64\Release\convert_mnist_data.exe?.\data\mnist\mnist_test_lmdb\t10k-images.idx3-ubyte???.\data\mnist\mnist_test_lmdb\t10k-labels.idx1-ubyte?.\examples\mnist\mnist_test_lmdb
將數(shù)據(jù)轉(zhuǎn)化為caffe需要的輸入格式。
2、訓(xùn)練模型
①修改模型參數(shù)
修改examples\mnist\lenet_solver.prototxt,將最后一行改為solver_mode:CPU,
修改examples\mnist\lenet_train_test.prototxt,如下所示,左面為原始的,右面為修改后的。
②訓(xùn)練模型,訓(xùn)練完畢后會(huì)得到相應(yīng)的準(zhǔn)確率和損失率。
.\Build\x64\Release\caffe.exe?train?--solver=.\examples\mnist\lenet_solver.prototxt
3、測(cè)試模型
? ? ? 最終訓(xùn)練的模型全職文件保存在example\minst\lenet_iter_10000.caffemodel文件中,訓(xùn)練狀態(tài)保存在example\minst\lenet_iter_10000.solverstate中。這兩個(gè)文件都是PrototxtBuffer二進(jìn)制格式。
? ? ? 利用訓(xùn)練好的模型權(quán)值文件可以測(cè)試數(shù)據(jù)集。運(yùn)行如下命令:
.\Build\x64\Release\caffe.exe test -model examples\mnist\lenet_train_test.prototxt -weights examples\mnist\lenet_iter_10000.caffemodel -iterations 100
到這,整個(gè)caffe在windows上就安裝完成了。下一節(jié)寫Ubuntu下caffe的配置。
謝謝!
博客有任何錯(cuò)誤或者疑問(wèn),請(qǐng)加VX:1755337994,及時(shí)告知!萬(wàn)分感激!?
總結(jié)
以上是生活随笔為你收集整理的Ubuntu18 Win10搭建Caffe训练识别mnist手写数字demo的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python读txt文件报错Unicod
- 下一篇: C++ SVM Opencv3.4实现人