- Object Detection (1): hyoeun-log.tistory.com/entry/WEEK6-Object-Detection-1
- classification / object localization / object detection
- object localization
- landmark detection
- Object Detection (2): hyoeun-log.tistory.com/entry/WEEK6-Object-Detection-2
- sliding window detection
- convolutional implementation of sliding windows
- bounding box prediction
- IOU (intersection of union)
- non-max suppression
- anchor boxes
- YOLO
4. sliding window detection
์๋์ฐจ detection์ ์ํํ๊ณ ์ถ๋ค๋ฉด,
๋จผ์ (1) ์๋์ฐจ๊ฐ ์กด์ฌํ๋ ์ด๋ฏธ์ง์ (2) ์๋์ฐจ๊ฐ ์กด์ฌํ์ง ์๋ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ง๊ณ classification์ ์ํํ๋ CNN์ ํ์ตํ๋ค.
์ด ๋ ๋ค์ํ filter๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ๊ฐ์ ๋ชจ๋ธ์ ํ์ตํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์ํ scale์ filter๋ฅผ ์ด์ฉํด ํ์ตํ "๋ชจ๋ธ"์ ์ด๋ฏธ์ง์ ์ผ์ชฝ ์๋ถํฐ ์ค๋ฅธ์ชฝ ์๋๊น์ง slidingํ๋ฉฐ
์ด๋ฏธ์ง์ ๊ฐ ๋ถ๋ถ์์ ์๋์ฐจ๊ฐ ์กด์ฌํ๋์ง ์์ธก๊ฐ์ ๊ตฌํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ๊ฒฐ๊ณผ๋ฅผ ์ข ํฉํ์ฌ object detection์ ์ํํ๋ค.
ํ์ง๋ง sliding window ๋ฐฉ์์ผ๋ก object detection์ ์ํํ๋ ๊ฒ์ ๊ณ์ฐ๋น์ฉ์ด ๋งค์ฐ ํฌ๋ค.
filter์ ๊ฐ์๊ฐ ๋ง์์๋ก filter์ ํฌ๊ธฐ๊ฐ ์์์๋ก ์ ํ๋๋ ๋์์ง์ง๋ง, ๊ณ์ฐ๋น์ฉ์ด ์ปค์ง๊ณ
filter์ ๊ฐ์๊ฐ ์ ์์๋ก filter์ ํฌ๊ธฐ๊ฐ ์์์๋ก ๊ณ์ฐ๋น์ฉ์ ๋ฎ์์ง์ง๋ง, ์ ํ๋ ๋ํ ๋ฎ์์ง๊ฒ ๋๋ค.
์ด๋ฌํ ๋ฌธ์ ์ ์ ์๋์ convolutional neural network๋ฅผ ์ด์ฉํด ํด๊ฒฐํ๊ณ ์ ํ๋ค.
5. convolutional implementation of sliding windows
object detection์์๋ FC layer๋ฅผ ์ฌ์ฉํ ์์ ๋ชจ๋ธ ๋์ , conv layer๋ฅผ ์ฌ์ฉํ ์๋์ ๋ชจ๋ธ์ ์ฌ์ฉํ๋ค.
FC์ ๋ฌ๋ฆฌ 5*5, 1*1 conv layer๋ฅผ ํต๊ณผ์์ผฐ์ง๋ง ์ํ์ ์ผ๋ก๋ ๋์ผํ ์ฐ์ฐ์ ์ํํ๋ค.
๊ทธ๋ ๋ค๋ฉด ์ ๊ตณ์ด FC layer๋ฅผ conv layer๋ก ๋ฐ๊พธ์ด ์ฌ์ฉํ๋๊ฐ?
๋ชจ๋ธ์ output shape๋ฅผ ํ์ธํ๋ฉด ๊ทธ ๋ชฉ์ ์ ํ์ ํ ์ ์๋ค.
์ฐ๋ฆฌ๊ฐ ์ํ๋ ๋ชจ๋ธ์ output์ 8*8*4์ ๊ฐ์ ํํ์ด๊ธฐ ๋๋ฌธ์ FC๊ฐ ์๋ conv layer๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
8*8*4 output์ด ์ด๋ ํ ์๋ฏธ์ธ์ง๋ ์๋์์ ๋ค๋ฃจ๋๋ก ํ๋ค.
(์ถ๊ฐ์ ์ผ๋ก ์ฌ๊ธฐ์์ output node์ ์๊ฐ 4๊ฐ์ธ ์ด์ ๋ [๋ณดํ์, ์๋์ฐจ, ์คํ ๋ฐ์ด, ๋ฐฐ๊ฒฝ] object๋ฅผ ๋์์ผ๋ก ํ๊ธฐ ๋๋ฌธ์ด๋ค.)
input image(16*16*3)์ ํ๋์ ๋ถ๋ถ์ด ์ฌ๋ฌ๊ฐ์ conv layer๋ฅผ ์ง๋๋ฉด output(2*2*4)์ ํ๋์ ๋ค๋ชจ ํ ์นธ์ ๋์๋๋ค.
๋ง์ฝ output์ ํ๋์ ๋ถ๋ถ์์ [๋ณดํ์, ์๋์ฐจ, ์คํ ๋ฐ์ด, ๋ฐฐ๊ฒฝ] = [0.9, 0.05, 0.05, 0] ์ด๋ฐ์์ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค๋ฉด
input image์ ํ๋์ ๋ถ๋ถ์ "๋ณดํ์" object๊ฐ ์กด์ฌํ๋ค๊ณ ํ๋จํ๋ ๊ฒ์ด๋ค.
์ด๋ ๊ฒ naive sliding window ๋ฐฉ์์ด ์๋ conv layer๋ฅผ ํ์ฉํ sliding window๋ฅผ ํ์ฉํ๋ฉด,
์ ์ฒด ์ด๋ฏธ์ง์ ๋ ๋ฆฝ์ ์ธ ๋ถ๋ถ ์ด๋ฏธ์ง๋ฅผ ๋ชจ๋ธ์ ๋ฃ๊ณ ์ฌ๋ฌ๋ฒ์ forward๋ฅผ ์งํํ๋ ๊ฒ์ด ์๋๋ผ
์ ์ฒด ์ด๋ฏธ์ง๋ฅผ ๋ชจ๋ธ์ ๋ฃ์ด ํ ๋ฒ์ forward๋ง ์งํํ๋ฉด ๋๋ค. (YOLO์์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ)
์์ ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ bounding box๋ฅผ ์์ธกํ๊ฒ ๋๋ฉด
์ฐ๋ฆฌ๊ฐ ์ํ๋ ๋นจ๊ฐ์์ bounding box๊ฐ ์๋๋ผ, ํ๋์์ bounding box๋ฅผ ์์ธกํ๊ฒ ๋๋ค.
์ฆ ์ด ๋ฐฉ๋ฒ์ bounding box ์์น๊ฐ ์ ํํ์ง ์๋ค๋ ๋จ์ ์ด ์๋ค.
๋ณด๋ค ์ ํํ bounding box๋ฅผ ์์ธกํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์๊น? ๊ทธ ๋ฐฉ๋ฒ์ ๋ฐ๋ก ์๋์์ ๋ค๋ค๋ณด๋๋ก ํ๋ค.
6. bounding box prediction
๊ทธ ๋ฐฉ๋ฒ์ ๋ฐ๋ก ์ ์ฒด ์ด๋ฏธ์ง๋ฅผ S*S grid๋ก ๋๋์ด labeling ์ํํ๋ ๊ฒ์ด๋ค
๊ทธ๋ฆฌ๊ณ ๋ชจ๋ธ์ ๊ฒฐ๊ณผ๋ก ๋ฐ์ด๋ฉ ๋ฐ์ค์ ํด๋์ค์ ํ๋ฅ ์ ์์ธกํ๋๋ก ํ์ตํ๋ ๊ฒ์ด๋ค.
- ์ด ๋ ๊ฐ grid cell์ y=[p_c, b_x, b_y, b_h, b_w, c1, c2, ..., cn] ๋ฒกํฐ๋ฅผ ๊ฐ๋๋ค.
- ๋ง์ฝ grid cell์ object์ ์ค์ฌ์ ์ด ์์นํ๋ฉด ๊ทธ cell์ ๊ฐ์ฒด๊ฐ ์กด์ฌํ๋ค๊ณ ํ๋จ (p_c = 1)
- ์ ์๋ฏธํ b_x, b_y, b_h, b_w ๊ฐ์ ์ ๋ต์ผ๋ก ์ฃผ์ด์ผ ํ๋ค.
- b_x, b_y๋ ๊ฐ cell์ ์ผ์ชฝ ์๋จ์ (0, 0), ์ค๋ฅธ์ชฝ ํ๋จ์ (1, 1)์ผ๋ก ๋ณด์์ ๋ ์๋์ ์ธ ์์น์ด๋ค.
- b_h, b_w๋ grid cell์ hegith, width ๋๋น ๋ช ๋ฐฐ์ธ์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋์ ์ธ ํฌ๊ธฐ๊ฐ ๊ธฐ๋ก๋๋ค.
- ๋ง์ฝ grid cell์ object์ ์ค์ฌ์ ์ด ์์นํ์ง ์์ผ๋ฉด cell์ ๊ฐ์ฒด๊ฐ ์กด์ฌํ์ง ์๋๋ค๊ณ ํ๋จ (p_c = 0)
- ์ค์ ๊ฐ์ฒด๊ฐ ์กด์ฌํ๋ค๊ณ ํ๋๋ผ๋ ์ค์ฌ์ ์ด ๊ทธ cell์ ์์ง ์๋ค๋ฉด p_c = 0์ด ๋๋ค.
- p_c = 0์ด๋ผ๋ฉด b_x, b_y, b_h, b_w, c1, ..., cn์ don't care condition์ผ๋ก ์ด๋ค ๊ฐ์ด๋ ์๊ด์๋ค.
- ๋ค์๊ณผ ๊ฐ์ด ๋ ธ๋์์ grid cell๋ง p_c = 1์ด ๋๊ณ , ๋๋จธ์ง grid cell์ p_c = 0์ด ๋๋ ๊ฒ์ด๋ค.
7. IOU(intersection over union)
: IOU๋ ์์ธก๋ bounding box์ ์ ๋ต bounding box์ intersection over union์ ๊ณ์ฐํ๋ ๊ฒ์ด๋ค.
์ฆ ๋ bounding box๊ฐ ์ผ๋ง๋ ์ ์ฌํ์ง๋ฅผ ์ธก์ ํ๋ ์งํ๋ผ๊ณ ๋ณด๋ฉด ๋๋ค.
- IOU์ ๋ฒ์ : 0 ~ 1
- 0์ ๊ฐ๊น์ธ์๋ก ๋ bounding box๊ฐ ์ ์ฌํ์ง ์์์ ์๋ฏธ
- 1์ ๊ฐ๊น์ธ์๋ก ๋ bounding box๊ฐ ์ ์ฌํจ์ ์๋ฏธ
- ์ผ๋ฐ์ ์ผ๋ก IOU๊ฐ 0.5๋ณด๋ค ํฌ๋ค๋ฉด ์์ธก๋ bounding box๊ฐ ์ฎ๋ค๊ณ ํ๋จํ๋ค.
8. Non-max suppression
: non-max suppression์ ํ๋์ object์ ๋ํด ์ฌ๋ฌ๊ฐ์ bounding box๊ฐ ์์ธก๋๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ด๋ค.
non-max suppression์ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
(์ฌ๊ธฐ์ ๊ฐ grid cell์ output์ [p_c, b_x, b_y, b_h, b_w]๋ผ๊ณ ๊ฐ์ )
- p_c๊ฐ 0.6์ดํ์ธ bounding box๋ ์ ๊ฑฐํ๊ธฐ (p_c : ๊ฐ์ฒด๊ฐ ์กด์ฌํ ํ๋ฅ , 0.6์ด๋ผ๋ ๊ธฐ์ค์ ๋ฐ๋ ์ ์๋ค)
- ์๋์ ์ ์ฐจ๋ฅผ ๊ฐ ํด๋์ค๋ง๋ค ๋ฐ๋ณตํ๋ค.
- ๊ฐ์ฅ ํฐ p_c๋ฅผ ๊ฐ๋ bounding box๋ฅผ ๊ณ ๋ฅธ๋ค.
- ์ด bounding box์์ IOU๊ฐ 0.5์ด์์ธ bounding box๋ฅผ ๋ชจ๋ ์ ๊ฑฐํ๋ค. (non-max suppression)
9. anchor boxes
: ํ๋์ grid cell์์ ์ฌ๋ฌ๊ฐ์ ๊ฐ์ฒด๋ฅผ ํ์งํ๊ธฐ ์ํ ๋ฐฉ๋ฒ
์ฌ๋ฌ๊ฐ์ anchor box๋ฅผ ์ฌ์ฉํ์
- anchor box๋ ์ง์ ๋์์ธ ๋ ์ ์๊ณ ,
- bounding box์์ k-means clustering์ ์ํํ์ฌ anchor box๋ฅผ ์ค๊ณํ ์๋ ์๋ค.
์ฌ๋๊ณผ ์๋์ฐจ์ ์ค์ฌ์ด ์ผ์นํ์ฌ ๋์ผํ grid cell์ ๊ฐ์ฒด๊ฐ ํ ๋น๋์๋ค.
ํ๋์ grid cell์ ๋ค์์ ๊ฐ์ฒด๊ฐ ํ ๋น๋๋ ๊ฒฝ์ฐ๋ ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ผ ํ๋?
- ์ด๋ฌํ ๊ฒฝ์ฐ ์ฌ๋ฌ๊ฐ์ anchor box๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ์ด๋์ ๋ ํด์ํ ์ ์๋ค. (๋ค ํด๊ฒฐํ๋ ๊ฒ ์๋๋ค)
- ์ฌ๋์ ๊ฒฝ์ฐ, anchor box2๋ณด๋ค anchor box1๊ณผ ์ ์ฌ๋๊ฐ ๋๊ธฐ ๋๋ฌธ์ anchor box1์ ๋์๋๋ ์์น์ ๋ผ๋ฒจ ๋ถ์ฌํ๊ณ
- ์๋์ฐจ์ ๊ฒฝ์ฐ, anchor box1๋ณด๋ค anchor box2์ ์ ์ฌ๋๊ฐ ๋๊ธฐ ๋๋ฌธ์ anchor box2์ ๋์๋๋ ์์น์ ๋ผ๋ฒจ์ ๋ถ์ฌํ๋ค.
- (๋ ์ ํํ๋ ๊ฐ์ฒด์ bounding box์ ์ฌ๋ฌ๊ฐ์ anchor box์์ IOU๋ฅผ ๊ตฌํ ๋ค, ๊ฐ์ฅ ๋์ IOU๊ฐ ๊ณ์ฐ๋ anchor box ์์น์ ๋ผ๋ฒจ์ ๋ถ์ฌํ๋ ๋ฐฉ์์ด๋ค)
์ด๋ ๊ฒ ์ฌ๋ฌ๊ฐ์ anchor box๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๊ฐ cell์ ๋์๋๋ label์ ๋ค์๊ณผ ๊ฐ๋ค.
(์์ ๊ฒฝ์ฐ๋ 2๊ฐ์ anchor box๋ฅผ ์ฌ์ฉํ์ ๋ label์ด๋ค)
๋ง์ฝ์ anchor box๋ 2๊ฐ์ธ๋ฐ, ํ๋์ cell์์ detect๋ object๊ฐ 3๊ฐ๋ผ๋ฉด ์ด๋ป๊ฒ ๋๋๊ฐ?
- ์ด๋ฌํ ๊ฒฝ์ฐ๊ฐ ์ด ์๊ณ ๋ฆฌ์ฆ์ด ์ ์ฒ๋ฆฌํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ๋๋ค.
- (์์์ anchor box๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ "์ด๋์ ๋" ํด์ํ ์ ์๋ค๊ณ ํ ์ด์ ์ด๋ค)
๊ทธ๋ฆฌ๊ณ ์ฌ๋ object์ ์๋์ฐจ object๊ฐ ๋์ผํ cell์ ํ ๋น๋์์ ๋,
์ฌ๋์ bounding box๋, ์๋์ฐจ์ bounding box๋ anchor box1๊ณผ ์ ์ฌํ๋ค๋ฉด ์ด๋ป๊ฒ ๋๋๊ฐ?
- ์ด๋ฌํ ๊ฒฝ์ฐ ์ญ์ ์ด ์๊ณ ๋ฆฌ์ฆ์ด ์ ์ฒ๋ฆฌํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ์ด๋ค.
10. YOLO
Training
- ๋ชจ๋ธ output์ ๋ณผ๋ฅจ์ S*S*(B*(5+C))๊ฐ ๋ ๊ฒ์ด๋ค.
- S*S : grid์ ํฌ๊ธฐ
- B : bounding box์ ๊ฐ์ (= anchor box์ ๊ฐ์)
- 5 : 5์ธ ์ด์ ๋ confidence score, b_x, b_y, b_h, b_w
- C : ํด๋์ค์ ๊ฐ์
Prediction
- ์ ์ฒด ์ด๋ฏธ์ง๋ฅผ model์ ๋ฃ์ด ํ ๋ฒ๋ง forward๋ฅผ ์งํํ๋ฉด ์์ธก๊ฐ์ ์ป์ ์ ์๋ค.
- ์์ ์์์์ output์ shape๊ฐ 3*3*2*8์ธ ์ด์ ๋
- grid : 3*3
- anchor box์ ๊ฐ์ : 2
- ํด๋์ค์ ๊ฐ์ : 3 (๋ฐ๋ผ์ 5+3=8)
output์ ๋ํด non-max suppression์ ์ ์ฉ
'๐ > Coursera_DL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
WEEK7 : Neural Style Transfer (1) | 2020.12.25 |
---|---|
WEEK7 : face recognition (0) | 2020.12.24 |
WEEK6 : Object Detection (1) (0) | 2020.12.23 |
WEEK6 : convNet ์ฌ์ฉ์ ๋์์ด ๋ ์ง์ (0) | 2020.12.23 |
WEEK6 : Inception (googLeNet) (0) | 2020.12.23 |