Environment
MacOS(M1)
CUDA == 11.5
*opencv == 4.4.0
$ sudo apt install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler python-dev libgflags-dev libgoogle-glog-dev liblmdb-dev libboost-all-dev libatlas-base-dev libopenblas-dev libopencv-dev python-opencv python-pip python-dev python-protobuf build-essential
$ sudo git clone https://github.com/BVLC/caffe
$ cd caffe // caffe를 git clone한 폴더로 이동하기
# Makeconfig.file 만들어주기
$ sudo vi Makefile.config
vim을 사용해서 아래 내용을 복붙해서 넣어준다(환경별 버전은 맞춰줘야함)
CPU_ONLY := 1
OPENCV_VERSION := 3
CUSTOM_CXX := g++
CUDA_DIR := /usr/local/cuda
CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
-gencode arch=compute_20,code=sm_21 \
-gencode arch=compute_30,code=sm_30 \
-gencode arch=compute_35,code=sm_35 \
-gencode arch=compute_50,code=sm_50 \
-gencode arch=compute_52,code=sm_52 \
-gencode arch=compute_60,code=sm_60 \
-gencode arch=compute_61,code=sm_61 \
-gencode arch=compute_61,code=compute_61
BLAS := atlas
# 아래 부분 자기의 파이썬 버전과 numpy 위치에 맞게 수정해줘야함
PYTHON_INCLUDE := /usr/include/python3.8 \
/usr/lib/python3/dist-packages/numpy/core/include
PYTHON_LIB := /usr/lib
# 마찬가지로 여기도 각자 환경에 맞게 수정!
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib/x86_64-linux-gnu/hdf5/serial
BUILD_DIR := build
DISTRIBUTE_DIR := distribute
TEST_GPUID := 0
Q ?= @
나는 이 과정에서 caffe의 cpp, hpp 파일에 있는 Opencv 버전에 문제가 있어서 파일들 내의 opencv2/~를 모두 opencv4/opencv2/~로 변경해주었다. . . . .
$ sudo make all
$ sudo make test
$ sudo make run test
마찬가지로 이 과정에서도
library not found for -lboost_python 라는 에러가 떠서 우선 이걸 해결해주었다.
python3의 경우 lboost가 아니라 libboost라는 이름이기 때문에 일단 libboost의 위치를 찾아주었다.
$ sudo find /usr -iname libboost*
libboost가 /usr/lib/x86_64-linux-gnu에 있어 해당 경로로 이동 후 작업을 진행하였다.
$ cd /usr/lib/x86_64-linux-gnu
# libboost_python버전 찾기
$ ls -l | grep libboost_python
그럼 이런 결과가 뜨는데, 맨 마지막 파일의 이름을 복사하고
$ sudo ln -s libboost_python38.so.1.71.0 libboost_python3.so
을 해준다.
다시 caffe를 설치 했던 경로로 이동해서 Makefile (Makefile.config 아님)파일 수정
$ cd ~/.../caffe # 각자 환경에 맞는 경로로~!
$ sudo vi Makefile
Makefile 을 열고 vim 명령어인 :?boost_python을 쓰면
PYTHON_LIBRARIES ?= boost_python python2.7 을 찾을 수 있는데, 여길
PYTHON_LIBRARIES ?= boost_python3 python3.8
로 바꿔주면 끝!
$ sudo make pycaffe
$ echo $?
를 실행했을때 0이 나오면 성공!
지금 실행 중인 위치(caffe 설치 위치)를 사용해서 경로를 설정해준다!
만약 내가 caffe를 /usr/local/CV/caffe라는 경로에 설치했다고 가정하면,
$ export PYTHONPATH=/usr/local/CV/caffe/python:$PYTHONPATH
이렇게 경로를 설정해준다.
$ python
Python 3.8.10 (default, Nov 14 2022, 12:59:47)
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import caffe
이렇게 import caffe를 입력했을때 아무런 메세지도 뜨지 않는다면 성공!