-
Notifications
You must be signed in to change notification settings - Fork 8
Caffe Tutorial : 7.Data (Kor)
๋ฐ์ดํฐ : ๋ค์ด์ค๋ ๊ฒ๊ณผ ๋๊ฐ๋ ๊ฒ๋ค (Data: Ins and Outs)
๋ฐ์ดํฐ๋ Blob๋ก์จ ์นดํ๋ฅผ ํตํด ํ๋ฌ๊ฐ๋ค. ๋ฐ์ดํฐ ๊ณ์ธต์ Blob๋ถํฐ ๋ค๋ฅธ ํํ๊น์ง๋ก ๊ทธ๋ฆฌ๊ณ ์ ํํจ์ ์ํด ์ ๋ ฅ์ ์ฝ๊ณ ์ถ๋ ฅ์ ์ ์ฅํ๋ค. ํผ์ณ ์ค์ผ์ผ๋ง(feature-scaling)๊ณผ ํ๊ท -๋บ์ (mean-subtraction)๊ฐ์ ์ผ๋ฐ ๋ณํ๋ค์ ๋ฐ์ดํฐ ๊ณ์ธต ๊ตฌ์ฑ์ ์ํด ์ด๋ฃจ์ด์ง๋ค. ์๋ก์ด ์ ๋ ฅ ํํ๋ค์ ์๋ก์ด ๋ฐ์ดํฐ ๊ณ์ธต์ ๊ฐ๋ฐํจ์์ํด ์ง์ ๋ฐ๋๋ฐ ์ด๋ ์นดํ ๊ณ์ธต ์นดํ๋ก๊ทธ์ ๋ชจ๋์ฑ์ ์ํด ๋ฐ๋ผ๊ฐ๋ ๋ง์ ์ผ๋ถ์ด๋ค.
์ด๋ฌํ ๋ฐ์ดํฐ ๊ณ์ธต ์ ์๋ MNIST์๋ฅผ ๋ถ๋ฌ์จ๋ค.
layer {
name: "mnist"
# ๋ฐ์ดํฐ ๊ณ์ธต์ ๋์ ์ฒ๋ฆฌ๋์ ์ํด leveldb ๋ lmdb ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์ ์ฅ์๋ฅผ ๋ถ๋ฌ์จ๋ค.
type: "Data"
# ์ฒซ ๋ฒ์งธ top์ ๋ฐ์ดํฐ ๊ทธ ์์ฒด์ด๋ค : ์ด๋ฆ์ ์ค์ง convention์ด๋ค.
top: "data"
# ๋๋ฒ์งธ top์ ์ค์ธก ์๋ฃ์ด๋ค : ์ด๋ฆ์ ์ค์ง convention์ด๋ค.
top: "label"
# ๋ฐ์ดํฐ ๊ณ์ธต ๊ตฌ์ฑ
data_param {
# DB๊ฒฝ๋ก
source: "examples/mnist/mnist_train_lmdb"
# DB ํ์
: LEVELDB ๋ LMDB (LMDB๋ ๊ณต์กดํ๋ ์ฝ๊ธฐ, ๋์ ์ฝ๊ธฐ๋ฅผ ์ง์ํด์ค๋ค.)
backend: LMDB
# ์ง๋จ ํ๋ก์ธ์ฑ์ ํจ์จ์ฑ์ ๊ฐ์ ํ๋ค.
batch_size: 64
}
# ์ผ๋ฐ ๋ฐ์ดํฐ ๋ณํ
transform_param {
# ํผ์ณ ์ค์ผ์ผ๋ง ๊ณ์ : ์ด๊ฒ์ [0, 255] MNIST data์ [0, 1]์ ๋งตํํ๋ค.
scale: 0.00390625
}
}
Tops and Bottoms : ๋ฐ์ดํฐ ๊ณ์ธต์ ๋ชจ๋ธ์ ์ถ๋ ฅ ๋ฐ์ดํฐ์ top blob๋ฅผ ๋ง๋ ๋ค. ์ด๊ฒ์ ์ด๋ ํ ์ ๋ ฅ๋ ์ทจํ์ง ์๊ธฐ ๋๋ฌธ์ bottom blob๋ฅผ ๊ฐ์ง์ง ์๋๋ค.
Data and Label : ๋ฐ์ดํฐ ๊ณ์ธต์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐ์ดํฐ๋ผ๋ ์ด๋ฆ์ ์ต์ ํ๋์ top์ ๊ฐ์ง๋ค. ์ค์ธก ์๋ฃ์ ๋ํ์ฌ ๋๋ฒ์งธ top๋ ๊ธฐ๋ณธ์ ์ผ๋กlabel์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ์ ์๋ ์ ์ด์ฟ. ์ ์ชฝ ๋ชจ๋ top๋ค์ ๊ฐ๋จํ blob๋ฅผ ์์ฐํ๊ณ ์ด๋ฌํ ์ด๋ฆ์ ๋ํ์ฌ ํ๊ณ ๋ ํน๋ณํ ๊ฒ์ ์๋ค. (data, label)ใ ์์ ๋ถ๋ฅํ ๋ชจ๋ธ (classification models)์ ๋ํ ํธ์์ฑ์ ๊ฐ์ง๊ณ ์๋ค.
Transformations : ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ ๊ณ์ธต ์ ์์์์ ๋ณํ ๋ฉ์ธ์ง์ ์ํด ํ๋ผ๋ฏธํฐํ ๋์ด์ง๋ค.
layer {
name: "data"
type: "Data"
[...]
transform_param {
scale: 0.1
mean_file_size: mean.binaryproto
# ๋๋ค ํฌ๋กญํ(ํฌ๋กญํ : ์ฌ์ง์ด๋ ๊ทธ๋ฆผ์ ํธ์งํ ๋ ์ํ๋ ํฌ๊ธฐ์ ๋ง๋๋ก ๊ทธ ์ฌ์ด์ฆ๋ฅผ ์กฐ์ ํ๋ ๊ฒ.)์ด๋ ํน์ ํ ์ข์ฐ๋์นญ์์ ์ด๋ฏธ์ง์ ๋ํ์ฌ
# ๊ฐ๋จํ ๋ฐ์ดํฐ ์ฆ๊ฐ๋ก์จ ๋์ด์ง ์ ์๋ค.
mirror: 1 # 1 = on, 0 = off
# crop a `crop_size` x `crop_size` patch:
# - ํ์ต ์ค์ ๋๋ค์ ์ผ๋ก
# - ํ
์คํ
์ค์์ ์ค์์ ๋ถํฐ
crop_size: 227
}
}
Prefetching : ์ฒ๋ฆฌ๋์ ๋ํ์ฌ ๋ฐ์ดํฐ ๊ณ์ธต์ ๋ฐ์ดํฐ์ ๋ค์ ์ผํ ์ฒ๋ฆฌ๋์ ๋ฐ๋ ค์ค๊ณ ๋ง์ด ํ์ฌ ์ผํ ์ฒ๋ฆฌ๋์ ์ฐ์ฐํ๋๋์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ค๋น๋ฅผํด๋๋ค.
Multiple Inputs : ๋ง์ ์ด๋ค ์ ๊ทธ๋ฆฌ๊ณ ํํ์ ๋ค์ค ์ ๋ ฅ์ ์ง๋๋ค. ๊ฐ ํน๋ณํ ์ด๋ฆ๊ณผ top์ ์ค์ผ๋ก์จ ๋ง์ ๋ฐ์ดํฐ ๊ณ์ธต๋ค์ ์ ์ํ๋ผ. ๋ค์ค ์ ๋ ฅ๋ค์ ์ฌ์ํ์ง ์์ ์ค์ธก ์๋ฃ์ ๋ํ์ฌ ์ฌ์ฉํ๊ธฐ ์ข๋ค. : ํ๋์ ๋ฐ์ดํฐ ๊ณ์ธต์ ์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๊ณ ๋ค๋ฅธ ๊ณ์ธต์ ์ ํํ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ค์ธก ์๋ฃ๋ฅผ ๋ถ๋ฌ์จ๋ค. ์ด๋ฌํ ์ค๋น์์ ์์ชฝ ๋ฐ์ดํฐ์ ๋ผ๋ฒจ์ 4D ๋ฐฐ์ด๋ก ๋ ์ ์๋ค. ๊ทธ๋ด์ง๋ผ๋ ๋ค์ค ์ ๋ ฅ์ ์์ฉ์ ์ฐ์ ๋ชจ๋ธ๊ณผ ๋ค์ค๋ชจ๋ธ์์ ๋ฐ๊ฒฌ๋ ์ ์๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ์๋ ๋น์ ์ ์์ ๋ง์ ๋ฐ์ดํฐ ์ค๋น ์์๋ ํน๋ณํ ๋ฐ์ดํฐ ๊ณ์ธต์ ์ํํด์ผํ ํ์๊ฐ ์์์ง ๋ชจ๋ฅธ๋ค.
๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํํ๋ ๋ฐ ๊ตฌ์ฑ๋ฐฉ์, ์ผ๋ฐ๋ก , ์๋๋ฉด ๋์๋๋ ์ ํธ๋ฆฌํฐ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ด ์ข๋ค!
๊ฐ Data์ ํ์ ์ ๋ํ Caffe ์ดํด๋ฅผ ๋ ๋ค๊ฐ๊ฐ๊ธฐ ์ํด ๋ฐ์ดํฐ๊ณ์ธต ์ ๊ณ์ธต ์นดํ๋ก๊ทธ์ ๋ณด๋ผ.
์ํฉ์ ๋ค๋ฅธ ์ฐ์ฐ์ ์ํด ๋ง ๋ฐฐ์น๋ ์ ๋ ฅ ํ๋์ ์ํด ์ด๋ค์ ์ ๋ ฅ์ ์ ์ํ๋ค. : ์ด๋ฌํ ๋ง๋ค์ ๊ทธ๋ฌ๊ณ ๋์ ์จ๋ผ์ธ์ด๋ ์ํธ์ ์ธ ์ฐ์ฐ์ ์ํด ๋ฐ์ดํฐ์ ์ง์ ๋ฑ๋ก์ ๋ฐ์๋ค์ธ๋ค