[GoogleML] Object Detection

2023. 10. 9. 12:40ใ†ArtificialIntelligence/2023GoogleMLBootcamp

 

 

 

Object Localization

ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋งŒ detect vs ์—ฌ๋Ÿฌ ๊ฐ์ฒด detect (multiple)

 

 

 

bounding box์— ๋Œ€ํ•œ ๊ฐ’์„ classifier์— ์ถ”๊ฐ€

์ค‘์‹ฌ point ์œ„์น˜ + ๋†’์ด + ๋„ˆ๋น„ -> 4๊ฐœ์˜ parameter

 

 

 

Pc -> object๊ฐ€ ์กด์žฌํ•˜๋Š”๊ฐ€? 

์žˆ๋‹ค๋ฉด bounding box ์ •๋ณด + ๋‹ค๋ฅธ class๋“ค์ด ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ C ๊ฐ’๋“ค 

์—†๋‹ค๋ฉด (Pc๊ฐ€ 0์ด๋ผ๋ฉด) 

๋‹ค๋ฅธ ๋ ˆ์ด๋ธ”๋“ค์€ ๋‹ค ์ƒ๊ด€ X (Don't cares) 

 

 

 

y1์ด 1์ด๋ผ๋ฉด 

MSE์ฒ˜๋Ÿผ ์—๋Ÿฌ (loss) ๊ฐ’ ๊ณ„์‚ฐ 

y1์ด 0์ด๋ผ๋ฉด (์—†๋‹ค๋ฉด)

don't care 

 

+ classification + localization๊นŒ์ง€ ํ•  ์ˆ˜ ์žˆ๋„๋ก 

-> by bounding box ์ •๋ณด๋„ ์ถ”๊ฐ€ 

 

 

 

Landmark Detection

๋ˆˆ์˜ ์œ„์น˜๋ฅผ ๋žœ๋“œ๋งˆํฌ๋กœ ์žก๊ณ  ํ‘œํ˜„ํ•  ๋•Œ, 

ํ•„์š”ํ•œ point๋“ค์„ ๋…ธ๋“œ๋กœ ์žก์„ ์ˆ˜ ์žˆ๋‹ค 

๊ฐ๊ฐ์˜ ๋ ˆ์ด๋ธ”์— ์ •๋ณด๋กœ ๋“ค์–ด๊ฐ

 

 

 

์‚ฌ๋žŒ์˜ ํฌ์ฆˆ๋ฅผ ๊ตฌ์กฐํ™”ํ•  ๋•Œ, 

๋žœ๋“œ๋งˆํฌ๋ฅผ ๋ช‡ ํฌ์ธํŠธ๋กœ ์žก์•„์„œ ํ‘œํ˜„ ๊ฐ€๋Šฅํ•˜๋‹ค

ex) 32๊ฐœ์˜ ํฌ์ธํŠธ (๋žœ๋“œ๋งˆํฌ)๋กœ ํ‘œํ˜„

 

 

 

Object Detection

 

 

 

์ ์ฐจ ์œˆ๋„์šฐ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ ค๊ฐ€๋ฉด์„œ sliding 

car๋ฅผ ํฌํ•จํ–ˆ๋Š”์ง€ ์•„๋‹Œ์ง€ ํŒ๋‹จํ•ด๊ฐ€๋ฉฐ, ํ‚ค์›Œ๊ฐ„๋‹ค 

stride๋ฅผ ๋„ˆ๋ฌด ์ž‘๊ฒŒ ์žก์œผ๋ฉด, sliding ๋งค์šฐ ๋งŽ์ด ํ•ด์•ผํ•œ๋‹ค -> cost ํผ

 

 

 

Convolutional Implementation of Sliding Windows

Fully Connected layer ๋Œ€์‹  convolution layer๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค (๋๋ถ€๋ถ„์—์„œ)

 

 

 

sliding window -> ์ ์ฐจ ์ฐฝ์˜ ํฌ๊ธฐ๊ฐ€ ๋„“์–ด์ง„๋‹ค 

14 -> 16์œผ๋กœ ์ปค์ง„ ์ด์œ ! 

+ FC๋ผ๊ณ  ํ‘œ๊ธฐ๋œ ๋ถ€๋ถ„์€ FC๊ฐ€ ์•„๋‹ˆ๋ผ, FC ๋Œ€์ฒดํ•˜๋Š” Conv๋กœ ์ดํ•ดํ•˜๋ฉด ๋œ๋‹ค 

 

 

 

 

 

 

bounding box์˜ ์ •ํ™•๋„๊ฐ€ ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค -> ๊ฐœ์„ ๋ฒ• ๋‹ค์Œ ๋น„๋””์˜ค์—์„œ . . . 

 

 

 

Bounding Box Predictions

์ •ํ•ด์ง„ delta๋งŒํผ์˜ sliding window๋กœ๋Š” ์ฐจ๋ฅผ ์ •ํ™•ํžˆ ๋‹ด๋Š” bounding box๋ฅผ ์–ป์„ ์ˆ˜ ์—†๋‹ค 

 

 

 

๋ณด๋ผ์ƒ‰ ์˜์—ญ์˜ ๊ฒฝ์šฐ, ๊ฐ€์šด๋ฐ์— ์žกํžˆ๋Š” target์ด ์—†๋‹ค. 

๋”ฐ๋ผ์„œ Pc๊ฐ€ 0์ด๊ณ , ๋‚˜๋จธ์ง€๋Š” don't care -> ๋‹ค ?๊ฐ€ ๋“ค์–ด๊ฐ

์—ฐ๋‘์ƒ‰๊ณผ ๋…ธ๋ž€์ƒ‰์€ center์— ๊ฐ์ฒด๊ฐ€ ์žกํžŒ ๊ฒƒ

 

C1 C2 C3 -> ๋ณดํ–‰์ž / ์ฐจ / ์˜คํ† ๋ฐ”์ด 

4๊ฐœ์˜ b -> ๋ฐ”์šด๋”ฉ ๋ฐ•์Šค์˜ ์ขŒํ‘œ, ๋„ˆ๋น„ ๋†’์ด ์˜๋ฏธ

 

๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ์˜ target output์€ 

grid (3 * 3) * 8 (ํ•œ ๊ทธ๋ฆฌ๋“œ ์นธ ๋‹น y, label ๋ฒกํ„ฐ) -> 72

 

 

 

input dim = 100 * 100 * 3 (pixel)

train์ดํ›„, test ๋‹จ๊ณ„์—์„œ, output y์— ๋Œ€ํ•˜์—ฌ 

์šฐ์„  ์ฒซ๋ฒˆ์งธ Pc๊ฐ€ 1์ธ ๊ฒƒ๋งŒ ๊ณจ๋ผ์„œ, (๊ฐ์ฒด๊ฐ€ ์žˆ๋‹ค๋Š” ๋œป)

bx by bh bw๋ฅผ ๊ฐ€์ ธ์˜ค๋ฉด bounding box๊ฐ€ ๋œ๋‹ค! 

 

object์˜ mid point๊ฐ€ ์žˆ๋Š” grid์— ๊ทธ ๊ฐ์ฒด๊ฐ€ ์žˆ๋‹ค๊ณ  ํ• ๋‹น

๊ทธ๋ฆฌ๋“œ์˜ ์ฐจ์›์ด 3 -> 19๋กœ ๋Š˜์–ด๋‚œ๋‹ค๋ฉด

ํ•˜๋‚˜์˜ ๊ทธ๋ฆฌ๋“œ์— ๋‘ ๊ฐ์ฒด๊ฐ€ ๋“ค์–ด๊ฐˆ, ๊ฒน์น  ํ™•๋ฅ ์ด ์ค„์–ด๋“ ๋‹ค (๋‹น์—ฐํ•จ)

 

 

 

๋ชจ๋‘ ํ•˜๋‚˜์˜ grid์— ๋Œ€ํ•œ ์ƒ๋Œ€์ ์ธ ์œ„์น˜, ๊ฐ’์œผ๋กœ ํ‘œํ˜„๋œ๋‹ค 

์ด๋•Œ, center์˜ ์ƒ๋Œ€์ ์ธ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” bx, by๋Š” 1๋ณด๋‹ค ์ž‘์€ ๊ฐ’์ด์–ด์•ผ ํ•˜์ง€๋งŒ,

box์˜ bh, bw์˜ ๊ฒฝ์šฐ 1์„ ๋„˜์„ ์ˆ˜๋„ ์žˆ๋‹ค (ํ•˜๋‚˜์˜ grid๋ฅผ ํŠ€์–ด๋‚˜๊ฐˆ ์ˆ˜๋„ ์žˆ์œผ๋‹ˆ๊นŒ) 

 

 

 

Intersection Over Union

IoU -> Intersection over union

๊ฒน์น˜๋Š” ์˜์—ญ / ๋‘˜์„ ํ•ฉํ•œ ์˜์—ญ์˜ ๋น„์œจ 

1์— ๊ฐ€๊นŒ์šธ์ˆ˜๋ก ๋ชจ๋‘ ๊ฒน์น˜๋Š” ๊ฒƒ์ด๋‹ˆ ๋” ์ •ํ™•ํ•œ ๊ฒƒ 

์ผ๋ฐ˜์ ์œผ๋กœ 0.5๋ณด๋‹ค ๋†’์œผ๋ฉด correct (๊ทธ๋ƒฅ ์‚ฌ๋žŒ์ด ์ •ํ•œ ๊ฒƒ, ๋” ์—„๊ฒฉํ•˜๊ฒŒ ํ•ด๋„ 0.6,7 ๊ดœ์ฐฎ๋‹ค)

 

 

 

Non-max Suppression

์ฐจ์˜ center๊ฐ€ ํฌํ•จ๋œ ๊ทธ๋ฆฌ๋“œ๋Š” ํฌ๋ฐ•ํ•˜์ง€๋งŒ, 

๊ฐ์ฒด๊ฐ€ ํฌํ•จ๋œ ๊ทธ๋ฆฌ๋“œ๋Š” ๋” ๋งŽ๋‹ค

 

 

 

Pc -> ๊ฐ์ฒด๊ฐ€ ํƒ์ง€๋  ํ™•๋ฅ 

IoU๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ๊ฒƒ์„ ์„ ํƒํ•˜๊ฒŒ ๋จ (์˜ค๋ฅธ์ชฝ ์ฐจ์˜ ๊ฒฝ์šฐ 0.9)

 

 

 

Pc๊ฐ€ 0.6๋ณด๋‹ค ๋‚ฎ์€ ๋ฐ•์Šค๋“ค์€ ๋‹ค ๋ฒ„๋ฆฌ๊ณ  

๊ฐ€์žฅ ํฐ Pc๋ฅผ ๊ฐ€์ง„ ๋ฐ•์Šค๋ฅผ ์˜ˆ์ธก์œผ๋กœ ๊ณ ๋ฅธ๋‹ค

 

 

 

Anchor Boxes

๋‘ anchor box์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํ•˜๋‚˜๋กœ ํ•ฉ์ณ์„œ y๊ฐ€ 2๋ฐฐ ๊ธธ์–ด์ง

 

 

 

 

 

 

์‚ฌ๋žŒ ์ฐจ ๋‘˜ ๋‹ค ์žˆ์„ ๋•Œ / ์ฐจ ๋งŒ (์‚ฌ๋žŒ ๋ˆ์ผ€์–ด)

๋งŒ์•ฝ ์•ต์ปค๋ฐ•์Šค๋Š” 2๊ฐœ, ๊ฐ์ฒด๋Š” 3๊ฐœ๋ผ๋ฉด? -> ์ž˜ ๋ชป ๋‹ค๋ฃฐ๊ฒƒ

 

 

 

YOLO Algorithm

 

 

 

 

 

 

์šฐ์„  ๊ฐ ๊ทธ๋ฆฌ๋“œ๋งˆ๋‹ค 2๊ฐœ์”ฉ ๋ฐ”์šด๋”ฉ ๋ฐ•์Šค๋ฅผ ์ƒ์„ฑ

 

 

 

๋‚ฎ์€ ํ™•๋ฅ ์„ ์ง€๋‹Œ ์˜ˆ์ธก๋“ค์€ ์ง€์šด๋‹ค

 

 

 

non-max surppression -> ์ตœ์ข… ์˜ˆ์ธก ์„ ํƒ

 

 

 

Region Proposals (Optional)

Region CNN 

segmentation์„ ๋‹ค๋ฃจ๋Š” R-CNN

์‹œ๊ฐ„์ด ๋งŽ์ด ์†Œ์š”๋˜์–ด(slow), ์ค„์ด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค (fast)

 

 

 

์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ๋ฐœ์ „๋“ค

 

 

 

Semantic Segmentation with U-Net

๋ชจ๋“  ํ”ฝ์…€์— ๋Œ€ํ•ด

 

 

 

์˜๋ฃŒ ๋ฐ์ดํ„ฐ์— ๋งŽ์ด ํ™œ์šฉ๋œ๋‹ค

 

 

 

์ฐจ๋ผ๋ฉด 1 ์•„๋‹ˆ๋ฉด 0

 

 

 

๋ชจ๋“  ํ”ฝ์…€์— ๋ ˆ์ด๋ธ”๋ง

์˜ˆ์ธกํ•  ๊ฒƒ์ด ๋งค์šฐ ๋งŽ์•„์ง„ ๊ฒƒ

 

 

 

์ž‘๊ฒŒ ์ค„์ธ ์ด๋ฏธ์ง€ (ํ”ผ์ฒ˜๋งต) -> ๋‹ค์‹œ ํฌ๊ธฐ๋ฅผ ํ‚ค์šด๋‹ค!

Transpose conv๋ฅผ ํ†ตํ•ด ์ด๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค :)

 

 

 

Transpose Convolutions

ํ”ฝ์…€์„ ์ค„์—ฌ๋‚˜๊ฐ€๋Š” conv์™€ ๋‹ฌ๋ฆฌ

์—ญ์œผ๋กœ ํ”ฝ์…€ ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๋Š” transpose conv

 

 

 

์–ด๋–ป๊ฒŒ 4* 4๋ฅผ ์ฑ„์šธ ์ˆ˜ ์žˆ์„๊นŒ?

์—ญ์œผ๋กœ ํฐ conv๋กœ ๊ณฑํ•ด์„œ ํ‚ค์šด๋‹ค

 

 

 

๋น—๊ธˆ ์นœ ํŒจ๋”ฉ ์ง€์—ญ์€ ๋ฌด์‹œํ•˜๊ณ , ํฐ ๊ณณ์—๋งŒ ๊ฐ’์„ ์ฑ„์šด๋‹ค

 

 

 

stride๋ฅผ 2๋กœ ์ฃผ์–ด์„œ ์˜ฎ๊ฒผ๋‹ค

๊ฒน์น˜๋Š” ์นธ์€ ๊ฐ’์„ ๋”ํ•ด์ค€๋‹ค

 

 

 

hmm

๊ทผ๋ฐ ์™œ padding์˜ ์™ผ์ชฝ ์œ„๋กœ๋งŒ ์Šค์น˜๊ฒŒ ๋˜๋Š”๊ฑธ๊นŒ? 

์šฐ์ธก ํ•˜๋‹จ์€ ํšŒ์ƒ‰ ํŒจ๋”ฉ ํ•„์š”์—†๋Š” ๊ฒƒ ์•„๋‹Œ๊ฐ€? 

 

 

 

U-Net Architecture Intuition

U Net ๊ตฌ์กฐ์—์„œ skip connection

1. ์ด์ „ layer๋ฅผ ํ†ตํ•œ (์ถ”์ƒํ™”๋œ, ๋‚ฎ์€ ํ•ด์ƒ๋„์˜) ๊ฐ์ฒด ์œ„์น˜ ์ •๋ณด๋ฅผ ์–ป๋Š”๋‹ค.

    low level feature information / high level - spatial info

2. ์ดˆ๊ธฐ layer (input๊ณผ ๊ฐ€๊นŒ์šด)๋ฅผ ํ†ตํ•ด ๋””ํ…Œ์ผํ•œ, ๋†’์€ ํ•ด์ƒ๋„์˜ ์ด๋ฏธ์ง€ ์ •๋ณด๋ฅผ ์–ป๋Š”๋‹ค 

 

 

 

U-Net Architecture

h, w๊ฐ€ ์ค„์–ด๋“ค๋ฉด์„œ, ์ฑ„๋„ ๋ฐฉํ–ฅ์€ ๋Š˜์–ด๋‚œ ์ƒํ™ฉ 

์ผ๋ฐ˜์ ์ธ conv์˜ ๊ตฌ์กฐ 

 

 

 

์ดํ›„ transpose conv์™€ skip connection์„ ํ†ตํ•ด 

์—ฌ๋Ÿฌ info -> h์™€ w๋ฅผ ๋Š˜๋ ค๋‚˜๊ฐ€๋ฉฐ -> ๋งˆ์ง€๋ง‰์— 1 * 1 conv ํ†ต๊ณผ

์ตœ์ข…์ ์œผ๋กœ h * w * n_classes ์ฐจ์›์˜ prediction์„ ์–ป๊ฒŒ๋œ๋‹ค.

๊ฐ ํ”ฝ์…€ ๋ณ„ + class ์ •๋ณด๋ฅผ ๋‹ด์€ segmentation