๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
1๏ธโƒฃ AI•DS/๐Ÿ“’ Deep learning

[์ธ๊ณต์ง€๋Šฅ] ๋‹ค์–‘ํ•œ CNN ๋ชจ๋ธ

by isdawell 2022. 4. 26.
728x90

๐Ÿ“Œ ๊ต๋‚ด '์ธ๊ณต์ง€๋Šฅ' ์ˆ˜์—…์„ ํ†ตํ•ด ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. 

 

 

 

๐Ÿ† ImageNet Competition 

 

  • ๊ธฐ์กด์—๋Š” ์ „ํ†ต์ ์ธ ML ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋‹ค๊ฐ€, AlexNet ์˜ ๋“ฑ์žฅ์œผ๋กœ CNN ์ด ํ•ด๋‹น ๋Œ€ํšŒ์—์„œ ํš๊ธฐ์ ์ธ ์„ฑ๋Šฅ์„ ๋ณด์ž„ 

 

 

 

 

๐Ÿ‘ป CONV ์—ฐ์‚ฐ ๊ธฐ๋ณธ (in 3D conv)

 

  • input channel = filter channel 
  • filter ์˜ ๊ฐœ์ˆ˜ = output channel 

 

  • Output feature map ์˜ ํฌ๊ธฐ ๊ตฌํ•˜๋Š” ๊ณต์‹ 
    • W2 = (W1 - F + 2P) / S +1 
    • H2 = (H1 - F + 2P) / S +1 

 

  • Maxpooling ์—ฐ์‚ฐ ๊ฒฐ๊ณผ 
    • (W1 - Ps) / S + 1
    • Ps ๋Š” pooling size 

 

 


 

 

 

1๏ธโƒฃ  AlexNet


* CNN ํŒŒํŠธ์— ๊ฐ layer ๋ณ„ ์—ฐ์‚ฐ๊ณผ์ •์ด ์ •๋ฆฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

โ‘   ๊ตฌ์กฐ 

 

๐Ÿ“ ๊น”๋Œ€๊ธฐ๋ชจ์–‘์ด filter ์— ํ•ด๋‹นํ•จ

 

 

conv1 ์€ 96๊ฐœ ํ•„ํ„ฐ, 11x11x3 at stride 4

 

 

 

๐Ÿ’จ feature extraction ์˜ ์ตœ์ข… output : 6x6x256 

๐Ÿ’จ flatten = 6x6x256 = 9,216 ํ•œ ์ผ์ฐจ์› ๋ฒกํ„ฐ๋ฅผ FC6 ์— ๋„˜๊ฒจ์ค€๋‹ค. 

 

 

 

 

โ‘ก CONV1

 

 

  • ํ•„ํ„ฐ์˜ ๊ฐœ์ˆ˜ = Output channel =96 
  • Output feature map size = (227 - 11) / 4 + 1 = 55

 

 

 

โ‘ข MAXPOOL1 

 

 

  • Stride ์ด๋™ํ•˜๋Š” ๋ถ€๋ถ„ ์ฒดํฌํ•˜๊ธฐ! 
  • Max pooling ํ›„ Output feature map size = (55 - 3)/2 +1 = 27

 

 

โ‘ฃ Total Number of weights 

 

 

 

โ‘ค Details

 

๐ŸŽจ AlexNet ์˜ ํŠน์ง• 

1. Fist use of ReLU : ReLU ๋ผ๋Š” ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋ฅผ ์ฒ˜์Œ ์‚ฌ์šฉํ•œ๋‹ค. 
2. Used Local Response Normalization (LRN) : input feature ๊ฐ’๋“ค์„ ์ •๊ทœํ™”์‹œ์ผœ์คŒ. ์š”์ฆ˜์—” ์ž˜ ์•ˆ์”€
3. Data augmentation , Dropout 0.5 ์™€ ๊ฐ™์€ ์ •์น™ํ™” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.  

 

 

 

 

 

2๏ธโƒฃ VGG


 

โ‘   ํ•ต์‹ฌ ์•„์ด๋””์–ด

 

 

Small filters, deeper layers 

 

 

โญ CONV : only 3x3 filters at stride 1, pad 1 

โญ MAXPOOL : only 2x2 windows at stride 2

 

 

 

 

  • VGG16 : 12๊ฐœ์˜ Conv, 3๊ฐœ์˜ FC, 1๊ฐœ์˜ input layer → 16๊ฐœ
  • ํ˜„์žฌ๋Š” VGG16์ด ๋ฌด๊ฑฐ์›Œ์„œ ๋งŽ์ด ์‚ฌ์šฉ๋˜์ง„ ์•Š์Œ 

 

 

โ‘ก ์™œ ์ž‘์€ ํ•„ํ„ฐ ํฌ๊ธฐ์˜ ํ•„ํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€

 

  • 3x3 CONV ๋ฅผ 3๋ฒˆ ์—ฐ์†์œผ๋กœ ํ†ต๊ณผํ•œ ๊ฒƒ = ํ•œ๋ฒˆ์˜ 7x7 CONV ๋ฅผ ํ†ต๊ณผํ•œ ๊ฒƒ 

 

stride = 1

 

 

๐Ÿ’จ input : 7x7 → 3x3 filter : 5x5 output  → 3x3 filter : 3x3 output  → 3x3 filter : 1x1 output

 

 

โญ ๋น„์„ ํ˜•์„ฑ์„ ์ฆ๊ฐ€์‹œ์ผœ์คŒ

โญ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐœ์ˆ˜๊ฐ€ ์ค„์–ด๋“ฆ (์—ฐ์‚ฐ๋Ÿ‰ ๊ฐ์†Œ)

 

 

 

 

โ‘ข ๊ตฌ์กฐ

 

 

 

๐Ÿ‘€ ๊ณ„์‚ฐ๋ณต์žก๋„

 

  • 138M

 

 

 

 

3๏ธโƒฃ GoogLeNet


 

โ‘  ํ•ต์‹ฌ ์•„์ด๋””์–ด

 

 

Deep layers with computational efficiency

 

โญ Inception module

 

  • ์ •ํ™•๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด Inception module ์„ ์‚ฌ์šฉํ•œ๋‹ค. 

 

https://bskyvision.com/539

 

 

๋‹ค์–‘ํ•œ ํฌ๊ธฐ์˜ Conv ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

 

 

โ‘ก Naive Inception Module

 

concatenate ๊ฒฐ๊ณผ ๋ฐ•์Šค ์•ž์ˆœ์„œ๋ถ€ํ„ฐ 1x1 conv , ... , maxpooling

 

 

 

1. Apply parallel filters on the input from previous layer 
   (๊ฐ™์€ input ์— ๋Œ€ํ•ด ๋‹ค์–‘ํ•œ ํฌ๊ธฐ์˜ ํ•„ํ„ฐ๋“ค์„ ์ ์šฉ์‹œํ‚ด) 

  - multiple filter sizes (multiple receptive fields) + Pooling 
  - ์—ฌ๋Ÿฌ๊ฐœ์˜ receptive field ์— ๋Œ€ํ•ด ํ•ฉ์„ฑ๊ณฑ์„ ํ•˜์—ฌ ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ”ผ์ฒ˜๋กœ ๋งŒ๋“ค๊ฒŒ ๋œ๋‹ค. 

2. Concatenate all filter outputs channel-wise 
  (์ฑ„๋„๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ ํ•„ํ„ฐ๋ง ๊ฒฐ๊ณผ๋“ค์„ ์—ฐ๊ฒฐ์ง€์Œ) 

3. But ์—ฐ์‚ฐ๋Ÿ‰์ด ๋†’๊ณ  ๊ณ„์‚ฐ ํšจ์œจ์ด ๋‚ฎ๋‹ค๋Š” ๋ฌธ์ œ์ Sol) 1x1 CONV

 

โ— ๊ณ„์‚ฐ ๋ณต์žก๋„๊ฐ€ ๋งค์šฐ ๋†’์Œ 

 

 

 

๐Ÿ‘€ MAC

  • NN์˜ ๊ณ„์‚ฐ๋ณต์žก๋„๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ํ‘œ์ค€์œผ๋กœ ์„œ๋กœ ๋‹ค๋ฅธ NN ์˜ ๊ณ„์‚ฐ๋Ÿ‰์„ ๋น„๊ตํ•  ๋•Œ MAC์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  ๋น„๊ตํ•œ๋‹ค.
  • MAC = W2 x H2 x C x K x F x F 
  • ์œ„์˜ ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด ํ•œ๋ฒˆ์˜ inception module ์„ ํ†ต๊ณผํ•  ๋•Œ 8์–ต 5์ฒœ๋งŒ๋ฒˆ์˜ MAC ์—ฐ์‚ฐ์ด ์ˆ˜ํ–‰๋œ๋‹ค. ์ฆ‰, ์˜ค๋ฅธ์ชฝ ํŒŒ์ด์ฌ ์ฝ”๋“œ์˜ loop ์—ฐ์‚ฐ์ด 854M ๋งŒํผ ๋Œ์•„๊ฐ€์•ผํ•œ๋‹ค๋Š” ๊ฒƒ (์—ฐ์‚ฐ ๋ถˆ๊ฐ€๋Šฅ) 

 

 

 

โ‘ข 1x1 Convolution 

 

 

Preserve spatial dimension, reduces depth

 

โญ ํ•ต์‹ฌ์€ ์—ฐ์‚ฐ๋Ÿ‰์„ ์ค„์ด์ž!

 

 

32๊ฐœ์˜ ํ•„ํ„ฐ์ˆ˜ = output channel size is 32

 

  • (56 - 1 + 0) / 1 + 1 = 56 : stride 1, padding 0 
  • information ์„ ๊ณ ์ฐจ์›์—์„œ ์ €์ฐจ์›์œผ๋กœ ์••์ถ• (summarize) ํ•œ๋‹ค. 
  • ๊ทธ๋Ÿฌ๋‚˜ ๋„ˆ๋ฌด ์ฑ„๋„์‚ฌ์ด์ฆˆ๋ฅผ ์ค„์ด๋ฉด ๊ณ„์‚ฐ๋Ÿ‰์€ ๊ฐ์†Œํ•˜์ง€๋งŒ ์ •๋ณด์˜ ์†์‹ค์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค. 

 

 

โ‘ฃ Inception Module

 

 

โญ 1x1 CONV = "bottleneck"

 

 

  • concatenate ๋œ output channel size ๋Š” ๋™์ผํ•œ๋ฐ, ์ค‘๊ฐ„์˜ ์—ฐ์‚ฐ๊ณผ์ •์—์„œ ์ ์€ ์ฑ„๋„์˜ ๊ฐœ์ˆ˜๋กœ ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•ด์ง„ ๊ฒƒ์ด๋‹ค. 
  • 64๊ฐœ์˜ 1x1 CONV (bottleneck) ์„ ์ ์šฉํ•œ๋‹ค. 
  • ์ •ํ™•๋„๋Š” ๊ฐ์†Œํ•˜์ง€๋งŒ, ์ค„์–ด๋“  ์—ฐ์‚ฐ๋Ÿ‰ ๋Œ€๋น„ ์ •ํ™•๋„ ๊ฐ์†Œ ๋น„์œจ์€ ๋ฏธ๋ฏธํ•จ 
  • bottlneck ์ ์šฉ์„ ํ†ตํ•ด 2๋ฐฐ ์ด์ƒ ๊ณ„์‚ฐ ๋ณต์žก๋„๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. 

 

 

 

โ‘ค ๊ตฌ์กฐ 

 

 

 

 

 

๐Ÿ‘€ Classifier 

 

  • Average Pooling + 1 FC layer ๋ฅผ ์‚ฌ์šฉ 
  • AlexNet, VGG ๋Š” 3๊ฐœ์˜ FC layer ๋ฅผ ์‚ฌ์šฉํ–ˆ์—ˆ์Œ 

 

๐Ÿ‘€ Auxiliary Classifier 

 

  • ๊ธฐ์šธ๊ธฐ ์†Œ์‹ค ๋ฌธ์ œ๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด ๋ณด์กฐ ๋ถ„๋ฅ˜๊ธฐ๋ฅผ ์ค‘๊ฐ„์— ์ถ”๊ฐ€ํ•œ๋‹ค. 
  • ์ด๋ฅผ ํ†ตํ•ด ์•ž๋ถ€๋ถ„ layer ์— ๋Œ€ํ•ด์„œ๋„ ํ›ˆ๋ จ์„ ์›ํ™œํ•˜๊ฒŒ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค. 

 

๐Ÿ‘€ ๊ณ„์‚ฐ๋ณต์žก๋„

 

  • 5M → bottleneck block ์„ ํ†ตํ•ด ์ฑ„๋„ ์‚ฌ์ด์ฆˆ๋ฅผ ํš๊ธฐ์ ์œผ๋กœ ์ค„์ž„ 

 

 

 

 

 

3๏ธโƒฃ ResNet

 


 

๐Ÿ‘€ ResNet ์˜ ๋“ฑ์žฅ = Layer Depth ์˜ ํ˜๋ช…

 

โ‘  ๊ธฐ์šธ๊ธฐ ์†Œ์‹ค/ํญ์ฆ ๋ฌธ์ œ 

 

๐Ÿค” ResNet ๋ง๊ณ  ๊ทธ๋ƒฅ AlexNet ์—์„œ layer ๋ฅผ ๋” ์Œ“์œผ๋ฉด ๋˜๋Š” ๊ฒƒ ์•„๋‹Œ๊ฐ€? 

 

layer ๋ฅผ ์Œ“์•„๋„ error ๊ฐ€ ์ฆ๊ฐ€

 

 

โ—พ layer ์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•œ๋‹ค๊ณ  ํ•ด์„œ ๋ฐ˜๋“œ์‹œ ์„ฑ๋Šฅ์ด ์ข‹์•„์ง€๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. 
โ—พ ๐Ÿ‘ป ์ด๋Š” ์˜ค๋ฒ„ํ”ผํŒ… ๋•Œ๋ฌธ์€ ์•„๋‹ˆ๋‹ค! not because of overfitting 
โ—พ Deeper model 
   ๐Ÿ‘‰ more representation power (ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์ด ๋” ๋งŽ์•„์ง)
   ๐Ÿ‘‰ harder to optimize (training ์„ ์ž˜ ํ•ด๋‚ด์ง€ ๋ชปํ•œ๋‹ค) 
        ๐Ÿ’จ ํ›ˆ๋ จ์ด ์•ˆ๋˜๋Š” ๊ฐ€์žฅ ํฐ ์ด์œ  ์ค‘ ํ•˜๋‚˜๊ฐ€ ๊ธฐ์šธ๊ธฐ ์†Œ์‹ค (gradient vanishing) ๋ฌธ์ œ

 

 

(1) ๊ธฐ์šธ๊ธฐ ์†Œ์‹ค ๋ฌธ์ œ Gradient Vanishing

 

gradient ๊ฐ€ 0.1 → 0.01 → 0.001 ... ๋กœ ์ ์ฐจ ๊ฐ์†Œํ•จ

 

  • gradient ๊ฐ’์ด ์ ์ฐจ ์ž‘์•„์ ธ ์•ž์ชฝ์— ์œ„์น˜ํ•œ weight ๋“ค์€ ์—…๋ฐ์ดํŠธ๊ฐ€ ๊ฑฐ์˜ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ 
  • ์—ญ์ „ํŒŒ์—์„œ ์ž…๋ ฅ์ธต์— ๊ฐ€๊นŒ์šด ์•ž์ชฝ์˜ layer๋กœ ๊ฐˆ์ˆ˜๋ก ํ™œ์„ฑํ™” ํ•จ์ˆ˜ sigmoid ์˜ ๋ฏธ๋ถ„์„ ์—ฐ์‡„์  (chain rule) ์œผ๋กœ ๊ณฑํ•˜๋Š”๋ฐ, ๊ธฐ์šธ๊ธฐ๊ฐ€ 1๋ณด๋‹ค ์ž‘์œผ๋ฏ€๋กœ ๊ณฑํ• ์ˆ˜๋ก ๊ฐ’์€ ์ ์  ์ž‘์•„์ง„๋‹ค. layer๊ฐ€ ์•„์ฃผ ๋งŽ์œผ๋ฉด ์ž…๋ ฅ์ธต์— ๊ฐ€๊นŒ์šด ์•ž์ชฝ์˜ layer๋กœ ๊ฐˆ์ˆ˜๋ก ๊ธฐ์šธ๊ธฐ์˜ ๊ฐ’์€ ๊ฑฐ์˜ 0์— ๊ฐ€๊น๊ฒŒ ์ž‘์•„์ ธ์„œ ๊ฐ€์ค‘์น˜์˜ ๋ณ€ํ™”๊ฐ€ ๊ฑฐ์˜ ์—†๊ฒŒ ๋˜๊ณ  error๊ฐ’๋„ ๋” ์ด์ƒ ์ค„์–ด๋“ค์ง€ ์•Š๊ฒŒ ๋œ๋‹ค.

 

 

โž• ์ฐธ๊ณ  :  https://velog.io/@lighthouse97/%EA%B8%B0%EC%9A%B8%EA%B8%B0-%EC%86%8C%EC%8B%A4-%EB%AC%B8%EC%A0%9C%EC%99%80-ReLU-%ED%95%A8%EC%88%98

 

 

 

 

(2) ๊ธฐ์šธ๊ธฐ ํญ์ฆ ๋ฌธ์ œ Gradient exploding

 

 

 

  • ํ•™์Šต๋ฅ ์„ ํฌ๊ฒŒ ์žก์•„์„œ gradient ๊ฐ’์ด ์ ์ฐจ ์ปค์ ธ weight ๊ฐ’์ด ๋„ˆ๋ฌด ์ปค์ง€๊ฒŒ ๋จ ๐Ÿ‘‰ loss ๊ฐ’์ด ๋งค์šฐ ์ปค์ง„๋‹ค. 

 

 

(3) ๊ธฐ์šธ๊ธฐ ์†Œ์‹ค๋ฌธ์ œ ํ•ด๊ฒฐ : ReLU

 

 

  • tanh ํ•จ์ˆ˜๋„ sigmoid ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ธฐ์šธ๊ธฐ ์†Œ์‹ค ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚จ๋‹ค. 
  • ReLU ๋Š” ์Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด 0์—์„œ ๋ฌดํ•œ๋Œ€๊นŒ์ง€ ๋‹ค์–‘ํ•œ ๋ฏธ๋ถ„ ๊ฐ’์„ ์ทจํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— gradient ๊ฐ’์ด ์†Œ์‹ค๋˜์ง„ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ ๊ธฐ์šธ๊ธฐ ์†Œ์‹ค ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ReLU ํ•จ์ˆ˜๊ฐ€ ๋„๋ฆฌ ์“ฐ์ธ๋‹ค. 

 

๐Ÿง ๊ธฐ์šธ๊ธฐ ์†Œ์‹ค ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๋ฉด ์ •ํ™•๋„๊ฐ€ ๊ฐ์†Œ๋˜์ง€ ์•Š๊ณ  ์‹ ๊ฒฝ๋ง์˜ layer ๋ฅผ ๊นŠ๊ฒŒ ์Œ“์„ ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

โ‘ก ํ•ต์‹ฌ ์•„์ด๋””์–ด 

 

(1) ์› ๋…ผ๋ฌธ์—์„œ ์ฃผ์žฅํ•˜๋Š” ๋ฐ” 

 

๊ฒฐ๊ณผ์ ์œผ๋กœ ResNet ์ด ๊ธฐ์šธ๊ธฐ ์†Œ์‹ค ๋ฌธ์ œ๋ฅผ ์—†์• ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— layer ๋ฅผ ๋Š˜๋ฆด ์ˆ˜ ์žˆ์—ˆ๊ณ  ๊ทธ๋ž˜์„œ ์„ฑ๋Šฅ์ด ์ข‹์•„์งˆ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

 

๐Ÿพ main idea : identity mapping 

 

 

๐Ÿพ In layer : identity block ์„ ์–ด๋–ป๊ฒŒ ์ ์šฉํ• ๊นŒ 

 

 

 

  • H(x) ๊ฐ€ x๊ฐ€ ๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต๋‹ค 

 

 

 

  • ์ž…๋ ฅ x๋ฅผ ๋ช‡ layer ์ดํ›„์˜ ์ถœ๋ ฅ๊ฐ’์— ๋”ํ•ด์ฃผ๋Š” identity mapping ์„ ๋„์ž… 
  • ์ค‘๊ฐ„ Conv ๊ณผ์ •์„ F(x) ๋กœ ๋‘๊ณ  x๋ฅผ identity mapping ํ•˜์—ฌ, F(x) =H(x) - x  ๐Ÿ‘‰ Residual ๋ฅผ 0์ด ๋˜๋„๋ก ํ›ˆ๋ จ์‹œํ‚ค๋Š” ๊ฒƒ
  • 0์ด๋ผ๋Š” ๊ธฐ์ค€์ ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋” ์‰ฝ๋‹ค๊ณ  ์ฃผ์žฅํ•œ๋‹ค. 
  • F(x) ๋ฅผ 0์ด ๋˜๋„๋ก ํ•™์Šตํ•˜๋ฉด H(x) = 0 + x ๊ฐ€ ๋˜๊ณ  ๋ฏธ๋ถ„ํ–ˆ์„ ๋•Œ 1์ด ๋˜์–ด ๊ธฐ์šธ๊ธฐ ์†Œ์‹ค ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋œ๋‹ค๋Š” ์•„์ด๋””์–ด

 

๐Ÿ’จ ๊ทธ๋Ÿฌ๋‚˜ ์› ๋…ผ๋ฌธ์—์„œ ์ฃผ์žฅํ•˜๋Š” ํ›ˆ๋ จ์˜ ์‰ฝ๊ณ  ์–ด๋ ค์›€์˜ ๊ธฐ์ค€์ด ๋ถˆ๋ถ„๋ช…ํ•˜๋‹ค.

 

 

 

(2) ํ›„์† ๋…ผ๋ฌธ์˜ ์ •๋ฆฌ 

 

 

 

Residual block ์ด ๊ธฐ์šธ๊ธฐ ์†Œ์‹ค ๋ฌธ์ œ๋ฅผ ์—†์• ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๋” ์‰ฝ๊ฒŒ ํ›ˆ๋ จํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

 

โญ Identity mapping ์„ ํ†ตํ•ด gradient ๊ฐ€ ๊ทธ๋Œ€๋กœ ๋ณด์กด๋˜์–ด ์ „๋‹ฌ๋˜๋Š” ํ†ต๋กœ๋ฅผ ๋งŒ๋“ค์–ด์ค€๋‹ค. 

 

 

 

โ‘ข ResNet-34 ๊ตฌ์กฐ 

 

 

โญ ์œ„์˜ ๊ตฝ์–ด๊ฐ€๋Š” ํ™”์‚ดํ‘œ ํ‘œ์‹œ๊ฐ€ ๋ฐ”๋กœ residual block ์—์„œ์˜ identity mapping ์— ํ•ด๋‹นํ•จ 

1. ํ•˜๋‚˜์˜ residual block ์€ ๋‘ ๊ฐœ์˜ 3x3 CONV layer ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. 


2. ์ฃผ๊ธฐ์ ์œผ๋กœ ํ•„ํ„ฐ์˜ ๊ฐœ์ˆ˜ (k) ๋ฅผ 2๋ฐฐ๋กœ ๋Š˜๋ฆฌ๊ณ , ๊ทธ ๋Œ€์‹  feature size ๋ฅผ downsamping (pooling) ํ•˜๋Š”๋ฐ stride = 2 ๋ฅผ ์ ์šฉํ•œ๋‹ค. 

  a. ์˜ˆ๋ฅผ๋“ค์–ด ๊ทธ๋ฆผ์˜ ์ดˆ๋ก์ƒ‰ ๋ถ€๋ถ„์ฒ˜๋Ÿผ ํ•„ํ„ฐ ๊ฐœ์ˆ˜๊ฐ€ 64์—์„œ 128๋กœ ๋Š˜์–ด๋‚œ ๋Œ€์‹  ์ด๋ฏธ์ง€ ํฌ๊ธฐ๋Š” ๊ฐ€๋ น 224๋ฉด 112๋กœ ์ค„์–ด๋“ ๋‹ค. 

  b. stride 2 → ์—ฐ์‚ฐ๋Ÿ‰์€ 1/4 ๊ฐ์†Œ (๊ฐ€๋กœ ๊ธธ์ด 1/2, ์„ธ๋กœ๊ธธ์ด 1/2) , ํ•„ํ„ฐ๊ฐœ์ˆ˜ 2 →์—ฐ์‚ฐ๋Ÿ‰ 2๊ฐœ ์ฆ๊ฐ€ ๐Ÿ’จ ์ตœ์ข… ์—ฐ์‚ฐ๋Ÿ‰์€ 1/2 ๊ฐ์†Œํ•œ๋‹ค. 

3. Avgpool + 1 FC layer ๊ฐ€ ๋’ท๋‹จ์— ์œ„์น˜ํ•œ๋‹ค.  

 

 

 

 

 

โ‘ฃ Bottleneck Design

 

 

๐Ÿ‘‰  ์‹ ๊ฒฝ๋ง์˜ ๋ณต์žก๋„๋ฅผ ๋‚ฎ์ถ”์–ด ์—ฐ์‚ฐ ํšจ์œจ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด bottleneck layer ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

  • 1x1 CONV layer ๊ฐ€ ์˜ค๋ฅธ์ชฝ๊ณผ ๊ฐ™์ด ์‹ ๊ฒฝ๋ง์˜ ์‹œ์ž‘๊ณผ ๋์— ์ถ”๊ฐ€๋œ๋‹ค. 1x1 CONV ๋Š” ์‹ ๊ฒฝ๋ง์˜ ์„ฑ๋Šฅ์„ ๊ฐ์†Œ์‹œํ‚ค์ง€ ์•Š๊ณ  ํŒŒ๋ผ๋ฏธํ„ฐ ์ˆ˜๋ฅผ ๊ฐ์†Œ์‹œํ‚จ๋‹ค. 

 

 

 

 

  • bottleneck ์œผ๋กœ ์—ฐ์‚ฐ๋Ÿ‰์„ ๊ฐ์†Œ์‹œ์ผœ 34 layer ๋Š” 50 layer ResNet ์ด ๋œ๋‹ค. 
  • VGG-16 ๋ณด๋‹ค ResNet-152๊ฐ€ ๋” ์ ์€ ์—ฐ์‚ฐ๋Ÿ‰์„ ๊ฐ€์ง„๋‹ค. 

 

 

๐Ÿ‘€ FLOPs 

 

  • MAC ๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ์—ฐ์‚ฐ๋Ÿ‰์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ง€ํ‘œ์— ํ•ด๋‹นํ•œ๋‹ค. 
  • 1 MAC = 2FLOPs

 

 

 

โ‘ค ๋น„๊ต

 

 

๐Ÿ‘‰ ResNet ์ด ์—ฐ์‚ฐ๋Ÿ‰์ด ์ ๊ณ  ์ •ํ™•๋„๊ฐ€ ๋†’๋‹ค.

 

 

 

 

 

 

4๏ธโƒฃ MobileNet


 

โ‘   ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ 

 

Standard convolution

 

  • ์ผ๋ฐ˜์ ์ธ convolution ์—ฐ์‚ฐ์€ filtering featrues & combining features ๋ฅผ ํ†ตํ•ด ํ•˜๋‚˜์˜ pixel ์„ ๋งŒ๋“ ๋‹ค. 
  • ๋”ฐ๋ผ์„œ Computational Cost ๋Š” Dk x Dk x M x N x Df x Df ๋กœ ๋„์ถœ๋œ๋‹ค. 
  • Df ๋Š” output feature map ์˜ size , Dk ๋Š” filter size, M ์€ ์ฑ„๋„์ˆ˜, N ์€ ํ•„ํ„ฐ๊ฐœ์ˆ˜ 

 

 

 

* filtering & combination ์ฐธ๊ณ  (M=1 ์ธ ๊ฒฝ์šฐ)

 

๋Œ€์‘๋˜๋Š” input channel ๊ณผ kernel channel ๋ผ๋ฆฌ ํ•ฉ์„ฑ๊ณฑ ์—ฐ์‚ฐ์„ ์ง„ํ–‰ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ๋‘ ๋”ํ•˜์—ฌ ํ•˜๋‚˜์˜ output ํ”ฝ์…€์„ ๋งŒ๋“ ๋‹ค.

 

๐Ÿคธ‍โ™€๏ธ 33, 2, -12 ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋„์ถœ ์†์œผ๋กœ ์ง์ ‘ ๊ณ„์‚ฐํ•ด๋ณด๊ธฐ

(ํ•˜๋‚˜์˜ stride ์— ๋Œ€ํ•ด ๊ฐ ์ฑ„๋„๋ณ„ ํ•ฉ์„ฑ๊ณฑ์„ ๊ฑฐ์ณ, ๊ฒฐ๊ณผ๋ฅผ ๋ชจ๋‘ ๋”ํ•ด ํ•˜๋‚˜์˜ output ๊ฒฐ๊ณผ ๋„์ถœ)

 

 

* Computational Cost ์ฐธ๊ณ  

 

 

 

 

 

โ‘ก ํ•ต์‹ฌ ์•„์ด๋””์–ด 

 

 

filtering ๋ถ€๋ถ„๊ณผ combination ๋ถ€๋ถ„์„ ๋ถ„๋ฆฌํ•˜๋ฉด ์—ฐ์‚ฐ๋Ÿ‰์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

 

Depthwise Conv + Pointwise Conv ๐Ÿ‘‰ Depthwise separable convolution 

 

โญ ๊ณต๊ฐ„์ •๋ณด (depthwise) ์™€ ์ฑ„๋„์ •๋ณด (pointwise) ๋กœ ๋ถ„๋ฆฌํ–ˆ์Œ 

 

 

 

 

 

(1) Depthwise 

 

  • ๊ฐ ์ž…๋ ฅ ์ฑ„๋„์— ๋Œ€ํ•˜์—ฌ ๋…๋ฆฝ์ ์œผ๋กœ 3x3 conv ํ•˜๋‚˜์˜ ํ•„ํ„ฐ๊ฐ€ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ํ•˜๋‚˜์˜ ํ”ผ์ณ๋งต์„ ์ƒ์„ฑ
  • ์ฆ‰, ์ž…๋ ฅ ์ฑ„๋„ ์ˆ˜๊ฐ€ M ๊ฐœ์ด๋ฉด M ๊ฐœ์˜ ํ”ผ์ฒ˜๋งต์„ ์ƒ์„ฑํ•˜๊ฒŒ ๋œ๋‹ค. 
  • ๐Ÿ‘€ ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์œ„์˜ ์ฐธ๊ณ  ๊ทธ๋ฆผ์—์„œ 'ํ•˜๋‚˜์˜ stride' ๋‹จ์œ„๋กœ input feature ์ฑ„๋„์— ๋Œ€ํ•ด ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•ด์„œ output ์„ ์ฐจ๋ก€๋กœ ๋„์ถœํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๊ฐ  input feature ์ฑ„๋„์— ๋Œ€ํ•ด CONV ์—ฐ์‚ฐ์„ ์ง„ํ–‰ํ•ด์„œ ๊ฐ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ์˜ ๋ง์…ˆ์—†์ด! ๊ทธ๋ƒฅ ํ•˜๋‚˜์˜ ํ”ผ์ฒ˜๋งต์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ,,! ๋…๋ฆฝ์ ์œผ๋กœ..! (๐Ÿ™„)

 

 

์—ฐ์‚ฐ๋Ÿ‰

 

(2) Pointwise 

 

  • depthwise ์—์„œ ์ƒ์„ฑํ•œ ๊ฐ ํ”ผ์ฒ˜๋งต์„ concatenate ํ•œ ํ›„ 1x1 CONV ๋กœ ์ฑ„๋„์ˆ˜๋ฅผ ์กฐ์ •ํ•œ๋‹ค. ๋ชจ๋“  ์ฑ„๋„์— ๋Œ€ํ•ด ์—ฐ์‚ฐ์„ ์ง„ํ–‰ํ•œ๋‹ค. 

 

์—ฐ์‚ฐ๋Ÿ‰

 

 

Standard Conv ์—ฐ์‚ฐ๋ณด๋‹ค ์ž‘์€ ๊ฐ’ (์ง์ ‘ ๋น„์œจ๊ณ„์‚ฐํ•ด๋ณด๊ธฐ)

 

 

๐Ÿ‘ป ๋ฌผ๋ก  ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์€ standard conv ๋ณด๋‹ค ์ •๋ณด์˜ ์†์‹ค์ด ๋” ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ์ •ํ™•๋„๊ฐ€ ๋‚ฎ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฐ์‚ฐ๋Ÿ‰ ๋Œ€๋น„ ๊ฐ์†Œํญ์€ ์ ์–ด์„œ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค. 

 

 

โ‘ข ๊ตฌ์กฐ

 

์™ผ์ชฝ์€ ํ‘œ์ค€ CONV ์˜ค๋ฅธ์ชฝ์€ MobileNet ์˜ CONV

 

 

๐Ÿ‘€ dw = depthwise separable conv ๋ฅผ ์˜๋ฏธ

 

 

 

โ‘ฃ ํ™œ์šฉ 

 

  • ํœด๋Œ€ํฐ, IoT ๊ฐ™์€ ์ž‘์€ ํฌ๊ธฐ์˜ ํ”„๋กœ์„ธ์„œ, ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€์ง„ on-device inference ์— ์ตœ์ ํ™”๋œ ๋„คํŠธ์›Œํฌ์ด๋‹ค. 
  • ๊ณ„์‚ฐ๋ณต์žก๋„๋ฅผ ์ค„์˜€๊ธฐ ๋•Œ๋ฌธ์— ์ •ํ™•๋„ ๊ฐ์†Œ๊ฐ€ ์กฐ๊ธˆ ์กด์žฌํ•œ๋‹ค. 

 

 

 

5๏ธโƒฃ YOLO


 

โ‘   ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ 

 

(1) YOLO ์˜ ์“ฐ์ž„ 

 

  • object detection , ์ด๋ฏธ์ง€์—์„œ ์‚ฌ๋ฌผ์„ ์ธ์‹ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋„คํŠธ์›Œํฌ๋กœ, ์‚ฌ๋ฌผ์— bounding box ๋ฅผ ์ณ์ค€๋‹ค. 
  • (์•ž์„œ ์†Œ๊ฐœ๋œ ๋„คํŠธ์›Œํฌ๋“ค์€ ์ด๋ฏธ์ง€ ๋ถ„๋ฅ˜์— ์‚ฌ์šฉ๋จ) 

 

 

(2) YOLO ์ด์ „์— ์‚ฌ์šฉํ–ˆ๋˜ ๋ชจ๋ธ : fast RCNN

 

 

 

  • ROI : region of interest ๋กœ ์‚ฌ๋ฌผ์ด ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์€ ๋ถ€๋ถ„์„ bounding ํ•œ ๊ฒƒ์ด๋‹ค. ํ•˜๋‚˜์˜ ์ด๋ฏธ์ง€์— ๋Œ€ํ•ด ์ด๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์ƒ์„ฑํ•˜๊ณ  ๊ทธ๊ฒƒ์„ CONV NN ์— ์ž…๋ ฅํ•ด์ค€๋‹ค. 
  • ๐Ÿ˜ฅ ์ด๋ฏธ์ง€ ํ•œ ์žฅ์— ๋Œ€ํ•ด ์‚ฌ๋ฌผ์ธ์‹์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ROI ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์ƒ์„ฑํ•˜์—ฌ CONV ์—ฐ์‚ฐ์„ ์ˆ˜์‹ญ๋ฒˆ ์ง„ํ–‰ํ•˜๋‹ค๋ณด๋‹ˆ ์—ฐ์‚ฐ๋Ÿ‰์ด ๋งŽ์•„์ ธ ๋„คํŠธ์›Œํฌ ์†๋„๊ฐ€ ๋Š๋ ค์ง€๋Š” ๋‹จ์ ์ด ์กด์žฌํ•œ๋‹ค. 

 

 

 

โ‘ก  ํ•ต์‹ฌ ์•„์ด๋””์–ด 

 

Fast RCNN ์˜ ์†๋„๊ฐ€ ๋Š๋ฆฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ๋ชจ๋ธ 

 

  • SxS ๋กœ ์ž…๋ ฅ ์ด๋ฏธ์ง€๋ฅผ grid ๋กœ ๋‚˜๋ˆ„๊ณ  grid ๋‚ด์—์„œ bounding box ๋ฅผ regression ํ•ด์ค€ ๋‹ค์Œ์— ๊ฐ€์žฅ confidence ๊ฐ€ ๋†’์€ bounding box ๋ฅผ ์ตœ์ข… ๊ฒฐ๊ณผ๋กœ ๋‚ด๋†“๋Š”๋‹ค. 
  • ๋”๋ถˆ์–ด ๊ฐ grid ๋งˆ๋‹ค class probability map ์„ ๋„์ถœ์‹œํ‚จ๋‹ค. 
  • ์ด๋ฅผ ํ†ตํ•ด โญ ์ด๋ฏธ์ง€ ํ•˜๋‚˜์— ๋Œ€ํ•ด์„œ CONV layer ๋ฅผ ํ•œ๋ฒˆ๋งŒ ๊ฑฐ์น˜๊ฒŒ ํ•˜์—ฌ ์†๋„๋ฅผ ๊ฐœ์„ ํ•œ๋‹ค. (์ฆ‰, ์ด๋ฏธ์ง€๋ฅผ ํ•œ๋ฒˆ๋งŒ ๋ณด๊ณ  ์˜ˆ์ธก ๊ฐ€๋Šฅ)
  • ROI ๋ฅผ ๊ตฌํ•ด์„œ cnn ์— ์ž…๋ ฅํ•˜๋Š” ๋Œ€์‹ ์— bounding box ์ž์ฒด๋ฅผ ํ›ˆ๋ จํ•œ๋‹ค. 

 

bx, by, bw, bh ๋กœ ์†์‹คํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ์ตœ์ข… loss ์— ๋”ํ•ด์ฃผ๋ฉด bounding box ์ž์ฒด๋„ ํ›ˆ๋ จ์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

 

 

 

 

 

โ‘ข ๊ตฌ์กฐ 

 

 

  • ํ•˜๋‚˜์˜ ์ด๋ฏธ์ง€์— ๋Œ€ํ•ด ๋‹จ์ผํ•œ CNN ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค ๐Ÿ‘‰ ์‹ค์‹œ๊ฐ„ ๊ฐ์ฒด ๊ฒ€์ถœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. 
  • 3๊ฐ€์ง€ scale ์— ๋Œ€ํ•ด detection ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ •ํ™•๋„๋ฅผ ๋†’์ธ๋‹ค. 
  • ์•„๋ž˜์˜ ๊ทธ๋ž˜ํ”„๋ฅผ ๋ณด๋ฉด YOLO ๋ชจ๋ธ์˜ ํ›ˆ๋ จ ์†๋„๊ฐ€ ๊ฐ€์žฅ ๋น ๋ฅธ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์†๋„๋ฅผ ๊ฐœ์„ ํ•œ ๋Œ€์‹  ์ •ํ™•๋„๋ฅผ ์žƒ๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. 

 

 

 

โ‘ฃ ํ•œ๊ณ„์  

 

1. ๊ฐ grid cell ๋งˆ๋‹ค bounding box ๋ฅผ 2๊ฐœ๋ฐ–์— ์˜ˆ์ธกํ•˜์ง€ ๋ชปํ•œ๋‹ค. 
2. ํด๋ž˜์Šค ๊ฐœ์ˆ˜๋Š” 1๊ฐœ๋งŒ ์˜ˆ์ธก์ด ๊ฐ€๋Šฅํ•˜๋‹ค. 

๐Ÿ‘‰ ๋•Œ๋ฌธ์— grid ๋‚ด์— ์‚ฌ๋ฌผ์ด ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” detection ์„ 1๊ฐœ๋ฐ–์— ํ•ด๋‚ด์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ œํ•œ์ ์ด๋‹ค. 


3. ๋งŒ์•ฝ์— ์ƒˆ๋กœ์šด ์ด๋ฏธ์ง€๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ dataset ์— ์—†๋Š” bounding box ํฌ๊ธฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ์ด๋Š” ์ž˜ ๋™์ž‘ํ•˜์ง€ ์•Š๊ฒŒ ๋œ๋‹ค. 

 

 

 

๐Ÿ’ก ResNet ์ด ํ˜„์žฌ๋กœ์„œ๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ชจ๋ธ์ด๋‹ค. ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ์ „์— ๋…ผ๋ฌธ์„ ๊ผญ ์ฝ์–ด๋ณด์ž...

 

 

728x90

๋Œ“๊ธ€