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

Data Science/Computer Vision

[ML] SSD(Single Shot Detector) Object Detection ๋ชจ๋ธ

๋ฐ˜์‘ํ˜•

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

 

์ง€๊ธˆ๊นŒ์ง€ ์•Œ์•„๋ณด์•˜๋˜ RCNN ๊ณ„์—ด, SPP Object Detection ๋ชจ๋ธ๋“ค์€ ๋ชจ๋‘ Two-Stage ๋ชจ๋ธ์ด์—ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ ์†Œ๊ฐœํ•  ๋ชจ๋ธ์€ One-Stage ๋ชจ๋ธ ์ค‘ ํ•˜๋‚˜์ธ SSD(Single Shot Detector) ๋ชจ๋ธ์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•˜๋ ค ํ•œ๋‹ค.

 

 

ํ•œ๋ฒˆ์˜ ์ƒท๋งŒ ๋‚ ๋ฆฌ๋Š” SSD?


1. One Stage? Two Stage?

SSD์— ๋Œ€ํ•ด ๋ณธ๊ฒฉ์ ์œผ๋กœ ์•Œ์•„๋ณด๊ธฐ ์ „์— Object Detection ๋ชจ๋ธ ์ข…๋ฅ˜ ์ค‘ One-Stage / Two-Stage๋กœ ๋ถ„๋ฅ˜ํ•˜๋Š” ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์งš๊ณ  ๋„˜์–ด๊ฐ€์ž.

 

One-Stage VS Two-Stage

 

๊ทธ๋™์•ˆ ์šฐ๋ฆฌ๊ฐ€ ๋ฐฐ์› ๋˜ RCNN, SPP, Fast RCNN, Faster RCNN ๋ชจ๋ธ์€ Two-Stage ๋ชจ๋ธ์ด์—ˆ๋‹ค. ์—ฌ๊ธฐ์„œ Two๋ž€, ์œ„์˜ ์˜ค๋ฅธ์ชฝ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ Region Proposal๊ณผ Object Detection ๋‹จ๊ณ„๋ฅผ ๋ถ„๋ฆฌํ•ด ์ „๊ฐœ๋˜๋Š” ๋ชจ๋ธ๋“ค์ด๋‹ค.

 

๋ฐ˜๋ฉด์— ์˜ค๋Š˜ ๋ฐฐ์šธ SDD์™€ ๊ฐ™์€ One-Stage ์ข…๋ฅ˜์˜ ๋ชจ๋ธ๋“ค์€ Region Proposal ๊ณผ Object Detection์„ ๋”ฐ๋กœ ๋ถ„๋ฆฌํ•˜์ง€ ์•Š๊ณ  ํ•œ ๋ฒˆ์— ์ˆ˜ํ–‰ํ•˜๋Š” ๋ชจ๋ธ์ด๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ์ด๋Ÿฌํ•œ One-Stage ๋ชจ๋ธ๋“ค์ด ๋“ฑ์žฅํ•œ ๋ฐฐ๊ฒฝ์€ ๋ฌด์—‡์ผ๊นŒ? Two-Stage ๋ชจ๋ธ๋“ค์˜ ํ•™์Šต ์†๋„๊ฐ€ ๋Š๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. Object Detection ๋ถ„์•ผ์—์„œ ๊ฐ์ฒด๋ฅผ ์–ผ๋งˆ๋‚˜ ํƒ์ง€๋ฅผ ์ž˜ ํ•˜๋Š๋ƒ๋„ ์ค‘์š”ํ•˜์ง€๋งŒ ํƒ์ง€๋ฅผ ์–ผ๋งˆ๋‚˜ '๋นจ๋ฆฌ' ํ•˜๋Š๋ƒ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ค‘์š”ํ•˜๋‹ค.

 

๋‹จ์ ์œผ๋กœ ์˜ˆ๋ฅผ ๋“ค์–ด ๋ณธ๋‹ค๋ฉด, ์ตœ๊ทผ ์ž๋™์ฐจ ์‚ฐ์—…์—์„œ ์ž์œจ์ฃผํ–‰ ์‚ฐ์—…์ด ์ •๋ง ํ•ซํ•˜๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋งŒ์•ฝ ์ž์œจ์ฃผํ–‰ํ•  ๋•Œ ๊ฐ์ฒด๋ฅผ ํƒ์ง€ํ•˜๋Š” ๋ชจ๋ธ์˜ ํƒ์ง€ ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ? ๋งŒ์•ฝ ์ง€๋‚˜๊ฐ€๋Š” ๋ณดํ–‰์ž๊ฐ€ ์‹œ์•ผ์•ˆ์— ๋“ค์–ด์™€ ํƒ์ง€๋˜์•ผ ํ•˜๋Š”๋ฐ ์ด ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค๋ฉด ๋”์ฐํ•œ ๊ตํ†ต์‚ฌ๊ณ ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.๋”ฐ๋ผ์„œ Object Detection ๋ถ„์•ผ์—์„œ ํƒ์ง€ ์†๋„๋„ ๋งค์šฐ ์ค‘์š”ํ•œ ์š”์†Œ๊ฐ€ ๋˜์—ˆ๋‹ค.

 

๊ทธ๋Ÿฐ๋ฐ Two-Stage ๋ชจ๋ธ๋“ค์€ ํƒ์ง€ ์„ฑ๋Šฅ์€ ๋›ฐ์–ด๋‚˜์ง€๋งŒ ์ƒ๋Œ€์ ์œผ๋กœ ํƒ์ง€ ์†๋„๋Š” ๋งค์šฐ ๋Š๋ฆฐ ํŽธ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์—ฐ๊ตฌ์ž๋“ค์€ ์ด๋Ÿฌํ•œ ๋Š๋ฆฐ ํƒ์ง€ ์†๋„๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ ์ž One-Stage ๋ชจ๋ธ์„ ๊ฐœ๋ฐœํ•ด์™”๋‹ค.

2. SSD(Single Shot Detector)

์‚ฌ์‹ค SSD ๋ชจ๋ธ์ด ๋‚˜์˜ค๊ธฐ ์ด์ „์— One-Stage ๋ชจ๋ธ๋กœ์„œ YOLO(You Only Look Once) ๋ฒ„์ „ 1์ด ๊ฐœ๋ฐœ๋˜์—ˆ๋‹ค. ๋ฌผ๋ก  YOLO ๋ฒ„์ „1์˜ ํƒ์ง€ ์†๋„ ์ฆ‰, ์ดˆ๋‹น ํ”„๋ ˆ์ž„์ˆ˜ ์ธ FPS(Frame Per Second) ๊ฐ’์ด ๋งค์šฐ ๋†’์•˜์ง€๋งŒ ํƒ์ง€ ์„ฑ๋Šฅ์ธ mAP๊ฐ’์ด ํ˜„์ €ํžˆ ๋‚ฎ์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ์ด ๋•Œ YOLO ๋ฒ„์ „1์„ ๊ฐœ์„ ์‹œํ‚ค๊ณ ์ž SSD ๋ชจ๋ธ์ด ๋“ฑ์žฅํ–ˆ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด SSD ๋ชจ๋ธ์€ ์–ด๋–ค ์›๋ฆฌ๋กœ ๋™์ž‘ํ• ๊นŒ? SSD ๋ชจ๋ธ์€ Multi-Scale Feature Layer๊ณผ Default Box๋ผ๋Š” 2๊ฐœ์˜ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.(์ฐธ๊ณ ๋กœ Default Box๋ž€, Anchor Box๋ž‘ ๋™์ผํ•˜๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค๊ณ  ํ•œ๋‹ค. ๋…ผ๋ฌธ ์ƒ์—์„œ๋Š” Default Box๋กœ ๋‚˜์™€์žˆ์œผ๋‚˜ ์—ญํ• ์€ Anchor Box์™€ ๋™์ผํ•˜๋‹ค)

 

2-1. Multi-Scale Feature Layer

๋ฉ€ํ‹ฐ ์Šค์ผ€์ผ Feature Layer์€ ์—ฌ๋Ÿฌ ๋ฒˆ์˜ ์ปจ๋ณผ๋ฃจ์…˜์„ ์ ์šฉํ•ด ๋‚˜์˜จ ์—ฌ๋Ÿฌ ๊ฐœ์˜ Feature Map์„ Object Detection์„ ์ˆ˜ํ–‰์‹œํ‚ค๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํ†ตํ•ฉํ•ด ์ตœ์ข… Detectionํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.

 

์œ„ ๊ทธ๋ฆผ์˜ 1๋ฒˆ์— ํ•ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„์ด๋‹ค. Feature Map ์‚ฌ์ด์ฆˆ๊ฐ€ 32, 16, 8, 4 ์ผ ๋•Œ ๊ฐ๊ฐ์— ๋Œ€ํ•ด Object Detection์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๊ฐ Feature Map์ด Object Detection์„ ์–ด๋–ป๊ฒŒ ์ˆ˜ํ–‰ํ• ๊นŒ?

 

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

2-2. Default Box(=Anchor Box)

์ปจ๋ณผ๋ฃจ์…˜์„ ํ†ตํ•ด ๋‚˜์˜จ ๊ฐ๊ฐ์˜ Feature Map์˜ ํฌ์ธํŠธ(๊ทธ๋ฆผ ์†์—์„œ๋Š” 32 x 32์•ˆ์˜ ๋…ธ๋ž€์ƒ‰ ํฌ์ธํŠธ๋“ค)๋งˆ๋‹ค ์—ฌ๋Ÿฌ๊ฐœ์˜ Anchor Box๋ฅผ ์”Œ์šฐ๊ณ  Ground Truth์™€ ๋น„๊ต๋ฅผ ํ•˜๋ฉด์„œ ํ•™์Šต์„ ์ง„ํ–‰ํ•œ๋‹ค.

 

์œ„์™€ ๊ฐ™์€ ๊ตฌ์กฐ์˜ SSD ๋ชจ๋ธ์˜ ํŠน์ง•์€ ๋ฌด์—‡์ผ๊นŒ? ๋ฐ”๋กœ ์„œ๋กœ ํฌ๊ธฐ๊ฐ€ ๋‹ค๋ฅธ Feature Map์ด ์ž…๋ ฅ ์ด๋ฏธ์ง€ ๋‚ด์˜ ํฌ๊ธฐ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ์ฒด๋“ค์„ ๊ฐ๊ฐ ์ „๋‹ด๋งˆํฌ(?)ํ•ด์„œ ํƒ์ง€๋ฅผ ์ž˜ ํ•˜๊ฒŒ ๋œ๋‹ค.

 

์šฐ์„  Feature Map 1๋ฒˆ์—์„œ 4๋ฒˆ์œผ๋กœ ๊ฐˆ์ˆ˜๋ก ์ž…๋ ฅ ์ด๋ฏธ์ง€๋ฅผ ๋” ์ƒ์ง•์ ์œผ๋กœ ์ž˜ ๋‚˜ํƒ€๋‚ด๋Š” Feature Map์ด๊ฒŒ ๋œ๋‹ค. ์ฆ‰, ์œ„ ๊ทธ๋ฆผ์˜ ์ค‘์‹ฌ Object๋“ค์€ ๊ฐ•์•„์ง€๋“ค์ด๋‹ค. ๋”ฐ๋ผ์„œ Feature Map 1๋ฒˆ์ผ ๋•Œ ๋ณด๋‹ค Feature Map 2๋ฒˆ~4๋ฒˆ์—์„œ ๊ฐ•์•„์ง€๋“ค์„ ์ƒ์ง•ํ•˜๋Š” Feature Map์ด ์กด์žฌํ•  ๊ฒƒ์ด๋‹ค.

 

์ด์ œ 'SSD์˜ ํฐ ์•„ํ‚คํ…์ฒ˜' ์ž๋ฃŒ์˜ ํ•˜๋‹จ์„ ์‚ดํŽด๋ณด๋ฉด ํŒŒ์„ ์œผ๋กœ ๋œ ๋ฐ•์Šค๋“ค์„ ์‚ดํŽด๋ณด์ž. ๋จผ์ € 32 x 32 Feature Map์— ํ•ด๋‹นํ•˜๋Š” ํŒŒ์„  ๋ฐ•์Šค๋“ค์„ ๋ณด๋ฉด ๊ฐ•์•„์ง€๋“ค ๋ณด๋‹ค ์ž‘์€ '์‚ฌ๋žŒ์˜ ์†'์„ ํƒ์ง€ํ•˜๊ณ  ์žˆ๋‹ค. ๋‹ค์Œ์˜ 16 x 16 Feature Map์—์„œ๋Š” ์ข€ ๋” ํฐ Object์ธ ๊ฐ•์•„์ง€๋ฅผ ํƒ์ง€ํ•˜๊ณ  ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ปจ๋ณผ๋ฃจ์…˜ ๊ณผ์ •์„ ๋” ๊ฑฐ์นœ Feature Map์ผ์ˆ˜๋ก ์ด๋ฏธ์ง€์˜ ์ค‘์‹ฌ์ด ๋˜๋Š” Object๋ฅผ ์ž˜ ํƒ์ง€ํ•˜๊ณ  ์ปจ๋ณผ๋ฃจ์…˜ ๊ณผ์ •์˜ ์ดˆ๋ฐ˜ Feature Map์ผ์ˆ˜๋ก ์ด๋ฏธ์ง€์˜ ์‚ฌ์ด๋“œ(?) Object๋ฅผ ์ž˜ ํƒ์ง€ํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๋Ÿฌํ•œ ๊ณผ์ •์œผ๋กœ ์ธํ•ด SSD๋Š” ์ด๋ฏธ์ง€ ์†์— ์กด์žฌํ•˜๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ Object๋“ค์„ ์ž˜ ํƒ์ง€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

 

 

Default Box์œผ๋กœ Object Detectionํ•˜๋Š” ๊ณผ์ •

 

๊ฒฐ๊ณผ์ ์œผ๋กœ SSD ๋ชจ๋ธ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ•˜์ž๋ฉด, ๋งŒ์•ฝ ์ž…๋ ฅ ์ด๋ฏธ์ง€ ๋‚ด์— ์—ฌ๋Ÿฌ๊ฐ€์ง€์˜ ๊ฐ์ฒด๋“ค์ด ์žˆ์„ ๋•Œ, ์„œ๋กœ ์‚ฌ์ด์ฆˆ๊ฐ€ ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ๊ฐœ์˜ Feature Map์ด ์ž…๋ ฅ ์ด๋ฏธ์ง€ ๋‚ด์˜ ํฌ๊ธฐ๊ฐ€ ๋‹ค๋ฅธ ๊ฐ์ฒด๋“ค์„ ์ „๋‹ดํ•ด์„œ ํƒ์ง€ํ•˜๋„๋ก ํ•˜๋Š” ๋ชจ๋ธ์ด๋‹ค.

3. SSD์˜ ๋งˆ์ง€๋ง‰์€ NMS !

2๋ฒˆ ๋ชฉ์ฐจ๊นŒ์ง€์˜ ๊ณผ์ •์„ ๊ฑฐ์ณ ๊ฐ์ฒด๋ฅผ ํƒ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋งŽ์€ ํ›„๋ณด Bounding Box๋“ค์ด ์ƒ๊ฒจ๋‚ฌ์„ ๊ฒƒ์ด๋‹ค. ์ด์ œ Ground Truth์™€ ๊ฐ€์žฅ IoU๊ฐ€ ๋†’์€ Bounding Box๋“ค๋งŒ ๋‚จ๊ธฐ๊ธฐ ์œ„ํ•ด NMS(Non-Max Suppression) ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค. NMS์— ๋Œ€ํ•ด ๋ชจ๋ฅธ๋‹ค๋ฉด ์—ฌ๊ธฐ์˜ 5-2 ๋ชฉ์ฐจ๋ฅผ ์ฐธ๊ณ ํ•ด๋ณด์ž.

4. SSD์˜ Cost Function

๋งˆ์ง€๋ง‰์œผ๋กœ SSD์˜ Cost Function์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. One-Stage ๋˜ํ•œ ๋ถ„๋ฅ˜์™€ ํšŒ๊ท€ ๋ฌธ์ œ๋ฅผ ๊ฐ™์ด ํ•™์Šตํ•˜๊ธฐ ๋•Œ๋ฌธ์— Multi-task Loss ์ˆ˜์‹์„ ์‚ฌ์šฉํ•œ๋‹ค. ํšŒ๊ท€๋ฅผ ์œ„ํ•œ Loss ํ•จ์ˆ˜๋Š” ์ด์ „ Object Detection ๋ชจ๋ธ๊ณผ ๋™์ผํ•˜๊ฒŒ $L_1\ Smooth$ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 

 

SSD์˜ Loss ์ˆ˜์‹

 

 

 

 

 

 

 

 

 

 

 

๋ฐ˜์‘ํ˜•