๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
TIL/Coursera(Google ML Bootcamp)

[Convolutional Neural Networks] Deep Convolutional Models - Case studies :: seoftware

by seowit 2021. 9. 20.

๐Ÿ“œ ๊ฐ•์˜ ์ •๋ฆฌ 

 

* Coursera ๊ฐ•์˜ ์ค‘ Andrew Ng ๊ต์ˆ˜๋‹˜์˜ Convolutional Neural Network ๊ฐ•์˜๋ฅผ ๊ณต๋ถ€ํ•˜๊ณ  ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

* ์ด๋ฏธ์ง€ ์ถœ์ฒ˜ : Deeplearning.AI


1. Case Studies

 

Why look at case studies?

 

I learned about

์ง€๋‚œ ์‹œ๊ฐ„์— conv layer, pooling layer, fc layer ์— ๋Œ€ํ•ด ๋ฐฐ์› ๋Š”๋ฐ, ์–ด๋–ป๊ฒŒ ์ด๊ฒƒ๋“ค์„ ์Œ“์•„์•ผ ํšจ๊ณผ์ ์ธ ๋„คํŠธ์›Œํฌ ์•„ํ‚คํ…์ณ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„๊นŒ? ํ•œ task์—์„œ ์ž˜ ์ž‘๋™ํ•˜๋Š” ๋„คํŠธ์›Œํฌ๋Š” ๋Œ€๋ถ€๋ถ„ ๋‹ค๋ฅธ task์—๋„ ์ž˜ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฏธ ๋ฐœํ‘œ๋œ ์„ฑ๋Šฅ์ด ์ข‹์€ ๋„คํŠธ์›Œํฌ๋„ค ๋Œ€ํ•œ ๋ฆฌ์„œ์น˜, ์ฝ”๋“œ ๋“ฑ์„ ์ฝ์œผ๋ฉด ์ข‹๋‹ค. 

Classic networks(LeNet-5, AlexNet, VGG), ResNet, Inception ์„ ํ†ตํ•ด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ effective convolutional network๋ฅผ ๋งŒ๋“ค์ง€์— ๋Œ€ํ•œ ๋” ๋‚˜์€ intuition์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

 

Classic Networks

 

โœ” LeNet-5

- ๋„คํŠธ์›Œํฌ๊ฐ€ ๊นŠ์–ด์งˆ์ˆ˜๋ก(=์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฐˆ์ˆ˜๋ก) ์ฑ„๋„์ˆ˜๋Š” ๋Š˜์–ด๋‚˜๋Š” ๋ฐ˜๋ฉด์— ๋†’์ด(n_h)์™€ ํญ(n_w)์ด ์ค„์–ด๋“œ๋Š” ๊ฒฝํ–ฅ์„ ๊ฐ€์ง„๋‹ค. 

- ํ•œ layer์— conv layer, pooling alyer, ํ•˜๋‚˜ ์ด์ƒ์˜ conv layer, pooling layer, fc layer, fc layer, output์ด๋ผ๋Š” ํŒจํ„ด์„ ๊ฐ–๋Š”๋‹ค.

- ์•„๋ž˜ ์ด๋ฏธ์ง€์—์„œ ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ํ•„๊ธฐ๋œ ๋ถ€๋ถ„์€ ๋…ผ๋ฌธ์—์„œ ์ œ์‹œ๋˜์—ˆ๋˜ ๋ถ€๋ถ„์ด์ง€๋งŒ ํ˜„์žฌ์—๋Š” ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ถ€๋ถ„์ด๋‹ค. ๋‹น์‹œ์—๋Š” ReLU๊ฐ€ ์•„๋‹Œ sigmoid์™€ tanh ํ™œ์„ฑํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ–ˆ๊ณ , pooling layer ํ›„์— nonlinearity ํ•จ์ˆ˜(ํ™œ์„ฑํ•จ์ˆ˜)๋ฅผ ์ ์šฉํ•˜์ง€ ์•Š์•˜๋‹ค. ๊ณผ๊ฑฐ์˜ computing ์„ฑ๋Šฅ์ด ์ง€๊ธˆ๋งŒํผ ์ข‹์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋“œ์›จ์–ด์ ์ธ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์ด ์‚ฌ์šฉ๋˜์—ˆ๋Š”๋ฐ ์ง€๊ธˆ์€ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋‹ˆ ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ๋Š” ์ž์„ธํ•˜๊ฒŒ ๋ชฐ๋ผ๋„ ๋œ๋‹ค.

 

โœ” AlexNet

- ๋…ผ๋ฌธ์„ ๋ณด๋ฉด 224×224×3 ์˜ input size๋ฅผ ๊ฐ–๋Š”๋‹ค๊ณ  ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ ๋“ค์–ด๋งž๋Š” ํฌ๊ธฐ๋Š” 227×227×3 ์ด๋‹ค.

- LeNet๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ much bigger. LeNet์€ ์•ฝ 6๋งŒ๊ฐœ(60k)์˜ ํŒŒ๋ผ๋ฏธํ„ฐ, AlexNet์€ 6์ฒœ๋งŒ๊ฐœ(60m)์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ฐ€์ง„๋‹ค.

- ReLU activation fuction ์‚ฌ์šฉ

- 2๊ฐœ์˜ GPU ์‚ฌ์šฉ

๐Ÿ’ฅ์ž์ฃผ ํ—ท๊ฐˆ๋ฆฌ๋Š” ๊ฐœ๋… ์ •๋ฆฌ - ์ฑ„๋„(Channel) vs ์ปค๋„(Kernel) vs ํ•„ํ„ฐ(Filter)

์šฐ์„  ์ฑ„๋„์€ RGB, Grayscale ๋“ฑ์—์„œ Red channel, Blue Channel, Green Channel ๋“ฑ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋‹จ์–ด์ด๊ณ , ์ฑ„๋„์˜ ๊ฐœ์ˆ˜๊ฐ€ input์˜ ์ฑ„๋„ ๊ฐœ์ˆ˜์™€ ๊ฐ™์•„์•ผ ํ•œ๋‹ค.

์ปค๋„๊ณผ ํ•„ํ„ฐ๋Š” ๊ฐ™์€ ์˜๋ฏธ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ์ด ์‚ฌ์šฉ๋˜๋Š” ํ•„ํ„ฐ์˜ ๊ฐœ์ˆ˜๊ฐ€ output ์ฑ„๋„์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋œ๋‹ค.  

indoml ์— ์ž˜ ์ •๋ฆฌ๋˜์–ด ์žˆ์œผ๋‹ˆ ์ด๋ฏธ์ง€์™€ ํ•จ๊ป˜ ๋ณด์ž!!

 

โœ” VGG-16

- ๋งŽ์€ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋Œ€์‹ ์— ํ›จ์”ฌ ๋‹จ์ˆœํ•œ ๊ตฌ์กฐ. ํ•ญ์ƒ ๋™์ผํ•œ stride, padding, size์˜ Conv layer, Pooling layer ์‚ฌ์šฉ

- [CONV 64]×2์˜ ์˜๋ฏธ๋Š” conv layer๋ฅผ 2๊ฐœ ์ ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ. 

- ์•ฝ 1์–ต 3์ฒœ 8๋ฐฑ๋งŒ๊ฐœ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ

 

ResNet

๋งค์šฐ ๊นŠ์€ ๋„คํŠธ์›Œํฌ๋Š” vanishing gradient์™€ exploding gradient ๋ฌธ์ œ๋กœ ํ•™์Šต์ด ์–ด๋ ต๋‹ค. 

์œ„์˜ ๊ณผ์ •์„ ์ „์ฒด์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด 2๊ฐœ์˜ layer๋งˆ๋‹ค residual block์ด ์ƒ๊ธฐ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๊ณ  ์ด๊ฒƒ์ด plainํ•˜๊ฒŒ layer๋ฅผ ์Œ“์•˜์„ ๋•Œ๋ณด๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ํ•™์Šต์ด ์ง„ํ–‰๋จ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

Networks in Networks and 1×1 Convolutions

Networks in Networks == 1×1 Convolutions

์ฑ„๋„์ด ํ•œ ๊ฐœ์ผ ๋•Œ๋Š” ๋ณ„๋กœ ํšจ๊ณผ์ ์ด์–ด ๋ณด์ด์ง€ ์•Š์ง€๋งŒ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ฑ„๋„์„ ๊ฐ€์ง€๊ณ  ์žˆ์„ ๋•Œ๋Š” output ์ฑ„๋„์˜ ๊ฐœ์ˆ˜๋ฅผ filter์˜ ๊ฐœ์ˆ˜๋กœ ์ค„์—ฌ์ฃผ์–ด์„œ ๊ณ„์‚ฐํ•ด์•ผํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ค„์—ฌ์ฃผ๋Š” ํšจ๊ณผ๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค.

 

์˜ˆ์‹œ๋ฅผ ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 28×28×192์˜ input ํฌ๊ธฐ๋ฅผ 32๊ฐœ์˜ 1×1 CONV ์ ์šฉํ•˜์—ฌ 28×28×32๋กœ ์••์ถ•ํ•˜์˜€๋‹ค. 

 

Inception Network Motivation

 

motivation : ๋ญ˜ ์›ํ•˜๋Š”์ง€ ๋ชฐ๋ผ์„œ ๋‹ค ์ค€๋น„ํ–ˆ์–ด

1×1 filter, 3×3 filter, pooling layer, 5×5 filter ๋“ฑ ๋ฌด์—‡์„ ์‚ฌ์šฉํ• ์ง€ ๊ณ ๋ฏผํ•˜์ง€๋ง๊ณ  output size์˜ ํฌ๊ธฐ๋งŒ ๊ณ ๋ คํ•ด์„œ ๋ชจ๋‘ ํ•™์Šตํ•œ๋‹ค.

๋ฌธ์ œ๋Š” ๊ณ„์‚ฐ๋น„์šฉ์ธ๋ฐ, ์œ„์˜ ์˜ˆ์‹œ์—์„œ 5×5 Conv layer์— ์ดˆ์ ์„ ๋งž์ถ”์–ด์„œ ๋ณด์ž

filter size๊ฐ€ 5×5×192 ์ž„์„ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๊ณ  ์ „์ฒด ๊ณ„์‚ฐํ•ด์•ผํ•˜๋Š” ๊ฐœ์ˆ˜๋Š” filter์˜ ํŒŒ๋ผ๋ฏธํ„ฐ์— output ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ณฑํ•œ ๊ฐ’์ด๋‹ค. ๋”ฐ๋ผ์„œ 5×5×192 * 28×28×32 = ์•ฝ 1์–ต 2์ฒœ๋งŒ ๊ฐœ์˜ ์—ฐ์‚ฐ์ด ํ•„์š”ํ•˜๋‹ค

1×1 convolution์„ ํ†ตํ•ด ์ด๋ฅผ 1000๋ถ„์˜ 1๋กœ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

Inception Network

GoogLeNet์œผ๋กœ ๋ถˆ๋ฆฌ๊ธฐ๋„ ํ•œ๋‹ค.

 

MobileNet

์ ฏ์Šจ๋‚˜๋…ธ์—์„œ YOLO๋Š” ๋„ˆ๋ฌด ๋Š๋ ค์„œ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๊ณ  MobileNet์€ ์ ๋‹นํ•œ FPS๊ฐ€ ๋‚˜์™€์„œ ์‚ฌ์šฉํ–ˆ๋˜ ๊ฒฝํ—˜์ด ์žˆ์—ˆ๋Š”๋ฐ, ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ๋‚ฎ์€ ์„ฑ๋Šฅ์˜ ์ปดํ“จํŒ… ํŒŒ์›Œ์—์„œ๋„ ๋ฌธ์ œ ์—†์ด ๋Œ์•„๊ฐ€๋Š”์ง€ ๊ถ๊ธˆํ–ˆ๋Š”๋ฐ ์ด๋ฒˆ ๊ฐ•์˜๋ฅผ ํ†ตํ•ด ๊ถ๊ธˆ์ฆ์ด ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค.

๋ฐ”๋กœ Depth-wise separable convolutions ๋ผ๋Š” ๋ฐฉ์‹์ด๋‹ค. ๋น„๊ต๋ฅผ ์œ„ํ•ด normalํ•œ computational cost๋ฅผ ๊ตฌํ•ด๋ณด์ž.

input size๊ฐ€ 6×6×3 ์ด๊ณ  5๊ฐœ์˜ 3×3×3 filter๋กœ conv ์—ฐ์‚ฐ์„ ํ–ˆ๋‹ค๊ณ  ํ•˜๋ฉด, Computational cost๋Š” filter์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐœ์ˆ˜์™€ output์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐœ์ˆ˜์˜ ๊ณฑ์ด๋ฏ€๋กœ 3×3×3 * 4×4×5 = 2160์ด๋‹ค.   

์ด๋ฅผ depthwise๋ฅผ ์ ์šฉํ•˜๋ฉด Depthwise Convolution๊ณผ Pointwise Convolution ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆ„์–ด์„œ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

Depthwise convolution์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ด filter์˜ ๊ฐœ์ˆ˜๋Š” ์ƒ๊ฐํ•˜์ง€ ์•Š๊ณ  filter์˜ ์ฑ„๋„๊ณผ input์˜ ์ฑ„๋„์„ ๊ฐ์ž ๊ณ„์‚ฐ์„ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด Computational cost์—์„œ filter์™€ output์˜ ์ฑ„๋„ ์ˆ˜์— ๋Œ€ํ•œ ๊ณฑ์ด ๋น ์ง€๊ฒŒ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ํ•œ ์ฑ„๋„์— ํ•ด๋‹นํ•˜๋Š” filter์˜ ํŒŒ๋ผ๋ฏธํ„ฐ์— output ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ณฑํ•˜๊ณ  ์ฑ„๋„์˜ ์ˆ˜๋ฅผ ๊ณฑํ•ด์ฃผ๋ฉด ๋œ๋‹ค. 3×3 * 4×4 * 3 = 432 ๊ฐœ๊ฐ€ ๋‚˜์˜จ๋‹ค.

์ด์ œ pointwise convolution์„ ํ†ตํ•ด nomal ๋ฐฉ์‹๊ณผ output์˜ shape์„ ๋งž์ถฐ์ค€๋‹ค. Computational cost๋ฅผ ๊ณ„์‚ฐํ•ด๋ณด๋ฉด filter์˜ ํŒŒ๋ผ๋ฏธํ„ฐ * output ํŒŒ๋ผ๋ฏธํ„ฐ์ด๋ฏ€๋กœ, 1×1×3 * 4×4×5 = 240 ์ด๋‹ค.

์•ž์„œ ๋ดค๋˜ ์ผ๋ฐ˜์ ์ธ ๊ณ„์‚ฐ ๋ฐฉ์‹์—์„œ๋Š” 2160๊ฐœ์˜ ์—ฐ์‚ฐ์ด ํ•„์š”ํ–ˆ๋Š”๋ฐ, depthwise separable ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด 432 + 240 = 672์˜ ์—ฐ์‚ฐ์ด ํ•„์š”ํ•œ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” 2160์˜ 0.3์— ํ•ด๋‹นํ•˜๋Š” ์ˆซ์ž์ด๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ๊ทธ ์ˆ˜์น˜๋Š” 1/(output ์ฑ„๋„์˜ ๊ฐœ์ˆ˜) + 1/(filter size์˜ ์ œ๊ณฑ) ๋กœ ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

MobileNet Architecture

MobileNet v1๊ณผ v2์˜ ์ฐจ์ด์ 

- v1์€ depthwise separable convolution์ด 13๋ฒˆ ๋ฐ˜๋ณต, v2๋Š” 17๋ฒˆ ๋ฐ˜๋ณต

- v2๋Š” v1์—์„œ residual connection(=skip connection) ์ ์šฉ

- Expansion layer ์ถ”๊ฐ€

MobileNet v2 ์˜ bottleneck ๋ถ€๋ถ„์„ ์ž์„ธํžˆ ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

EfficientNet

๋„คํŠธ์›Œํฌ์—์„œ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๋Š” ์š”์†Œ๋กœ๋Š” Resolution, Depth, Width ๋“ฑ์ด ์žˆ๋Š”๋ฐ ์–ด๋–ค ํฌ๊ธฐ๋กœ ์–ด๋–ป๊ฒŒ ์กฐํ•ฉํ•ด์•ผ ์ข‹์€ ์„ ํƒ์ผ๊นŒ?

EfficientNet์„ ํ†ตํ•ด ๋””๋ฐ”์ด์Šค์— ์ ํ•ฉํ•œ R, D, W์˜ ์กฐํ•ฉ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.


Tips for doing well on winning competitions 

 

Ensemble๊ณผ Multi-crop at test time ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ ์‹ค์ œ product์— ์ ์šฉํ•˜๊ธฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ, ์‹œ๊ฐ„์ ์ธ ๋ฌธ์ œ๊ฐ€ ์žˆ๊ณ  ๋Œ€ํšŒ์šฉ์œผ๋กœ ์‚ฌ์šฉ

๋Œ“๊ธ€