rnn_vid
get_rnn_vid_data
ํจ์ ์ด๋ฆ: get_rnn_vid_data
์ ๋ ฅ:
network net: RNN ๋คํธ์ํฌ ๋ชจ๋ธ
char **files: ๋น๋์ค ํ์ผ ๊ฒฝ๋ก ๋ฐฐ์ด
int n: ๋น๋์ค ํ์ผ ๊ฒฝ๋ก ๋ฐฐ์ด์ ํฌ๊ธฐ
int batch: ๋ฐฐ์น ํฌ๊ธฐ
int steps: RNN ์ ๋ ฅ ์ํ์ค์ ๊ธธ์ด
๋์:
์ฃผ์ด์ง ๋น๋์ค ํ์ผ์์ ์์์ ํ๋ ์์ ์ ํํ๊ณ , ์ ํ๋ ํ๋ ์์ผ๋ก๋ถํฐ RNN ๋ชจ๋ธ์ ์ ๋ ฅ์ผ๋ก ์ฌ์ฉ๋ ์ํ์ค๋ฅผ ์์ฑํ์ฌ ๋คํธ์ํฌ๋ฅผ ์คํํฉ๋๋ค.
์ด ๊ณผ์ ์ ์ง์ ๋ ๋ฐฐ์น ํฌ๊ธฐ๋งํผ ๋ฐ๋ณตํ์ฌ ๊ฐ๊ฐ์ ๋ฐฐ์น์ ๋ํ ์ถ๋ ฅ์ ์ถ์ถํ๊ณ , ์ด๋ฅผ ํ ๋ฒ์ ํ๋์ ํฐ 2D ๋ฐฐ์ด๋ก ํฉ์นฉ๋๋ค.
ํฉ์ณ์ง ์ถ๋ ฅ์ float_pair ๊ตฌ์กฐ์ฒด๋ก ๋ฐํ๋ฉ๋๋ค.
๋ฐํ๋ float_pair ๊ตฌ์กฐ์ฒด๋ ๋ ๊ฐ์ ํฌ์ธํฐ(float *)๋ฅผ ๊ฐ๋๋ฐ, ์ฒซ ๋ฒ์งธ ํฌ์ธํฐ๋ RNN ๋ชจ๋ธ์ ์ถ๋ ฅ ์ค ์ฒซ ๋ฒ์งธ ๋ฐฐ์น์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ๋ฆฌํค๊ณ , ๋ ๋ฒ์งธ ํฌ์ธํฐ๋ ๋ ๋ฒ์งธ ๋ฐฐ์น์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ๋ฆฌํต๋๋ค.
์ค๋ช :
get_rnn_vid_data ํจ์๋ RNN ๋ชจ๋ธ์ ๋น๋์ค ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๋ ํจ์์ ๋๋ค.
ํจ์๋ ๋น๋์ค ํ์ผ ๊ฒฝ๋ก ๋ฐฐ์ด์์ ์์์ ํ์ผ์ ์ ํํ๊ณ , ํด๋น ํ์ผ์์ ์์์ ํ๋ ์์ ์ ํํ์ฌ ์ด๋ฅผ ์ด์ฉํ์ฌ RNN ์ ๋ ฅ ์ํ์ค๋ฅผ ์์ฑํฉ๋๋ค.
RNN ๋ชจ๋ธ์ ์ด ์ํ์ค๋ฅผ ์คํํ์ฌ ์ถ๋ ฅ์ ์์ฑํ๊ณ , ์ด ์ถ๋ ฅ์ ์ง์ ๋ ๋ฐฐ์น ํฌ๊ธฐ๋งํผ ๋ชจ์ผ๊ณ , float_pair ๊ตฌ์กฐ์ฒด๋ก ๋ฐํ๋ฉ๋๋ค.
์ด ํจ์๋ ์ ๋ ฅ์ผ๋ก RNN ๋ชจ๋ธ๊ณผ ๋น๋์ค ํ์ผ ๊ฒฝ๋ก ๋ฐฐ์ด, ๋ฐฐ์น ํฌ๊ธฐ, RNN ์ ๋ ฅ ์ํ์ค์ ๊ธธ์ด๋ฅผ ๋ฐ์ต๋๋ค.
RNN ๋ชจ๋ธ์ ๋คํธ์ํฌ ๊ตฌ์กฐ์ ๊ฐ์ค์น ๋ฑ์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ผ๋ฉฐ, ๋น๋์ค ํ์ผ ๊ฒฝ๋ก ๋ฐฐ์ด์ ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ํ์ผ ๊ฒฝ๋ก๋ค์ ์ ์ฅํฉ๋๋ค.
๋ฐฐ์น ํฌ๊ธฐ๋ RNN ๋ชจ๋ธ์ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ ์ํ์ค์ ๊ธธ์ด์ ๋๋ค. ์ด๋ RNN ๋ชจ๋ธ์ ๋ด๋ถ ์ํ๋ฅผ ์กฐ์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
RNN ์ ๋ ฅ ์ํ์ค์ ๊ธธ์ด๋ ์ด์ RNN ์ถ๋ ฅ์ ๋ค์ ์ ๋ ฅ์ผ๋ก ์ฌ์ฉํ๋ ์ํ์ค์ ๊ธธ์ด๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
ํจ์์ ์ถ๋ ฅ์ float_pair ๊ตฌ์กฐ์ฒด์ ๋๋ค. ์ด ๊ตฌ์กฐ์ฒด๋ ๋ ๊ฐ์ ํฌ์ธํฐ๋ฅผ ๊ฐ์ต๋๋ค.
์ฒซ ๋ฒ์งธ ํฌ์ธํฐ๋ RNN ๋ชจ๋ธ์ ์ถ๋ ฅ ์ค ์ฒซ ๋ฒ์งธ ๋ฐฐ์น์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ๋ฆฌํค๊ณ , ๋ ๋ฒ์งธ ํฌ์ธํฐ๋ ๋ ๋ฒ์งธ ๋ฐฐ์น์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ๋ฆฌํต๋๋ค.
train_vid_rnn
ํจ์ ์ด๋ฆ: train_vid_rnn
์ ๋ ฅ:
cfgfile: char ํฌ์ธํฐ. RNN ๋คํธ์ํฌ์ ์ค์ ํ์ผ ๊ฒฝ๋ก.
weightfile: char ํฌ์ธํฐ. ๋ฏธ๋ฆฌ ํ์ต๋ ๊ฐ์ค์น ํ์ผ ๊ฒฝ๋ก.
๋์:
train_vid_rnn ํจ์๋ RNN ๋คํธ์ํฌ๋ฅผ ํ์ต์ํค๋ ํจ์์ ๋๋ค.
์ฃผ์ด์ง cfgfile๊ณผ weightfile์ ์ฌ์ฉํ์ฌ ๋คํธ์ํฌ๋ฅผ ์ด๊ธฐํํ ํ, ์ง์ ๋ ๋น๋์ค ํ์ผ์์ ๋ฌด์์๋ก ์ถ์ถํ ํ๋ ์๋ค๋ก๋ถํฐ ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ์ฌ RNN ๋คํธ์ํฌ๋ฅผ ํ์ต์ํต๋๋ค.
ํ์ต ์ค์๋ ๋คํธ์ํฌ์ ๊ฐ์ค์น ํ์ผ์ ์ฃผ๊ธฐ์ ์ผ๋ก ์ ์ฅํ๊ณ , ํ์ต ์ค์ ๋ฐ์ํ๋ ์์ค์ ์ถ๋ ฅํฉ๋๋ค.
์ค๋ช :
plist: list ํฌ์ธํฐ. ํ์ตํ ๋น๋์ค ํ์ผ๋ค์ ๊ฒฝ๋ก๋ฅผ ํฌํจํ๋ list์ ๋๋ค.
N: int ํ. ํ์ตํ ๋น๋์ค ํ์ผ๋ค์ ์์ ๋๋ค.
paths: char ์ด์ค ํฌ์ธํฐ. ํ์ตํ ๋น๋์ค ํ์ผ๋ค์ ๊ฒฝ๋ก์ ๋๋ค.
time: clock_t ํ. ํ์ฌ ์๊ฐ์ ๋ํ๋ด๋ clock_t ๋ณ์์ ๋๋ค.
steps: int ํ. RNN ๋คํธ์ํฌ์ ํ์ ์คํ ์์ ๋๋ค.
batch: int ํ. RNN ๋คํธ์ํฌ์ ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ ํ์ ์คํ ์๋ก ๋๋ ๊ฐ์ ๋๋ค.
net: network ๊ตฌ์กฐ์ฒด. ํ์ตํ RNN ๋คํธ์ํฌ์ ๋๋ค.
extractor: network ๊ตฌ์กฐ์ฒด. ๋น๋์ค์์ ํน์ฑ์ ์ถ์ถํ๋ YOLO ๋คํธ์ํฌ์ ๋๋ค.
avg_loss: float ํ. ์ด์ ์์ค๊ณผ ํ์ฌ ์์ค์ ํ๊ท ํํ ๊ฐ์ ๋๋ค.
i: int ํ ํฌ์ธํฐ. ํ์ฌ ํ์ต ๋ฐฐ์น์ ์ธ๋ฑ์ค์ ๋๋ค.
imgs: int ํ. ํ๋์ ๋ฐฐ์น์ ๋ค์ด๊ฐ๋ ์ด๋ฏธ์ง ์์ ๋๋ค. (batch * subdivisions)
train_videos: char ํฌ์ธํฐ. ํ์ตํ ๋น๋์ค ํ์ผ๋ค์ ๋ชฉ๋ก์ด ํฌํจ๋ ํ์ผ์ ๊ฒฝ๋ก์ ๋๋ค.
backup_directory: char ํฌ์ธํฐ. ๊ฐ์ค์น ํ์ผ ๋ฐ ๋ฐฑ์ ํ์ผ์ ์ ์ฅํ ๋๋ ํ ๋ฆฌ์ ๊ฒฝ๋ก์ ๋๋ค.
save_reconstruction
ํจ์ ์ด๋ฆ: save_reconstruction
์ ๋ ฅ:
network net: ์ ๊ฒฝ๋ง ๋ชจ๋ธ
image *init: ์ด๊ธฐ ์ด๋ฏธ์ง ํฌ์ธํฐ (์ ํ์ )
float *feat: ํน์ง ๋ฒกํฐ
char *name: ์ ์ฅํ ์ด๋ฏธ์ง ์ด๋ฆ์ prefix
int i: ์ด๋ฏธ์ง ์ด๋ฆ์ ๋ถ์ผ ๋ฒํธ
๋์:
์ฃผ์ด์ง ํน์ง ๋ฒกํฐ feat๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ ฅ ์ด๋ฏธ์ง๋ฅผ ์ฌ๊ตฌ์ฑํ๋ค.
์ด๊ธฐ ์ด๋ฏธ์ง ํฌ์ธํฐ init๊ฐ ์ ๊ณต๋๋ฉด, ํด๋น ์ด๋ฏธ์ง๋ก๋ถํฐ ์ฌ๊ตฌ์ฑ์ ์์ํ๋ค.
์ฌ๊ตฌ์ฑ๋ ์ด๋ฏธ์ง๋ฅผ ํ์ผ๋ก ์ ์ฅํ๊ณ , ํด๋น ์ด๋ฏธ์ง๋ฅผ ๋ฐํํ๋ค.
์ค๋ช :
์ด ํจ์๋ Variational Autoencoder (VAE)์ ๊ฐ์ ์ ๊ฒฝ๋ง ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ์ ๋ ฅ ์ด๋ฏธ์ง๋ฅผ ์ฌ๊ตฌ์ฑํ๋ ๊ธฐ๋ฅ์ ์ํํ๋ค.
์ ๋ ฅ์ผ๋ก๋ VAE ๋ชจ๋ธ (network net), ์ฌ๊ตฌ์ฑ์ ์์ํ ์ด๊ธฐ ์ด๋ฏธ์ง (image *init), ์ ๋ ฅ ์ด๋ฏธ์ง๋ฅผ ํน์ง ๋ฒกํฐ๋ก ๋ณํํ ๊ฐ (float *feat), ์ ์ฅํ ์ด๋ฏธ์ง ์ด๋ฆ์ prefix (char *name), ์ด๋ฏธ์ง ์ด๋ฆ์ ๋ถ์ผ ๋ฒํธ (int i)๊ฐ ์ ๊ณต๋๋ค.
๋ง์ฝ ์ด๊ธฐ ์ด๋ฏธ์ง ํฌ์ธํฐ init๊ฐ ์ ๊ณต๋๋ฉด, ํด๋น ์ด๋ฏธ์ง๋ก๋ถํฐ ์ฌ๊ตฌ์ฑ์ ์์ํ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ฌด์์ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ์ฌ ์ฌ๊ตฌ์ฑ์ ์์ํ๋ค.
์ฌ๊ตฌ์ฑ๋ ์ด๋ฏธ์ง๋ update ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ฌ iter_num ํ์๋งํผ ์ ๋ฐ์ดํธํ๋ฉฐ, ์ต์ข ์ ์ผ๋ก ์ฌ๊ตฌ์ฑ๋ ์ด๋ฏธ์ง๋ฅผ ํ์ผ๋ก ์ ์ฅํ๊ณ ํด๋น ์ด๋ฏธ์ง๋ฅผ ๋ฐํํ๋ค.
generate_vid_rnn
ํจ์ ์ด๋ฆ: generate_vid_rnn
์ ๋ ฅ:
cfgfile: YOLO ๋ชจ๋ธ ๊ตฌ์ฑ ํ์ผ ๊ฒฝ๋ก (๋ฌธ์์ด)
weightfile: YOLO ๋ชจ๋ธ ๊ฐ์ค์น ํ์ผ ๊ฒฝ๋ก (๋ฌธ์์ด)
๋์:
์ด ํจ์๋ YOLO ๋ชจ๋ธ๊ณผ LSTM(Long Short-Term Memory) ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ๋น๋์ค ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๋ ์ญํ ์ ํฉ๋๋ค.
extractor: ๋ฏธ๋ฆฌ ํ์ต๋ YOLO ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ์ ๋ ฅ ์ด๋ฏธ์ง์์ ํน์ง์ ์ถ์ถํฉ๋๋ค.
net: LSTM ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ํน์ง ์ํ์ค๋ฅผ ์์ฑํฉ๋๋ค.
cap: ์ ๋ ฅ ๋น๋์ค ํ์ผ ๊ฒฝ๋ก๋ฅผ ๊ฐ๋ฆฌํค๋ CvCapture ๊ฐ์ฒด๋ฅผ ๋ง๋ญ๋๋ค.
for ๋ฃจํ์์ ์ ๋ ฅ ๋น๋์ค์์ ํ๋ ์์ ์ฝ์ด์จ ๋ค์, extractor ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ํด๋น ์ด๋ฏธ์ง์์ ํน์ง์ ์ถ์ถํ๊ณ LSTM ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ๋ค์ ํน์ง ์ํ์ค๋ฅผ ์์ธกํฉ๋๋ค.
์ดํ LSTM ๋ชจ๋ธ์ ์์ธก ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉํ์ฌ ์๋ก์ด ์ด๋ฏธ์ง๋ฅผ ์์ฑํฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก ์์ฑ๋ ์ด๋ฏธ์ง๋ฅผ ๋ฐํํฉ๋๋ค.
์ค๋ช :
์ด ํจ์๋ YOLO์ LSTM ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ๋น๋์ค ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๋ ๊ฒ์ผ๋ก, ์ ๋ ฅ์ผ๋ก YOLO ๋ชจ๋ธ ๊ตฌ์ฑ ํ์ผ ๊ฒฝ๋ก์ ๊ฐ์ค์น ํ์ผ ๊ฒฝ๋ก๋ฅผ ๋ฐ์ต๋๋ค.
ํจ์์ ๋ด๋ถ์์๋ ๋ฏธ๋ฆฌ ํ์ต๋ YOLO ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ์ ๋ ฅ ์ด๋ฏธ์ง์์ ํน์ง์ ์ถ์ถํ๊ณ LSTM ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ํน์ง ์ํ์ค๋ฅผ ์์ฑํฉ๋๋ค.
์ ๋ ฅ ๋น๋์ค์์ ํ๋ ์์ ๊ฐ์ ธ์ ๊ฐ ํ๋ ์์์ ํน์ง์ ์ถ์ถํ๊ณ LSTM ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ๋ค์ ํน์ง ์ํ์ค๋ฅผ ์์ธกํฉ๋๋ค. LSTM ๋ชจ๋ธ์ด ์์ธกํ ๋ค์ ํน์ง ์ํ์ค๋ฅผ ์ฌ์ฉํ์ฌ ์๋ก์ด ์ด๋ฏธ์ง๋ฅผ ์์ฑํฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก ์์ฑ๋ ์ด๋ฏธ์ง๋ฅผ ๋ฐํํฉ๋๋ค.
run_vid_rnn
ํจ์ ์ด๋ฆ: run_vid_rnn
์ ๋ ฅ:
argc: int ํ์ . main ํจ์์์ ์ ๋ฌ๋๋ ์คํ ์ธ์(argument)์ ๊ฐ์๋ฅผ ๋ํ๋.
argv: char** ํ์ . main ํจ์์์ ์ ๋ฌ๋๋ ์คํ ์ธ์(argument)๋ค์ ๋ฐฐ์ด์ ๋ํ๋.
๋์:
์ ๋ ฅ์ผ๋ก ๋ฐ์ ์คํ ์ธ์(argument)์ ๋ฐ๋ผ train_vid_rnn ํจ์ ๋๋ generate_vid_rnn ํจ์๋ฅผ ํธ์ถํจ.
์คํ ์ธ์๊ฐ ์ถฉ๋ถํ์ง ์์ ๊ฒฝ์ฐ, ์ฌ์ฉ๋ฒ(usage)์ ์ถ๋ ฅํจ.
์ค๋ช :
์ด ํจ์๋ ๋น๋์ค ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ recurrent neural network (RNN) ๋ชจ๋ธ์ ํ์ต(train)ํ๊ฑฐ๋ ์์ฑ(generate)ํ๋ ํจ์๋ฅผ ํธ์ถํ๋ ์ญํ ์ ํจ.
์คํ ์ธ์๋ก๋ 'train', 'test', 'valid' ์ค ํ๋๋ฅผ ์ง์ ํ์ฌ ํ์ต, ํ ์คํธ, ๊ฒ์ฆ ์ค ์ด๋ค ๋จ๊ณ๋ฅผ ์ํํ ์ง ๊ฒฐ์ ํ๊ณ , 'cfg'์ 'weights'๋ฅผ ์ง์ ํ์ฌ ๋ชจ๋ธ์ ์ค์ ํ์ผ๊ณผ ๊ฐ์ค์น ํ์ผ์ ์ ๋ฌํจ.
'weights'๋ ์ ํ์ (optional)์ผ๋ก ์ง์ ํ ์ ์์ผ๋ฉฐ, ์ง์ ํ์ง ์์ผ๋ฉด NULL ๊ฐ์ ๊ฐ๊ฒ ๋จ.
์คํ ์ธ์๊ฐ ์ถฉ๋ถํ์ง ์์ ๊ฒฝ์ฐ, ์ฌ์ฉ๋ฒ(usage)์ ์ถ๋ ฅํ๊ณ ํจ์๋ฅผ ์ข ๋ฃํจ.
Last updated
Was this helpful?