yolo
train_yolo
ํจ์ ์ด๋ฆ: train_yolo
์ ๋ ฅ:
char *cfgfile: YOLO ๋คํธ์ํฌ ๊ตฌ์ฑ ํ์ผ ๊ฒฝ๋ก
char *weightfile: ์ฌ์ ํ์ต๋ ๊ฐ์ค์น ํ์ผ ๊ฒฝ๋ก
๋์:
YOLO ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ๊ฒ์ถ์ ํ์ตํ๋ ํจ์์ด๋ค.
์ฃผ์ด์ง ๊ตฌ์ฑ ํ์ผ(cfgfile)๊ณผ ๊ฐ์ค์น ํ์ผ(weightfile)์ ์ฌ์ฉํ์ฌ ๋คํธ์ํฌ๋ฅผ ์ด๊ธฐํํ๋ค.
ํ์ต ์ด๋ฏธ์ง ๊ฒฝ๋ก(train_images)์ ๋ฐฑ์ ๋๋ ํ ๋ฆฌ ๊ฒฝ๋ก(backup_directory)๋ฅผ ์ค์ ํ๋ค.
๋คํธ์ํฌ์ ํ์ต ๊ด๋ จ ์ค์ ์ ์ถ๋ ฅํ๋ค(ํ์ต๋ฅ , ๋ชจ๋ฉํ , ๊ฐ์ ).
๋คํธ์ํฌ๋ฅผ ํ์ตํ๊ธฐ ์ํ ๋ฐ์ดํฐ(train)์ ๋ฒํผ(buffer)๋ฅผ ์ด๊ธฐํํ๋ค.
์ฃผ์ด์ง ์ด๋ฏธ์ง ๊ฒฝ๋ก์์ ํ์ต ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ๋ฐฐ์น ๋จ์๋ก ๊ฐ์ ธ์ค๋ ์ค๋ ๋๋ฅผ ์์ฑํ๋ค.
์ต๋ ๋ฐฐ์น ์(net->max_batches)์ ๋๋ฌํ ๋๊น์ง ๋ฐ๋ณต๋ฌธ์ ์คํํ์ฌ ๋คํธ์ํฌ๋ฅผ ํ์ตํ๋ค.
๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ๊ณ ํ์ต์ ์ํํ ํ ์์ค(loss)๋ฅผ ๊ณ์ฐํ๊ณ , ์ด์ ์์ค๊ฐ(avg_loss)์ ์ ๋ฐ์ดํธํ๋ค.
ํ์ฌ ํ์ต ์๋(get_current_rate(net)), ๊ฒฝ๊ณผ ์๊ฐ, ์ฒ๋ฆฌํ ์ด๋ฏธ์ง ์ ๋ฑ์ ์ ๋ณด๋ฅผ ์ถ๋ ฅํ๋ค.
์ผ์ ์ฃผ๊ธฐ๋ง๋ค ๋๋ ์ฒ์ 1000ํ ํ์ต ํ 100ํ๋ง๋ค ๊ฐ์ค์น๋ฅผ ๋ฐฑ์ ๋๋ ํ ๋ฆฌ์ ์ ์ฅํ๋ค.
๋ฐ๋ณต๋ฌธ์ด ๋๋ ํ ์ต์ข ๊ฐ์ค์น๋ฅผ ์ ์ฅํ๋ค.
์ค๋ช :
์ด ํจ์๋ YOLO (You Only Look Once) ๊ฐ์ฒด ๊ฒ์ถ ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ๊ฒ์ถ์ ํ์ตํ๋ ๊ธฐ๋ฅ์ ์ํํ๋ค.
ํ์ต์ ๋คํธ์ํฌ ๊ตฌ์ฑ ํ์ผ(cfgfile)๊ณผ ์ฌ์ ํ์ต๋ ๊ฐ์ค์น ํ์ผ(weightfile)์ ๋ก๋ํ์ฌ ์ด๊ธฐํ๋ ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ๋ค.
train_images ๋ณ์์๋ ํ์ต์ ์ฌ์ฉํ ์ด๋ฏธ์ง ๊ฒฝ๋ก๊ฐ ์ค์ ๋์ด ์๋ค.
backup_directory ๋ณ์์๋ ํ์ต ์ค ๋ฐฑ์ ํ์ผ์ ์ ์ฅํ ๋๋ ํ ๋ฆฌ ๊ฒฝ๋ก๊ฐ ์ค์ ๋์ด ์๋ค.
ํ์ต์ ๋ฐ๋ณต์ ์ผ๋ก ์ํ๋๋ฉฐ, ๋คํธ์ํฌ๋ฅผ ํ์ตํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ๊ณ ํด๋น ๋ฐ์ดํฐ๋ก ๋คํธ์ํฌ๋ฅผ ์ ๋ฐ์ดํธํ๋ค.
ํ์ต์ ์ต๋ ๋ฐฐ์น ์(net->max_batches)์ ๋๋ฌํ ๋๊น์ง ๊ณ์๋๋ค.
ํ์ต ๊ณผ์ ์์ ์์ค(loss)์ ๊ณ์ฐํ๊ณ , ํ๊ท ์์ค๊ฐ(avg_loss)์ ์ ๋ฐ์ดํธํ์ฌ ํ์ต ์งํ ์ํฉ์ ๋ชจ๋ํฐ๋งํ๋ค.
์ฃผ๊ธฐ์ ์ผ๋ก ๊ฐ์ค์น๋ฅผ ๋ฐฑ์ ๋๋ ํ ๋ฆฌ์ ์ ์ฅํ์ฌ ํ์ต ์ค๊ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ดํ ์ ์๋ค.
print_yolo_detections
ํจ์ ์ด๋ฆ: print_yolo_detections
์ ๋ ฅ:
FILE **fps: ์ถ๋ ฅ ํ์ผ ํฌ์ธํฐ ๋ฐฐ์ด
char *id: ์ด๋ฏธ์ง id
int total: ์ธ์๋ ๊ฐ์ฒด์ ์ด ๊ฐ์
int classes: ๊ฐ์ฒด ํด๋์ค์ ์
int w: ์ด๋ฏธ์ง์ ๋๋น
int h: ์ด๋ฏธ์ง์ ๋์ด
detection *dets: ๊ฐ์ฒด ์ธ์ ๊ฒฐ๊ณผ ๋ฐฐ์ด ํฌ์ธํฐ
๋์:
๊ฐ์ฒด ์ธ์ ๊ฒฐ๊ณผ ๋ฐฐ์ด์์ ์ถ๋ก ๋ bounding box ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ถ๋ ฅ ํ์ผ์ ๊ฐ์ฒด ๊ฐ์ง ์ ๋ณด๋ฅผ ์ด๋ค.
์ถ๋ ฅ ํ์ผ์ ํด๋์ค ์ ๋งํผ์ ๊ฐ์๋ฅผ ๊ฐ์ง๋ฉฐ, ํด๋์ค์ ๋ฐ๋ผ ํด๋น ํด๋์ค ํ์ผ์ ์ฐ์ฌ์ง๋ค.
์ค๋ช :
ํจ์๋ YOLO (You Only Look Once) ๊ฐ์ฒด ๊ฒ์ถ ๋ชจ๋ธ์์ ๊ฐ์ง๋ ๊ฐ์ฒด๋ฅผ ํ์ผ์ ์ถ๋ ฅํ๋ ๊ธฐ๋ฅ์ ํ๋ค.
ํจ์๋ ๊ฐ ํด๋์ค์ ํด๋นํ๋ ํ์ผ ํฌ์ธํฐ๋ฅผ ๋ด์ ํ์ผ ํฌ์ธํฐ ๋ฐฐ์ด๊ณผ, ์ด๋ฏธ์ง์ id, ๊ฐ์ฒด ์ด ๊ฐ์, ๊ฐ์ฒด ํด๋์ค ์, ์ด๋ฏธ์ง์ ๋๋น์ ๋์ด, ๊ฐ์ฒด ์ธ์ ๊ฒฐ๊ณผ ๋ฐฐ์ด ํฌ์ธํฐ๋ฅผ ์ ๋ ฅ์ผ๋ก ๋ฐ๋๋ค.
๊ฐ์ฒด ์ธ์ ๊ฒฐ๊ณผ ๋ฐฐ์ด์์ ์ถ๋ก ๋ bounding box ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ ํด๋์ค์ ๋ํด ์ ์ ํ ์ถ๋ ฅ์ ํ์ผ์ ์ด๋ค.
์ถ๋ ฅ ํ์ผ์ ํด๋์ค ์ ๋งํผ์ ๊ฐ์๋ฅผ ๊ฐ์ง๋ฉฐ, ํด๋์ค์ ๋ฐ๋ผ ํด๋น ํด๋์ค ํ์ผ์ ์ฐ์ฌ์ง๋ค.
์ถ๋ ฅ ํ์์ "์ด๋ฏธ์ง id ํ๋ฅ x_min y_min x_max y_max" ์ด๋ฉฐ, bbox ์ขํ๋ ์ ๊ทํ(normalized) ๋ ์ํ๋ก ์ถ๋ ฅ๋๋ค.
validate_yolo
ํจ์ ์ด๋ฆ: validate_yolo
์ ๋ ฅ:
char *cfg: YOLO ๋คํธ์ํฌ ๊ตฌ์ฑ ํ์ผ ๊ฒฝ๋ก
char *weights: ์ฌ์ ํ์ต๋ ๊ฐ์ค์น ํ์ผ ๊ฒฝ๋ก
๋์:
YOLO ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ๊ฒ์ถ์ ์ ํจ์ฑ์ ๊ฒ์ฆํ๋ ํจ์์ด๋ค.
์ฃผ์ด์ง ๊ตฌ์ฑ ํ์ผ(cfg)๊ณผ ๊ฐ์ค์น ํ์ผ(weights)์ ์ฌ์ฉํ์ฌ ๋คํธ์ํฌ๋ฅผ ์ด๊ธฐํํ๋ค.
๋คํธ์ํฌ์ ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ 1๋ก ์ค์ ํ๋ค.
๋คํธ์ํฌ์ ํ์ต๋ฅ (learning rate), ๋ชจ๋ฉํ (momentum), ๊ฐ์ (decay) ๊ฐ์ ์ถ๋ ฅํ๋ค.
์๋ ๊ฐ์ ์ค์ ํ๋ค.
๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ ํ์ผ ๊ฒฝ๋ก์ ๋ฆฌ์คํธ๋ฅผ ์ด๊ธฐํํ๋ค.
VOC ๋ฐ์ดํฐ์ ์ ํ ์คํธ ์ด๋ฏธ์ง ๊ฒฝ๋ก๋ฅผ ๊ฐ์ ธ์จ๋ค.
VOC ํด๋์ค์ ๊ฐ์, ๋คํธ์ํฌ์ ๋ง์ง๋ง ๋ ์ด์ด ์ ๋ณด๋ฅผ ๊ฐ์ ธ์จ๋ค.
ํด๋์ค๋ณ๋ก ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ ํ์ผ ํฌ์ธํฐ ๋ฐฐ์ด์ ํ ๋นํ๊ณ ์ด๊ธฐํํ๋ค.
์ด๋ฏธ์ง ๊ฐ์(m)๋ฅผ ๊ฐ์ ธ์จ๋ค.
๋ฐ๋ณต๋ฌธ์ ํตํด ๋ค์์ ์ํํ๋ค:
์ด๋ฏธ์ง ๊ฒฝ๋ก(path)๋ฅผ ๊ฐ์ ธ์ค๊ณ , ์ด๋ฏธ์ง์ ํฌ๊ธฐ๊ฐ ์กฐ์ ๋ ์ด๋ฏธ์ง๋ฅผ ๋ก๋ํ๋ค.
์ด๋ฏธ์ง์ ๋ํ ์๋ณ์(id)๋ฅผ ์์ฑํ๋ค.
ํฌ๊ธฐ๊ฐ ์กฐ์ ๋ ์ด๋ฏธ์ง๋ฅผ ๋คํธ์ํฌ์ ์ ๋ ฅํ์ฌ ๊ฐ์ฒด๋ฅผ ์์ธกํ๋ค.
๋คํธ์ํฌ ์ถ๋ ฅ์ผ๋ก๋ถํฐ ๊ฐ์ฒด ๋ฐ์ค(dets)๋ฅผ ๊ฐ์ ธ์จ๋ค. ์๊ณ๊ฐ(thresh)์ ์ ์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ํํฐ๋งํ๋ค.
๊ฐ์ฒด ๊ฒ์ถ ๊ฒฐ๊ณผ๋ฅผ ํ์ผ์ ์ถ๋ ฅํ๋ค.
ํ ๋น๋ ๋ฆฌ์์ค๋ฅผ ํด์ ํ๋ค.
์ด ๊ฒ์ถ ์๊ฐ์ ์ถ๋ ฅํ๋ค.
์ค๋ช :
์ด ํจ์๋ YOLO (You Only Look Once) ๊ฐ์ฒด ๊ฒ์ถ ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ๊ฒ์ถ์ ์ ํจ์ฑ์ ๊ฒ์ฆํ๋ ๊ธฐ๋ฅ์ ์ํํ๋ค.
๊ฒ์ฆ์ ์ฃผ์ด์ง ๊ตฌ์ฑ ํ์ผ(cfg)๊ณผ ์ฌ์ ํ์ต๋ ๊ฐ์ค์น ํ์ผ(weights)์ ๋ก๋ํ์ฌ ์ด๊ธฐํ๋ ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ๋ค.
VOC ๋ฐ์ดํฐ์ ์ ํ ์คํธ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ๊ฒ์ถ ๊ฒฐ๊ณผ๋ฅผ ํ๊ฐํ๋ค.
๊ฐ์ฒด ๋ฐ์ค๋ฅผ ์ถ๋ ฅํ๋ ํ์ผ ํฌ์ธํฐ ๋ฐฐ์ด์ ํ ๋นํ๊ณ ์ด๊ธฐํํ๋ค.
์ด๋ฏธ์ง๋ฅผ ์ฌ๋ฌ ์ค๋ ๋๋ก ์ฒ๋ฆฌํ์ฌ ๋ณ๋ ฌ๋ก ์คํํ๋ฉฐ, ๊ฐ์ฒด ๊ฒ์ถ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค.
์ต์ข ๊ฒ์ถ ์๊ฐ์ ์ถ๋ ฅํ์ฌ ์ ์ฒด ์ํ ์๊ฐ์ ์ธก์ ํ๋ค.
validate_yolo_recall
ํจ์ ์ด๋ฆ: validate_yolo_recall
์ ๋ ฅ:
char *cfg: YOLO ๋คํธ์ํฌ ๊ตฌ์ฑ ํ์ผ ๊ฒฝ๋ก
char *weights: ์ฌ์ ํ์ต๋ ๊ฐ์ค์น ํ์ผ ๊ฒฝ๋ก
๋์:
YOLO ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ๊ฒ์ถ์ ์ฌํ์จ(recall)์ ๊ฒ์ฆํ๋ ํจ์์ด๋ค.
์ฃผ์ด์ง ๊ตฌ์ฑ ํ์ผ(cfg)๊ณผ ๊ฐ์ค์น ํ์ผ(weights)์ ์ฌ์ฉํ์ฌ ๋คํธ์ํฌ๋ฅผ ์ด๊ธฐํํ๋ค.
๋คํธ์ํฌ์ ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ 1๋ก ์ค์ ํ๋ค.
๋คํธ์ํฌ์ ํ์ต๋ฅ (learning rate), ๋ชจ๋ฉํ (momentum), ๊ฐ์ (decay) ๊ฐ์ ์ถ๋ ฅํ๋ค.
๋์ ์๋๋ฅผ ์ค์ ํ๋ค.
๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ ํ์ผ ๊ฒฝ๋ก์ ๋ฆฌ์คํธ๋ฅผ ์ด๊ธฐํํ๋ค.
VOC ๋ฐ์ดํฐ์ ์ ํ ์คํธ ์ด๋ฏธ์ง ๊ฒฝ๋ก๋ฅผ ๊ฐ์ ธ์จ๋ค.
VOC ํด๋์ค์ ๊ฐ์, ๋คํธ์ํฌ์ ๋ง์ง๋ง ๋ ์ด์ด ์ ๋ณด, ๊ทธ๋ฆฌ๊ณ ๋คํธ์ํฌ์ ์ ๋ ฅ ํฌ๊ธฐ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์จ๋ค.
ํด๋์ค๋ณ๋ก ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ ํ์ผ ํฌ์ธํฐ ๋ฐฐ์ด์ ํ ๋นํ๊ณ ์ด๊ธฐํํ๋ค.
์ด๋ฏธ์ง ๊ฐ์(m)๋ฅผ ๊ฐ์ ธ์จ๋ค.
์ด ์์ธก ์(total), ์ ํํ ์์ธก ์(correct), ์ ์ ์(proposals), ํ๊ท IOU(avg_iou)๋ฅผ ์ด๊ธฐํํ๋ค.
์ด๋ฏธ์ง ๊ฐ์(m)๋งํผ ๋ฐ๋ณตํ๋ฉด์ ๋ค์์ ์ํํ๋ค:
์ด๋ฏธ์ง ๊ฒฝ๋ก(path)๋ฅผ ๊ฐ์ ธ์จ๋ค.
์๋ณธ ์ด๋ฏธ์ง๋ฅผ ๋ก๋ํ๊ณ , ๋คํธ์ํฌ์ ์ ๋ ฅ ํฌ๊ธฐ์ ๋ง๊ฒ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๋ค.
์ด๋ฏธ์ง์ ์๋ณ์(id)๋ฅผ ์์ฑํ๋ค.
ํฌ๊ธฐ๊ฐ ์กฐ์ ๋ ์ด๋ฏธ์ง๋ฅผ ๋คํธ์ํฌ์ ์ ๋ ฅํ์ฌ ๊ฐ์ฒด๋ฅผ ์์ธกํ๋ค.
๋คํธ์ํฌ ์ถ๋ ฅ์ผ๋ก๋ถํฐ ๊ฐ์ฒด ๋ฐ์ค(dets)๋ฅผ ๊ฐ์ ธ์จ๋ค. ์๊ณ๊ฐ(thresh)์ ์ ์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ํํฐ๋งํ๋ค.
ํด๋น ์ด๋ฏธ์ง์ ๋ํ ์ ๋ต(label) ํ์ผ ๊ฒฝ๋ก(labelpath)๋ฅผ ์์ฑํ๋ค.
์ ๋ต(label) ํ์ผ์ ์ฝ์ด ๊ฐ์ฒด ๋ฐ์ค(truth)๋ฅผ ๊ฐ์ ธ์จ๋ค.
๊ฐ์ฒด ์ ์ ์(proposals)๋ฅผ ๊ณ์ฐํ๋ค.
์ ๋ต(label)๊ณผ ์์ธก ๊ฒฐ๊ณผ๋ฅผ ๋น๊ตํ์ฌ ์ฌํ์จ์ ๊ณ์ฐํ๋ค.
๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค.
์ค๋ช :
์ด ํจ์๋ YOLO (You Only Look Once) ๊ฐ์ฒด ๊ฒ์ถ ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ๊ฒ์ถ์ ์ฌํ์จ(recall)์ ๊ฒ์ฆํ๋ ๊ธฐ๋ฅ์ ์ํํ๋ค.
๊ฒ์ฆ์ ์ฃผ์ด์ง ๊ตฌ์ฑ ํ์ผ(cfg)๊ณผ ์ฌ์ ํ์ต๋ ๊ฐ์ค์น ํ์ผ(weights)์ ๋ก๋ํ์ฌ ์ด๊ธฐํ๋ ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ๋ค.
VOC ๋ฐ์ดํฐ์ ์ ํ ์คํธ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ๊ฒ์ถ ๊ฒฐ๊ณผ๋ฅผ ํ๊ฐํ๋ค.
test_yolo
ํจ์ ์ด๋ฆ: test_yolo
์ ๋ ฅ:
char *cfgfile: YOLO ๋คํธ์ํฌ ๊ตฌ์ฑ ํ์ผ ๊ฒฝ๋ก
char *weightfile: ์ฌ์ ํ์ต๋ ๊ฐ์ค์น ํ์ผ ๊ฒฝ๋ก
char *filename: ํ ์คํธํ ์ด๋ฏธ์ง ํ์ผ ๊ฒฝ๋ก (์ ํ์ )
float thresh: ๊ฐ์ฒด ๊ฒ์ถ ์๊ณ๊ฐ
๋์:
YOLO ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ๊ฒ์ถ์ ํ ์คํธํ๋ ํจ์์ด๋ค.
์ฃผ์ด์ง ๊ตฌ์ฑ ํ์ผ(cfgfile)๊ณผ ๊ฐ์ค์น ํ์ผ(weightfile)์ ์ฌ์ฉํ์ฌ ๋คํธ์ํฌ๋ฅผ ์ด๊ธฐํํ๋ค.
๊ฐ์ฒด ๊ฒ์ถ ๊ฒฐ๊ณผ๋ฅผ ์๊ฐํํ๊ธฐ ์ํด ์ํ๋ฒณ ์ด๋ฏธ์ง(alphabet)๋ฅผ ๋ก๋ํ๋ค.
๋คํธ์ํฌ์ ๋ง์ง๋ง ๋ ์ด์ด(layer) ์ ๋ณด๋ฅผ ๊ฐ์ ธ์จ๋ค.
๋คํธ์ํฌ์ ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ 1๋ก ์ค์ ํ๋ค.
๋์ ์๋๋ฅผ ์ค์ ํ๋ค.
ํ ์คํธํ ์ด๋ฏธ์ง ํ์ผ ๊ฒฝ๋ก(filename)๊ฐ ์ฃผ์ด์ง ๊ฒฝ์ฐ ํด๋น ํ์ผ๋ก ์ค์ ํ๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฌ์ฉ์๋ก๋ถํฐ ์ด๋ฏธ์ง ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค.
์ ๋ ฅ๋ ์ด๋ฏธ์ง๋ฅผ ๋ก๋ํ๊ณ , ๋คํธ์ํฌ์ ์ ๋ ฅ ํฌ๊ธฐ์ ๋ง๊ฒ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๋ค.
ํฌ๊ธฐ๊ฐ ์กฐ์ ๋ ์ด๋ฏธ์ง๋ฅผ ๋คํธ์ํฌ์ ์ ๋ ฅํ์ฌ ๊ฐ์ฒด๋ฅผ ์์ธกํ๋ค.
์์ธก ์๊ฐ์ ์ธก์ ํ๊ณ ์ถ๋ ฅํ๋ค.
๋คํธ์ํฌ์ ์ถ๋ ฅ์ผ๋ก๋ถํฐ ๊ฐ์ฒด ๋ฐ์ค(dets)๋ฅผ ๊ฐ์ ธ์จ๋ค. ์๊ณ๊ฐ(thresh)์ ์ ์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ํํฐ๋งํ๋ค.
๊ฐ์ฒด๋ฅผ ์๊ฐํํ์ฌ ์๋ณธ ์ด๋ฏธ์ง์ ๊ทธ๋ฆฐ๋ค.
๊ฐ์ฒด ๊ฒ์ถ ๊ฒฐ๊ณผ ์ด๋ฏธ์ง๋ฅผ "predictions" ์ด๋ฆ์ผ๋ก ์ ์ฅํ๋ค.
๊ฒฐ๊ณผ ์ด๋ฏธ์ง๋ฅผ ๋ณด์ฌ์ค๋ค.
๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ๋ค.
ํ ์คํธํ ์ด๋ฏธ์ง ํ์ผ ๊ฒฝ๋ก(filename)๊ฐ ์ฃผ์ด์ง ๊ฒฝ์ฐ ๋ฐ๋ณต๋ฌธ์ ์ข ๋ฃํ๋ค.
์ค๋ช :
์ด ํจ์๋ YOLO (You Only Look Once) ๊ฐ์ฒด ๊ฒ์ถ ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง์ ๊ฐ์ฒด๋ฅผ ํ ์คํธํ๋ ๊ธฐ๋ฅ์ ์ํํ๋ค.
ํ ์คํธ๋ ์ฃผ์ด์ง ๊ตฌ์ฑ ํ์ผ(cfgfile)๊ณผ ์ฌ์ ํ์ต๋ ๊ฐ์ค์น ํ์ผ(weightfile)์ ๋ก๋ํ์ฌ ์ด๊ธฐํ๋ ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ๋ค.
ํ ์คํธํ ์ด๋ฏธ์ง ํ์ผ ๊ฒฝ๋ก(filename)๊ฐ ์ฃผ์ด์ง๋ฉด ํด๋น ์ด๋ฏธ์ง๋ก ํ ์คํธ๋ฅผ ์ํํ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฌ์ฉ์๋ก๋ถํฐ ์ด๋ฏธ์ง ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅ๋ฐ์ ํ ์คํธํ๋ค.
๊ฐ์ฒด ๊ฒ์ถ ๊ฒฐ๊ณผ๋ ๊ฐ์ฒด ๋ฐ์ค(dets)๋ฅผ ์๊ฐํํ์ฌ ์๋ณธ ์ด๋ฏธ์ง์ ๊ทธ๋ฆฌ๊ณ , "predictions"๋ผ๋ ์ด๋ฆ์ผ๋ก ๊ฒฐ๊ณผ ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ๋ค.
ํ ์คํธ๋ ์ฌ์ฉ์๊ฐ ์ข ๋ฃํ๊ธธ ์ํ ๋๊น์ง ๊ณ์ํด์ ์ด๋ฏธ์ง๋ฅผ ์ ๋ ฅ๋ฐ์ ํ ์คํธํ ์ ์๋ค.
run_yolo
ํจ์ ์ด๋ฆ: run_yolo
์ ๋ ฅ:
argc: ์ ์ํ ๋งค๊ฐ๋ณ์. ๋ช ๋ น์ค์์ ์ ๋ฌ๋ ์ธ์(argument)์ ๊ฐ์.
argv: ๋ฌธ์์ด ๋ฐฐ์ด ๋งค๊ฐ๋ณ์. ๋ช ๋ น์ค์์ ์ ๋ฌ๋ ์ธ์์ ๋ฐฐ์ด.
๋์:
prefix: ๋ฌธ์์ด ํฌ์ธํฐ ๋ณ์. "-prefix" ์ต์ ์ ๊ฐ์ ์ฐพ์ ํ ๋นํ๋ค.
thresh: ๋ถ๋ ์์์ ๋ณ์. "-thresh" ์ต์ ์ ๊ฐ์ ์ฐพ์ ํ ๋นํ๋ค. ๊ธฐ๋ณธ๊ฐ์ 0.2์ด๋ค.
cam_index: ์ ์ํ ๋ณ์. "-c" ์ต์ ์ ๊ฐ์ ์ฐพ์ ํ ๋นํ๋ค. ๊ธฐ๋ณธ๊ฐ์ 0์ด๋ค.
frame_skip: ์ ์ํ ๋ณ์. "-s" ์ต์ ์ ๊ฐ์ ์ฐพ์ ํ ๋นํ๋ค. ๊ธฐ๋ณธ๊ฐ์ 0์ด๋ค.
argc๊ฐ 4๋ณด๋ค ์์ผ๋ฉด, ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๊ณ ํจ์๋ฅผ ์ข ๋ฃํ๋ค.
avg: ์ ์ํ ๋ณ์. "-avg" ์ต์ ์ ๊ฐ์ ์ฐพ์ ํ ๋นํ๋ค. ๊ธฐ๋ณธ๊ฐ์ 1์ด๋ค.
cfg: ๋ฌธ์์ด ํฌ์ธํฐ ๋ณ์. argv[3]์ ๊ฐ์ ํ ๋นํ๋ค.
weights: ๋ฌธ์์ด ํฌ์ธํฐ ๋ณ์. argc๊ฐ 4๋ณด๋ค ํฌ๋ฉด argv[4]์ ๊ฐ์ ํ ๋นํ๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด 0์ ํ ๋นํ๋ค.
filename: ๋ฌธ์์ด ํฌ์ธํฐ ๋ณ์. argc๊ฐ 5๋ณด๋ค ํฌ๋ฉด argv[5]์ ๊ฐ์ ํ ๋นํ๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด 0์ ํ ๋นํ๋ค.
argv[2]์ ๊ฐ์ด "test"์ ๋์ผํ๋ฉด test_yolo(cfg, weights, filename, thresh) ํจ์๋ฅผ ํธ์ถํ๋ค.
argv[2]์ ๊ฐ์ด "train"๊ณผ ๋์ผํ๋ฉด train_yolo(cfg, weights) ํจ์๋ฅผ ํธ์ถํ๋ค.
argv[2]์ ๊ฐ์ด "valid"์ ๋์ผํ๋ฉด validate_yolo(cfg, weights) ํจ์๋ฅผ ํธ์ถํ๋ค.
argv[2]์ ๊ฐ์ด "recall"๊ณผ ๋์ผํ๋ฉด validate_yolo_recall(cfg, weights) ํจ์๋ฅผ ํธ์ถํ๋ค.
argv[2]์ ๊ฐ์ด "demo"์ ๋์ผํ๋ฉด demo(cfg, weights, thresh, cam_index, filename, voc_names, 20, frame_skip, prefix, avg, .5, 0,0,0,0) ํจ์๋ฅผ ํธ์ถํ๋ค.
์ค๋ช :
์ด ํจ์๋ ๋ช ๋ น์ค ์ธ์๋ฅผ ๋ถ์ํ๊ณ ํด๋นํ๋ ๋์์ ์ํํ๋ ํจ์์ ๋๋ค.
์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง
argc
์argv
๋ฅผ ์ฌ์ฉํ์ฌ ์ต์ ๊ณผ ๊ฐ๋ค์ ์ฐพ๊ณ , ํด๋นํ๋ ๋์์ ์ํํ๋ ๋ค๋ฅธ ํจ์๋ค์ ํธ์ถํฉ๋๋ค.๋์์
argv[2]
์ ๊ฐ์ ๋ฐ๋ผ ๊ฒฐ์ ๋๋ฉฐ, ๊ฐ ๋์์๋ ์ถ๊ฐ์ ์ธ ์ธ์๋ค์ด ํ์ํ ์ ์์ต๋๋ค.๋ง์ฝ
argc
๊ฐ 4๋ณด๋ค ์์ผ๋ฉด ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๊ณ ํจ์๋ฅผ ์ข ๋ฃํฉ๋๋ค.
Last updated
Was this helpful?