2018年9月3日 星期一

Faster RCNN 實作筆記



變更完環境變量後 重新make

make clean
make all -j8
make pycaffe

若遇到問題: fatal error: pyconfig.h: No such file or directory

可使用 export CPLUS_INCLUDE_PATH=/usr/include/python2.7 ,之後重新make pycaffe即可。

2018年8月27日 星期一

Installation of NVcaffe required by NVIDIA Digits in CentOS 7.5

前言
記錄一下如何在CentOS 7.5下安裝Nvidia Digits所需要的NVcaffe,跟caffe官方網站上面的BVLC(Berkeley Vision And Learning Center) caffe有些微不同,使用digits最好使用NVcaffe,不然就要再去做其他的設定才能使用,這邊不做討論。
記錄這篇的原因在於官方只提供Ubuntu 16.04的安裝教學,對於CentOS 7的使用者來說有些微的不同,很容易導致對兩個系統環境不熟的人造成不歸路。

使用環境
OS : CentOS 7.5 64bit
CUDA version : 9.0 (綁定於tensorflow)
cudnn : 7.1(綁定於tensorflow)
Tensorflow : 1.10 (版本有變請自行確認所需要的CUDA版本及cudnn版本)
protobuf : 3.4.0 (在這邊用不到,順便記錄)
Python : 2.7
Cmake : 3.6 (在這邊用不到,順便記錄)
Boost : 1.64 (綁定於Cmake及一些瑣碎問題,建議不要更動)
Digits : 6.1.1 (沒特別注意是否對於其他軟體有版本相依問題)
NVcaffe : 0.15.14 (跟著Digits官方github下載就對了)

安裝說明

首先更新yum,預設應該沒有sudo使用者,請自行找如何設定,或是直接用su
sudo yum update 
確認gcc版本是否最新
#sudo yum install gcc gcc-c++
安裝python和pip
#sudo yum install python python-devel python-pip pip
下載NVcaffe,參考Nvidia Digits的官方github的BuildCaffe.md說明
先決定要安裝的路徑,本人安裝在根目錄下,因此需要superuser的權限
告知系統caffe安裝路徑
#export CAFFE_ROOT=/caffe
之後請記得加入到環境變數中,digits啟動才不會找不到caffe
安裝caffe需要的python packges
#sudo pip install -r $CAFFE_ROOT/python/requirements.txt
剛才是用NVcaffe內提醒的需求進行安裝,有些沒有被提及的也需要,只是他們覺得大家應該都有而沒有標註,故需要使用下面指令檢查一些安裝
#sudo yum install protobuf-devel leveldb-devel openblas-devel snappy-devel opencv-devel boost-devel hdf5-devel gflags-devel glog-devel lmdb-devel
反正就是系統提示缺什麼就補什麼,再來請至$CAFFE_ROOT下複製make的設定檔
#cd $CAFFE_ROOT
#cp Makefile.config.example Makefile.config
進行客製化編譯設定
#sudo gedit Makefile.config
找到
BLAS := atlas 
更改並且新增一行
BLAS := open
BLAS_INCLUDE := /usr/include/openblas
Ubuntu使用的是atlas,但CentOS不是,需要改成OpenBlas
再來請找到
/usr/lib/python2.7/dist-packages/numpy/core/include
改掉lib成lib64
/usr/lib64/python2.7/dist-packages/numpy/core/include
再來設定使用GPU,找到
# USE_CUDNN := 1
刪除註解#符號改成下面這樣
USE_CUDNN := 1
註解掉CUDA版本檢查
#CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
          -gencode arch=compute_20,code=sm_21 \
          -gencode arch=compute_30,code=sm_30 \......................略
就可以開始make
sudo make all -j12
sudo make runtest
sudo make pycaffe
sudo make distribute
-j12是使用12核心make,runtest可以跳過也沒關係
再次檢查剛剛提及的環境變數即可完成安裝


登入啟動請直接新增指令至~/.bash_profile並在指令後面加上符號&

2017年5月16日 星期二

CentOS 7 使用cmake 安裝 ITK

1.去ITK官方網站下載soruce code 的 tar.gz 壓縮縮檔

2.在想要安裝的目錄下創建自訂之資料夾,舉例安裝在根目錄下的ITK資料夾,在/底下mkdir ITK,並在ITK資料夾內在新增兩個資料夾,一個是放置要編譯的內容(mkdir ITK-bin),一個是安裝的目錄(mkdir itk)

3.將剛才下載的壓縮檔解壓縮於/ITK下

4.cd /ITK/ITK-bin 執行 cmake ../"步驟3之資料夾"

5.執行 cmake .

6.出現cmkae的選單之後,按下t進入進階設定,設定ITKV3_COMPATIBILITY設為ONITK_LEGACY_REMOVE設為OFF,再來設定安裝目錄為/ITK/itk

7.按下c進行設置,設置完成後按下g

8.執行make,這步驟會花一段時間(約3個小時)

9.執行make install


2017年4月18日 星期二

CentOS 7 + QT5 + CUDA環境配置

簡單紀錄一下卡最久的地方:
etc/profile裡面的CUDA環境變數不能設置LD_LIBRARY_PATH
需要寫在etc/ld.so.conf裡面撰寫
/usr/local/cuda-version/lib64  (CUDA路徑)
並且執行sudo ldconfig指令

參考網址:http://www.qtcentre.org/threads/56000-QtCreator-CUDA-5-5

2017年2月4日 星期六

RaspberryPI 常用指令


進raspberry設定SSH
sudo raspi-config
sudo service ssh restart

關閉AP功能
sudo nano /etc/default/hostapd
進去修改DAEMON_CONF="/etc/hostapd/hostapd.conf"為DAEMON_CONF=""


參考: http://blog.itist.tw/2014/05/hotspotd.html

安裝apache php
sudo apt-get update
sudo apt-get install apache2 php5 libapache2-mod-php5
網頁的預設位置 /var/www/html

安裝ftp
sudo apt-get install vsftpd
sudo nano /etc/vsftp.conf

設定WIFI
sudo nano /etc/metwork/interfaces

dpkg 指令查詢已安裝套件清單

dpkg -l apache2

motion相關指令
sudo service motion stop
sudo service motion start
sudo service motion restart
影片存於 /var/lib/motion
查詢檔案資訊 ls -lha

編輯相關資訊
vim http://www.vixual.net/blog/archives/234
nano 



https://samwhelp.github.io/book-ubuntu-basic-skill/book/content/package/apt-get.html

2016年6月28日 星期二

Raspberry PI2 安裝/重灌 Raspbian



  1. 把microSD卡放入讀卡機連接電腦。
  2. 把microSD卡格式化。
  3. 下載Raspbian
  4. 使用Win32DiskImager把Raspbian的img檔寫到microSD卡。
  5. microSD插回PI上,接上電源就可以使用了。

開機畫面




安裝中文字體
sudo apt-get install 要安裝的字型名稱
ex: sudo apt-get install ttf-wqy-zenhei

檢查語系
$ sudo dpkg-reconfigure locales

檢查完重新開機就可以正常使用囉!




















2016年3月30日 星期三

[Arduino] RFID 與 MIFARE






   RFID 以無線電波傳遞訊息,只要在電波範圍內,即可傳送訊號,不會有傳輸屏障之問題。這種設備的運作為一個讀卡設備會發出一個電磁場,而感應卡內部有線圈,當線圈靠近磁場時,會產生感應電流,就可以做為電力傳輸資訊。另外,感應卡平常沒有靠近電場時,內部晶片根本沒有電力可以工作,不用擔心卡片放在一起資料不見。

  不過,因RFID的運作是由無線電波傳送,所以在遇到金屬或是液體時,訊號的傳導會產生干擾與衰減,進而影響到資料讀取的可靠性與準確度(每個頻率間的干擾程度不同)。

  RFID設備所使用的頻段分為低頻(LF,125KHz)、高頻(HF,13.56MHz)、 超高頻(UHF,868~915MHz)、微波(Microwave,2.45 & 5.814GHz)各個頻 段的設備有不同的物理特性,如讀取的距離與讀取的速度,因此在不同應用情境中會採用不同頻段的設備。

  其中,現有門禁卡中的EM卡跟MIFARE卡長得很類似,常常會被搞混,悠遊卡為MIFARE卡。em卡無識別讀卡機的能力,當讀卡機感應時,感應卡就會回覆一組卡號,所以當得知卡號以後就可以在另一張可寫式em卡把卡號寫入,即能複製一張em卡;MIfare卡的卡片序號是在卡片產生時就已經寫死了,所以不會有複製相同卡片的問題,除非製造商刻意製造相同卡號的卡片,而mifare卡又具備加密與驗證機制,所以通常可以拿來做小額的消費,像是悠遊卡、一卡通或i-cASH。



  EM卡因不具防衝突的功能,所以當兩張同時感應時,無法感應,而MIFARE卡因為有防衝突功能,則是兩張都會感應到,不過這項特點如果沒注意到可能會造成困擾。之前曾經有民眾在捷運感應時,因為兩張卡放在一起,結果被重複扣款。



  我們今天要介紹的RFID感應器是頻率為13.56MHz的 RFID-RC522,而他的感應卡為MIFARE卡,MIFARE卡又有分不同儲存容量的卡。MIFARE S50 內部儲存容量1KbyteMIFARE S70 內部儲存容量 4Kbytes,各劃分為 16 區與 64 區,每區都有獨立的 A / B 兩層存取控制密碼,每區有4個BLOCK,每個BLOCK有16個字節。


  通常,以一個SECTOR為一組,前三個BLOCK為數據區,第四個BLOCK為驗證區,驗證區含有A/B兩組密碼,A做為讀取的密碼,B為修改資料的密碼,要比對成功才能做資料上的讀寫,比較特別的是BLOCK0為卡片與商業之資料,是不能更改的,而卡號寫在BLOCK0的前四個字結。

  RFID與ARDUINO UNO的腳位接法為: RST→9、SDA(SS)→10、MOSI→11、MISO→12、SCK→13,需要注意的是電源(VCC)要接3.3V不是5V
  範例碼中,卡片靠近感應時,只要進入感應範圍內,就會不停的作讀取,在程式設計上可能會因為他不停在讀取,所以感應速度太快,沒辦法好好去做判斷的動作,在門禁實作上也會造成重複感應。可以利用程式碼中的 mfrc522.PICC_HaltA(); 函式,來使得卡片靠近時只讀取一次,而不是在卡片靠近的範圍中一直讀取,再利用DELAY來讓讀取間隔時間久一點,來避免感應卡片時放下跟拿起的兩次重複感應,RFID的讀取就完成囉。



  以上程式碼,只用簡單的卡號讀取來做展示,範例碼中還有其他的讀寫範例。

參考: http://blog.davidou.org/archives/988