yolo_layer
forward_yolo_layer
ํจ์ ์ด๋ฆ: forward_yolo_layer
์ ๋ ฅ:
l : YOLO ๋ ์ด์ด ๊ฐ์ฒด
net : ๋คํธ์ํฌ ๊ฐ์ฒด
๋์:
YOLO ๋ ์ด์ด์ forward ์ฐ์ฐ์ ์ํํ๊ณ , ๊ฒ์ถ๋ bounding box์ ํ๋ฅ ๊ฐ ๋ฑ์ ๋ฐํํ๋ค.
์ค๋ช :
YOLO(You Only Look Once) ์๊ณ ๋ฆฌ์ฆ์ ์ด๋ฏธ์ง ๋ด ๊ฐ์ฒด ๊ฒ์ถ(object detection) ์๊ณ ๋ฆฌ์ฆ ์ค ํ๋๋ก, ์ค์๊ฐ ๊ฐ์ฒด ๊ฒ์ถ์ ์ ํฉํ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
forward_yolo_layer ํจ์๋ YOLO ๋ ์ด์ด์ forward ์ฐ์ฐ์ ์ํํ๊ณ , ๊ฒ์ถ๋ bounding box์ ํ๋ฅ ๊ฐ ๋ฑ์ ๋ฐํํ๋ ํจ์์ด๋ค.
ํจ์์ ์ ๋ ฅ์ผ๋ก๋ YOLO ๋ ์ด์ด ๊ฐ์ฒด์ ๋คํธ์ํฌ ๊ฐ์ฒด๊ฐ ์ ๋ฌ๋๋ค.
YOLO ๋ ์ด์ด ๊ฐ์ฒด๋ YOLO ๋ ์ด์ด์ ์ค์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ผ๋ฉฐ, ๋คํธ์ํฌ ๊ฐ์ฒด๋ YOLO ๋ชจ๋ธ์ ๋คํธ์ํฌ ๊ตฌ์กฐ๋ฅผ ๋ด๊ณ ์๋ค.
forward ์ฐ์ฐ์ ์ํํ๋ฉด, ์ ๋ ฅ ์ด๋ฏธ์ง ๋ด์์ ๊ฐ์ฒด์ ์์น๋ฅผ ์์ธกํ๊ณ bounding box๋ฅผ ๊ทธ๋ ค๋ธ๋ค. ์ด๋, ์์ธก๋ bounding box๋ anchor box์ ์กฐํฉ๋์ด ๊ณ์ฐ๋๋ค.
ํจ์๋ ๊ฒ์ถ๋ bounding box์ ์ขํ, ํด๋์ค ์ ๋ณด, ํ๋ฅ ๊ฐ ๋ฑ์ ๋ฐํํ๋ค.
backward_yolo_layer
ํจ์ ์ด๋ฆ: backward_yolo_layer ์ ๋ ฅ:
l: yolo_layer ํ์์ ๊ตฌ์กฐ์ฒด ๋ณ์
net: network ํ์์ ๊ตฌ์กฐ์ฒด ๋ณ์
๋์:
YOLO (You Only Look Once) layer์ backpropagation์ ์ํํ๋ ํจ์์ ๋๋ค.
l.delta์ ์ ์ฅ๋ YOLO layer์ gradient๋ฅผ ์ฌ์ฉํ์ฌ, l.batch * l.inputs ํฌ๊ธฐ์ ๋ฒกํฐ๋ฅผ ๊ณ์ฐํฉ๋๋ค.
๊ณ์ฐ๋ ๋ฒกํฐ๋ฅผ net.delta์ ๋ํฉ๋๋ค.
์ค๋ช :
YOLO layer๋ object detection์ ์์ฃผ ์ฌ์ฉ๋๋ layer ์ค ํ๋์ ๋๋ค.
์ด ํจ์๋ YOLO layer์ backpropagation์ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
l.delta๋ YOLO layer์์ ๊ฐ grid cell์์ ์์ธกํ bounding box๋ค๊ณผ ์ค์ bounding box์ ์ฐจ์ด๋ฅผ ๋ํ๋ด๋ ๊ฐ์ ๋๋ค.
์ด ํจ์๋ l.delta๋ฅผ ์ฌ์ฉํ์ฌ, ์ด์ layer์ gradient๋ฅผ ๊ณ์ฐํฉ๋๋ค.
๊ณ์ฐ๋ gradient๋ net.delta์ ์ ์ฅ๋๋ฉฐ, ์ด์ layer์ gradient ๊ณ์ฐ์ ์ฌ์ฉ๋ฉ๋๋ค.
make_yolo_layer
ํจ์ ์ด๋ฆ: make_yolo_layer
์ ๋ ฅ:
int batch: ํ ๋ฒ์ ์ฒ๋ฆฌํ ์ด๋ฏธ์ง์ ๊ฐ์
int w: ์ ๋ ฅ ์ด๋ฏธ์ง์ ๊ฐ๋ก ๊ธธ์ด
int h: ์ ๋ ฅ ์ด๋ฏธ์ง์ ์ธ๋ก ๊ธธ์ด
int n: ๊ฐ ์ธต์์ ์ฌ์ฉ๋ ์ต์ปค ๋ฐ์ค(anchor box)์ ๊ฐ์
int total: ๋ชจ๋ ์ธต์์ ์ฌ์ฉ๋ ์ต์ปค ๋ฐ์ค(anchor box)์ ์ด ๊ฐ์
int *mask: ์ฌ์ฉํ ์ต์ปค ๋ฐ์ค(anchor box)์ ์ธ๋ฑ์ค๋ฅผ ๋ํ๋ด๋ ๋ฐฐ์ด. NULL์ธ ๊ฒฝ์ฐ ๋ชจ๋ ์ต์ปค ๋ฐ์ค(anchor box)๋ฅผ ์ฌ์ฉ
int classes: ๋ถ๋ฅํ ํด๋์ค์ ๊ฐ์
๋์:
์ ๋ ฅ์ผ๋ก ๋ฐ์ batch, w, h, n, total, mask, classes ๊ฐ์ ์ด์ฉํด YOLO ๋ ์ด์ด๋ฅผ ์์ฑํ๋ค.
์์ฑ๋ ๋ ์ด์ด์ ๋ํ ์ด๊ธฐํ๋ฅผ ์ํํ๋ค.
์์ฑ๋ ๋ ์ด์ด์ forward์ backward ํจ์๋ฅผ forward_yolo_layer์ backward_yolo_layer๋ก ์ค์ ํ๋ค.
์์ฑ๋ ๋ ์ด์ด๋ฅผ ๋ฐํํ๋ค.
์ค๋ช :
YOLO ๋ ์ด์ด๋ฅผ ์์ฑํ๊ณ ์ด๊ธฐํํ๋ ํจ์์ด๋ค.
YOLO ๋ ์ด์ด๋ ์ด๋ฏธ์ง ๋ถ๋ฅ ๋ฐ ๊ฐ์ฒด ๊ฒ์ถ์ ์ฌ์ฉ๋๋ค.
batch, w, h, n, total, mask, classes ๊ฐ์ ์ ๋ ฅ์ผ๋ก ๋ฐ์ ํด๋นํ๋ YOLO ๋ ์ด์ด๋ฅผ ์์ฑํ๊ณ ์ด๊ธฐํํ๋ค.
biases, bias_updates, output, delta, cost ๋ฑ์ ๋ณ์๋ค์ ์ด๊ธฐํํ๋ค.
์์ฑ๋ ๋ ์ด์ด์ forward์ backward ํจ์๋ฅผ forward_yolo_layer์ backward_yolo_layer๋ก ์ค์ ํ๋ค.
์์ฑ๋ ๋ ์ด์ด๋ฅผ ๋ฐํํ๋ค.
correct_yolo_boxes
ํจ์ ์ด๋ฆ: correct_yolo_boxes
์ ๋ ฅ:
dets: detection ๊ตฌ์กฐ์ฒด ๋ฐฐ์ด ํฌ์ธํฐ
n: detection ๊ตฌ์กฐ์ฒด ๋ฐฐ์ด์ ํฌ๊ธฐ
w: ์ ๋ ฅ ์ด๋ฏธ์ง์ ๋๋น
h: ์ ๋ ฅ ์ด๋ฏธ์ง์ ๋์ด
netw: ๋คํธ์ํฌ ์ ๋ ฅ ์ด๋ฏธ์ง์ ๋๋น
neth: ๋คํธ์ํฌ ์ ๋ ฅ ์ด๋ฏธ์ง์ ๋์ด
relative: ์๋์ ์ธ ์ขํ๊ณ๋ฅผ ์ฌ์ฉํ ์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ ์ ์๊ฐ
๋์:
YOLO ๋ ์ด์ด์์ ์ถ๋ ฅ๋ bounding box๋ค์ ์ ๋ ฅ ์ด๋ฏธ์ง ์ขํ๊ณ์์ ์๋์ ์ธ ์ขํ๊ณ์์ ์ ๋์ ์ธ ์ขํ๊ณ๋ก ๋ณํ์ํค๋ ํจ์์ด๋ค.
์ค๋ช :
์ ๋ ฅ ์ด๋ฏธ์ง์ ๋คํธ์ํฌ ์ ๋ ฅ ์ด๋ฏธ์ง์ ํฌ๊ธฐ๋ฅผ ์ด์ฉํ์ฌ bounding box ์ขํ๋ฅผ ๋ณํ์ํค๋ ๊ณผ์ ์ ์ํํ๋ค.
๋คํธ์ํฌ ์ ๋ ฅ ์ด๋ฏธ์ง์ ํฌ๊ธฐ์ ์ ๋ ฅ ์ด๋ฏธ์ง์ ํฌ๊ธฐ๋ฅผ ๋น๊ตํ์ฌ ๋ ๊ธด ์ชฝ์ ๋ง์ถ์ด ๋น์จ์ ์ ์งํ๋ฉฐ, ์ขํ๊ฐ์ ๋ณํํ๋ค.
relative ๊ฐ์ด 0์ผ ๊ฒฝ์ฐ, ๋ณํ๋ ์ขํ๋ฅผ ์ ๋ ฅ ์ด๋ฏธ์ง ์ขํ๊ณ์์ ์ ๋์ ์ธ ์ขํ๊ณ๋ก ๋ณํํ๋ค.
yolo_num_detections
ํจ์ ์ด๋ฆ: yolo_num_detections
์ ๋ ฅ:
layer l: YOLO ๋ ์ด์ด ์ ๋ณด
float thresh: Objectness score threshold ๊ฐ
๋์:
์ ๋ ฅ์ผ๋ก ๋ค์ด์จ YOLO ๋ ์ด์ด์์, Objectness score ๊ฐ์ด threshold(thresh)๋ณด๋ค ํฐ detection์ ๊ฐ์๋ฅผ ์ธ๋ ํจ์์ด๋ค.
Objectness score ๊ฐ์ด๋, ํด๋น bounding box ์์ ๋ฌผ์ฒด๊ฐ ์๋์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ ๊ฐ์ผ๋ก, YOLO์์๋ ์ด ๊ฐ์ด threshold๋ณด๋ค ์์ผ๋ฉด ํด๋น detection์ด ๋ฌด์๋๋ค.
์ค๋ช :
for๋ฌธ์ ๋๋ฒ ๋๋ฉฐ, l.w*l.h ํฌ๊ธฐ์ ๊ทธ๋ฆฌ๋ ๋ด์์ l.n ๊ฐ์ anchor box๋ฅผ ๊ฐ์ง detection๋ค์ ๊ฒ์ฌํ๋ค.
obj_index ๋ฅผ ๊ณ์ฐํ์ฌ ํด๋น detection์ Objectness score ๊ฐ์ด threshold๋ณด๋ค ํฌ๋ฉด count ๊ฐ์ ์ฆ๊ฐ์ํจ๋ค.
์ต์ข ์ ์ผ๋ก count ๊ฐ์ ๋ฐํํ๋ค.
avg_flipped_yolo
ํจ์ ์ด๋ฆ: avg_flipped_yolo
์ ๋ ฅ:
layer l: YOLO ๋ ์ด์ด ๊ตฌ์กฐ์ฒด
๋์:
YOLO ๋ ์ด์ด์ ์ถ๋ ฅ๊ฐ์ ์ํ์ผ๋ก ๋์นญ(flip)ํ ๊ฐ๊ณผ ํ๊ท ์ ๋ด์ด ์๋ก์ด ์ถ๋ ฅ๊ฐ์ผ๋ก ๋์ฒดํ๋ ํจ์
์ ๋ ฅ์ผ๋ก ๋ค์ด์จ layer l ๊ตฌ์กฐ์ฒด์ output ๋ฐฐ์ด๊ณผ output + outputs ๋ฐฐ์ด(์ํ ๋์นญํ ๊ฐ)์ ์ฌ์ฉํจ
์ํ ๋์นญํ ๊ฐ๊ณผ์ ํ๊ท ๊ฐ์ ๊ตฌํ์ฌ
output
๋ฐฐ์ด์ ๊ฐ ์์์ ์ ์ฅํจ
์ค๋ช :
YOLO ๋ ์ด์ด์์๋ ์ ๋ ฅ ์ด๋ฏธ์ง๋ฅผ ์ฌ๋ฌ ๊ทธ๋ฆฌ๋(cell)๋ก ๋ถํ ํ๊ณ , ๊ฐ ๊ทธ๋ฆฌ๋๋ง๋ค bounding box๋ค์ ์ ๋ณด๋ฅผ ์์ธกํจ
์ด๋ bounding box๋ค์ ์์น์ ํฌ๊ธฐ๋ ์ ๋ ฅ ์ด๋ฏธ์ง์ ๋ํ ์๋์ ์ธ ๊ฐ์ผ๋ก ์ ์ฅ๋์ด ์์ผ๋ฏ๋ก, ์ด๋ฏธ์ง๊ฐ ์ํ ๋์นญ๋๋ฉด ์์ธกํ bounding box๋ค๋ ์ํ ๋์นญ๋จ
๋ฐ๋ผ์ ์ด๋ฏธ์ง๋ฅผ ์ํ ๋์นญ์ผ๋ก ๋ค์ง์ด ์์ธกํ bounding box๋ค๋ ๋์นญ์ํค๋ ์์ ์ด ํ์ํจ
์ด ํจ์๋ ์ ๋ ฅ์ผ๋ก ๋ค์ด์จ layer l ๊ตฌ์กฐ์ฒด์ output ๋ฐฐ์ด๊ณผ output + outputs ๋ฐฐ์ด(์ํ ๋์นญํ ๊ฐ)์ ์ฌ์ฉํ์ฌ, ๊ฐ bounding box์ ๋ํด ์ํ ๋์นญ๋ ๊ฐ์ ๊ณ์ฐํ ํ, ์๋ ๊ฐ๊ณผ์ ํ๊ท ์ ์๋ก์ด ๊ฐ์ผ๋ก ๋์ฒดํจ
bounding box์ ์์น์ ํฌ๊ธฐ๋ x, y, w, h 4๊ฐ์ง ๊ฐ์ผ๋ก ํํ๋จ. ์ด ํจ์๋ ์ํ ๋์นญํ ๊ฐ์ ๊ณ์ฐํ ๋, x ๊ฐ๋ง ๋ถํธ๋ฅผ ๋ฐ๊ฟ์ฃผ๊ณ ๋๋จธ์ง ๊ฐ์ ๊ทธ๋๋ก ์ ์งํจ
output ๋ฐฐ์ด์ ๊ฐ ์์์๋ ์ต์ข ์์ธก๊ฐ์ด ์ ์ฅ๋์ด ์์ผ๋ฏ๋ก, ์ด ํจ์๊ฐ ์คํ๋ ์ดํ์๋ ๋์นญ๋ ์ด๋ฏธ์ง์ ๋ํ ์์ธก๊ฐ๊ณผ ์๋ ์ด๋ฏธ์ง์ ๋ํ ์์ธก๊ฐ์ ํ๊ท ๊ฐ์ด output ๋ฐฐ์ด์ ์ ์ฅ๋จ
get_yolo_detections
ํจ์ ์ด๋ฆ: get_yolo_detections
์ ๋ ฅ:
layer l: YOLO ๋ ์ด์ด
int w: ์ ๋ ฅ ์ด๋ฏธ์ง์ ๊ฐ๋ก ํฌ๊ธฐ
int h: ์ ๋ ฅ ์ด๋ฏธ์ง์ ์ธ๋ก ํฌ๊ธฐ
int netw: YOLO ๋ชจ๋ธ ์ ๋ ฅ ์ด๋ฏธ์ง ๊ฐ๋ก ํฌ๊ธฐ
int neth: YOLO ๋ชจ๋ธ ์ ๋ ฅ ์ด๋ฏธ์ง ์ธ๋ก ํฌ๊ธฐ
float thresh: ๊ฐ์ฒด ํ์ง์ ์ฌ์ฉ๋๋ ์๊ณ๊ฐ
int *map: ํด๋์ค ๋งคํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ํฌ์ธํฐ
int relative: ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ์๋์ ์ธ ์ขํ๋ก ๋ณํํ ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ ๋ณ์ (1 or 0)
detection *dets: ๊ฐ์ฒด ํ์ง ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ detection ๊ตฌ์กฐ์ฒด ๋ฐฐ์ด
๋์:
YOLO ๋ ์ด์ด์ ์ถ๋ ฅ์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ํ์ง๋ฅผ ์ํํ๋ค.
๊ฐ๊ฐ์ ๋ฐ์ด๋ฉ ๋ฐ์ค์ ๋ํด, ํด๋น ๊ฐ์ฒด์ objectness ๊ฐ์ด ์๊ณ๊ฐ๋ณด๋ค ํฐ ๊ฒฝ์ฐ์๋ง ํ์ง ๊ฒฐ๊ณผ๋ก ์ธ์ ํ๋ค.
ํ์ง๋ ๊ฐ์ฒด์ ๋ฐ์ด๋ฉ ๋ฐ์ค ์ ๋ณด์ ํด๋์ค๋ณ ํ๋ฅ ๊ฐ์ detection ๊ตฌ์กฐ์ฒด์ ์ ์ฅํ๋ค.
์๋์ ์ธ ์ขํ๋ฅผ ์ฌ์ฉํ๋๋ก relative ๋ณ์๊ฐ 1๋ก ์ค์ ๋ ๊ฒฝ์ฐ, ๋ฐ์ด๋ฉ ๋ฐ์ค ์ขํ์ ํฌ๊ธฐ๋ฅผ ์ ๋ ฅ ์ด๋ฏธ์ง ํฌ๊ธฐ๋ก ๋ณํํ๋ค.
ํ์ง๋ ๊ฐ์ฒด ์๋ฅผ ๋ฐํํ๋ค.
์ค๋ช :
์ด ํจ์๋ YOLO ๋ ์ด์ด์ ์ถ๋ ฅ์ ์ฌ์ฉํ์ฌ ์ ๋ ฅ ์ด๋ฏธ์ง์์ ๊ฐ์ฒด๋ฅผ ํ์งํ๋ ํจ์์ด๋ค.
์ ๋ ฅ์ผ๋ก๋ YOLO ๋ ์ด์ด์ ์ ๋ ฅ ์ด๋ฏธ์ง์ ํฌ๊ธฐ, ํ์ง์ ์ฌ์ฉ๋๋ ์๊ณ๊ฐ, ํด๋์ค ๋งคํ ์ ๋ณด, ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ์๋์ ์ธ ์ขํ๋ก ๋ณํํ ์ง ์ฌ๋ถ ๋ฑ์ด ๋ค์ด์จ๋ค.
์ด ํจ์๋ ์ ๋ ฅ ์ด๋ฏธ์ง์์ ๊ฐ์ฒด๋ฅผ ํ์งํ ๊ฒฐ๊ณผ๋ฅผ detection ๊ตฌ์กฐ์ฒด ๋ฐฐ์ด๋ก ๋ฐํํ๋ค.
๋ฐํ๋ detection ๊ตฌ์กฐ์ฒด์๋ ๊ฐ ๊ฐ์ฒด์ ๋ฐ์ด๋ฉ ๋ฐ์ค ์ ๋ณด์ ํด๋์ค๋ณ ํ๋ฅ ๊ฐ์ด ์ ์ฅ๋์ด ์๋ค.
Last updated
Was this helpful?