Caffe Example : 5.Extracting Features (Kor) - ys7yoo/BrainCaffe GitHub Wiki
ํน์ง ์ถ์ถ(Extracting Features)
์ด๋ฒ ํํ ๋ฆฌ์ผ์์๋, ์ฐ๋ฆฌ๋ C++ ๋๊ตฌ๋ฅผ ํฌํจํ์ฌ ์ฌ์ ์ ํ์ต๋ ๋ชจ๋ธ์ ์ฌ์ฉํ ํน์ง์ถ์ถ์ ํ ๊ฒ์ด๋ค. ์ฐ๋ฆฌ๋ ํํฐ ์๊ฐํ ์์์์์ ์์์ฒ๋ผ, ์ด๋ฒ ์ ๋ฌด๋ฅผ ์ํด ํ์ด์ฌ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋๊ฒ์ ์ถ์ฒํ๋ค.
Caffe ์ค์น์ ๋ํ ๊ตฌํ์ ๋ฐ๋ผํ๊ณ , Caffe root directory์์ scripts/download_model_binary.py models/bvlc_reference_caffene๋ฅผ ์คํํ๋ผ. ๋ง์ฝ ์๋์ ํด์๋ํ ์์ธํ ์ ๋ณด๋ค์ด ํ์ํ๋ค๋ฉด, ๊ทธ๋ค์ ์์ค ์ฝ๋์๋ํด ์๋ดํ๊ธฐ๋ฅผ ๋ฐ๋ผ๋ฉฐ ์ด๋ ์ถ๊ฐ์ ์ ๋ณด๊ฐ ๋ณดํต ์ ๊ณต๋๋ค.
์คํํ ๋ฐ์ดํฐ ๊ณ ๋ฅด๊ธฐ (Select data to run on)
์ฐ๋ฆฐ ๋ฌด์ธ๊ฐ๋ฅผ ์ ์ฅํด๋ ์์ ํด๋๋ฅผ ๋ง๋ค๊ฒ์ด๋ค.
mkdir examples/_temp
์ฒ๋ฆฌํ ํ์ผ์ ๋ฆฌ์คํธ๋ฅผ ์์ฑํ๋ผ. ์ฐ๋ฆฌ๋ Caffe๋ก ๋ง์๋(์ฒ๋ฆฌํ๋) ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๋ค.
find `pwd`/examples/images -type f -exec echo {} \; > examples/_temp/temp.txt
์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ImageDataLayer๋ ๊ฐ๊ฐ์ ํ์ผ์ด๋ฆ ํ์ ๋ผ๋ฒจ๋ฅผ ๋ถ์ด๊ณ , 0๋ถํฐ ๊ฐ๊ฐ ๋ผ์ธ์ ๋๊น์ง ์ถ๊ฐํ ๊ฒ์ด๋ค.
sed "s/$/ 0/" examples/_temp/temp.txt > examples/_temp/file_list.txt
ํน์ง ์ถ์ถ ๋คํธ์ํฌ ๊ตฌ์กฐ ์ ์(Define the Feature Extraction Network Architecture)
์ค์ ๋ก, ๋ฐ์ดํฐ์ธํธ๋ก๋ถํฐ ํ๊ท ์ด๋ฏธ์ง๋ฅผ ๋บ์ ํ๋๊ฒ์ ์๋นํ ๋ถ๋ฅํ ์ ํ๋๋ฅผ ํฅ์์ํจ๋ค. ILSVRC ๋ฐ์ดํฐ ์ธํธ์ ํ๊ท ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ํ๋ผ
./data/ilsvrc12/get_ilsvrc_aux.sh
์ฐ๋ฆฌ๋ ๋คํธ์ํฌ ์ ์ prototxt์์ data/ilsvrc212/imagenet_mean.binaryproto๋ฅผ ์คํ์ํฌ ๊ฒ์ด๋ค.
๋คํธ์ํฌ ์ ์๋ฅผ ๋ณต์ฌํ๊ณ ์์ ํ์. ์ฐ๋ฆฌ๋ ImageDataLayer๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๋ฉฐ, ์ด๋ ์ฐ๋ฆฌ๋ฅผ์ํด ์ด๋ฏธ์ง ์ฌ์ด์ฆ๋ฅผ ์์ ํด์ฃผ๊ณ ๋ถ๋ฌ์์ค ๊ฒ์ด๋ค.
cp examples/feature_extraction/imagenet_val.prototxt examples/_temp
ํน์ง์ถ์ถ (Extract Features)
์ด์ ํ์ํ ๋ชจ๋ ๊ฒ์ด ์ค๋น๋๋ค.
./build/tools/extract_features.bin models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel
examples/_temp/imagenet_val.prototxt fc7 examples/_temp/features 10 leveldb
๋น์ ์ด ์ถ์ถํ ํน์ง blob์ ์ด๋ฆ์ fc7์ด๋ฉฐ ์ด๋ ์ ์กฐ ๋ชจ๋ธ์ ์ต์ ๋ ๋ฒจ ํน์ง์ ์์งํ๋ค. ์ฐ๋ฆฌ๋ conv5๋ pool3์ ๊ฐ์ ์ด๋ค ๋ค๋ฅธ ๊ณ์ธต์๋ ์ฌ์ฉํ ์ ์๋ค.
์์ ๋ง์ง๋ง ํ๋ผ๋ฏธํฐ๋ ๋ฐ์ดํฐ ์ต์ ์ผํ์ฒ๋ฆฌ๋์ ์์ด๋ค.
ํน์ง๋ค์ ๋ช๋ช ๋ค๋ฅธ ์ฝ๋๋ค์ ์ํด ์ ๊ทผ๋ ์ค๋น๋ฅผ ํ๋ examples/_temp/features์ LevelDB์์ ์ ์ฅ๋๋ค.
๋ง์ฝ ์๋ฌ โCheck failed: status.ok() Failed to open leveldb examples/_temp/featuresโ๋ฅผ ์กฐ์ฐํ๋ค๋ฉด, ์ด๋ ๋๋ ํ ๋ฆฌ examples/_temp/features๊ฐ ์ ์ ๋น์ ์ด ์คํํ๋ ์ฝ๋๋ก ์์ฑ๋์ด์๋ค๋๊ฒ์ด๋ค. ์ด๋ฅผ ์ญ์ ํ๊ณ ์ฌ์คํํ์ฌ๋ผ.
rm -rf examples/_temp/features/
๋ง์ฝ ํน์ง์ถ์ถ์ ํ์ด์ฌ์ ์ฌ์ฉํ๊ธฐ๋ฅผ ์์น ์๋๋ค๋ฉด, ํํฐ ์๊ฐํ ๋ ธํธ๋ถ์ ๋ณด์๋ผ.
์น์ฐ๊ธฐ (Clean up)
์ด์ ์์ ๋๋ ํ ๋ฆฌ๋ฅผ ์ญ์ ํ์.
rm -r examples/_temp