๐Ÿ’œ๊ฐœ๋ฐœ๊ณผ ์ผ์ƒ (โ‰ง∇โ‰ฆ)๏พ‰

[ubuntu] Caffe ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ ๋ฐฉ๋ฒ• ๋ณธ๋ฌธ

CS/machine learning

[ubuntu] Caffe ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ ๋ฐฉ๋ฒ•

๊ฐ•์˜์„œ 2023. 7. 10. 00:00

ํ„ฐ๋ฏธ๋„์ฐฝ์„ ๋จผ์ € ํ‚จ๋‹ค. 

1. dependencies package ๋‹ค์šด ๋ฐ›๊ธฐ

sudo apt-get 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 apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install the python3-pip python3-dev

2. caffe ์ฝ”๋“œ cloneํ•˜๊ธฐ

git clone https://github.com/BVLC/caffe

2. Makefile.config ์„ค์ •ํ•˜๊ธฐ

cd caffe
cp Makefile.confg.example Makefile.config
sudo vi Makefile.config

ํ•ด๋‹น ํŒŒ์ผ์— ์•„๋ž˜์˜ ๊ฐ’์„ ๋ถ™์—ฌ๋„ฃ๊ธฐํ•œ๋‹ค.

^[[200~CPU_ONLY := 1`
OPENCV_VERSION := 3
CUSTOM_CXX := g++
CUDA_DIR := /usr/local/cuda
CUDA_ARCH :=\
-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
PYTHON_INCLUDE := /usr/include/python2.7 \
/usr/lib/python2.7/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 ?= @

๋ณธ ๊ธ€์€, cuda 11.0 ๋ฒ„์ „์˜ ํ™˜๊ฒฝ์„ค์ •์ด๋‹ค. ์ฐธ๊ณ ํ•˜๋„๋ก.

a ์ž…๋ ฅ ํ›„, ctrl + v ํ•˜๋ฉด ๋ณต๋ถ™๋œ๋‹ค. ์ฐธ๊ณ ๋กœ ๋ณต์‚ฌํ•  ๋•Œ ๋ชจ๋“  ๋“ค์—ฌ์“ฐ๊ธฐ(space, enter)๋ฅผ ์ง€์šฐ๊ธฐ๋ฅผ. ๊ทธ๋Ÿฌ์ง€ ์•Š์œผ๋ฉด ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค.

์ฐธ๊ณ  ๋ธ”๋กœ๊ทธ : https://knight76.tistory.com/entry/makefile4-missing-separator-Stop-%ED%95%B4%EA%B2%B0%ED%95%98%EA%B8%B0

 

:makefile:4: *** missing separator. Stop. ํ•ด๊ฒฐํ•˜๊ธฐ

์˜ค๋žœ๋งŒ์— make๋ฅผ ์“ฐ๋‹ค๋ณด๋‹ˆ ์‹ค์ˆ˜ํ•œ ๊ฒŒ ์žˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ์—๋Ÿฌ๋ฅผ ๋งŒ๋‚˜๋ฉด ํƒญ(tab) ๋Œ€์‹  ์ŠคํŽ˜์ด์Šค(space)๊ฐ€ ์ฝ”๋“œ์— ์•ˆ์— ์žˆ๋‹ค๊ณ  ์•Œ๋ฆฐ๋‹ค. ์ŠคํŽ˜์ด์Šค๋ฅผ ์—†์• ๊ณ  ํƒญ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋” ์ด์ƒ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”

knight76.tistory.com

3. make pycaffe

sudo make all
sudo make test
sudo make runtest

๋งˆ์ง€๋ง‰์— ์ด๋Ÿฐ ํ™”๋ฉด์ด ๋‚˜์˜ค๋ฉด ์„ฑ๊ณต

make pycaffe

๋งŒ๋“ค์–ด์กŒ๋Š”์ง€ ์—ฌ๋ถ€ ํ™•์ธ

echo $?

0์ด ์ถœ๋ ฅ๋˜๋ฉด ์„ค์น˜ ์™„๋ฃŒ

4. path ์„ค์ •

export PYTHONPATH=/home/(์‚ฌ์šฉ์ž์ด๋ฆ„)/caffe/python:$PYTHONPATH

๋ณธ์ธ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์„ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค.

 

 

... ๊ทผ๋ฐ python์—์„œ importํ•  ๋•Œ 

Python 3.7.6 (default, Jan  8 2020, 19:59:22) 
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import caffe
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/2019112024/Desktop/caffe3/caffe/python/caffe/__init__.py", line 1, in <module>
    from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver, NCCL, Timer
  File "/home/2019112024/Desktop/caffe3/caffe/python/caffe/pycaffe.py", line 13, in <module>
    from ._caffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, \
ImportError: dynamic module does not define module export function (PyInit__caffe)

์ด๋Ÿฐ ์—๋Ÿฌ๊ฐ€ ๋‚จ.