-
Notifications
You must be signed in to change notification settings - Fork 8
Caffe Example : 6.Classifying ImageNet: using the C API (Kor)
์ด๋ฏธ์ง๋ง ๋ถ๋ฅํ๊ธฐ : C++ API ์ฌ์ฉ (Classifying ImageNet: using the C++ API)
Caffe์ ํต์ฌ์ C++๋ก ์ฐ์ฌ์ก๋ค๋ ๊ฒ์ด๋ค. ๋ ธํธ๋ถ์ ์์์ค ํ๋๋ก ์ ๊ณต๋ ํ์ด์ฌ ์ฝ๋์ ๋น์ทํ ์ด๋ฏธ์ง ๋ถ๋ฅํ ์์ฉํ๋ก๊ทธ๋จ์ ์ํํ๋๋ฐ์ Caffe ์ C++ API๋ฅผ ์ฌ์ฉํ ์ ์๋ค. Caffe C++ API์ ๋ค๋ชฉ์ ์์๋ฅผ ์ข ๋ ๋ณด๊ธฐ์ํด์๋, ๋น์ ์ tools/caffe.cpp์ ์๋ ์ปค๋งจ๋ ๋ผ์ธ์ ์์ค ์ฝ๋๋ฅผ ๊ณต๋ถํด์ผ๋งํ๋ค.
๊ฐ๋จํ C++ ์ฝ๋๋ examples/cpp_classification/classification.cpp์์ ์ ๊ณต๋์ด์ง๋ค. ๊ฐ๋จํ๊ธฐ๋๋ฌธ์, ์ด ์์๋ ๋ค์ค ๋ ๋ฆฝ ์์์ ๋จ์ผ ์ํ์ด๋ ์ผํ์ฒ๋ฆฌ๋์ ์ค๋ฒ์ํ๋ง์ด ๋ ์ชฝ ๋ชจ๋ ๋ฐ์ํ์ง ์๋๋ค. ์ด ์์๋ ์์คํ ์๋ํ ์ต๋ ๊ฐ๋ฅํ ๋ถ๋ฅํ ์ฒ๋ฆฌ๋์ ๋๋ฌํ๋ ค๋๊ณ ์๋ํ๋ ๊ฒ์ ์๋์ง๋ง, ์ฝ๋๋ฅผ ์ฝ๋๋ก ์ ์งํ๋ ๋ฐ๋ฉด์ ๋ถํ์ํ ํจ์๋ฏธ์ ์ด์ (pessimization)์ ํํผํํผ์ํด ํน๋ณํ ๊ด๋ฆฌ๊ฐ ์ฃผ์ด์ง๋ค.
C++์์๋ Caffe๋ฅผ ์ปดํ์ผํ ๋ ์๋์ ์ผ๋ก ๊ตฌ์ถ๋๋ค. Caffe๋ฅผ ์ปดํ์ผํ๊ธฐ ์ํด์๋, ๋ฌธ์ํ๋ ์ค๋ช ๋ฌธ์ ๋ฐ๋ฅผํ์๊ฐ ์๋ค. ๋ถ๋ฅํ ์์๋ ๋น์ ์ build ๋๋ ํ ๋ฆฌ์ examples/classification.bin๋ก์จ ๊ตฌ์ถ๋ ๊ฒ์ด๋ค.
๋ถ๋ฅํ ์์๋ก ์ฌ์ ํ์ต๋ CaffeNet ๋ชจ๋ธ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋. ๋น์ ์ ๋ค์๊ณผ ๊ฐ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ "Zoo ๋ชจ๋ธ"๋ก๋ถํฐ ๋ค์ด๋ก๋ํ ํ์๊ฐ ์๋ค : ./scripts/download_model_binary.py models/bvlc_reference_caffenet. ์ด๋ฏธ์ง๋ง ๋ผ๋ฒจ ํ์ผ(๋ํ ์ ์ (synset) ํ์ผ์ด๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋)์ ๋ํ ํด๋์ค์ ์ด๋ฆ์ ์์ธก์ ๋งตํํ๊ธฐ์ํด ์๊ตฌ๋์ด์ง๋ค : ./data/ilsvrc12/get_ilsvrc_aux.sh. ๋ค์ด๋ก๋ํ ํ์ผ๋ค์ ์ฌ์ฉํด์, ์ฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํด์ (examples/images/cat.jpg) ์ฃผ์ด์ง ๊ณ ์์ด ์ฌ์ง์ ๋ถ๋ฅํ ์ ์๋ค.
./build/examples/cpp_classification/classification.bin \ models/bvlc_reference_caffenet/deploy.prototxt \ models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel \ data/ilsvrc12/imagenet_mean.binaryproto \ data/ilsvrc12/synset_words.txt \ examples/images/cat.jpg
๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒ์ด๋ค.
---------- Prediction for examples/images/cat.jpg ----------
0.3134 - "n02123045 tabby, tabby cat" 0.2380 - "n02123159 tiger cat" 0.1235 - "n02124075 Egyptian cat" 0.1003 - "n02119022 red fox, Vulpes vulpes" 0.0715 - "n02127052 lynx, catamount"
์ํ์ ์ข ๋ ํฅ์์ํค๊ธฐ ์ํด, ์ฐ๋ฆฌ๋ GPU๋ชจ๋ ํ์ฉ์ ํ์ํ ๊ฒ์ธ๋ฐ, ์ฌ๊ธฐ ๋ช๊ฐ์ง ๊ฐ์ด๋๋ผ์ธ์ด ์๋ค:
- ์ด๊ธฐ์ GPU์์ ๋ฐ์ดํฐ๋ฅผ ์ฎ๊ธฐ๊ณ ๋ชจ๋ ์ฌ์ ์ฒ๋ฆฌ์์ ์ ๊ฑฐ๊ธฐ์ ์ํํ๋ผ.
- ๋ง์ฝ ๋์์ ๋ถ๋ฅํ ์ด๋ฏธ์ง๊ฐ ๋ง๋ค๋ฉด, ๋ฒ ์นญ(batching)์ ์ฌ์ฉํด์ผ๋ง ํ๋ค(๋ ๋ฆฝ์ ์ด๋ฏธ์ง๋ค์ ๋จ์ผ ์ ๋ฐฉํฅ ๊ณผ์ ์์ ๋ถ๋ฅํ๋๋ค.).
- GPU๊ฐ ํญ์ ์๋ฒฝํ ์ฌ์ฉ๋์ด์ง๊ณ CPU ์ฐ๋ ๋๊ฐ ์ฐจ๋จ๋ I/O๋ฅผ ๊ธฐ๋ค๋ฆด ํ์๊ฐ ์๋๋ก ํ์คํํ๋ ๋ค์ค ๋ถ๋ฅํ ์ฐ๋ ๋๋ฅผ ์ฌ์ฉํ๋ผ.