일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 명령어모음
- RNNPose
- 가상데이터셋
- 데이터셋
- Ceres-solver
- Blenderproc
- 6D Pose estimation
- SfM의 의존성
- 블랜더
- 딥러닝
- 라이브러리 설치
- 딥러닝 데이터셋
- Nerf
- 자세추정
- 카메라 내부파라미터 #c++
- ROS2 #설치 #우분투20.04 #
- OpenSfM
- ubuntu 20.04
- 데이터셋 자동 생성
- Ceres
- gru
- RTX3090TI
- python 코드
- ConvGRU
- Unity
- 사진으로 3D 모델링 하기
- Photogrammetry
- instant-ngp
- 머신러닝
- 데이터셋생성
- Today
- Total
홍든램지의 보일러실
Ceres-solver 라이브러리 설치하고 예제로 확인하기 본문
일단 Ceres-solver가 뭔지 알아보자.

Ceres Solver 라이브러리는 nonlinear least-squares 문제를 해결하기 위한 rubust optimization을 제공하는 C++ 라이브러리이다. Google에서 개발했고 컴퓨터 비전, 로봇 공학 및 머신러닝등에 사용된다.
이 라이브러리는 번들 조정, SLAM, SfM 등 다양한 영역에서 일반적으로 발생하는 것과 같은 비선형 함수와 관련되 최적화 문제를 해결하기 위한 프레임워크를 제공한다.
Ceres Solver는 다양한 Loss function, minimization 알고리즘, linear solver를 지원하며 커스터마이즈 할수 있도록 설계되었다. Structure 문제에서 구조의 희소성을 이용해서 Schur-complement factorizaion 및 QR 분해와 같은 고급 기술을 사용하여 대규모 문제를 효율적으로 처리할 수 있다.
라고 한다.
이제부터 설치 방법에 대해서 알아보자.
Dependencies 의존성!
- C++17 컴파일러 or ↑
- CMake 3.10 필요 or ↑
- Eigen 3.3 필요 or ↑
- glog 0.3.5 추천! or ↑
- gflags -> glog를 위한 의존성을 갖고 있고 예제나 테스트코드를 빌드하기 위해 필요
- SuiteSparse 4.5.6 or ↑ -> 옵션이지만 강력히 추천 대규모 번들 조정에 필요
- CUDA -> NVIDIA GPU 가속 라이브러리 CMake 플래그중 USE_CUDA 를 활성화하면 된다.
처음엔 의존성 설치하자. 아래 명령어와 같다.
# CMake 설치
sudo apt-get install cmake
# google-glog + gflags 설치
sudo apt-get install libgoogle-glog-dev libgflags-dev
# Use ATLAS for BLAS & LAPACK 설치
sudo apt-get install libatlas-base-dev
# Eigen3 설치
sudo apt-get install libeigen3-dev
# SuiteSparse (optional) 설치
sudo apt-get install libsuitesparse-dev
다음으로 Latest stable release를 받자 링크는 아래 링크를 참조하길 바란다.
http://ceres-solver.org/ceres-solver-2.1.0.tar.gz
다운받은후 압축을 푼다.
아래 명령어를 통해서 받을 수는 있지만 아래링크로 해본 결과 설치는 할수 있느나 OpenSfM 설치시 오류가 난다
이유는 OpenSfM이 의존성이 맞지 않아 보이며 cmake시 C++17 컴파일러가 인식되지만 ceres를 가져올때 링크가되지 않았다.
git clone https://ceres-solver.googlesource.com/ceres-solver
다양한 옵션을 사용하기위해 다운 받은 폴더의 CMakeList.txt 를 열어보았다.

필자는 CUDA를 사용하기위해 옵션이 어떤상태인가 확인해보았는데 처음 설정부터 ON으로 되어있다.
Git Clone한 폴더인 ceres-solver 로 이동한다. 이동한 폴더에서 아래 커맨드를 입력한다.
이때 압축푼 ceres-solver-2.1.0 폴더는 ceres-bin 과 같은 경로에 있어야한다.
mkdir ceres-bin
cd ceres-bin
cmake ../ceres-solver-2.1.0
cmake가 끝나서 성공하면 아래와 같은 맨트가 뜬다.

다음으로 make하고 테스트한후 설치를 진행한다.
make
make test
sudo make install
설치완료후 아래와 같은 커맨드로 예제를 실행할 수 있다.
bin/simple_bundle_adjuster ../ceres-solver-2.1.0/data/problem-16-22106-pre.txt
실행 결과는 아래 사진과 같다.

git clone 으로 설치시 아래와 같은 오류가 뜨며 해결방법 또한 적어 두었다.
설치가 완료되면 예제를 실행시켜보자. ceres-solver 폴더에 있는 example 폴더로 이동한다.
이동한뒤 build 폴더를 생성하고 build로 이동한뒤 cmake를 진행한다.
이때 주의 할점 Cmake를 진행하다보면 오류가 뜬다.

여기서 eigen3를 찾지 못하는 현상으로 example 폴더에 있는 CmakeList.txt 에 아래 와 같이 코드를 추가하였다.

하지만 이렇게 진행하여도 오류가 아래와 같이 뜬다.

해결방법은 example에 위치한 CmakeList.txt 맨 윗줄에 다음과 같이 추가한다.
find_package(Ceres REQUIRED)
include_directories(${CERES_INCLUDE_DIRS})
이후 아래 커맨드를 통해 실행하면 make가 되는 것을 볼 수 있다.
cd examples
mkdir build
cd build
cmake ..
make
추가적으로 예제인 helloworld를 실행해보자
./helloworld

위와 같이 실행이 된것을 볼 수 있다.
이렇게 해서 Ceres-Solver 라이브러리 를 설치하고 예제를 실행해보았다.
'오픈소스 프로젝트' 카테고리의 다른 글
[Unity Perception Package] 2.데이터셋 만들기 (0) | 2023.04.05 |
---|---|
[Unity Perception Package] 1.데이터셋 생성 준비하기 (0) | 2023.04.04 |
OpenSfM 알아보고 설치하고 실행하기 (0) | 2023.03.31 |
BlenderProc 설치와 python 예시 (0) | 2023.03.14 |