說到 Deep learning 的工具,首選應該就是 caffe 了吧,BVLC維護中

這裡就把之前整理過的東西,公開一下好了,無妨吧,因為純紀錄用,純屬參考阿


畢竟我也不是什麼 Coding 高手,就只是好玩而已 XDD

現在的 Code 都已經被我改的快不像Caffe了,效率變差不過可以用就好!!! 而且終於成功搞定 Interface with C#了


環境:Ubuntu 15.04 後來我改成 OSX 11.4 很神奇的是,居然OSX會比較快? 這其中必定有詐,我單純猜測應該是Memory的CP比較有效率八

系統 GTX 960 少少的 4G 可憐的 4G

原則上下列以Ubuntu為主,但是 OSX 幾乎通用,有些tricks就以後再談吧


以下適合剛裝好Ubuntu

先裝

apt-get install libxml2 libxml2-dev libz-dev
可以的話再裝一下pip
python也是必要的

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 libatlas-base-dev libgflags-dev libgoogle-glog-dev liblmdb-dev

 

 

Download Caffe

apt-get install git

git clone https://github.com/BVLC/caffe.git


最簡單的開始就是

cp Makefile.config.example Makefile.config

然後去修改Makefile.config

這個參考官網不會錯

# 看要不要cpu only,如果沒GPU就把此項uncomment掉

值得一提的是hdf5在Ubuntu 15.04中預設路徑有改

變成 /usr/include/hdf5/serial

要不在 Makefile.config 中把路徑加入 Include_dir

要不就把

src/caffe/layers/hdf5_data_layer.cpp

src/caffe/layers/hdf5_output_layer.cpp

./include/caffe/data_layers.hpp

./include/caffe/util/io.hpp

都改成"serial/hdf5.hpp"

 

Python_include也有要改一個小地方,一樣是路徑問題,是python-numpy的路徑

改成 /usr/lib/python2.7/dist-packages/numpy/core/include

其他沒什麼好注意的

 

接下來就是下

make all -j12 (12代表 12 threads, make main functions)

make test -j12 (make test tools)

make runtest (run the test tools to test functionality of caffe)

make pycaffe (建立Python的 Wrapper)

make matcaffe (建立 Matlab 的 Wrapper)

 

如果Linking有錯呢

幾點參考的

1. 找不到hdf5_hl的問題

cd /usr/lib/x86_64-linux-gnu  (32bit 位於 386)
sudo ln -s libhdf5_serial.so.8.0.2 libhdf5.so
sudo ln -s libhdf5_serial_hl.so.8.0.2 libhdf5_hl.so

 

2. matlab 2014b或只支援gcc 4.7x的版本 要降級 才能完整透過matlab叫caffe功能~

解法:降級gcc

sudo apt-get install -y gcc-4.7 g++-4.7

cd /usr/bin

sudo rm gcc && sudo ln -s gcc-4.7 gcc && sudo rm g++ && sudo ln -s g++-4.7 g++

sudo cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20 /usr/local/MATLAB/R2014b/sys/os/glnxa64/libstdc++.so.6.0.20

cd /usr/local/MATLAB/R2014b/sys/os/glnxa64/

sudo mv libstdc++.so.6 libstdc++.so.6.backup

sudo ln -s libstdc++.so.6.0.20 libstdc++.so.6

sudo ldconfig -v

 

3. 要是降級後才安裝scipy 會GG,所以呢,要先升級回來gcc 4.9才能安裝scipy

真的要硬跑可以,解法如下
sudo bluefish  /usr/lib/python2.7/plat-x86_64-linux-gnu/_sysconfigdata_nd.py
把-fstack-protector-strong 都改成 -fstack-protector

 

4. CUDA/NVIDIA驅動安裝失敗是時有所聞,遇到時候,記得叫出log來看,通常也是gcc版本不對,導致於無法編譯Driver kernel

 

5. GCC版本太高 (5.2) 無法 make caffe

解法:sudo vim /usr/local/cuda-7.5/include/host_config.h
(line 116)   #if __GNUC__ > 5 || (__GNUC__ == 4 && __GNUC_MINOR__ > 9)

 

6. 跑Caffe程式說找不到CUDA的LIB

解法: 
sudo ldconfig /usr/local/cuda-7.5/bin && sudo ldconfig /usr/local/cuda-7.5/lib64

要不然就把路徑加到妳的 ~./bashrc or ~./profile裡面~

 

7. 手殘不小心自動更新,結果driver跑掉了,桌面進不去 Cuda也不會跑,重裝CUDA也會出現Driver installation fail的訊息

解法:完整移除cuda ,例如 sudo apt-get autoremove --prruge cuda
重開之後下載舊版的Nvidia driver for 妳的顯卡,直接安裝,通常是用 dpkg -i 安裝
好了之後重開桌面有了,再安裝一次CUDA,打完收工


 

有學弟也在問怎麼加入一個新的 layer,其實看完 code之後妳很容易找到的,基本上就這樣搞哦

Add new layer into caffe

  1. new layer.cpp 要有對應的 new layer.hpp
  2. caffe.proto 要加入定義
  3. 舊版caffe要改vision_layer.hpp的定義 (比如DeconvNet就用舊版caffe),新版要自己定義new layer.hpp (通常是目前BVLC master branch的˙)
  4. layer_factory.cpp要加入include 對應的 new layer.hpp (舊版Caffe不用)
  5. layer_factory.cpp要加入對應的定義
  6. 定義 forward / backward 就好了..

如果說是要改 *.cu, 那得先去看 CUDA的書練習一下,不然應該會霧沙沙

 


 

跟CAFFE沒關係的,有些人會希望既有CUDA又有Ubuntu的桌面可以用 (像我就是XDD)

所以這常常會有衝突問題,特別有時候一更新 lightdm 或是 gdm就掛在那給妳看,經反覆實驗有找出解

完整移除桌面,我是這樣做:

  1. sudo apt-get remove lightdm ubuntu-desktop kubuntu-desktop sddm gdm unity等
  2. Reboot後安裝 sudo apt-get install kubuntu-desktop nvidia-prime unity
  3. 修改檔案:sudo gedit /etc/default/grub
    • GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset video=uvesafb:mode_option=1360x768-24,mtrr=3,scroll=ywrap"
    • #GRUB_GFXMODE=1360x768
  4. 修改sudo gedit /etc/initramfs-tools/modules
    • 最後一行新增
    • uvesafb mode_option=1360x768-24 mtrr=3 scroll=ywrap
  5. echo FRAMEBUFFER=y | sudo tee /etc/initramfs-tools/conf.d/splash
  6. sudo update-grub2
  7. sudo update-initramfs -u
  8. reboot

 

文章標籤
創作者介紹
創作者 Jess 的頭像
Jess

A little space in my mind

Jess 發表在 痞客邦 留言(0) 人氣()