segmenter
train_segmenter
ํจ์ ์ด๋ฆ: train_segmenter
์ ๋ ฅ:
datacfg: ๋ฐ์ดํฐ ๊ตฌ์ฑ ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด ํฌ์ธํฐ
cfgfile: ๊ตฌ์ฑ ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด ํฌ์ธํฐ
weightfile: ๊ฐ์ค์น ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด ํฌ์ธํฐ
gpus: GPU ๋ฒํธ ๋ฐฐ์ด์ ๋ํ๋ด๋ ์ ์ ํฌ์ธํฐ
ngpus: GPU ์๋ฅผ ๋ํ๋ด๋ ์ ์
clear: ๋คํธ์ํฌ๋ฅผ ์ง์ธ์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ ์ ์ (0 ๋๋ 1)
display: ์ด๋ฏธ์ง๋ฅผ ํ๋ฉด์ ํ์ํ ์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ ์ ์ (0 ๋๋ 1)
๋์:
๋ฐ์ดํฐ ๊ตฌ์ฑ ํ์ผ, ๊ตฌ์ฑ ํ์ผ, ๊ฐ์ค์น ํ์ผ, GPU ๋ฒํธ, GPU ์, ๋คํธ์ํฌ ์ด๊ธฐํ ์ฌ๋ถ, ์ด๋ฏธ์ง ์ถ๋ ฅ ์ฌ๋ถ๋ฅผ ์ ๋ ฅ์ผ๋ก ๋ฐ์ ์ธ๊ทธ๋ฉํ ์ด์ ๋คํธ์ํฌ๋ฅผ ํ์ตํ๋ ํจ์
ํจ์ ๋ด๋ถ์์๋ ๋ค์ค GPU๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก CUDA ํจ์๋ฅผ ์ฌ์ฉํ๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด๋ค์ด๊ณ ์ธ๊ทธ๋ฉํ ์ด์ ๋คํธ์ํฌ๋ฅผ ํ๋ จํ๋ค.
epoch ๋ง๋ค ๊ฐ์ค์น ํ์ผ์ ์ ์ฅํ๋ค.
์ค๋ช :
train_segmenter ํจ์๋ ์ ๋ ฅ์ผ๋ก ๋ฐ์ดํฐ ๊ตฌ์ฑ ํ์ผ, ๊ตฌ์ฑ ํ์ผ, ๊ฐ์ค์น ํ์ผ, GPU ๋ฒํธ ๋ฐฐ์ด, GPU ์, ๋คํธ์ํฌ ์ด๊ธฐํ ์ฌ๋ถ, ์ด๋ฏธ์ง ์ถ๋ ฅ ์ฌ๋ถ๋ฅผ ๋ฐ์ ์ธ๊ทธ๋ฉํ ์ด์ ๋คํธ์ํฌ๋ฅผ ํ์ตํ๋ ํจ์์ด๋ค.
ํจ์ ๋ด๋ถ์์๋ ๋ค์ค GPU๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก CUDA ํจ์๋ฅผ ์ฌ์ฉํ๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด๋ค์ด๊ณ ์ธ๊ทธ๋ฉํ ์ด์ ๋คํธ์ํฌ๋ฅผ ํ๋ จํ๋ค. ๋ํ epoch ๋ง๋ค ๊ฐ์ค์น ํ์ผ์ ์ ์ฅํ๋ค.
predict_segmenter
ํจ์ ์ด๋ฆ: predict_segmenter
์ ๋ ฅ:
datafile: ์ฌ์ฉ๋์ง ์์
cfg: YOLO ๋ชจ๋ธ์ ์ค์ ํ์ผ ๊ฒฝ๋ก
weights: YOLO ๋ชจ๋ธ์ ๊ฐ์ค์น ํ์ผ ๊ฒฝ๋ก
filename: ์ ๋ ฅ ์ด๋ฏธ์ง ํ์ผ ๊ฒฝ๋ก. ์ด ๊ฐ์ด ์กด์ฌํ๋ฉด ์ฌ์ฉ์๊ฐ ์ด๋ฏธ์ง ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅํ์ง ์๊ณ ๋ ํจ์๋ฅผ ํธ์ถํ ์ ์์ต๋๋ค.
๋์:
์ด ํจ์๋ YOLO ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง์ ๊ฐ์ฒด๋ฅผ ์ธ์ํ๊ณ , ๊ฐ์ฒด ์์ญ์ segmentationํ์ฌ ์๊ฐํํฉ๋๋ค.
ํจ์๋ ๋ฌดํ ๋ฃจํ๋ฅผ ์คํํ๋ฉฐ, ์ฌ์ฉ์๊ฐ ์ ๋ ฅ ์ด๋ฏธ์ง ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ง์ ์ ๊ณตํ๊ฑฐ๋ filename ๋งค๊ฐ๋ณ์๋ฅผ ํตํด ๋ฏธ๋ฆฌ ์ง์ ํ ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํฉ๋๋ค.
ํจ์๋ ์ ๋ ฅ ์ด๋ฏธ์ง๋ฅผ ๋ก๋ํ๊ณ , ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๋ฉฐ, YOLO ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด์ ์์น๋ฅผ ์์ธกํ๊ณ ์๊ฐํํฉ๋๋ค.
ํจ์๋ ์์ธก๋ ๊ฐ์ฒด์ ํ๋ฅ ๊ณผ ์คํ ์๊ฐ์ ์ถ๋ ฅํฉ๋๋ค.
์ค๋ช :
char *datafile: ์ฌ์ฉ๋์ง ์๋ ๋งค๊ฐ๋ณ์์ ๋๋ค.
char *cfg: YOLO ๋ชจ๋ธ์ ์ค์ ํ์ผ ๊ฒฝ๋ก๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด ํฌ์ธํฐ์ ๋๋ค.
char *weights: YOLO ๋ชจ๋ธ์ ๊ฐ์ค์น ํ์ผ ๊ฒฝ๋ก๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด ํฌ์ธํฐ์ ๋๋ค.
char *filename: ์ ๋ ฅ ์ด๋ฏธ์ง ํ์ผ ๊ฒฝ๋ก๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด ํฌ์ธํฐ์ ๋๋ค. ์ด ๊ฐ์ด ์กด์ฌํ๋ฉด ์ฌ์ฉ์๊ฐ ์ด๋ฏธ์ง ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅํ์ง ์์๋ ๋ฉ๋๋ค.
ํจ์๋ ์ ๋ ฅ ์ด๋ฏธ์ง๋ฅผ ๋ก๋ํ๊ณ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํฉ๋๋ค.
YOLO ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ์์น๋ฅผ ์์ธกํฉ๋๋ค.
์์ธก๋ ๊ฐ์ฒด์ ํ๋ฅ ๊ณผ ์คํ ์๊ฐ์ ์ถ๋ ฅํฉ๋๋ค.
ํจ์๋ ์ ๋ ฅ ์ด๋ฏธ์ง, segmentation ๊ฒฐ๊ณผ ์ด๋ฏธ์ง ๋ฐ ์ฌ์ฉ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํฉ๋๋ค.
demo_segmenter
ํจ์ ์ด๋ฆ: demo_segmenter
์ ๋ ฅ:
char *datacfg : ๋ฐ์ดํฐ ์ค์ ํ์ผ ๊ฒฝ๋ก
char *cfg : ๋ชจ๋ธ ์ค์ ํ์ผ ๊ฒฝ๋ก
char *weights : ๋ชจ๋ธ ๊ฐ์ค์น ํ์ผ ๊ฒฝ๋ก
int cam_index : ์นด๋ฉ๋ผ ์ธ๋ฑ์ค
const char *filename : ์ ๋ ฅ ๋์์ ํ์ผ ๊ฒฝ๋ก (NULL์ผ ์๋ ์์)
๋์:
์ ๋ ฅ์ผ๋ก ๋ฐ์ ์ด๋ฏธ์ง๋ ๋์์์ ์ด์ฉํ์ฌ segmentation ๋ชจ๋ธ์ ์ฑ๋ฅ์ ์ค์๊ฐ์ผ๋ก ๋ณด์ฌ์ค
์ค๋ช :
OpenCV๊ฐ ์ค์น๋์ด ์์ด์ผ ํจ
๋ชจ๋ธ ํ์ผ๊ณผ ์ ๋ ฅ ๋ฐ์ดํฐ ํ์ผ์ ์ด์ฉํ์ฌ segmentation ๋ชจ๋ธ์ ๋ถ๋ฌ์ด
์ ๋ ฅ์ผ๋ก ์นด๋ฉ๋ผ ์ธ๋ฑ์ค๋ ๋์์ ํ์ผ์ ๋ฐ์
while ๋ฃจํ๋ฅผ ํตํด ์ ๋ ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ง์์ ์ผ๋ก ์ฒ๋ฆฌํ๋ฉฐ, ์ฒ๋ฆฌ ์๋์ ๋ฐ๋ผ FPS๋ฅผ ๊ณ์ฐํ์ฌ ์ถ๋ ฅํจ
์ ๋ ฅ ์ด๋ฏธ์ง๋ฅผ ๋ชจ๋ธ ์ ๋ ฅ ํฌ๊ธฐ์ ๋ง๊ฒ resizeํ ํ, ๋ชจ๋ธ์ ์ ๋ ฅํ์ฌ segmentation ๊ฒฐ๊ณผ๋ฅผ ์ป์
๊ฒฐ๊ณผ๋ฅผ ์๊ฐํํ์ฌ ๋ณด์ฌ์ค
๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ๊ณ , ๋ค์ ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํจ
run_segmenter
ํจ์ ์ด๋ฆ: run_segmenter
์ ๋ ฅ:
argc: int, ๋ช ๋ น์ค์์ ์ ๋ ฅ๋ ์ธ์์ ๊ฐ์
argv: char**, ๋ช ๋ น์ค์์ ์ ๋ ฅ๋ ์ธ์๋ค์ ๋ฐฐ์ด
๋์:
์ ๋ ฅ๋ ์ธ์๋ค์ ํ์ฑํ์ฌ train, test, demo์ ๋ง๊ฒ ๊ฐ๊ฐ์ ํจ์๋ฅผ ํธ์ถํ๊ฑฐ๋, ์๋ฌ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๋ค.
gpu_list, gpus, gpu, ngpus, cam_index, clear, display, data, cfg, weights, filename ๋ฑ์ ๋ณ์๋ฅผ ์ด๊ธฐํํ๊ณ ๊ฐ ํจ์์ ์ธ์๋ก ์ ๋ฌํ๋ค.
์ค๋ช :
argc๊ฐ 4๋ณด๋ค ์์ผ๋ฉด ์ฌ์ฉ๋ฒ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๊ณ ํจ์๋ฅผ ์ข ๋ฃํ๋ค.
gpu_list๊ฐ ์๋ ๊ฒฝ์ฐ, ์ผํ๋ก ๊ตฌ๋ถ๋ gpu ์ธ๋ฑ์ค๋ฅผ ํ์ฑํ์ฌ gpus์ ์ ์ฅํ๋ค.
gpu_list๊ฐ ์๋ ๊ฒฝ์ฐ, ์ ์ญ ๋ณ์๋ก ์ค์ ๋ gpu_index๋ฅผ ์ฌ์ฉํ๋ค.
cam_index, clear, display, data, cfg, weights, filename์ ๊ฐ๊ฐ ์ธ์์์ ์ถ์ถํ๋ค.
argv[2]์ ๊ฐ์ ๋ฐ๋ผ train, test, demo ํจ์ ์ค ํ๋๋ฅผ ํธ์ถํ๋ค.
Last updated
Was this helpful?