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

Data Science/Computer Vision

[ML] Fast RCNN Object Detection ๋ชจ๋ธ

๋ฐ˜์‘ํ˜•

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

 

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ €๋ฒˆ์— ์†Œ๊ฐœํ–ˆ๋˜ SPP Net์„ ์•ฝ๊ฐ„ ๋ณ€ํ˜•ํ•œ ๋ชจ๋ธ์ธ Fast RCNN์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์•„๋งˆ SPP Net ๋ชจ๋ธ์˜ ๊ตฌ์กฐ๋ฅผ ์ž˜ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์ด๋ฒˆ Fast RCNN ๋ชจ๋ธ์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๋Š” ๋ฐ ๋งค์šฐ ์ˆ˜์›”ํ•  ๊ฒƒ์ด๋‹ค.

 

Fast RCNN... ์–ผ๋งˆ๋‚˜ ๋น ๋ฅด๊ธธ๋ž˜..Fast๋ผ๋Š” ์ˆ˜์‹์–ด๋ฅผ ๋ถ™์˜€์„๊นŒ?

1. SPP Net์ด ๋ญ์˜€๋”๋ผ?

SPP Net์— ๋Œ€ํ•ด ํ•ต์‹ฌ์ ์ธ ํฌ์ธํŠธ๋งŒ ๋‹ค์‹œ ์ƒ๊ธฐํ•ด๋ณด์ž. Selective Search๋กœ ์ž…๋ ฅ ์ด๋ฏธ์ง€์— ๋Œ€ํ•ด ๋งŽ์€ Region Proposal๋“ค์„ ์ถ”์ถœํ•ด์ฃผ๋Š”๋ฐ ์ด ๋•Œ Region Proposal ๋“ค์˜ ํฌ๊ธฐ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅผ ์ˆ˜ ๋ฐ–์— ์—†๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด ๊ฐ๊ธฐ ๋‹ค๋ฅธ ํฌ๊ธฐ๋ฅผ ๊ณ ์ •๋œ ์‚ฌ์ด์ฆˆ์ด ๋ฒกํ„ฐ๋กœ ๊ฒฐํ•ฉํ•ด์ฃผ๊ธฐ ์œ„ํ•ด SPP(Spatial Pyramid Pooling) ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค๊ณ  ํ–ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ SPP๋Š” Bag of Visual Words๋ผ๋Š” ๊ธฐ์ˆ ๊ณผ ๋ถ„๋ฉด ํ…Œํฌ๋‹‰์„ ํ•ฉ์ณ์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ์ผ์ข…์˜ Max Pooling ๊ณผ์ •์ด๋‹ค. ์ž˜ ๊ธฐ์–ต์ด ๋‚˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ํ•˜๋‹จ์˜ ๊ทธ๋ฆผ ๋˜๋Š” ์ €๋ฒˆ ํฌ์ŠคํŒ…์„ ์ฐธ๊ณ ํ•˜์ž.

 

SPP ๊ณผ์ •

 

๊ทธ๋ฆฌ๊ณ  ์œ„ SPP ๊ณผ์ •์„ ์ ์šฉ์‹œํ‚จ SPP Net์˜ ์ „์ฒด Object Detection ๋ชจ๋ธ์˜ ํฐ ์•„ํ‚คํ…์ฒ˜ ๊ทธ๋ฆผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

SPP Net์˜ ํฐ ์•„ํ‚คํ…์ฒ˜

2. Fast RCNN์€ ๋ญ๊ฐ€ ๋‹ค๋ฅธ๊ฐ€?

Fast RCNN์€ ์œ„ ๊ทธ๋ฆผ์˜ SPP Net ์•„ํ‚คํ…์ฒ˜์™€ ํฌ๊ฒŒ 2๊ฐ€์ง€๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค. ์ฒซ ๋ฒˆ์งธ๋Š” ๋ชจ๋‘ ๋™์ผํ•œ ์‚ฌ์ด์ฆˆ์˜ Region Proposal์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด SPP ๊ณผ์ •์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ROI(Regions Of Interest) Pooling ๊ณผ์ •์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋‘ ๋ฒˆ์งธ๋Š” Object๊ฐ€ ๋ฌด์—‡์ธ์ง€ ํด๋ž˜์Šค๋ฅผ ๋ถ„๋ฅ˜ํ•  ๋•Œ SVM Classifier์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  Softmax Layer๋งŒ์„ ์‚ฌ์šฉํ•œ๋‹ค. ํ•˜๋‹จ์˜ Fast RCNN ์•„ํ‚คํ…์ฒ˜ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด์„œ ์ฐจ์ด์ ์„ ํ•˜๋‚˜์”ฉ ์ดํ•ดํ•ด๋ณด์ž.

 

Fast RCNN ์•„ํ‚คํ…์ฒ˜

2-1. ROI Pooling

์‚ฌ์‹ค SPP ๊ณผ์ •๋„ ROI Pooling ๊ณผ์ •์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ROI Pooling ์˜ ๊ตฌ์ฒด์ ์ธ ์ •์˜๋Š” ์„œ๋กœ ํฌ๊ธฐ๊ฐ€ ๋‹ค๋ฅธ Region Proposal์„ ๊ณ ์ •๋œ ๋ฒกํ„ฐ ์‚ฌ์ด์ฆˆ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” SPP Net๊ณผ์˜ ์ฐจ์ด์ ์„ ๊ฐ•์กฐํ•˜๊ธฐ ์œ„ํ•ด Fast RCNN์—์„œ๋งŒ ROI Pooling์ด๋ผ๊ณ  ์ •์˜ํ•˜๊ฒ ๋‹ค.

 

ROI Pooling์€ SPP Pooling ๊ณผ์ •๊ณผ ๋™์ž‘๊ณผ์ •์€ ๋™์ผํ•˜๋‹ค. ๋‹จ, ๋ถ„๋ฉด์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋‹จ $7\times7$ ๋ถ„๋ฉด์œผ๋กœ ๋‚˜๋ˆˆ ๊ฒƒ ํ•˜๋‚˜๋กœ๋งŒ SPP๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค๋Š” ๊ฒƒ์ด ์ฐจ์ด์ ์ด๋‹ค. 

2-2. ํด๋ž˜์Šค ๋ถ„๋ฅ˜์—๋Š” ์ด์ œ Softmax Layer๋งŒ ์‚ฌ์šฉํ•˜์ž!

์ด์ „์˜ SPP Net ๋ชจ๋ธ๊นŒ์ง€๋Š” ๋จผ์ € Softmax Layer๋กœ Object๊ฐ€ ์–ด๋–ค ํด๋ž˜์Šค์ธ์ง€ ํ™•๋ฅ ๊ฐ’์œผ๋กœ ๋„์ถœ์‹œํ‚ค๋ฉด์„œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํ•™์Šตํ•˜๊ณ  ๋‹ค์‹œ ์ตœ์ข… ํด๋ž˜์Šค ๋ถ„๋ฅ˜๋ฅผ ์œ„ํ•ด SVM Classifier๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ํ•˜๊ฒŒ ๋˜๋ฉด ๋ณด๋‹ค์‹œํ”ผ 2๋ฒˆ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์žˆ๊ฒŒ ๋˜๊ณ  ๊ฒฐ๊ตญ End-to-End ๋ชจ๋ธ์ด ๋˜์ง€ ๋ชปํ•œ๋‹ค.

 

๊ทธ๋ž˜์„œ SVM Classifier ๋ฅผ ์—†์• ๋ฒ„๋ฆฌ๊ณ  Softmax Layer ํ•˜๋‚˜๋งŒ์„ ๋‘๊ณ  Object์˜ ์ตœ์ข… ํด๋ž˜์Šค๋ฅผ ๋ถ„๋ฅ˜์‹œํ‚จ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ Object์˜ ํด๋ž˜์Šค๋ฅผ ์ตœ์ข… ๋ถ„๋ฅ˜ํ•˜๋Š” ๋ฌธ์ œ์™€ Object๋ฅผ ํƒ์ง€ํ•ด ๊ฐ์‹ธ๋Š” Bounding Box์˜ ์ขŒํ‘œ๋ฅผ ํšŒ๊ท€ํ•˜๋Š” ๋ฌธ์ œ 2๊ฐœ๋ฅผ ๋™์‹œ์— ํ•™์Šต์‹œํ‚ค๊ฒŒ ๋œ๋‹ค. ์ฆ‰, ์ด์ œ End-to-End ๋ชจ๋ธ์ด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

3. Fast RCNN์˜ Cost Function

๋ถ„๋ฅ˜์™€ ํšŒ๊ท€ ๋ฌธ์ œ 2๊ฐœ๋ฅผ ๋™์‹œ์— ํ•ด๊ฒฐํ•˜๋Š” Fast RCNN์˜ Cost Function์€ ์–ด๋–ป๊ฒŒ ๋ ๊นŒ? 2๊ฐœ๋ฅผ ๋™์‹œ์— ํ•ด๊ฒฐํ•œ๋‹ค๊ณ  ํ•˜์—ฌ Multi-task Loss ๋ผ๊ณ  ๋ถˆ๋ฆฌ๊ธฐ๋„ ํ•œ๋‹ค. ๋ถ„๋ฅ˜ ๋ฌธ์ œ์—๋Š” $Cross-Entropy$๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ํšŒ๊ท€ ๋ฌธ์ œ์—๋Š” $Smooth\ L1$ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋จผ์ € ์ „์ฒด Loss ํ•จ์ˆ˜ ์ˆ˜์‹์„ ์‚ดํŽด๋ณด์ž.

 

Multi-task Lossํ•จ์ˆ˜

 

Cross-entropy๋Š” ๋งŽ์€ ๋จธ์‹ ๋Ÿฌ๋‹ ํฌ์ŠคํŒ…์—์„œ ๋ถ„๋ฅ˜ ๋ฌธ์ œ์˜ Cost function์œผ๋กœ ์‚ฌ์šฉ๋˜๊ธฐ๋„ ํ–ˆ๊ณ  ์„ค๋ช…์€ ๋„˜์–ด๊ฐ€๊ฒ ๋‹ค. ์œ„ ์ˆ˜์‹์—์„œ ํŠน์ดํ•œ ๋ถ€๋ถ„์€ $Smooth\ L1$ ํ•จ์ˆ˜์ธ๋ฐ, ์ด ํ•จ์ˆ˜ ์ˆ˜์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ํ•˜๋‹จ์˜ $x$๋Š” ์˜ค์ฐจ(Error)๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

 

Smooth L1 Loss ํ•จ์ˆ˜

 

$x$๊ฐ’์— ๋”ฐ๋ผ ํ•จ์ˆ˜ ์‹์ด ๋‹ฌ๋ผ์ง€๋ฉฐ $x$๊ฐ’์ด $-1$ ๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ $1$ ๋ณด๋‹ค ์ž‘์„ ๋•Œ๋Š” $L2\ Loss$ ์œ ํ˜•์˜ ์‹์„, ๊ทธ ์ด์™ธ์˜ ๊ฒฝ์šฐ์—๋Š” $L1\ Loss$ ์œ ํ˜•์˜ ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค. 

 

์–ด๋–ค ์‹์„ ๋”ฐ๋ฅด๋ƒ์— ๋”ฐ๋ผ ์˜ค์ฐจ ํ•จ์ˆ˜์˜ ์˜๋ฏธ๊ฐ€ ์•ฝ๊ฐ„์”ฉ ๋‹ฌ๋ผ์ง€๋Š”๋ฐ ์ด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

 

  • $L2\ Loss$ : ์ œ๊ณฑ์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ง€๋‚˜์น˜๊ฒŒ ์˜ค์ฐจ๊ฐ€ ํฐ ๋ฐ์ดํ„ฐ์— ๋งค์šฐ ๋ฏผ๊ฐํ•˜๊ฒŒ ์ž‘์šฉํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์˜ค์ฐจ๊ฐ€ ํฐ ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์ด ์กด์žฌํ•  ๊ฒฝ์šฐ $L2$๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์˜ค์ฐจ๊ฐ€ ํฐ ๋ฐ์ดํ„ฐ์— ํฐ ํŒจ๋„ํ‹ฐ๋ฅผ ๋ถ€์—ฌํ•จ์œผ๋กœ์จ ํ•™์Šต ์‹œ ์˜ค์ฐจ๊ฐ€ ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ž˜ ํ•™์Šตํ•˜๋„๋ก ํ•ด์ค€๋‹ค.
  • $L1\ Loss$ : ์ ˆ๋Œ“๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ง€๋‚˜์น˜๊ฒŒ ์˜ค์ฐจ๊ฐ€ ํฐ ๋ฐ์ดํ„ฐ์— ๋ฏผ๊ฐํ•˜์ง€ ์•Š๋‹ค. ๋”ฐ๋ผ์„œ ์˜ค์ฐจ๊ฐ€ ํฐ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ„๋กœ ์กด์žฌํ•˜์ง€ ์•Š์„ ๋•Œ ์‚ฌ์šฉํ•˜๊ธฐ์— ์ ํ•ฉํ•˜๋‹ค.
  • $Smooth\ L1\ Loss$ : $x$ ์ฆ‰, ์˜ค์ฐจ๊ฐ’์ด $-1$๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ $1$๋ณด๋‹ค ์ž‘์„ ๋•Œ๋Š” ๊ฑฐ์˜ ๋งž์ท„๋‹ค๊ณ  ์ธ์ •ํ•œ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ๊ฐ ๊ทธ๋ž˜ํ”„ ํ•จ์ˆ˜ ๋ชจ์–‘์„ ์‚ดํŽด๋ณด๊ณ  ๋งˆ๋ฌด๋ฆฌํ•˜์ž. $x$์ถ•์€ ์˜ค์ฐจ๊ฐ’์„ ์˜๋ฏธํ•œ๋‹ค.

 

L1 vs L2 vs Smooth L1

 

 

 

๋ฐ˜์‘ํ˜•