[GoogleML] Convolutional Neural Networks

2023. 10. 4. 14:26ใ†ArtificialIntelligence/2023GoogleMLBootcamp

 

 

 

Computer Vision

 

 

 

CV ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ์˜ ๋ฌธ์ œ

input (image)์˜ ์ฐจ์›์ด ๋งค์šฐ ํฌ๋‹ค (3 channel๊นŒ์ง€ ๊ณ ๋ ค)

๋” ๋†’์€ ํ•ด์ƒ๋„์˜ ์ด๋ฏธ์ง€์ผ์ˆ˜๋ก, ์ƒ๋Œ€์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ์ˆ˜๊ฐ€ ๋ถ€์กฑํ•˜์—ฌ ์˜ค๋ฒ„ํ”ผํŒ… ๋‚  ํ™•๋ฅ  ๋†’์•„์ง 

 

 

 

Edge Detection Example

edge์˜ ๊ฐœ๋…

 

 

 

Convolution ์—ฐ์‚ฐ์˜ ์˜์˜ (๊ณผ์ •)

 

 

 

next 4 x 4

 

 

 

ํ”„๋ ˆ์ž„์›Œํฌ ๋ณ„ conv ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฐ๊ฐ์˜ ์—ฐ์‚ฐ์ด ์กด์žฌํ•œ๋‹ค (method ์ด๋ฆ„์€ ๋‹ค๋ฆ„)

 

 

 

์™œ ์„ธ๋กœ ๋ฐฉํ–ฅ edge๋ฅผ detect ํ•˜๋Š”๊ฐ€? 

๋ฐ˜์€ ๋ฐ๊ณ  (๊ฐ’์ด ํฌ๊ณ ), ๋ฐ˜์€ ์–ด๋‘์šด ์ด๋ฏธ์ง€๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ž

์ด๋•Œ vertical filter๋ฅผ ํ™œ์šฉํ•˜๋ฉด (์ด๋ฏธ์ง€ ๋ณ€ํ™”๋ฅผ ๊ฒ€์ถœํ•˜๋Š” ๊ฒƒ)

 

์ขŒ์šฐ ๋ณ€ํ™”๋ฅผ detect ํ•œ ๋ถ€๋ถ„์€ +30์œผ๋กœ ๋ฐ๊ฒŒ ํ‘œํ˜„๋œ๋‹ค 

๋”ฐ๋ผ์„œ ๊ฒฝ๊ณ„์„  (์„ธ๋กœ ์ค„ ๋ถ€๋ถ„)์ด ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ๋Š” ๋ฐ์€ ๊ฐ’์œผ๋กœ ํ‘œํ˜„๋˜๋Š” ๊ฒƒ 

์˜ค..! 

 

 

 

More Edge Detection

input image ๋ฐ˜๋Œ€๋กœ ๋’ค์ง‘ํžŒ ์ƒํ™ฉ์—์„œ๋Š”

๊ฐ€์šด๋ฐ๊ฐ€ -30์œผ๋กœ, ์–ด๋‘์šด ๊ฐ’(dark region)์„ ๊ฐ–๊ฒŒ ๋จ 

 

 

 

Horizontal edge (filter)

๊ฐ€๋กœ ๋ฐฉํ–ฅ์„ ๊ธฐ์ค€์œผ๋กœ ๊ฐ’์˜ ๋ณ€ํ™”๋ฅผ ๊ฒ€์ถœ

ํฅ๋ฏธ๋กœ์šด ๋ถ€๋ถ„ -> ์ฒดํฌ ํ‘œ์‹œ์˜ ์ค‘์•™ ๊ฒฝ๊ณ„์—์„œ ์žฌ๋ฏธ์žˆ๋Š” ๊ฐ’์ด ๋‚˜์˜จ๋‹ค (์œ„์•„๋ž˜์˜ ์ขŒ, ์šฐ ๊ณ„์‚ฐ +10) 

 

 

 

vertical + ๊ฐ€์šด๋ฐ์— ๊ฐ€์ค‘์น˜๋ฅผ ์ค€ sobel filter 

๋‚˜์•„๊ฐ€์„œ scharr filter

 

์ด๋Ÿฌํ•œ ํ•„ํ„ฐ๋ฅผ ํ•™์Šตํ•˜๋Š” ๊ฒƒ์ด CNN

์ „์ฒด image ๋Œ€์‹ , ์ด์™€ ์—ฐ์‚ฐ ๋  9๊ฐœ์˜ params๋ฅผ ํ•™์Šตํ•˜๋Š” ๊ฒƒ

 

 

 

Padding

์ด๋ฏธ์ง€ ์ˆ˜์ถ•๋˜๋Š” ๊ณต์‹ 

( n - f + 1 ) ^ 2 

n : input / original

f : filter size 

ex) 6 - 3 + 1 = 4 (๋”ฐ๋ผ์„œ 16)

 

 

 

ํ•œ ๊ฒน์˜ padding์œผ๋กœ input๊ณผ ๋™์ผํ•œ pixel์˜ ouput์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค

 

 

 

ํŒจ๋”ฉ๊นŒ์ง€ ์ ์šฉ๋œ Ouput ๊ณต์‹ 

( n + 2p - f + 1 ) ^ 2

 

 

 

valid = ํŒจ๋”ฉ ์—†๋Š” ๋ฒ„์ „

same = ํŒจ๋”ฉ์œผ๋กœ ์ธํ’‹ ์•„์›ƒํ’‹ ์‚ฌ์ด์ฆˆ ๋™์ผํ•˜๊ฒŒ 

๋”ฐ๋ผ์„œ padding = ( filter - 1 ) / 2

 

 

 

* ํ•„ํ„ฐ๋Š” ํ™€์ˆ˜๋กœ (convention)

1. central pixel

2. padding 

 

 

 

Strided Convolutions

๋‘ ์นธ ์”ฉ, step์„ ๋›ฐ๊ธฐ

stride์˜ ๊ฐœ๋… 

 

 

 

 

 

 

floor ํ•จ์ˆ˜ 

output ๊ณ„์‚ฐํ•˜๋Š” ๊ณต์‹ ๋ณ€ํ™” 

{ ( n + 2p - f ) / s + 1 } ^ 2 

 

 

 

 

 

 

์‹ ํ˜ธ์ฒ˜๋ฆฌ์—์„œ๋Š” convolution ์—ฐ์‚ฐ์ด (์ˆ˜ํ•™์ ์œผ๋กœ)

๋Œ€๊ฐ ์ถ•์œผ๋กœ (๊ฐ€๋กœ, ์„ธ๋กœ) ๋ฐ˜์ „๋œ (๋ณ€ํ™˜๋œ) filter์— ๋Œ€ํ•œ ์—ฐ์‚ฐ์ด ์ด๋ฃจ์–ด์ ธ์•ผํ•˜์ง€๋งŒ

Deep learning ์—ฐ์‚ฐ์—์„œ๋Š” ๋Œ€์นญ ์ ์šฉํ•˜์ง€ ์•Š๊ณ , ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ํ•ฉ์„ฑ ๊ณฑ ์—ฐ์‚ฐ์ด ์ด๋ฃจ์–ด์ง„๋‹ค

 

 

 

Convolutions Over Volume

 

 

 

ํ๋ธŒ ๋‹จ์œ„์˜ 27๋ฒˆ์˜ ๊ณฑ์˜ ํ•ฉ์ด ํ•œ ์นธ์— ์ ํžˆ๊ฒŒ ๋œ๋‹ค

 

 

 

Red channel์˜ vertical edge๋ฅผ detectํ•˜๊ณ  ์‹ถ์„ ๋•Œ 

 

 

 

channel๊ณผ ๋ฌด๊ด€ํ•˜๊ฒŒ ์„ธ๋กœ ์—ฃ์ง€๋ฅผ ๊ฒ€์ถœํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด

2๋ฒˆ์งธ ์ค„์˜ ๊ฒฝ์šฐ์™€ ๊ฐ™์ด ๋ชจ๋‘ ๋‹ค vertical filter

 

 

 

output์˜ ๋งˆ์ง€๋ง‰ ์ฐจ์›์€

ํ•„ํ„ฐ์˜ pixel์ด ์•„๋‹ˆ๋ผ, (f ์™€๋Š” ๋ฌด๊ด€)

ํ•„ํ„ฐ์˜ ๊ฐœ์ˆ˜์— ๋Œ€์‘ํ•˜๋Š” ์ฐจ์›์„ ๊ฐ–๊ฒŒ ๋œ๋‹ค

number of channel

 

 

 

One Layer of a Convolutional Network

1. 3*3 Conv ํ†ต๊ณผ

2. bias๋ฅผ ๋”ํ•˜๊ณ , ReLU๋ฅผ ํ†ต๊ณผ

3. 2 ๊ฐœ์˜ 4 * 4 ๋”ํ•œ๋‹ค

-> next a (4 * 4 * 2)

 

 

 

 

 

 

input image์˜ size์™€๋Š” ๋ฌด๊ด€ํ•˜๋‹ค! 

ํ•„ํ„ฐ๋ฅผ ํ•™์Šตํ•˜๋Š” ๊ฒƒ, ๋”ฐ๋ผ์„œ ํ•„ํ„ฐ์˜ params๋งŒ ๊ณ ๋ ค

CV ๋ถ„์•ผ์—์„œ ์ปจ๋ณผ๋ฃจ์…˜์„ ํ™œ์šฉํ•œ ์ด์œ ๊ฐ€ ๋˜๊ธฐ๋„ ํ•จ

 

 

 

* input dimension

previous layer์— ๋Œ€ํ•œ ํ‘œ๊ธฐ๋กœ l - 1 ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. 

์ด์ „์˜ height, width, channel (ํ•„ํ„ฐ์˜ ์ˆ˜)์„ ์˜๋ฏธํ•จ

 

 

 

 

 

 

Simple Convolutional Network Example

์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด params ์•Œ์•„๋ณด๊ธฐ

๋”ฅ๋Ÿฌ๋‹ ๋„คํŠธ์›Œํฌ๊ฐ€ ๊นŠ์–ด์งˆ์ˆ˜๋ก, H,W๋Š” ์ค„์–ด๋“ค๊ณ , ๊นŠ์ด๋Š” ๋Š˜์–ด๋‚œ๋‹ค. (channel ๋ฐฉํ–ฅ)

 

 

 

 

 

 

Pooling Layers

max pooling์˜ ๊ณผ์ • 

filter 2*2 , stride2๋ฅผ ์ค€ ๊ฒƒ๊ณผ ๋™์ผํ•˜๋‹ค

 

 

 

max pooling

ํ•„ํ„ฐ์ˆ˜ 3๊ฐœ, ์ŠคํŠธ๋ผ์ด๋“œ 1

 

 

 

average pooling

max pooling์ด NN์—์„œ ๋” ๋งŽ์ด ์“ฐ์ธ๋‹ค.

(ํ‰๊ท ์ด ๋” ์“ฐ์ด๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Œ)

 

 

 

ํ’€๋ง์˜ ์žฅ์ ! 

- parameter X

- padding X

 

 

 

CNN Example

parameter์™€ ํ•จ๊ป˜ ์–ด๋–ป๊ฒŒ Conv ๊ณผ์ •์ด ์ง„ํ–‰๋˜๋Š” ๊ฒƒ์ธ์ง€ ์ƒ์„ธํ•˜๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค. 

 

 

 

another layer 2

 

 

 

ํ›„๋ฐ˜๋ถ€์— Fully connected layer๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ

softmax ํ†ต๊ณผ ํ›„ classification

 

 

 

Nh, Nw๋Š” ์ค„์—ฌ๊ฐ€๋ฉด์„œ,

Nc๋ฅผ ๋Š˜์ด๋Š”๊ฒŒ ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ

conv pooling conv pooling -> FC FC FC -> softmax (์ผ๋ฐ˜์ ์ธ ๊ณผ์ •)

 

 

 

 

 

 

Why Convolutions?

์ปจ๋ณผ๋ฃจ์…˜ ๋ ˆ์ด์–ด๋ฅผ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด parameter ํ›จ์”ฌ ์ ๋‹ค

 

 

 

1. parameter sharing

์ „์ฒด ์ด๋ฏธ์ง€์— ๋Œ€ํ•ด filter์˜ params๋ฅผ ๋ชจ๋‘ ๊ณต์œ ํ•œ๋‹ค 

 

 

 

2. ์—ฐ๊ฒฐ์˜ sparsity 

sparseํ•˜๊ฒŒ ์ด๋ฏธ์ง€ ์ •๋ณด๋ฅผ ์ฒ˜๋ฆฌ 

ํŠน์ • ๋ถ€๋ถ„์—๋งŒ ์˜ํ–ฅ์„ ๋ฐ›๊ฒŒ ๋œ๋‹ค. 

denseํ•œ ๊ธฐ์กด์˜ MLP ๊ธฐ๋ฐ˜๊ณผ๋Š” ๋‹ค๋ฆ„