๋ชจ๋ธ์ Android์ ๊ฐ์ ํด๋ ์ ํ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํฅํ ํด๋ํฐ์์ Detectron ๋ชจ๋ธ์ ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ณํ ๋๊ตฌ ๋ฐ ์ง์นจ์ ์ ๊ณตํ ๊ณํ์ ๋๋ค.
CPU ์ ์ฉ ์ถ๋ก ์ ์ํด ๋น๋๋ฅผ ์๋ํ๋ฉด caffe2๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์ค์น๋์์ต๋๋ค. GPU ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ฝ์ผ๋ก ์ธํด test_spatial_narrow_as_op.py ์คํ์ด ์คํจํฉ๋๋ค.
$ ํ์ด์ฌ ../tests/test_spatial_narrow_as_op.py
๊ฒฝ๊ณ :๋ฃจํธ : ์ด caffe2 python ์คํ์๋ GPU๊ฐ ์ง์๋์ง ์์ต๋๋ค. CPU ์ ์ฉ ๋ชจ๋์์ ์คํ๋ฉ๋๋ค.
๊ฒฝ๊ณ :๋ฃจํธ :๋๋ฒ๊ทธ ๋ฉ์์ง: caffe2_pybind11_state_gpu๋ผ๋ ๋ชจ๋์ด ์์ต๋๋ค.
์ญ์ถ์ (๊ฐ์ฅ ์ต๊ทผ ํธ์ถ ๋ง์ง๋ง):
ํ์ผ "../tests/test_spatial_narrow_as_op.py", 88ํ,
utils.c2.import_detectron_ops()
import_detectron_ops์ ํ์ผ "/home/user/Detectron/lib/utils/c2.py", 41ํ
detectron_ops_lib = envu.get_detectron_ops_lib()
ํ์ผ "/home/user/Detectron/lib/utils/env.py", 73ํ, get_detectron_ops_lib
'๋ฒ์ ์ Detectron ๋ชจ๋์ด ํฌํจ๋์ด ์์ต๋๋ค.').format(detectron_ops_lib)
AssertionError: Detectron ops lib๋ฅผ '/home/user/caffe2/build/lib/libcaffe2_detectron_ops_gpu.so'์์ ์ฐพ์ ์ ์์ต๋๋ค. Caffe2 ๋ฒ์ ์ Detectron ๋ชจ๋์ด ํฌํจ๋์ด ์๋์ง ํ์ธํ์ญ์์ค.
@rbgirshick , GPU ์์ด ์ถ๋ก ํ ์ ์์ต๋๊น? @ss32 ์ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
CPU ์ ์ฉ ์ถ๋ก ์ ์ํด ๋น๋๋ฅผ ์๋ํ๋ฉด caffe2๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์ค์น๋์์ต๋๋ค. GPU ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ฝ์ผ๋ก ์ธํด test_spatial_narrow_as_op.py ์คํ์ด ์คํจํฉ๋๋ค.
$ ํ์ด์ฌ ../tests/test_spatial_narrow_as_op.py
๊ฒฝ๊ณ :๋ฃจํธ : ์ด caffe2 python ์คํ์๋ GPU๊ฐ ์ง์๋์ง ์์ต๋๋ค. CPU ์ ์ฉ ๋ชจ๋์์ ์คํ๋ฉ๋๋ค.
๊ฒฝ๊ณ :๋ฃจํธ :๋๋ฒ๊ทธ ๋ฉ์์ง: caffe2_pybind11_state_gpu๋ผ๋ ๋ชจ๋์ด ์์ต๋๋ค.
์ญ์ถ์ (๊ฐ์ฅ ์ต๊ทผ ํธ์ถ ๋ง์ง๋ง):
ํ์ผ "../tests/test_spatial_narrow_as_op.py", 88ํ,
utils.c2.import_detectron_ops()
import_detectron_ops์ ํ์ผ "/home/user/Detectron/lib/utils/c2.py", 41ํ
detectron_ops_lib = envu.get_detectron_ops_lib()
ํ์ผ "/home/user/Detectron/lib/utils/env.py", 73ํ, get_detectron_ops_lib
'๋ฒ์ ์ Detectron ๋ชจ๋์ด ํฌํจ๋์ด ์์ต๋๋ค.').format(detectron_ops_lib)
AssertionError: Detectron ops lib๋ฅผ '/home/user/caffe2/build/lib/libcaffe2_detectron_ops_gpu.so'์์ ์ฐพ์ ์ ์์ต๋๋ค. Caffe2 ๋ฒ์ ์ Detectron ๋ชจ๋์ด ํฌํจ๋์ด ์๋์ง ํ์ธํ์ญ์์ค.
๋๋ ์ฌ๊ธฐ์ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. Mac์์ ๋ฏธ๋ฆฌ ๋น๋๋ ๋ฐ์ด๋๋ฆฌ ์ฌ์ฉํ๊ธฐ.
๊ฐ์ ๋ฌธ์ ์ ์ง๋ฉดํด ์์ต๋๋ค. macOS์์ ๋ฏธ๋ฆฌ ๋น๋๋ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ๋ฟ๋ง ์๋๋ผ ์์ค์์ caffe2๋ฅผ ๋น๋ํ๋ ค๊ณ ์๋ํ์ต๋๋ค.
๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค(์ค๋ฅ ๋ก๊ทธ ์ฐธ์กฐ).
๋ด ๋ชฉํ๋ CPU๋ง ์๋ MacO์์ ํ ์คํธ๋ฅผ ์คํํ๋ ๊ฒ์ ๋๋ค.
๋จ๊ณ: 1) cond๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ๋ชจ๋ ์ข
์์ฑ์ ์ค์นํฉ๋๋ค.
2) conda๋ก caffe2๋ฅผ ์ค์นํฉ๋๋ค.
3) ์์คํ
pip(python)๋ก ๊ฐ์ง๊ธฐ๋ฅผ ์ค์นํ ๋ค์ lib ๋๋ ํ ๋ฆฌ๋ฅผ PYTHONPATH ๋ณ์์ ๋ฃ์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ์์ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๊ฒฝ๊ณ :๋ฃจํธ : ์ด caffe2 python ์คํ์๋ GPU๊ฐ ์ง์๋์ง ์์ต๋๋ค. CPU ์ ์ฉ ๋ชจ๋์์ ์คํ๋ฉ๋๋ค.
๊ฒฝ๊ณ :๋ฃจํธ :๋๋ฒ๊ทธ ๋ฉ์์ง: caffe2_pybind11_state_gpu๋ผ๋ ๋ชจ๋์ด ์์ต๋๋ค.
E0204 13:06:36.049393 2041434112 init_intrinsics_check.cc:54] CPU ๊ธฐ๋ฅ avx๊ฐ ์ปดํจํฐ์ ์์ง๋ง Caffe2 ๋ฐ์ด๋๋ฆฌ๋ ํจ๊ป ์ปดํ์ผ๋์ง ์์ต๋๋ค. CPU์ ์ต๋ ์๋๋ฅผ ์ป์ง ๋ชปํ ์ ์์์ ์๋ฏธํฉ๋๋ค.
E0204 13:06:36.049954 2041434112 init_intrinsics_check.cc:54] CPU ๊ธฐ๋ฅ avx2๊ฐ ์ปดํจํฐ์ ์์ง๋ง Caffe2 ๋ฐ์ด๋๋ฆฌ๋ ํจ๊ป ์ปดํ์ผ๋์ง ์์ต๋๋ค. CPU์ ์ต๋ ์๋๋ฅผ ์ป์ง ๋ชปํ ์ ์์์ ์๋ฏธํฉ๋๋ค.
E0204 13:06:36.049964 2041434112 init_intrinsics_check.cc:54] CPU ๊ธฐ๋ฅ fma๊ฐ ์ปดํจํฐ์ ์์ง๋ง Caffe2 ๋ฐ์ด๋๋ฆฌ๋ ํจ๊ป ์ปดํ์ผ๋์ง ์์ต๋๋ค. CPU์ ์ต๋ ์๋๋ฅผ ์ป์ง ๋ชปํ ์ ์์์ ์๋ฏธํฉ๋๋ค.
์ญ์ถ์ (๊ฐ์ฅ ์ต๊ทผ ํธ์ถ ๋ง์ง๋ง):
ํ์ผ "/tmp/test_spatial_narrow_as_op.py", 88ํ,
utils.c2.import_detectron_ops()
import_detectron_ops์ ํ์ผ "/Users/wangy/python/detectron/lib/utils/c2.py", 41ํ
detectron_ops_lib = envu.get_detectron_ops_lib()
get_detectron_ops_lib์์ ํ์ผ "/Users/wangy/python/detectron/lib/utils/env.py", 73ํ
'๋ฒ์ ์ Detectron ๋ชจ๋์ด ํฌํจ๋์ด ์์ต๋๋ค.').format(detectron_ops_lib)
AssertionError: Detectron ops lib๊ฐ '/Users/wangy/miniconda2/lib/python2.7/site-packages/lib/libcaffe2_detectron_ops_gpu.so'์ ์์ต๋๋ค.
@CancerGenome GPU ์ ์ฉ ๋ฌธ์ ์ ๊ด๋ จ์ด ์์ ์ ์์ต๋๋ค. ( INSTALL.md
์ง์นจ์์ ๋งํ๋ฏ์ด) ๋ชจ๋๋ก detectron๊ณผ ํจ๊ป Caffe2 ๋ฒ์ ์ ์ค์นํด์ผ ํฉ๋๋ค. ์ฌ๊ธฐ ์์ ์ฐพ์ ์
@ss32 ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ๋ด ์ปดํจํฐ์ caffe1๊ณผ caffe2๊ฐ ์ค์น๋์ด ์๊ธฐ ๋๋ฌธ์ PYTHONPATH ๋ณ์์ธ caffe1 ์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ฃผ์ ์ฒ๋ฆฌํฉ๋๋ค. caffe2์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ถ๊ฐํฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก, ์ฑ๊ณตํฉ๋๋ค.
gedit ~/.bashrc
์ฝ๋ฉํธ:
์ด๊ฑฐ ์ถ๊ฐ ํด๋ด:
๋ด๋ณด๋ด๊ธฐ PYTHONPATH=/๊ฒฝ๋ก/to/caffe2/build:$PYTHONPATH
๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค! ๋คํํ~
์๋ ํ์ธ์ @rbgirshick ์ฝ 3์ฃผ ์ , ์ ๋ ์ผ์์ผ ์คํ์ Ubuntu 16.04์์ 4Gb CUDA ์ง์ GPU๊ฐ ์๋ dev box์ ์์ค์์ caffe2๋ฅผ ์ค์นํ๋ ๋ฐ ๋ณด๋์ต๋๋ค. ๋ง์คํน์ ํ์ง. ๊ทธ๋ฌ๋ GPU ์ ์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฐ์ธ๋ฉ๋์ด ์์์ ๋ฐ๊ฒฌํ์ต๋๋ค.
lib/python2.7/site-packages/lib/libcaffe2_detectron_ops_gpu.so
๋ฐ๋ผ์ ํ์ฌ AWS ํด๋ผ์ฐ๋ ์ปดํจํ ์ ์ฌ์ฉํ์ฌ ๋ง์คํน์ ์ํํ๊ฑฐ๋ ์ต์ CUDA ์ง์ ํ๋์จ์ด๋ฅผ ๊ตฌ๋งคํ ์ ์๋ ์ ํ์ด ๋จ์ ์์ต๋๋ค.
CPU ์ ์ฉ ๊ตฌํ์ด ์ธ์ ์๋ฃ๋๋์ง์ ๋ํด ์ด์ผ๊ธฐํ ํ์๋ผ์ธ์ด ์์ต๋๊น?
๋ด RaspberryPi์ caffe2 ๋ฐ Detectron์ ์ค์นํ์ต๋๋ค. ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๊ฒฝ๊ณ :๋ฃจํธ : ์ด caffe2 python ์คํ์๋ GPU๊ฐ ์ง์๋์ง ์์ต๋๋ค. CPU ์ ์ฉ ๋ชจ๋์์ ์คํ๋ฉ๋๋ค.
๊ฒฝ๊ณ :๋ฃจํธ :๋๋ฒ๊ทธ ๋ฉ์์ง: caffe2_pybind11_state_gpu๋ผ๋ ๋ชจ๋์ด ์์ต๋๋ค.
INFO:caffe2.python.net_drawer :๋คํธ์ํฌ๋ฅผ ๊ทธ๋ฆฌ๋ ๋ฐ ํ์ํ pydot์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ์ด๊ฒ์ ์ผ๋ฐ์ ์ผ๋ก "pip install pydot"๋ฅผ ์ฌ์ฉํ์ฌ ํ์ด์ฌ์ ์ค์นํ ์ ์์ต๋๋ค. ๋ํ pydot์ ๋ํธ ํ์ผ์ pdf๋ก ๋ณํํ๊ธฐ ์ํด graphviz๊ฐ ํ์ํฉ๋๋ค. ์ฐ๋ถํฌ์์๋ ์ผ๋ฐ์ ์ผ๋ก "sudo apt-get install graphviz"๋ก ์ค์นํ ์ ์์ต๋๋ค.
net_drawer๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์คํ๋์ง ์์ต๋๋ค. ์ฌ๋ฐ๋ฅธ ์ข
์์ฑ์ ์ค์นํ์ญ์์ค.
์ญ์ถ์ (๊ฐ์ฅ ์ต๊ทผ ํธ์ถ ๋ง์ง๋ง):
ํ์ผ "test_spatial_narrow_as_op.py", 88ํ,
utils.c2.import_detectron_ops()
import_detectron_ops์ ํ์ผ "/home/pi/detectron/lib/utils/c2.py", 41ํ
detectron_ops_lib = envu.get_detectron_ops_lib()
get_detectron_ops_lib์ ํ์ผ "/home/pi/detectron/lib/utils/env.py", 73ํ
'๋ฒ์ ์ Detectron ๋ชจ๋์ด ํฌํจ๋์ด ์์ต๋๋ค.').format(detectron_ops_lib)
AssertionError: Detectron ops lib๋ฅผ '/home/pi/caffe2/build/lib/libcaffe2_detectron_ops_gpu.so'์์ ์ฐพ์ ์ ์์ต๋๋ค. Caffe2 ๋ฒ์ ์ Detectron ๋ชจ๋์ด ํฌํจ๋์ด ์๋์ง ํ์ธํ์ญ์์ค.
๊ฐ์ ์ง๋ฌธ์
๋๋ค. CPU ์ ์ฉ ์ถ๋ก ์ด ๊ฐ๋ฅํฉ๋๊น? Detectron์ ํ
์คํธํ๊ณ ์ถ์ง๋ง ํ ์ ์์ต๋๋ค. ๋ด ํธ์คํธ OS๋ Windows(Detectron์ ๋ด๊ฐ ์ดํดํ๋ ํ ์ง์ํ์ง ์์)์ด๊ณ VM์์๋ GPU๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ทธ๊ฒ์ ๋งํ๋ค:
AssertionError: Detectron ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. Caffe2 ๋ฒ์ ์ Detectron ๋ชจ๋์ด ํฌํจ๋์ด ์๋์ง ํ์ธํ์ญ์์ค.
@all caffe2/modules/detectron/CMakeLists.txt
์ ๋ฉ๋ชจ๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
# Note(ilijar): Since Detectron ops currently have no
# CPU implementation, we only build GPU ops for now.
caffe2์ ๊ฐ์ง๊ธฐ ๋ชจ๋์ GPU ๋ชจ๋ ์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค!
๋ฐฉ๊ธ INSTALL.md๋ฅผ ๋ค์ ์ดํด๋ณด์๊ณ ์๊ตฌ ์ฌํญ์ ๋ฉ๋ชจ ์น์ ์ "Detectron์๋ ํ์ฌ CPU ๊ตฌํ์ด ์์ต๋๋ค"๋ผ๊ณ ๋ช ์๋์ด ์์ต๋๋ค.
#372, #449๋ ๋ฌธ์ ์ CPU ๋ถ๋ถ์ ํด๊ฒฐํ๊ธฐ ์ํด ๋๋๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ฐ๋ผ์ ์ด๊ฒ์ด ํฌํจ๋๊ธฐ๋ฅผ ์ํ์ ๋ค๋ฉด ์ ์ง ๊ด๋ฆฌ์๊ฐ ์ด ๋ ๊ฐ์ง PR์ ๊ฒํ ํ๊ณ ์ฐฌ์ฑ ํฌํ๋ฅผ ํ๋ ๊ฒ์ด ํ๋ก์ธ์ค๋ฅผ ์ฝ๊ฒ ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
CPU ์ง์์ ๊ด์ฌ์ด ์์ผ์๋ฉด #372 ๋ฐ #449์ ๋ ๊ฐ์ง ๋ฌธ์ ์ ๋ํด ์ฐฌ์ฑ ํฌํ๋ฅผ ํ๊ณ ๊ฒํ ํ์ฌ CPU ์ง์ ์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
์ถ์ : ์ด๊ฒ์ ์์ํ Caffe2/PyTorch ์ถ๋ก ์๋ ๋์์ด ๋ ์ ์์ง๋ง ๋ ๋จผ ๋ฏธ๋์๋
@rbgirshick @gadcam ํ์ฌ ๋ก์๋ Android์์ Detectron ์ ์คํํ ์ ์๋์?
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
ํฅํ ํด๋ํฐ์์ Detectron ๋ชจ๋ธ์ ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ณํ ๋๊ตฌ ๋ฐ ์ง์นจ์ ์ ๊ณตํ ๊ณํ์ ๋๋ค.