[Ubuntu] 그래픽 카드별 CUDA 및 Opencv 설정

그래픽 카드별 CUDA 및 Opencv 설정


현재 github의 fast rcnn 을 사용하면서 부딛히는 문제점들을 정리해본다.

현재 사용하고 있는 PC는 2대로 한대는 GTX760, 다른 한대는 GTX1060을 사용하고 있는데

그래픽카드가 다르기 때문에 setting또한 달라서 복잡하다.

1. GTX760 PC

GTX760은 CUDA7.5와 Oepncv 2.4조합으로 잘 세팅이 된다.

2. GTX1060 PC

CUDA 8.0

다른 gtx1080을 사용하는 친구는 CUDA7.5로 fast rcnn 및 caffe세팅이 된다는데 나는 계속 오류가 나서 CUDA8.0 RC버전으로 올려서 설치하니까 caffe 오류는 잡을 수 있었다. 하지만 CUDA8.0으로 올리면서 Opencv와의 호환에 문제가 발생한다.

OPENCV3.0 혹은 3.1

CUDA8.0을 설치하고 Opencv3.0을 build하면 오류가 나는데, opencv에서 graphcut알고리즘이 cudalegacy 모듈을 사용하는데 CUDA8.0에서 이 legacy를 삭제한것 같다. 현재 이 문제는 github의 opencv에는 해결되어 있으므로 github의 opencv를 사용하면 해결된다.

문제해결 포스팅 관련 URL

https://github.com/opencv/opencv/pull/6510

문제 해결된 opencv github

https://github.com/opencv/opencv

추가적인 문제

1. thrust

추가적으로 CUDA8.0RC에 thrust관련 문제가 있다.

문제해결 포스팅 관련 URL

https://github.com/thrust/thrust/issues/800

thrust github URL

https://github.com/thrust/thrust

위의 포스팅에 글처럼 github에서 git clone을 받은 후 기존의 /usr/local/cuda8.0/thrustthrust_old로 바꾸고 다운받은 thrust폴더의 링크를 넣어준다.

2. Opencv3.0 features2D error

Opencv3.0 을 build하다보면 features2d.hpp에서 error가 발생한다.

위의 문제와 관련된 post는 다음에 있다

http://stackoverflow.com/questions/33050599/opencv-3-0-features2d-hpp-error-unknown-algorithminfo

vector관련 에러는 using std::vector를 넣어주고

AlgorithmInfo 관련 에러는 AlgorithmInfoAlgorithm으로 바꾸어 준다.

기타 fast rcnn 설정을 위한 참고 URL

http://m.blog.daum.net/goodgodgd/27


[Ubuntu] Pycaffe importerror문제

Pycaffe importerror문제


Pycaffe를 사용하면서 import error를 자주 만나게 되는데

아무리 구글링을 해도 해결이 안될때가 있다.

이런 경우는 그냥 python을 이용하는 경우가 아닌 anaconda를 사용하는 경우이다.

일반적으로 구글링으로 나오는 방법은 python을 이용할 때이기 때문에 다른 방법을 사용해야 한다.

예를들어 protobuf의 import error가 발생했을 경우

일반적으로

sudo apt-get install protobuf 혹은 sudo pip install protobuf로 설치를 하라고 하지만

이렇게는 해결되지 않는다.

이럴때는

conda install protobuf

로 설치해야 한다.

sudo로 실행할 경우 conda를 찾을 수 없다고 나온다고 한다.

protobuf이외에 다른 import 문제도 비슷하게 해결 가능하다.

참고URL

http://jangjy.tistory.com/210


[Ubuntu] Ubuntu rsync 오류 및 옵션

Ubuntu rsync 오류 및 옵션


rsync와 scp는 원격으로 파일을 복사할때 사용하는 명령어이다.

내가 주로 사용하는 rsync 명령어 및 옵션은 `rsync -avPh source dest’으로 평소에 사용할 때에는 별 문제가 없다. 하지만 exFAT로 format되어있는 하드디스크로 복사를 하려고 할 때

failed to set permissions on 경로 Function not implemented (38)

이라는 오류가 뜨면서 재대로 복사가 되지 않는다. rsync exFAT로 검색하여 찾은 해결법은 다음에서 확인할 수 있다.

위의 포스트에 따르면 -a 옵션이 문제가 된다.

-a 옵션은 -archive의 옵션으로 rsync를 아카이브 모드로 실행을 하며 [-rlptgoD]의 동작을 한다. 즉 7개의 옵션을 모두 포함하고 있는 옵션이란 뜻이다.

이때 exFAT로 복사할 때 문제가 되는 부분은 permission과 관련되는 pgo옵션이다. 따라서 이 3가지 옵션을 제외한 나머지 옵션을 -a 대신 넣어주면 된다. 즉 rsync -rltDvPh 이렇게 옵션을 넣어주면 rsync -avPh에서 위의 3가지 옵션을 제외한 옵션이 된다.

이렇게 옵션을 바꾸어 주면 문제없이 exFAT format으로도 복사가 잘 된다.

자세한 rsync 들의 옵션들은 다음 블로그에 잘 정리되어 있다.

참고URL

http://blog.marcelotmelo.com/linux/ubuntu/rsync-to-an-exfat-partition/

http://gyus.me/?p=214


[Ubuntu] Ubuntu apt-get 명령어 정리

Ubuntu apt-get 명령어 정리


apt-get(Advanced Packaging Tool)은 우분투(Ubuntu)를 포함안 데비안(Debian)계열의 리눅스에서 쓰이는 팩키지 관리 명령어 도구입니다. 우분투에는 GUI로 되어 있는시냅틱 꾸러미 관리자도 있기는 하지만 이런 저런 개발관련 패키지를 설치할 때는 커맨드기반인 apt-get이 더 편하기도 합니다. sudo는 superuser권한으로 실행하기 위함입니다.

1. 패키지 인덱스 인덱스 정보 업데이트

apt-get은 인덱스를 가지고 있는데 이 인덱스는/etc/apt/sources.list에 있습니다. 이곳에 저장된 저장소에서 사용할 패키지의 정보를 얻습니다.

sudo apt-get update

2. 설치된 패키지 업그래이드

설치되어 있는 패키지를 모두 새버전으로 업그래이드 합니다.

sudo apt-get upgrade

3. 의존성검사하며 설치하기

sudo apt-get dist-upgrade

4. 패키지 설치

sudo apt-get install 패키지이름

5. 패키지 재설치

apt-get --reinstall install 패키지이름

6. 패키지 삭제

설정파일은 지우지 않음

sudo apt-get remove 패키지이름

7. 설정파일까지 모두 지움

sudo apt-get --purge remove 패키지이름

8. 패키지 소스코드 다운로드

sudo apt-get source 패키지이름

9. 위에서 받은 소스코드를 의존성있게 빌드

sudo apt-get build-dep 패키지이름

10. 패키지 검색

sudo apt-cache search 패키지이름

11. 패키지 정보 보기

sudo apt-cache show 패키지이름

apt를 이용해서 설치된 deb패키지는 /var/cache/apt/archive/ 에 설치가 됩니다.


[Math] SE(3) and SO(3) transformation

SE(3) and SO(3) transformation


SE(3), SO(3) And GL(3,R)

SE(3), SO(3), GL(3,R) 와 관련된 내용을 정리해 보려고 한다.

만약 3차원 공간상에서 f를 x1의 점을 x2의 점으로 변환시키는 matrix R이라고 할 때 다음과 같이 표현 할 수 있다. \[f : \mathbb{R}^3 \to \mathbb{R}^3\] \[\begin{bmatrix} x_2\\ y_2\\ z_2 \end{bmatrix} = R \begin{bmatrix} x_1\\ y_1\\ z_1 \end{bmatrix}\]

이때 역행렬이 가능한 $3X3$ 매트릭스의 set은 general linear group $GL(3, \mathbb{R})$ 이다. 이런 무한개의 가능성을 갖고 있는 R 중에서 determinant 가 $\pm1$인 orthogonal matrices 들을 orthogonal group 이라고 한다.($O(3)$ $\subset$ $GL(3, \mathbb{R})$)

이러한 변환 matrix중에서 두 점의 쌍의 거리가 변하지 않는 transformation을 isometries이라고 하며, 그 중에서 determinant가 +1인 matrix을 proper isometries라고 한다. 이러한 special orthogonal group을 $SO(3)$ 라고 한다. ($SO(3)\subset O(3)$)

이런 $SO(3)$ group은 순수한 rotation만 표현 가능하다. Translation을 표현하기 위해서는 $4X4$ matrix를 고려해야 하며, 3D point들은 homogeneous coordinate으로 확장해야 한다.($GL(4, \mathbb{R})$) \[\begin{bmatrix} X_2\\ 1 \end{bmatrix} = T \begin{bmatrix} X_1\\ 1 \end{bmatrix}\] \[\begin{bmatrix} x_2\\ y_2\\ z_2\\ 1 \end{bmatrix} =\begin{bmatrix} R_{11}&R_{12}&R_{13}&T_x\\ R_{21}&R_{22}&R_{23}&T_y\\ R_{31}&R_{32}&R_{33}&T_z\\ 0&0&0&1 \end{bmatrix} \begin{bmatrix} x_1\\ y_1\\ z_1 \\ 1 \end{bmatrix}\]

이러한 T중에서 R의 determinant가 +1을 만족하며, affine rigid motion을 이루는 group을 special Euclidean group($SE(3)$)라고 부른다.(affine: 평행선의 관계는 유지되는 변환, rigid(isometry): 각 쌍의 점들의 거리가 변하지 않는 변환)

즉 \(SE(3) \subset GL(4, \mathbb{R})\)의 관계이다.

더 자세한 내용은 A tutorial on SE(3) transformation parameterizations and on-manifold optimization 를 참고하기 바란다.


Pagination