๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Data Science/Computer Vision

[ML] RCNN(Regions with CNN) Object Detection ๋ชจ๋ธ

๋ฐ˜์‘ํ˜•

๐Ÿ”Š ํ•ด๋‹น ํฌ์ŠคํŒ…์—์„œ ์‚ฌ์šฉ๋œ ์ปจํ…์ธ ๋Š” ์ธํ”„๋Ÿฐ์˜ ๋”ฅ๋Ÿฌ๋‹ ์ปดํ“จํ„ฐ ๋น„์ „ ์™„๋ฒฝ ๊ฐ€์ด๋“œ ๊ฐ•์˜ ๋‚ด์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ–ˆ์Œ์„ ์•Œ๋ฆฝ๋‹ˆ๋‹ค. ์„ค๋ช…์—์„œ ์‚ฌ์šฉ๋œ ์ž๋ฃŒ๋Š” ์ตœ๋Œ€ํ•œ ์ œ๊ฐ€ ์ง์ ‘ ์žฌ๊ตฌ์„ฑํ•œ ์ž๋ฃŒ์ž„์„ ์•Œ๋ฆฝ๋‹ˆ๋‹ค.

 

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” RCNN(Regions with CNN) ๋ชจ๋ธ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ ค ํ•œ๋‹ค. RCNN ๋ชจ๋ธ์€ ์ €๋ฒˆ ํฌ์ŠคํŒ…์—์„œ ์†Œ๊ฐœํ–ˆ๋˜ Regions Proposal์„ CNN ๋ชจ๋ธ์— ๊ฒฐํ•ฉํ•˜์—ฌ Object Detection์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ชจ๋ธ์ด๋‹ค. ๋ฐ”๋กœ ํ•˜๋‹จ์˜ ๊ทธ๋ฆผ์—์„œ Object Detection Network์— ํ•ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„์ด๋‹ค.

 

RCNN์€ Object Detection Network์— ์†ํ•œ๋‹ค.(์ด ๊ตฌ์กฐ๊ฐ€ RCNN ๊ตฌ์กฐ๋ฅผ ์˜๋ฏธํ•˜์ง„ ์•Š์Šต๋‹ˆ๋‹ค!)

1. RCNN ๋ชจ๋ธ์ด๋ž€?

RCNN ๋ชจ๋ธ์€ Region Proposal์„ Selective Search ๋ฐฉ๋ฒ•์œผ๋กœ ๊ตฌํ˜„ํ•œ ๋ชจ๋ธ์ด๋‹ค. ๋˜ํ•œ Two-stage ๋ชจ๋ธ๋กœ๋„ ๋ถ„๋ฅ˜๋˜๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ 2๊ฐœ์˜ Stage๋ž€, Stage 1์€ Region Proposal์„ ํ•˜๋Š” ๋‹จ๊ณ„, Stage 2๋Š” ์ด๋ฏธ์ง€๊ฐ€ Feature Extractor๋ฅผ ํ†ต๊ณผํ•ด Object ํด๋ž˜์Šค๋ฅผ ์ตœ์ข… ๋ถ„๋ฅ˜ํ•˜๊ณ  Bounding Box ํšŒ๊ท€ ๋ฌธ์ œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋‹จ๊ณ„๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ 2๊ฐ€์ง€ ๋‹จ๊ณ„๋กœ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๋‹ค๊ณ  ํ•ด์„œ Two-Stage๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค.

 

์ด์ œ RCNN ๋ชจ๋ธ์˜ ์ „๊ฐœ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹จ๊ณ„๋ณ„๋กœ ํ•˜๋‚˜์”ฉ ์•Œ์•„๋ณด๊ณ  Object Detection Network๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์ตœ์ข… ํด๋ž˜์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ๋ถ„๋ฅ˜ํ•˜๊ณ  Bounding Box ์ขŒํ‘œ๋ฅผ ์–ด๋–ป๊ฒŒ ํšŒ๊ท€ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

 

2. Stage 1 - Selective Search๋กœ Region Proposal ํ•˜๊ธฐ!

Stage1 - Region Proposal

RCNN์—์„œ๋Š” Region Proposal ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์œผ๋กœ Selective Search๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. Selective Search์˜ ๋™์ž‘๊ณผ์ •์€ ์ด์ „ ํฌ์ŠคํŒ…์—์„œ ์–ธ๊ธ‰ํ–ˆ์œผ๋ฏ€๋กœ ๋”ฐ๋กœ ์–ธ๊ธ‰ํ•˜์ง€ ์•Š๊ฒ ๋‹ค. Selective Search๋ฅผ ํ†ตํ•ด ์•ฝ 2000๊ฐœ์˜ ๊ฐ์ฒด๊ฐ€ ์žˆ์„๋งŒํ•œ ์˜์—ญ์„ ์ถ”์ฒœํ•ด์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด 2000๊ฐœ์˜ ๊ฐ Region Proposal ๋งˆ๋‹ค ํ•˜๋‚˜์”ฉ Stage 2์˜ Feature Extractor๋กœ ์ž…๋ ฅ๋˜๊ฒŒ ๋œ๋‹ค.

 

๊ทธ๋Ÿฐ๋ฐ ์ถ”์ฒœ๋œ Region Proposal๋“ค์ด Feature Extractor์— ๋“ค์–ด๊ฐ€๋ ค๋ฉด ์•ฝ 2000๊ฐœ์˜ Region Proposal๋“ค์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ๋™์ผํ•˜๊ฒŒ ๋งž์ถฐ์ฃผ์–ด์•ผ ํ•œ๋‹ค. ์™œ๋ƒํ•˜๋ฉด VGG, Resnet๊ณผ ๊ฐ™์€ Pretrained๋œ Feature Extractor์—๋Š” ์ž…๋ ฅ๋ฐ›๋Š” ์‚ฌ์ด์ฆˆ๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— Region Proposal๋“ค์„ ์ž๋ฅด๊ฑฐ๋‚˜(Crop) ์ฐŒ๊ทธ๋Ÿฌ๋œจ๋ฆฌ๋Š”(Warp) ํ–‰์œ„๋ฅผ ์ ์šฉํ•ด์ฃผ์–ด ๋„ฃ์–ด์ค€๋‹ค. ์‚ฌ์‹ค ์ด๋Ÿฌํ•œ ํ–‰๋™์€ ์ถ”ํ›„์— Stage2์—์„œ ๊ฐ์ฒด๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํƒ์ง€ํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๋ฅผ ์œ ๋ฐœํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค.

3. Stage 2 - Softmax๋กœ ํ•™์Šตํ•˜๊ณ  SVM์œผ๋กœ ์ตœ์ข… ํด๋ž˜์Šค๋ฅผ ๋ถ„๋ฅ˜ํ•˜์ž!

Stage2 - ์ตœ์ข… ํด๋ž˜์Šค ๋ถ„๋ฅ˜ํ•˜๋Š” ๋‹จ๊ณ„

 

Stage 1์—์„œ ์–ป์€ Region Proposal์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด์ œ ์ž…๋ ฅ๋œ ์ด๋ฏธ์ง€์—์„œ ๊ฐ์ฒด๊ฐ€ ์–ด๋–ค ๋ฌผ์ฒด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š”์ง€ ํด๋ž˜์Šค๋ฅผ ๋ถ„๋ฅ˜ํ•ด๋ณด์ž. ์œ„ ๊ทธ๋ฆผ์˜ ๋นจ๊ฐ„์ƒ‰ ๋„ค๋ชจ์นธ์— ํ•ด๋‹นํ•˜๋Š” ๋‹จ๊ณ„์ด๋‹ค. ์ผ๋ฐ˜์ ์ธ CNN ๋ชจ๋ธ์ฒ˜๋Ÿผ Feature Map์„ Flatten ํ•˜๊ณ  Dense layer(FC layer)๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ๋น„์Šทํ•˜๋‹ค. ํ•˜์ง€๋งŒ ํŠน์ดํ•œ ์ ์€ Softmax layer์™€ SVM Classifier๊ฐ€ ๋™์‹œ์— ์กด์žฌํ•œ๋‹ค๋Š” ์ ์ด๋‹ค. 

 

RCNN์€ ๊ฐ์ฒด ํด๋ž˜์Šค๋ฅผ ์ตœ์ข… ๋ถ„๋ฅ˜ํ•˜๊ธฐ ์ „์— ๋จผ์ € Softmax layer๋กœ ๊ฐ์ฒด๊ฐ€ ์–ด๋–ค ํด๋ž˜์Šค๋กœ ๋ถ„๋ฅ˜๋˜๋Š”์ง€์— ๋Œ€ํ•œ ํ™•๋ฅ  Score๋ฅผ ์–ป๋Š”๋‹ค. ์ด ํ™•๋ฅ  Score๋ฅผ ์–ป์œผ๋ฉด์„œ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ํ•™์Šต์ด ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ Softmax layer๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํ•™์Šตํ•œ ์ดํ›„ RCNN์€ Softmax๋กœ ๊ฐ€์ง€ ์•Š๊ณ  SVM Classifier๋กœ ํƒ์ง€๋œ ๊ฐ์ฒด์˜ ํด๋ž˜์Šค๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ตœ์ข… ๋ถ„๋ฅ˜ํ•˜๊ฒŒ ๋œ๋‹ค.

 

๊ตณ์ด Softmax layer๊ฐ€ ์•„๋‹Œ SVM Classifier๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์— ๋Œ€ํ•ด์„œ ๊ฐ•์˜ ์†์—์„œ๋Š” ๋””ํ…Œ์ผํ•˜๊ฒŒ ์„ค๋ช…ํ•˜์ง„ ์•Š์•˜์ง€๋งŒ ๊ตฌ๊ธ€๋ง์„ ํ•ด๋ณด๊ณ  ๋‚œ ํ›„ ๊ฒฐ๊ณผ์ ์œผ๋กœ SVM์„ ์‚ฌ์šฉํ•  ๋•Œ ๋” ์„ฑ๋Šฅ์ด ์ข‹์•„์„œ ์‚ฌ์šฉํ–ˆ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ตฌ์ฒด์ ์ธ ์ด์œ ๋Š” ์—ฌ๊ธฐ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•ด๋ณด์ž.

4. Stage3 - Bounding Box ์ขŒํ‘œ๋ฅผ ์ฐพ์ž!

Stage2 - Bounding Box์˜ ์ขŒํ‘œ๋ฅผ ์ฐพ์ž

 

์ง€๊ธˆ๊นŒ์ง€ ๊ณผ์ •์„ ํ†ตํ•ด ํƒ์ง€๋œ ๊ฐ์ฒด์˜ ํด๋ž˜์Šค๊ฐ€ ์–ด๋–ค ๋ฌผ์ฒด์ธ์ง€ ๋ถ„๋ฅ˜๊นŒ์ง€ ํ–ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ด ๊ฐ์ฒด๊ฐ€ ์–ด๋””์— ์žˆ๋Š”์ง€ Detection ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ์ฒด ์ฃผ๋ณ€์— ์‚ฌ๊ฐํ˜•์„ ๊ทธ๋ ค์ฃผ๋Š” Bounding Box์˜ ์ขŒํ‘œ๋ฅผ ์ฐพ์•„์•ผ ํ•œ๋‹ค. ์ขŒํ‘œ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด Regression์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ตœ์ ์˜ ์ขŒํ‘œ๋ฅผ ์ฐพ๋Š” ๊ณผ์ •๋„ Loss ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ์—ญ์ „ํŒŒ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ํ•˜๋‹จ์˜ ๊ทธ๋ฆผ์„ ๋ณด๊ณ  ์ฒœ์ฒœํžˆ ์ดํ•ดํ•ด๋ณด์ž.

 

Bounding Box์˜ ์ขŒํ‘œ๋ฅผ ์ฐพ๊ธฐ์œ„ํ•œ ์ˆ˜์‹์„ ์‚ดํŽด๋ณด์ž.

 

Regression ํ•™์Šต์œผ๋กœ ์ฐพ์•„์•ผ ํ•  ๊ฒƒ๋“ค์€ ์œ„ ๊ทธ๋ฆผ์—์„œ '(์ฐพ์•„์•ผ ํ•  ํŒŒ๋ผ๋ฏธํ„ฐ)' ๋ผ๊ณ  ํ‘œ์‹œ๋œ ๋ถ€๋ถ„๋“ค์ด๋‹ค. ์œ„ ๊ทธ๋ฆผ์—์„œ ํ‘œํ˜„ํ•˜๊ณ ์ž ํ•œ ๊ฒƒ์€ ์˜ˆ์ธก๋œ ํŒŒ๋ž€์ƒ‰ ๋ฐ•์Šค์˜ ์ขŒํ‘œ์ธ $(p_x, p_y)$๋ฅผ ์‹ค์ œ ์ขŒํ‘œ๊ฐ’์ธ $(g_x, g_y)$์œผ๋กœ ์–ผ๋งˆ๋‚˜ ์ด๋™์‹œํ‚ค์•ผ ํ•˜๋Š”์ง€ ์•Œ๊ณ  ์žˆ๋Š” ํ•จ์ˆ˜ $d_x(p)$์™€ $d_y(p)$๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด๋‹ค. ๋˜ ํŒŒ๋ž€์ƒ‰ ๋ฐ•์Šค์˜ ๋„ˆ๋น„์ธ $p_w$์™€ ๋†’์ด์ธ $p_h$๋ฅผ ์–ผ๋งˆ๋‚˜ Scaling ํ•ด์•ผ ๋นจ๊ฐ„์ƒ‰ ๋ฐ•์Šค์˜ ๋„ˆ๋น„, ๋†’์ด์ธ $g_h$, $g_w$๋กœ ๋˜๋Š”์ง€ ์•Œ๊ณ  ์žˆ๋Š” ํ•จ์ˆ˜ $exp^{d_h(p)}$์™€ $exp^{d_w(p)}$๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด๋‹ค.

 

๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ์œ„ ์ˆ˜์‹๋“ค์„ ๊ธฐ๋ฐ˜์œผ๋กœ $g$ ์— ๋Œ€ํ•œ ์˜ˆ์ธก๊ฐ’์ธ $\hat{g}$๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

 

  • $\hat{g}_x = p_w*d_x(p) + p_x$
  • $\hat{g}_y = p_h*d_y(p) + p_y$
  • $\hat{g}_w = p_w*exp^{d_w(p)}$
  • $\hat{g}_h = p_h*exp^{d_h(p)}$

์ด์ œ $t$๋ผ๋Š” ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ์ •์˜ํ•  ํ…๋ฐ, ์ด $t$๋Š” $p$๊ฐ€ $g$๋กœ ์˜ฎ๊ธฐ๋Š” ์ด๋™๋Ÿ‰์„ ์˜๋ฏธํ•œ๋‹ค. ๊ฒฐ๊ตญ $t$๋Š” ์œ„์—์„œ ์šฐ๋ฆฌ๊ฐ€ ์ฐพ์•„์•ผ ํ•˜๋Š” ๋ชจ๋“  $d(p)$์— ๋Œ€ํ•œ Label์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ $t$๋ผ๋Š” ์ด๋™๋Ÿ‰์— ๋Œ€ํ•ด ์ •์˜๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

  • $t_x = (g_x - p_x)/p_w$
  • $t_y = (g_y - p_y)/p_h$
  • $t_w = \log(g_w/p_w)$
  • $t_h = \log(g_h/p_h)$

์ด์ œ Label์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š” $t$ ๊ฐ’๋“ค์— ๋Œ€ํ•ด ์ •์˜๋ฅผ ํ–ˆ์œผ๋‹ˆ ์ด $t$ ๊ฐ’๋“ค๊ณผ ์šฐ๋ฆฌ๊ฐ€ ํ•™์Šต์‹œํ‚ค๋ ค๋Š” ํ•จ์ˆ˜๋“ค $d(p)$ ๊ฐ„์˜ ์ฐจ์ด๋ฅผ 0์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋„๋ก ํ•˜๋ฉด ๋œ๋‹ค. ํ•˜๋‹จ์˜ $t$ ์™€ $d(p)$ ์—๋Œ€ํ•œ Loss ํ•จ์ˆ˜ ์ˆ˜์‹์ด๋‹ค.

 

Loss ํ•จ์ˆ˜ ์ˆ˜์‹

 

Loss ํ•จ์ˆ˜์˜ ์ˆ˜์‹ ๋์—๋Š” ๋ชจ๋ธ์˜ ์ผ๋ฐ˜ํ™”๋ฅผ ์œ„ํ•œ ์ •๊ทœํ™” ํ•ญ์ธ L2 norm์„ ์ ์šฉํ•œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋…ผ๋ฌธ์—์„œ $\lambda$ ์˜ ์ ์ ˆํ•œ ๊ฐ’์œผ๋กœ 1000์„ ์ถ”์ฒœํ•˜๊ณ  ์žˆ๋‹ค.


์ด๋ ‡๊ฒŒ ๋‹จ๊ณ„๋ณ„ ์„ค๋ช…์„ ๊ฑฐ์ณ RCNN ๋ชจ๋ธ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜๋‹ค. ํ•˜์ง€๋งŒ RCNN์€ ์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋‹ค์‹œํ”ผ ํ•˜๋‚˜์˜ Region Proposal ๋งˆ๋‹ค Feature Extractor์— ๋„ฃ์–ด์ฃผ์–ด Object Detection์„ ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ๋งŒ์•ฝ Region Proposal์ด 2000๊ฐœ๋ฅผ ์ถ”์ฒœํ•ด์ค€๋‹ค๋ฉด ์•ž์˜ ๊ณผ์ •์„ 2000๋ฒˆ ๋ฐ˜๋ณตํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ RCNN์€ ํ•™์Šต ์‹œ๊ฐ„์— ์žˆ์–ด์„œ ๋งค์šฐ ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค.

 

๋˜ํ•œ ์ค‘๊ฐ„์— Region Proposal๋“ค์„ Feature Extractor์— ๋„ฃ๋„๋กํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์ด์ฆˆ๋ฅผ ๊ณ ์ •์‹œ์ผœ ์ค˜์•ผ ํ•˜๋ฏ€๋กœ ์ด๋ฏธ์ง€๋ฅผ ์ž๋ฅด๊ฑฐ๋‚˜ ์ฐŒ๊ทธ๋Ÿฌ๋œจ๋ฆด ์ˆ˜ ๋ฐ–์— ์—†๋‹ค. ์ด๋Š” ๊ฐ์ฒด ํƒ์ง€ ์„ฑ๋Šฅ์— ๋ถ€์ •์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋‹ค. 

 

๋”ฐ๋ผ์„œ ์œ„์™€ ๊ฐ™์€ 2๊ฐ€์ง€ ๋ฌธ์ œ์ ์„ ๊ทน๋ณตํ•˜๋Š” SPP(Spatial Pyramid Pooling) Net์— ๋Œ€ํ•ด ๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ ์•Œ์•„๋ณด๋ คํ•œ๋‹ค. 

๋ฐ˜์‘ํ˜•