Nvidia GTX 1050Ti์์ Faster-RCNN์ ์คํํ๋ ค๊ณ ํ๋๋ฐ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํฉ๋๋ค. Nvidia-smi๋ ์ฝ 170MB๊ฐ ์ด๋ฏธ ์ฌ์ฉ ์ค์ด๋ผ๊ณ ๋งํ์ง๋ง Faster-RCNN์ ์ค์ ๋ก 3.8GB์ VRAM์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง๋ฅผ ์ฒ๋ฆฌํฉ๋๊น?
Mask-RCNN๋ ์๋ํ๊ณ (์์ํ๊ธฐ ํํ ๋ฆฌ์ผ์ ๋ชจ๋ธ) ์ถฉ๋ํ๊ธฐ ์ ์ ์ฝ 4๊ฐ์ ์ด๋ฏธ์ง(๋ด ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ซ์ ๊ฒฝ์ฐ 5๊ฐ)๋ฅผ ์ป์์ต๋๋ค.
์ด๊ฒ์ ๋ฒ๊ทธ์ ๋๊น ์๋๋ฉด ์ค์ ๋ก 4GB ์ด์์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํ๊ฐ์?
INFO infer_simple.py: 111: Processing demo/18124840932_e42b3e377c_k.jpg -> /home/px046/prog/Detectron/output/18124840932_e42b3e377c_k.jpg.pdf
terminate called after throwing an instance of 'caffe2::EnforceNotMet'
what(): [enforce fail at blob.h:94] IsType<T>(). wrong type for the Blob instance. Blob contains nullptr (uninitialized) while caller expects caffe2::Tensor<caffe2::CUDAContext> .
Offending Blob name: gpu_0/conv_rpn_w.
Error from operator:
input: "gpu_0/res4_5_sum" input: "gpu_0/conv_rpn_w" input: "gpu_0/conv_rpn_b" output: "gpu_0/conv_rpn" name: "" type: "Conv" arg { name: "kernel" i: 3 } arg { name: "exhaustive_search" i: 0 } arg { name: "pad" i: 1 } arg { name: "order" s: "NCHW" } arg { name: "stride" i: 1 } device_option { device_type: 1 cuda_gpu_id: 0 } engine: "CUDNN"
*** Aborted at 1516787658 (unix time) try "date -d @1516787658" if you are using GNU date ***
PC: @ 0x7f08de455428 gsignal
*** SIGABRT (@0x3e800000932) received by PID 2354 (TID 0x7f087cda9700) from PID 2354; stack trace: ***
@ 0x7f08de4554b0 (unknown)
@ 0x7f08de455428 gsignal
@ 0x7f08de45702a abort
@ 0x7f08d187db39 __gnu_cxx::__verbose_terminate_handler()
@ 0x7f08d187c1fb __cxxabiv1::__terminate()
@ 0x7f08d187c234 std::terminate()
@ 0x7f08d1897c8a execute_native_thread_routine_compat
@ 0x7f08def016ba start_thread
@ 0x7f08de52741d clone
@ 0x0 (unknown)
Aborted (core dumped)
@Omegastick๋ , Faster R-CNN ์๊ณ ๋ฆฌ์ฆ์ ๋ฉ๋ชจ๋ฆฌ ์๊ตฌ ์ฌํญ์ ๋ฐฑ๋ณธ ๋คํธ์ํฌ ์ํคํ ์ฒ ๋ฐ ์ฌ์ฉ๋ ํ ์คํธ ์ด๋ฏธ์ง ์ค์ผ์ผ์ ํฌํจํ ์ฌ๋ฌ ์์ธ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
์๋ฅผ ๋ค์ด ๋ค์์ ์ฌ์ฉํ์ฌ ๊ธฐ๋ณธ ResNet-50 ๊ตฌ์ฑ์ผ๋ก Faster R-CNN์ ์คํํ ์ ์์ต๋๋ค.
python2 tools/infer_simple.py \
--cfg configs/12_2017_baselines/e2e_faster_rcnn_R-50-FPN_2x.yaml \
--output-dir /tmp/detectron-visualizations \
--image-ext jpg \
--wts https://s3-us-west-2.amazonaws.com/detectron/35857389/12_2017_baselines/e2e_faster_rcnn_R-50-FPN_2x.yaml.01_37_22.KSeq0b5q/output/train/coco_2014_train%3Acoco_2014_valminusminival/generalized_rcnn/model_final.pkl \
demo
๋ฐ๋ชจ ์ด๋ฏธ์ง์์ ์คํํ๋ ๋ฐ 3GB ์ด์์ด ํ์ํ์ง ์์ต๋๋ค.
ํ ๊ฐ์ง ์ถ๊ฐ ์ฌํญ: ํ์ฌ ๊ตฌํ์ ํ์ต ์ค์ ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ๋ฅผ ์ฌ์ฉํ์ง๋ง ์ถ๋ก ์ค์๋ ์ฌ์ฉํ์ง ์์ต๋๋ค. ์ถ๋ก ์ ๊ฒฝ์ฐ ์ค๊ฐ ํ์ฑํ๊ฐ ํ์ํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ํฌ๊ฒ ์ค์ผ ์ ์์ต๋๋ค. ํฅํ ์ถ๋ก ์ ์ฉ ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ๊ณ ๋ คํ ๊ฒ์ ๋๋ค.
@Omegastick ๋ด ์ปดํจํฐ์์ ํ ์คํธํ Faster RCNN-resnet 101 ๋ฐ Mask RCNN-resnet 101 ๋ชจ๋ ์ฝ 4GB GPU ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
@ir413 ๊ฐ์ฌํฉ๋๋ค. ์ฐ๊ฒฐํ ๋ชจ๋ธ์ด ๋ด ์ปดํจํฐ์์ ํ๋ฅญํ๊ฒ ์๋ํฉ๋๋ค(2.5GB VRAM ์ฌ์ฉ๋์ผ๋ก ์คํ).
์ถ๋ก ์ GPU๊ฐ ์ ํ ํ์ํ์ง ์๋ค๋ฉด ๋ฉ์ง ๊ฒ์ ๋๋ค.
์ด๋ป๊ฒ 2G ๋ฉ๋ชจ๋ฆฌ GPU๋ก mask-rcnn์ ์คํํ ์ ์์ต๋๊น? ์๋ฌด๋ ๋๋ฅผ ๋์ธ ์ ์์ต๋๊น?
์ด ๋ฌธ์ ๋ Caffe 2 ๋๋ Detectron์ ๊ตฌํ์ผ๋ก ์ธํ ๊ฒ์ ๋๊น? ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด Detectron์์ ์ด๋ค ํ์ผ์ ํ์ธํด์ผ ํ๋์?
@rbgirshick
์ถ๋ก ์ ๊ฒฝ์ฐ ์ค๊ฐ ํ์ฑํ๊ฐ ํ์ํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ํฌ๊ฒ ์ค์ผ ์ ์์ต๋๋ค. ํฅํ ์ถ๋ก ์ ์ฉ ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ๊ณ ๋ คํ ๊ฒ์ ๋๋ค.
PyTorch/Caffe2์ ์ด๋ฏธ ๊ตฌํ๋ ๊ฒ์ด ์์ต๋๊น? ๊ทธ๋ ๋ค๋ฉด ์ด๋๋ฅผ ํ์ผํฉ๋๊น?
@gadcam์ด ์ค๋ซ๋์ ๋ด ํ ์ผ ๋ชฉ๋ก์์๋ค,ํ์ง๋ง ๋ถํํ๋ ์ฐ์ ์์๋ ๊ฐ์ํ๋ ๋์ ์ฆ๊ฐํ๊ณ ์๋ค : /. ๋ด ์๊ฐ caffe2.python.memonger.release_blobs_when_used
(https://github.com/pytorch/pytorch/blob/master/caffe2/python/memonger.py#L229) ์ฐ๋ฆฌ๊ฐ ํ์ํ ๋๋ถ๋ถ์ ๊ตฌํํด์ผํฉ๋๋ค. ๊ทธ๋ฌ๋ ํด๊ฒฐํด์ผ ํ ๋ช ๊ฐ์ง ์ค์ํ์ง ์์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
@rbgirshick ์์ธํ ์ค๋ช ๊ฐ์ฌํฉ๋๋ค!
๊ทธ๋์ ๋ด๊ฐ ์ดํดํ๋ ๊ฒ์ฒ๋ผ ์ฐ๋ฆฌ์๊ฒ release_blobs_when_used
๋ ์ผ๋ฐ Proto์์ "๋ฉ๋ชจ๋ฆฌ ์ต์ ํ"๋ก ๋ณํํ๋ ์ญํ ์ ํฉ๋๋ค.
์ผ๋ถ ๋คํธ์ํฌ(์: Mask R-CNN)์ ๊ฒฝ์ฐ ์ถ๋ก ์๊ฐ์ ๋ค์ค ๋คํธ๊ฐ ์ฌ์ฉ๋๋ฏ๋ก ํ๋์ ๊ทธ๋ํ์ ๋ํด์๋ง ์ถ๋ก ํ์ฌ ๋ชจ๋ ํ์ฑํ๋ฅผ ํด์ ํ ์ ์๋ ๊ฒ์ ์๋๋๋ค(์ด๋ ๋ง์คํฌ ํค๋ ๋คํธ์ ๊ฐ์ ๋ค๋ฅธ ๊ทธ๋ํ์ ํ์ํ ์ ์๊ธฐ ๋๋ฌธ์).
๋ค์ ๋งํด์ dont_free_blobs
๋ฅผ ๋ ๋ฒ์งธ ๋จ๊ณ์์ ์ฌ์ฉํ๋ ์ผ๋ฃฉ์ผ๋ก ์ฑ์์ผ ํ๋ค๋ ๋ง์
๋๊น?
์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ค๋ฉด ํ ์คํธํ์ง ์์ ์บ์ฑ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ฏ๋ก ๋จ์ํ ์ผ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ํ
์คํธํ๋ ค๋ฉด FLAGS_caffe2_cuda_memory_pool
๋ฅผ cub
(๋๋ thc
)๋ก ์ค์ ํด์ผ ํ์ง๋ง Python์์ ์ด ์์
์ ์ํํ ์ ์์ต๋๊น?
๋ด๊ฐ ์ฐพ์ ์์๋ ๋งค์ฐ ๋ถ์กฑํ ์ฐธ์กฐ ์ค ํ๋๋ https://github.com/pytorch/pytorch/blob/6223bfdb1d3273a57b58b2a04c25c6114eaf3911/caffe2/core/context_gpu.cu#L190์
๋๋ค.
@gadcam
๊ทธ๋์ ๋ด๊ฐ ์ดํดํ๋ ํ ์ฐ๋ฆฌ์๊ฒ release_blobs_when_used๋ ์ผ๋ฐ Proto์์ "๋ฉ๋ชจ๋ฆฌ ์ต์ ํ๋" ๊ฒ์ผ๋ก ๋ณํํ๋ ์ญํ ์ ํฉ๋๋ค.
๋ค, ๋ง์ต๋๋ค. ๊ณ์ฐ ๊ทธ๋ํ๋ฅผ ๋ถ์ํ๊ณ ๊ฐ ๋ธ๋กญ์ด ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ ์๊ธฐ๋ฅผ ๊ฒฐ์ ํ ๋ค์ ๋ฉ๋ชจ๋ฆฌ ํด์ ์ฐ์ฐ์ ์ฝ์ ํฉ๋๋ค.
๋ค์ ๋งํด dont_free_blobs๋ฅผ ๋ ๋ฒ์งธ ๋จ๊ณ์์ ์ฌ์ฉํ๋ ์ผ๋ฃฉ์ผ๋ก ์ฑ์์ผ ํ๋ค๋ ๋ง์ ๋๊น?
์, ์ด ๊ธฐ๋ฅ์ด ์ผ๋ง๋ ์ ์ฌ์ฉ ๋ฐ/๋๋ ํ ์คํธ๋์๋์ง ํ์คํ์ง ์๋ค๋ ๊ฒฝ๊ณ ์ ํจ๊ป... grepping ์ฝ๋์์ ์ค์ ๋ก ์ฌ์ฉ๋์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ฐ๋ผ์ ์์๋๋ก ์๋ํ์ง ์์ ์ ์์์ ์ผ๋์ ๋๊ฒ ์ต๋๋ค.
๋ฐ๋ผ์ ํ ์คํธํ๋ ค๋ฉด FLAGS_caffe2_cuda_memory_pool์ cub(๋๋ thc)๋ก ์ค์ ํด์ผ ํ์ง๋ง Python์์ ์ด๋ฅผ ์ํํ ์ ์์ต๋๊น?
์. ์๋ก ์ถ๊ฐ๋ thc
๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์๊ฐ ๋ ํจ์จ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ต๊ทผ์(๋ค๋ฅด์ง๋ง) ์ฌ์ฉ ์ฌ๋ก์ ๋ํด cub
๋์ ์ด๋ฅผ ์ฌ์ฉํด์ผ ํ์ต๋๋ค.
@rbgirshick ๋น์ ๋ง์ด ๋ง์์, ์ํํ ๊ธธ์ด ๋ณด์ ๋๋ค!
์. ์๋ก ์ถ๊ฐ๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์๊ฐ ๋ ํจ์จ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ต๊ทผ์(๋ค๋ฅด์ง๋ง) ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ํด cub ๋์ ์ ๊ทธ๊ฒ์ ์ฌ์ฉํด์ผ ํ์ต๋๋ค.
๋ด๊ฐ ์๋ฏธํ๋ ๋ฐ๋ ๋ฌธ์๋ฅผ ์ด๋์ ์ฐพ์ ์ ์๋์ง ์๊ณ ์์ต๋๊น ์๋๋ฉด ์์ ๊ฐ ์์ต๋๊น? (์ด ๋ถ๋ถ์ ๊ณ ์งํ๊ฒ ๋์ด ์ ๋ง ์ฃ์กํฉ๋๋ค. ์ ๊ฐ ๋์น ๋ถ๋ถ์ด ์์ ์ ์์ง๋ง ๊ด๋ จ ๋ฌธ์๋ฅผ ์ฐพ์ ์ ์์์ต๋๋ค.)
๋ฌธ์์ ๊ดํ @gadcam , ๋ด๊ฐ ์๊ณ ์๋ ๊ฒ์ ์๋๋๋ค. ์ฃ์กํฉ๋๋ค!
@asaadaldien ๊ท์ฐฎ๊ฒ ํด์ ์ ๋ง ์ฃ์กํฉ๋๋ค๋ง ๋น์ ์ ๋ค์๊ณผ ๊ฐ์ด ์กฐ์ธํ ๋ช ์ ๋๋ ์ฌ๋ ์ค ํ ๋ช ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
caffe2_cuda_memory_pool์ด ์ค์ ๋์๋์ง ํ์ธํ์ญ์์ค.
memonger ๋๋ data_parallel_model์ ์ฌ์ฉํ ๋ (์ฐธ๊ณ ๋ก ์ฌ๊ธฐ์ ์์ต๋๋ค ).
์บ์ฑ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์๋ฅผ ํ์ฑํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ํํธ๊ฐ ์์ต๋๊น? (ํ์ด์ฌ์์ Caffe2 ์ฌ์ฉํ๊ธฐ)
@gadcam cub๋ฅผ caffe2_cuda_memory_pool ํ๋๊ทธ์ ์ ๋ฌํ์ฌ cub ์บ์ ํ ๋น์๋ฅผ ํ์ฑํํ ์ ์์ต๋๋ค. ์:
workspace.GlobalInit([
'--caffe2_cuda_memory_pool=cub',
])
๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋์ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ์ต๊ธฐ๋ฅผ ์ฌ์ฉํ ๋๋ง ํ์ํฉ๋๋ค.
@asaadaldien
GlobalInit
๋ํ ๋ฌธ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ํํ๋ ๋ฐฉ๋ฒ์ ํ์
ํ๋ ๋ฐ ๋ง์ ์๊ฐ์ด ๊ฑธ๋ ธ์ ๊ฒ์
๋๋ค.
๋น์ ์ ๋์์ ์ฃผ์
์ ๋๋จํ ๊ฐ์ฌํฉ๋๋ค! ์ด์ ๋ช ๊ฐ์ง ์คํ์ ์์ํ ์ ์์ต๋๋ค!
์ด ๋ฌธ์ ์ ๋ํ ๊ฐ๋จํ ํด๊ฒฐ์ฑ
์ด ์์ต๋๋ค.
์ค๊ฐ blob ๋ฟ๋ง ์๋๋ผ 'P2~P5' ๋ฐ 'rois'๋ฅผ ์ถ๋ ฅ blob์ผ๋ก ์ค์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ๋ฅผ ์ฌ์ฉํ ๋ ์ต์ ํ๋์ง ์์ต๋๋ค.
๋๋ฅผ ์ํด ์๋ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ด๊ฐ ํ
์คํธํ ๋ชจ๋ธ์ e2e_keypoint_rcnn_R-50-FPN_s1x.yaml
์
๋๋ค.
model.net
๋ถ๋ถ์ ๋ํด ํ
์คํธ๋ฅผ ์๋ํ์ต๋๋ค.
ํ
์คํธ์ infer_simple.py
๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
workspace.GlobalInit(['caffe2', '--caffe2_log_level=0', '--caffe2_cuda_memory_pool=thc'])
๊ทธ๋ฆฌ๊ณ
dont_free_blobs = set(model.net.Proto().external_output)
expect_frees = set(i for op in model.net.Proto().op for i in op.input)
expect_frees -= dont_free_blobs
opti_net = release_blobs_when_used(model.net.Proto(), dont_free_blobs, selector_fun=None)
model.net.Proto().op.extend(copy.deepcopy(opti_net.op))
test_release_blobs_when_used(model.net.Proto(), expect_frees)
์ฌ๊ธฐ์ test_release_blobs_when_used
๋ https://github.com/pytorch/pytorch/blob/bf58bb5e59fa64fb49d77467f3466c6bc0cc76c5/caffe2/python/memonger_test.py#L731์์ ์๊ฐ์ ๋ฐ์์ต๋๋ค.
def test_release_blobs_when_used(with_frees, expect_frees):
found_frees = set()
for op in with_frees.op:
if op.type == "Free":
print("OP FREEE", op)
assert(not op.input[0] in found_frees) # no double frees
found_frees.add(op.input[0])
else:
# Check a freed blob is not used anymore
for inp in op.input:
assert(not inp in found_frees)
for outp in op.output:
assert(not outp in found_frees)
try:
assert(expect_frees == found_frees)
except:
print("Found - Expect frees Nb=", len(found_frees - expect_frees), found_frees - expect_frees, "\n\n\n")
print("Expect - Found frees Nb=", len(expect_frees - found_frees), expect_frees - found_frees, "\n\n\n")
#assert(False)
dont_free_blobs
์ด ์ฌ๋ฐ๋ฅธ ๊ฐ์ผ๋ก ์ค์ ๋์ง ์์์์ ์ ์ํ์ญ์์ค!
์ด ํจ์๋ ์๊ธฐ์น ์์ ์ผ๋ฃฉ์ด ํด์ ๋์ง ์๊ณ ์ผ๋ถ๊ฐ ๋๋ฝ๋์์์ ์๋ ค์ค๋๋ค.
( dont_free_blobs
๊ฐ ์ฌ๋ฐ๋ฅด์ง ์๊ธฐ ๋๋ฌธ์ ์ ์์
๋๋ค)
๊ทธ๋์ ์ ๋ ๊ณ์ํด์ ๋ชจ๋ธ์ ์ด์ํ๊ณ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ... ์๋ฌด ์ผ๋ ์ผ์ด๋์ง ์์ต๋๋ค. save_graph
ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํ์ธํ์ต๋๋ค. ๋ฌด๋ฃ ์์
์ด ์ค์ ๋ก ์ฌ๋ฐ๋ฅธ ์์น์ ์์ต๋๋ค.
์ด ๋ผ์ธ์ ์ํ ์
๋ ฅ์ ๋ํ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ 1910 Mo +/- 5 Mo์
๋๋ค.
https://github.com/facebookresearch/Detectron/blob/6c5835862888e784e861824e0ad6ac93dd01d8f5/detectron/core/test.py#L158
ํ์ง๋ง ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์๋ฅผ CUB๋ก ์ค์ ํ๋ฉด ์ ๋ง ๋๋ผ์ด ์ผ์ด ๋ฐ์ํฉ๋๋ค.
workspace.GlobalInit(['caffe2', '--caffe2_log_level=0', '--caffe2_cuda_memory_pool=cub'])
RunNet
๋ผ์ธ์ RAM ์ฌ์ฉ๋์ 3 Go!! (์ผ๋ฐ ์ฝ๋ ๋๋ ๋ฌด๋ฃ blob์ด ์๋ ์ฌ์ฉ์ ์ง์ ์ฝ๋ ์ฌ์ฉ)
๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์ดํดํ์ง ๋ชปํฉ๋๋ค ...
#507์ ์ค๋ช
๋ ๋๋ก Jetson TX1์์ ์ถ๋ก ์ ์์ํ ๋ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ์ค๋ฅ๋ ๋ฐ์ํฉ๋๋ค.
์ด ์ค๋ ๋์ ์ค๋ช
๋ ์๋ฃจ์
์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
python2 tools/infer_simple.py \
--cfg configs/12_2017_baselines/e2e_faster_rcnn_R-50-FPN_2x.yaml \
--output-dir /tmp/detectron-visualizations \
--image-ext jpg \
--wts https://s3-us-west-2.amazonaws.com/detectron/35857389/12_2017_baselines/e2e_faster_rcnn_R-50-FPN_2x.yaml.01_37_22.KSeq0b5q/output/train/coco_2014_train%3Acoco_2014_valminusminival/generalized_rcnn/model_final.pkl \
demo
๋ํ ์๋ํ์ง ์๊ณ ์ด 4GB RAM์ ์ฌ์ฉํ ์ ์์ง๋ง ์ฌ์ ํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํฉ๋๋ค(CPU ๋ฐ GPU ๋ฉ๋ชจ๋ฆฌ๋ ๊ณต์ ๋์ง๋ง).
์์ง ์๋ํ ์ ์๋ ๋ ์์ ๋ชจ๋ธ์ด ์์ต๋๊น?
@Omegastick์ด ์ค๋ช
@johannathiemich ๋๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ค๋ฅ๋ ์์ง๋ง ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋์์ต๋๋ค. ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ จ๋์? ์ ฏ์จ TX1๋ ์ฌ์ฉํฉ๋๋ค.
@ll884856 ๋ค, ์ฌ์ค ๊ทธ๋ฌ์ต๋๋ค. ๋ฒ ์ด์ค ๋คํธ๋ฅผ ์คํด์ฆ๋คํธ๋ก ๊ต์ฒดํ๊ณ ๋คํธ๋ฅผ ๋ค์ ํ๋ จ์์ผฐ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฑ๋ฅ์ ์๋ ResNet ๋ฐฑ๋ณธ๋ณด๋ค ํจ์ฌ ๋์๋ค๋ ์ ์ ๋ช
์ฌํ์ญ์์ค.
๋ฒ ์ด์ค๋ท์ ๋ณ๊ฒฝํ๊ธฐ ์ ์ ์๋ํ ์ ์๋ ๋ฐฉ๋ฒ์ FPN์ ๋๋ ๊ฒ ๋ํ ๋์์ด ๋ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ฐ์๊ฐ ๋์์ง ์๊ธฐ๋ฅผ ๋ฐ๋ผ์ง๋ง ์ฑ๋ฅ๋ ๊ฐ์ํ ๊ฒ์
๋๋ค.
๋น์ ์ด ์ํ๋ค๋ฉด ๋ด๊ฐ ๋น์ ์๊ฒ ์คํด์ฆ๋ท์ ๊ตฌํ๊ณผ ๋ฌด๊ฒ๋ฅผ ์ค ์ ์์ต๋๋ค. ์ ๋ ํ์ฌ ์ด ์ฃผ์ ์ ๋ํ ํ์ฌ ํ์ ๋
ผ๋ฌธ์ ์์ฑ ์ค์
๋๋ค.
@johannathiemich ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค! ์ฌ์ค ์ ๋ ์ด ๋ถ์ผ์ ๋ง ์
๋ฌธํ์ง ์ผ๋ง ๋์ง ์์ Mask R-CNN์ ์ํคํ
์ฒ์ ๋ํด ์ ๋ชจ๋ฆ
๋๋ค. ๊ตฌํ๊ณผ ๊ฐ์ค์น๋ฅผ ์๋ ค์ฃผ์๋ฉด Mask R-CNN์ ์ดํดํ๊ณ ๊ตฌํํ๋ ๋ฐ ๋ง์ ๋์์ด ๋ ๊ฒ์
๋๋ค. ๋ด ์ด๋ฉ์ผ์ [email protected]์
๋๋ค.
๊ณ ๋ง์ต๋๋ค !
์, ํ์ง๊ธฐ๊ฐ ์๋ CPU์์ Mask-RCNN์ ์ํํ ์ ์์ต๋๋ค.
๋ณด๋ค:
https://vimeo.com/277180815
๋น์ทํ ๋ฌธ์ ๊ฐ ํ๋ ์์ต๋๋ค. ์ฌ๊ธฐ์์ ์ ๋ฅผ ๋์์ค ์ฌ๋์ด ์๋ค๋ฉด ์ ๋ง ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. https://github.com/facebookresearch/detectron2/issues/1539 ์ ์ด๋ฐ ์ผ์ด ์ผ์ด๋๋์ง ์ ๋ง ์ดํด๊ฐ ๋์ง ์์ต๋๋ค. ๋ฐ๋ผ์ torch.nograd() ๋ถ๋ถ์ ํฌํจ์ํจ ํ CPU์์ ์ผ๊ด ์ฒ๋ฆฌ๋ก 25๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ์์ธกํ๋ ค๋ฉด 9.3GB์ RAM์ด ํ์ํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
ํ ๊ฐ์ง ์ถ๊ฐ ์ฌํญ: ํ์ฌ ๊ตฌํ์ ํ์ต ์ค์ ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ๋ฅผ ์ฌ์ฉํ์ง๋ง ์ถ๋ก ์ค์๋ ์ฌ์ฉํ์ง ์์ต๋๋ค. ์ถ๋ก ์ ๊ฒฝ์ฐ ์ค๊ฐ ํ์ฑํ๊ฐ ํ์ํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ํฌ๊ฒ ์ค์ผ ์ ์์ต๋๋ค. ํฅํ ์ถ๋ก ์ ์ฉ ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ๊ณ ๋ คํ ๊ฒ์ ๋๋ค.