2016年9月30日 星期五

[Linux]SSD架設

(01) 架設環境
Ubuntu v16.04 LTS
caffe v1.0.0-rc3
cuDNN v5.1.5
cuda v8.0
cuda patch v8.0

(02) 下載Caffe_SSD
$ git clone https://github.com/weiliu89/caffe.git caffe_SSD
$ cd ~/caffe_SSD
$ git checkout ssd

(03) 修改caffe的Makefile.config
$ cd ~/caffe_SSD
$ cp Makefile.config.example Makefile.config
$ sudo gedit Makefile.config

a. 啟用CUDNN,去掉"#"
USE_CUDNN := 1

b. 啟用GPU,將CPU_ONLY開頭加上"#"
# CPU_ONLY := 1

c. 搜尋lib位置
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/

$ cd /usr/lib/x86_64-linux-gnu
$ sudo ln -s libhdf5_serial.so.8.0.2 libhdf5.so

$ sudo ln -s libhdf5_serial_hl.so.8.0.2 libhdf5_hl.so

(04) 編譯Caffe_SSD
$ cd ~/caffe_SSD
$ mkdir build
$ cd build
$ cmake -D CUDA_USE_STATIC_CUDA_RUNTIME=OFF -D OpenCV_DIR=/usr/local/share/OpenCV ..
$ make all -j8
$ make install -j8
$ make pytest -j8
$ make pycaffe -j8
$ make runtest -j8

(05) 下載VggNet放在~/caffe_SSD/models/VGGNet/
https://gist.github.com/weiliu89/2ed6e13bfd5b57cf81d6

(06) 下載VOC2007和VOC2012的資料
$ cd
$ mkdir data
$ cd ~/data
$ wget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
$ wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
$ wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
$ tar -xvf VOCtrainval_11-May-2012.tar
$ tar -xvf VOCtrainval_06-Nov-2007.tar
$ tar -xvf VOCtest_06-Nov-2007.tar

(07) 設置環境變數
$ sudo gedit /etc/profile

在/etc/profile 最底下添加
export PYTHONPATH=$PYTHONPATH:$HOME/caffe_SSD/python

$ source /etc/profile
$ sudo reboot


(08) 創建LMDB檔案
$ cd ~/caffe_SSD
$ ./data/VOC0712/create_list.sh

$ ./data/VOC0712/create_data.sh

(09) 訓練與測試

$ sudo gedit ~/caffe_SSD/examples/ssd/ssd_pascal.py
修改gpus = "0,1,2,3"這一行,來決定使用的gpu數量
$ cd ~/caffe_SSD
$ python examples/ssd/ssd_pascal.py
如果出現cudasuccess(2vs0)問題,則說明顯示卡計算量有線,再次打開caffe/examples/ssd/ssd_pascal.py修改batch_size = 32這一行
$ python examples/ssd/score_ssd_pascal.py
$ python examples/ssd/ssd_pascal_webcam.py

2016年9月9日 星期五

[Linux]Digits架設

(01) 架設環境
Ubuntu v16.04 LTS
Qt v5.7.0
OpenCV v2.4.13
caffe v0.15.13
cuDNN v5.1
cuda v8.0
digits v4.1


下載區:http://goo.gl/lp7VCN


(02) 安裝相關套件
$ sudo apt-get install build-essential libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler curl git cmake

(03) 安裝cuda
https://developer.nvidia.com/cuda-downloads

$ chmod 755 Cuda_v8.0.44.run
$ sudo ./Cuda_v8.0.44.run --override

Enter CUDA Samples Location [ default is /home/kinghorn ]: /usr/local/cuda

(04) 設置環境變數
$ sudo gedit /etc/profile.d/cuda.sh

在/etc/profile.d/cuda.sh最底下添加
export PATH=$PATH:/usr/local/cuda/bin
export CUDADIR=/usr/local/cuda
export GLPATH=/usr/lib

(05) 添加lib路徑
$ sudo gedit /etc/ld.so.conf.d/cuda.conf

在/etc/ld.so.conf.d/cuda.conf最底下添加
/usr/local/cuda/lib64

$ sudo ldconfig

(06) 安裝cuda sample
$ cd /usr/local/cuda/samples
$ sudo make all -j4

(07) 測試cuda
$ cd /usr/local/cuda/samples/bin/x86_64/linux/release
$ ./deviceQuery

(08) 安裝cuDNN
https://developer.nvidia.com/rdp/cudnn-download

移動到lib64下
$ sudo cp lib* /usr/local/cuda/lib64/
移動到include下
$ sudo cp cudnn.h /usr/local/cuda/include/

(09) 更新連結
$ cd /usr/local/cuda/lib64/
$ sudo ln -sf libcudnn.so.5.1.5 libcudnn.so.5
$ sudo ln -sf libcudnn.so.5 libcudnn.so
$ sudo ldconfig -v
$ sudo reboot

(10) 安裝Atlas
$ sudo apt-get install libatlas-base-dev

(11) 安裝Qt Creator
http://www.qt.io/download-open-source/


$ sudo apt-get --reinstall install libgl1-mesa-dev

(12) 安裝Torch(選擇安裝)

$ git clone https://github.com/torch/distro.git ~/torch --recursive
$ cd ~/torch
$ bash install-deps
$ ./install.sh
$ source ~/.bashrc
$ sudo gedit /etc/profile

在/etc/profile 最底下添加
export TORCHPATH=${HOME}/torch/install

$ source /etc/profile

(13) 安裝相關套件
$ sudo apt-get install build-essential libgtk2.0-dev libjpeg-dev libtiff5-dev libjasper-dev libopenexr-dev python-dev python-numpy python-tk libtbb-dev libeigen2-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev libqt4-dev libqt4-opengl-dev sphinx-common texlive-latex-extra libv4l-dev libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev libgtkglext1-dev libgtkgl2.0-dev libeigen3-dev

(14) 下載OpenCV安裝檔案
http://opencv.org/
下載完後,將目錄移至到檔案所在位置(我自己是放在家目錄下),並解壓縮。
用終端機進入資料夾中。

(15) 安裝OpenCV
$ mkdir build
$ cd ./build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
$ make -j8
$ sudo make install
$ sudo ldconfig

(16) 測試OpenCV
新增c++檔

.pro內容

QT       += core
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = test
TEMPLATE = app
SOURCES += main.cpp
HEADERS  +=
FORMS    +=
INCLUDEPATH += /usr/local/include \
                /usr/local/include/opencv \
                /usr/local/include/opencv2
LIBS += /usr/local/lib/libopencv_highgui.so \
        /usr/local/lib/libopencv_core.so    \
        /usr/local/lib/libopencv_imgproc.so \

.cpp內容

#include <QCoreApplication>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

using namespace cv;

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    namedWindow( "src", WINDOW_AUTOSIZE );
    Mat src1 = imread( "lena.jpg" );
    while(1)
    {
        imshow( "src", src1 );
        char c =  waitKey(30);
        if( 27==c )
            return 0;
    }
}

在放入一張lena.jpg即可完成。

(17) 安裝Caffe需要的Python包
$ sudo apt-get install -y python-numpy python-scipy python-matplotlib cython
$ sudo apt-get install -y python-sklearn python-skimage python-h5py python-protobuf python-leveldb
$ sudo apt-get install -y python-networkx python-nose python-pandas python-gflags ipython protobuf-c-compiler
$ sudo apt-get install -y protobuf-compiler python-pip python-sympy ipython-notebook libyaml-cpp-dev

(18) 下載環境依賴項
$ sudo apt-get install libgflags-dev libgoogle-glog-dev libopencv-dev libleveldb-dev libsnappy-dev liblmdb-dev libhdf5-serial-dev libprotobuf-dev protobuf-compiler libatlas-base-dev python-dev python-pip python-numpy gfortran libboost-all-dev graphviz gunicorn python-pydot

(19) 下載caffe
$ git clone https://github.com/NVIDIA/caffe.git caffe

(20) 修改caffe的Makefile.config
$ cd ~/caffe
$ cp Makefile.config.example Makefile.config
$ sudo gedit Makefile.config

a. 啟用CUDNN,去掉"#"
USE_CUDNN := 1

b. 啟用GPU,將CPU_ONLY開頭加上"#"
# CPU_ONLY := 1

c. 搜尋lib位置
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/

$ cd /usr/lib/x86_64-linux-gnu
$ sudo ln -s libhdf5_serial.so.8.0.2 libhdf5.so
$ sudo ln -s libhdf5_serial_hl.so.8.0.2 libhdf5_hl.so

(21) 開始編譯
$ cd ~/caffe
$ mkdir build
$ cd build
$ cmake -D CUDA_USE_STATIC_CUDA_RUNTIME=OFF -D OpenCV_DIR=/usr/local/share/OpenCV ..
$ make all -j4
$ make test -j4
$ make runtest -j4
$ make pycaffe

(22) 測試Caffe
$ cd ~/caffe
$ sudo bash ./data/mnist/get_mnist.sh
$ sudo bash ./examples/mnist/create_mnist.sh
$ sudo bash ./examples/mnist/train_lenet.sh | tee res.out
$ sudo gedit /etc/profile

在/etc/profile 最底下添加
export CAFFE_HOME=${HOME}/caffe

$ source /etc/profile
$ sudo reboot

(23) 安裝Digits
$ git clone https://github.com/NVIDIA/DIGITS.git digits
$ cd ~/digits
$ for req in $(cat requirements.txt); do sudo pip install $req; done
$ chmod +x ./digits-devserver

(24) 配置Digits
$ python -m digits.config.edit --verbose
$ ./digits-devserver