剛剛在上篇博客記錄了windows10下GPU版本caffe的安裝,正准備跑跑論文里的代碼,發現好多命令都是.sh命令,這是linux系統的腳本文件。不能直接在windows下運行,於是我想把.sh轉換為windows下可執行的bat文件,但是又發現代碼需要將數據轉換為leveldb格式。而leveldb不能直接在windows下編譯,還需配置,比較繁瑣。而lmdb可以直接在windows下編譯。下面是兩者區別:
- 它們都是鍵/值對(Key/Value Pair)嵌入式數據庫管理系統編程庫。
- 雖然lmdb的內存消耗是leveldb的1.1倍,但是lmdb的速度比leveldb快10%至15%,更重要的是lmdb允許多種訓練模型同時讀取同一組數據集。
- 因此lmdb取代了leveldb成為Caffe默認的數據集生成格式
說了這么多,就是windows確實不方便,於是想搞一波linux。但是不太熟悉,所以沒有搞雙系統,先在虛擬機上練練手,盡管虛擬機不能用GPU。
我的配置:VMware-workstation-full-12.00(12貌似更契合win10)、ubuntu-14.04-desktop-amd64(14LTS版本和16LTS版本相對穩定,amd64即64位版本)
虛擬機和ubuntu安裝比較簡單,基本是傻瓜式安裝。
安裝python接口的caffe:(無GPU)、無cuda(自然更沒有cudnn),無opencv(暫不需要)
1.安裝必要的環境
sudo apt-get update #更新軟件列表 sudo apt-get upgrade #更新軟件 sudo apt-get install build-essentia #安裝build essentialsl sudo apt-get install linux-headers-'uname -r' #安裝最新版本的kernel headers
2.安裝所需要的依賴包
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install libatlas-base-dev
3.安裝必要的庫
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev sudo apt-get install libatlas-base-dev
4.下載caffe並配置python
網上的大部分方法是:
cd ~ git clone https://github.com/BVLC/caffe.git #克隆caffe到本地,並命名為caffe
cd caffe cat python/requirements.txt | xargs -L 1 sudo pip install 安裝caffe/python/requirements.txt里面所有要求的庫
我就被坑在這里了,上面的命令用到了pip。所以先裝pip,即執行sudo apt-get install python-pip
但是裝好pip后,上面安裝requirements.txt里的庫時,速度很慢,基本都是timeout的錯誤,網上好多修改配置的教程,但我沒有設置成功。。
所以我采取下面的方法,即把requirements.txt里的庫拿出來,挨個下載:
sudo apt-get install python-numpy python-scipy python-matplotlib python-sklearn python-skimage \ python-h5py python-protobuf python-leveldb python-networkx python-nose python-pandas python-gflags Cython ipython
上面就算caffe/python所有所需要的庫。裝好后沒有報錯即可,可以測試下:終端輸入python,然后任意輸入import scipy或import Cython都無錯。
5.配置並編譯caffe
修改Makefile.config.example
cd caffe
cp Makefile.config.example Makefile.config
上面命令意思:將caffe文件夾里的Makefile.config.example 復制為Makefile.config
然后進入Makefile.config文件夾,改些東西:
#去掉CPU_ONLY:=1的注釋 #在PYTHON_INCLUDE下把 # /usr/lib/python2.7/dist-packages/numpy/core/include #改為 # /usr/local/lib/python2.7/dist-packages/numpy/core/include
下面開始編譯caffe:
進入caffe文件夾根目錄下,eg:~/caffe$ ,進行如下操作:
make all
make pycaffe
make distribute
make test
這個運行比較久。
6.修改環境路徑
將PYTHONPATH寫入.bashrc中:
echo 'export PYTHONPATH =$PYTHONPATH:/home/'username'/caffe/python'>>~/.bashrc source ~/.bashrc
根據每個人不同的路徑加以修改,例如我的是 'export PYTHONPATH=$PYTHONPATH:/home/lps/caffe/python'
7.測試
運行MNIST:
1)按照官網先准備數據集:
cd ~/caffe #將終端定位到Caffe根目錄 ./data/mnist/get_mnist.sh #下載MNIST數據庫並解壓縮 ./examples/mnist/create_mnist.sh #將其轉換成Lmdb數據庫格式
2)編輯lenet_solver的solver_mode模式從GPU改為CPU:
vim ./examples/mnist/lenet_solver.prototxt #改為solver_mode: CPU
3)訓練模型
cd $CAFFE_ROOT ./examples/mnist/train_lenet.sh
4)訓練結果