顯示具有 linux 標籤的文章。 顯示所有文章
顯示具有 linux 標籤的文章。 顯示所有文章

2016年6月17日 星期五

caffe fast-rcnn GPU編譯流程

caffe fast-rcnn GPU編譯流程(含python layer)

2015/12/21 | 無
嗨, 大家好今天要來分享的是 fast-rcnn GPU編譯流程
1. 前期準備工作, 安裝相依程式
#下列為C++ 快速安裝方式, 若想要安裝最新版本請至各官網下載自行編譯
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
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
#下列為python 快速安裝方式
sudo apt-get -y install python-pip
cd ./caffe-fast-rcnn/python
for req in $(cat requirements.txt); do sudo pip install $req; done
#install easydict
wget https://pypi.python.org/packages/source/e/easydict/easydict-1.6.zip
unzip easydict-1.6.zip
cd easydict-1.6
python setup.py install
#下列為安裝CUDA 流程
#先到官網下載安裝檔
https://developer.nvidia.com/cuda-downloads
#Ctrl + Alt + F1
sudo lightdm stop
sudo dpkg -i cuda-repo-ubuntu1404_7.5-18_amd64.deb
sudo apt-get update
sudo apt-get install cuda
#安裝驅動期間必須要重新開機才能繼續
#安裝cuDNN
tar -zxf cudnn-7.0-linux-x64-v3.0-prod.tgz
cd cuda
sudo cp lib64/* /usr/local/cuda/lib64/
sudo cp include/cudnn.h /usr/local/cuda/include/
#build caffe
cp Makefile.config.example Makefile.config
vi Makefile.config
#1.Uncomment the line: USE_CUDNN := 1 and WITH_PYTHON_LAYER := 1
#2.Make sure the CUDA_DIR correctly points to our CUDA installation.
make pycaffe -j8
make all -j8
make test -j8
cd ./caffe-fast-rcnn/lib
rm ./nms/*.so
make
#恭喜完成

parse command line arguments in bash


./myscript.sh -e conf -s /etc -l /usr/lib /etc/hosts

#!/bin/bash
# Use -gt 1 to consume two arguments per pass in the loop (e.g. each
# argument has a corresponding value to go with it).
# Use -gt 0 to consume one or more arguments per pass in the loop (e.g.
# some arguments don't have a corresponding value to go with it such
# as in the --default example).
# note: if this is set to -gt 0 the /etc/hosts part is not recognized ( may be a bug )
while [[ $# -gt 1 ]]
do
key="$1"

case $key in
    -e|--extension)
    EXTENSION="$2"
    shift # past argument
    ;;
    -s|--searchpath)
    SEARCHPATH="$2"
    shift # past argument
    ;;
    -l|--lib)
    LIBPATH="$2"
    shift # past argument
    ;;
    --default)
    DEFAULT=YES
    ;;
    *)
            # unknown option
    ;;
esac
shift # past argument or value
done
echo FILE EXTENSION  = "${EXTENSION}"
echo SEARCH PATH     = "${SEARCHPATH}"
echo LIBRARY PATH    = "${LIBPATH}"
echo "Number files in SEARCH PATH with EXTENSION:" $(ls -1 "${SEARCHPATH}"/*."${EXTENSION}" | wc -l)
if [[ -n $1 ]]; then
    echo "Last line of file specified as non-opt/last argument:"
    tail -1 $1
fi


2016年6月15日 星期三

Ubuntu 14.04 install boost

如何安裝 boost 到 ubuntu 14.04

1. Download boost
    http://www.boost.org/

2. cd /path/boost/
    sudo apt-get update
  sudo apt-get install build-essential g++ python-dev autotools-dev libicu-dev build-   essential libbz2-dev libboost-all-dev
  ./bootstrap.sh --prefix=/usr/local
  sudo ./b2 install

3. sudo apt-get install libboost-all-dev

2016年6月7日 星期二

Eclipse C++ 打包

在程式的主資料夾建立folder : build
裡面放一個執行檔 build.sh

***
WORKDIR=$(cd "$(dirname "$0")"; pwd)
cd $WORKDIR/../

#將系統內建的也打包進去
find . -type f -perm /a+x -exec ldd {} \; | grep so | sed -e '/^[^\t]/ d' | sed -e 's/\t//' | sed -e 's/.*=..//' | sed -e 's/ (0.*)//' | sort | sed '/^\s*$/d' |  uniq | sed -e '/x86_64-linux-gnu/d' | sed -e '/lib64/d' | sed 's/^/sudo cp /' | sed 's?$? '`pwd`/lib'?' >> copy.sh

#find . -type f -perm /a+x -exec ldd {} \; | grep so | sed -e '/^[^\t]/ d' | sed -e 's/\t//' | sed -e 's/.*=..//' | sed -e 's/ (0.*)//' | sort | sed '/^\s*$/d' |  uniq | sed 's/^/sudo cp /' | sed 's?$? '`pwd`/lib'?' >> copy.sh

mkdir lib
chmod +x copy.sh
./copy.sh
rm copy.sh

***
註解的不將系統內建的連結檔放入lib

2016年5月9日 星期一

NO_PUBKEY 575159689BEFB442

Ubuntu 14.04 更新的時候出現了

"Error GPG: http://download.fpcomplete.com stable Release: NO_PUBKEY 575159689BEFB442"

解決方式:
wget -q -O- https://s3.amazonaws.com/download.fpcomplete.com/ubuntu/fpco.key | sudo apt-key add -



2016年5月4日 星期三

Sed 小應用:刪除行尾(首)的最後一個字元


刪除每一行的最後一個字元
sed 's/.$//'

".$" 代表著行尾的前一個任意字元

利用sed來替換文字
sed's/想要被替換的字/替換的字/'

行首

sed 's/^/string/' 行首用'string'代替



2015年12月25日 星期五

Linux 指令 - ps

Linux中的ps指令用法
1.作用
ps顯示瞬間進程 (process) 的動態,使用權限是所有使用者。
2.格式
ps [options] [--help]
3.主要參數
ps的參數非常多, 此出僅列出幾個常用的參數。
-A:列出所有的進程。
-l:顯示長列表。
-m:顯示內存信息。
-w:顯示加寬可以顯示較多的信息。
-e:顯示所有進程。
a:顯示終端上的所有進程,包括其它用戶的進程。
-au:顯示較詳細的信息。
-aux:顯示所有包含其它使用者的進程。
4.說明
要
對進程進行監測和控制,首先要瞭解當前進程的情況,也就是需要查看當前進程。ps命令就是最基本、也是非常強大的進程查看命令。使用該命令可以確定有哪些
進程正在運行、運行的狀態、進程是否結束、進程有沒有殭屍、哪些進程佔用了過多的資源等。圖2給出了ps-aux命令詳解。大部分信息都可以通過執行該命
令得到。最常用的三個參數是u、a、x。下面就結合這三個參數詳細說明ps命令的作用:ps aux
圖2 ps-aux命令詳解
圖2第2行代碼中,USER表示進程擁有者;PID表示進程標示符;%CPU表示佔用的CPU使用率;%MEM佔用的物理內存使用率;VSZ表示佔用的虛擬內存大小;RSS為進程佔用的物理內存值;TTY為終端的次要裝置號碼。
STAT
表示進程的狀態,其中D為不可中斷的靜止(I/O動作);R正在執行中;S靜止狀態;T暫停執行;Z不存在,但暫時無法消除;W沒有足夠的內存分頁可分
配;高優先序的進程;N低優先序的進程;L有內存分頁分配並鎖在內存體內 (實時系統或
I/O)。START為進程開始時間。TIME為執行的時間。COMMAND是所執行的指令。
5.應用實例
在進行系統維護時,經常會出現內存使用量驚人,而又不知道是哪一個進程佔用了大量進程的情況。除了可以使用top命令查看內存使用情況之外,還可以使用下面的命令:

2015年12月10日 星期四

Linux command line 指令

  1. 縮短command line 裡面的路徑(terminal instance)

    本來的路徑長相
    usr@ubunt:~/Downloads/Cython/Delta_person_detection/faster-rcnn$

    執行  PS1='\u@\h:\W\$ '

    會變成
    usr@ubuntu:faster-rcnn$

    To change it "permanently" (永遠改成這種形式)

    In your ~/.bashrc, find the following section:
    if [ "$color_prompt" = yes ]; then
        PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ '
    else
        PS1='${debian_chroot:+($debian_chroot)}\u@\h:\W\$ '
    fi
  2. vi 裡面要刪除整行的指令:dd
  3. 用檔名找檔案 find . -name "*prototxt" -print

How to successfully restart a network in Ubuntu 14.04

Linux 重新啟動網路
sudo service network-manager restart
This was on a 14.04 ubuntu-desktop system.

2015年12月7日 星期一

將console message導入文件 跟 2>&1


如果想將程式執行的訊息輸出到文件檔

ex: ./tools/demo.py > output.txt 2>&1

./tools/demo.py
執行程式

> output.txt
將console message 輸出到 output.txt

2>&1
改變file descriptor

***
「>」的意思其實是,將「>」左邊輸出的東西重新導向到右邊去。

但不止是這樣而已,系統將標準輸入輸出分成三個:標準輸入 (stdin)、標準輸出 (stdout)、以及標準錯誤輸出 (stderr),它們的 fd (file descriptor, 檔案描述子) 分別是 0、1、2。

當「>」左邊未指定任何東西時,它會讀取左方程式的標準輸出 (也就是 fd=1) 重新導向給右邊的東西,但是你也可以指定要重新導向的 fd (也就是說「>abc.txt」會等於「1>abc.txt」)。所以可以想見 2>&1 的意思應該是把 fd=2,也就是標準錯誤輸出重新導向給 &1。而這邊的 &1 指的其實就是 fd=1。