8 Sat

๋”ฅ๋Ÿฌ๋‹ CNN ์™„๋ฒฝ ๊ฐ€์ด๋“œ - Fundamental ํŽธ

Dense Layer๊ธฐ๋ฐ˜ Image ๋ถ„๋ฅ˜์˜ ๋ฌธ์ œ์ 

๋ฌธ์ œ์  1

  • MNIST๋‚˜ Fashion_MNIST๋Š” ์ด๋ฏธ์ง€ ์ค‘์•™์— ๋ถ„๋ฅ˜ ๋Œ€์ƒ์ด ์กด์žฌํ•˜๊ณ  ๋ถ„๋ฅ˜ ๋Œ€์ƒ ์ด์™ธ์—๋Š” ๋ชจ๋‘ ๋ฐฐ๊ฒฝ์ƒ‰์ด ๊ฒ€์€์ƒ‰์ด๋‹ค.

  • ์‹ค์ œ ์ด๋ฏธ์ง€๋Š” ๋ถ„๋ฅ˜ ๋Œ€์ƒ์ด ์ด๋ฏธ์ง€์˜ ์–ด๋””์— ์žˆ์„์ง€ ๋ชจ๋ฅด๊ณ  ๋ถ„๋ฅ˜ ๋Œ€์ƒ ์ด์™ธ์— ๋‹ค๋ฅธ ์ด๋ฏธ์ง€์˜ ์ƒ‰์ƒ์ด ๋‹ค์–‘ํ•˜๋‹ค

๋ฌธ์ œ์  2

  • ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์งˆ ์ˆ˜๋ก ๋„ˆ๋ฌด ๋งŽ์€ Weight๊ฐ€ ํ•„์š”ํ•˜๋‹ค

  • 500 x 500์˜ ์ด๋ฏธ์ง€๊ฐ€ ์€๋‹‰์ธต ํ•˜๋‚˜๋ฅผ ๊ฑฐ์น  ๋•Œ Weight 250,000๊ฐœ๊ฐ€ ํ•„์š”ํ•˜๋‹ค

    • ์€๋‹‰์ธต 10๊ฐœ๋ฉด 250M ๊ฐœ๊ฐ€ ํ•„์š”ํ•˜๋‹ค

๋ฌธ์ œ์  3

  • Dense๋Š” ์ด๋ฏธ์ง€์˜ ์ง€์—ญ์„ฑ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š๋Š”๋‹ค

Feature Extractor์™€ CNN ๊ฐœ์š”

Feature Extraction

  • ์ด๋ฏธ์ง€์˜ ํŠน์ง•์ด ๋  ๋งŒํ•œ๊ฒƒ์„ ๋ฝ‘์•„๋‚ด๋Š” ๊ฒƒ

  • ์ „ํ†ต์ ์ธ ๋จธ์‹ ๋Ÿฌ๋‹์€ ์ด๊ฒƒ์„ ์‚ฌ๋žŒ์ด ์ง์ ‘ํ–ˆ๋Š”๋ฐ ๋”ฅ๋Ÿฌ๋‹์—์„œ๋Š” ์ด๊ฒƒ์„ ์ž์ฒด์ ์œผ๋กœ ํ•˜๊ฒŒ ๋œ๋‹ค.

Layer ๋ณ„ Feature

  • Layer๊ฐ€ ๊นŠ์–ด์งˆ์ˆ˜๋ก ์ถ”์ƒ์ ์ธ ํŠน์ง•์„ ๋ฝ‘์•„๋‚ด๊ฒŒ ๋œ๋‹ค

    • ๊นŠ์–ด์งˆ์ˆ˜๋ก ์ถ”์ƒํ™”์˜ ์ถ”์ƒํ™”

  • ์ดˆ๊ธฐ Layer์ผ์ˆ˜๋ก ๊ตฌ์ฒด์ ์ด๊ณ  ๋‹จ์ˆœํ•œ ํŠน์ง•์„ ๋ฝ‘์•„๋‚ธ๋‹ค

    • ์ , ์„ , ๋ฉด ๋“ฑ

CNN ๊ตฌ์กฐ

  • CNN์€ Feature Extractor์™€ Classifier๋กœ ๊ตฌ์„ฑ์ด ๋œ๋‹ค

  • Conv, Pool, Activation์€ ๋ชจ๋‘ F.E ์ด๋‹ค.

์ปจ๋ณผ๋ฃจ์…˜(Convolution) ์—ฐ์‚ฐ ์ดํ•ด

CNN์€

  • Classification์— ๋งž๋Š” ์ตœ์ ์˜ Feature๋ฅผ ์ถ”์ถœํ•˜๊ณ 

  • ์ตœ์ ์˜ Feature ์ถ”์ถœ์„ ์œ„ํ•œ ์ตœ์ ์˜ Weight ๊ฐ’์„ ๊ณ„์‚ฐํ•˜๊ณ 

  • ์ตœ์ ์˜ Feature ์ถ”์ถœ์„ ์œ„ํ•œ ํ•„ํ„ฐ๊ฐ’(ํ•„ํ„ฐ W)์„ ๊ณ„์‚ฐํ•œ๋‹ค

์ด๋ฏธ์ง€ ํ•„ํ„ฐ

  • ๋ณดํ†ต ์ •๋ฐฉ ํ–‰๋ ฌ์„ ์›๋ณธ ์ด๋ฏธ์ง€์— ์ˆœ์ฐจ์ ์œผ๋กœ ์Šฌ๋ผ์ด๋”ฉ ํ•ด๊ฐ€๋ฉด์„œ ์ƒˆ๋กœ์šด ํ”ฝ์…€๊ฐ’์„ ๋งŒ๋“ค๋ฉด์„œ ์ ์šฉํ•œ๋‹ค

    • ๋ธ”๋Ÿฌ ํ”ผํ„ฐ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ํ‰๊ท ์„ ๋‚ด์„œ ๋”ํ•œ๋‹ค => ์ด๋ฏธ์ง€๊ฐ€ ํ๋ ค์ง€๋Š” ํšจ๊ณผ

Convolution ์—ฐ์‚ฐ

  • ๊ฐ•์˜์— ์„ค๋ช…์ด ๋„ˆ๋ฌด ์ž˜๋˜์–ด์žˆ์Œ

์ปค๋„(Kernel)๊ณผ ํ”ผ์ฒ˜๋งต(Feature Map)

ํ•„ํ„ฐ์™€ ์ปค๋„์˜ ๊ตฌ๋ถ„

  • CNN์—์„œ ํ•„ํ„ฐ์™€ ์ปค๋„์€ ๊ฑฐ์˜ ํ˜ผ์šฉ๋˜์–ด์„œ ์‚ฌ์šฉ๋œ๋‹ค

  • ๋ช…ํ™•ํžˆ๋Š” ํ•„ํ„ฐ๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ปค๋„๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค

  • ์ปค๋„์€ ํ•„ํ„ฐ๋‚ด์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค

  • conv_out_01=Conv2D(filter=32, kernel_size=3)(input_tensor)

    • fkernel์˜ ํฌ๊ธฐ๋Š” 3 * 3

    • kernel์˜ ๊ฐœ์ˆ˜๋Š” 32๊ฐœ

์ปค๋„ ์‚ฌ์ด์ฆˆ ํŠน์ง•

  • ๋ณดํ†ต ์ปค๋„์€ ์ •๋ฐฉํ–‰๋ ฌ์ด๋‹ค.

  • Kernel size๋ผ๊ณ  ํ•˜๋ฉด ๋ฉด์ (๊ฐ€๋กœx์„ธ๋กœ)์„ ์˜๋ฏธํ•œ๋‹ค

    • ์ปค๋„ ์‚ฌ์ด์ฆˆ์˜ ํฌ๊ธฐ๊ฐ€ ํฌ๋ฉด ํด ์ˆ˜๋ก ์ž…๋ ฅ Feature Map(๋˜๋Š” ์›๋ณธ ์ด๋ฏธ์ง€)์—์„œ ๋” ๋งŽ์€(๋˜๋Š” ๋” ํฐ) Feature ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค

    • ํ•˜์ง€๋งŒ ํฐ ์‚ฌ์ด์ฆˆ์˜ ์ปค๋„์€ ํ›จ์”ฌ ๋” ๋งŽ์€ ์—ฐ์‚ฐ๋Ÿ‰๊ณผ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ํ•„์š”ํ•˜๋‹ค

  • Receptive Field, ์ˆ˜์šฉ์žฅ

    • ์ž…๋ ฅ์—์„œ Feature๋ฅผ ๋งŒ๋“œ๋Š” ์˜์—ญ์˜ ๊ธฐ๋ณธ ํฌ๊ธฐ

CNN์˜ ํ•„ํ„ฐ ๊ฐ’

  • ์ผ๋ฐ˜์ ์œผ๋กœ Vision์˜์—ญ์—์„œ๋Š” ํŠน์ • ํ•„ํ„ฐ๋ฅผ ์Šค์Šค๋กœ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๊ธฐ์กด์— ์„ค๊ณ„๋œ ๋‹ค์–‘ํ•œ ํ•„ํ„ฐ๋ฅผ ์„ ํƒํ•˜์—ฌ ์ด๋ฏธ์ง€์— ์ ์šฉํ•œ๋‹ค

  • ๋”ฅ๋Ÿฌ๋‹์˜ CNN์€ ์ตœ์ ์˜ ํ•„ํ„ฐ๊ฐ’์„ ํ•™์Šต์„ ํ†ตํ•ด ์Šค์Šค๋กœ ์ตœ์ ํ™”ํ•จ

์ŠคํŠธ๋ผ์ด๋“œ(Stride)์™€ ํŒจ๋”ฉ(Padding)

์ŠคํŠธ๋ผ์ด๋“œ

  • ์˜์–ด ๋‹จ์–ด ๋œป์€ ๊ฑฐ๋‹๋‹ค

  • Filter๋ฅผ ์ ์šฉํ•  ๋•Œ Sliding Window๊ฐ€ ์ด๋™ํ•˜๋Š” ๊ฐ„๊ฒฉ์„ ์˜๋ฏธ

  • ๊ธฐ๋ณธ์€ 1์ด์ง€๋งŒ 2๋กœ ์„ค์ •ํ•˜๊ฒŒ ๋˜๋ฉด Feature map์˜ ํฌ๊ธฐ๋ฅผ ์ ˆ๋ฐ˜์ •๋„๋กœ ์ค„์ธ๋‹ค.

    • stride๋ฅผ ํ‚ค์šฐ๋ฉด ๊ณต๊ฐ„์ ์ธ feature ํŠน์„ฑ์„ ์†์‹คํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์ง€๋งŒ ๋ถˆํ•„์š”ํ•œ ํŠน์„ฑ์„ ์ œ๊ฑฐํ•˜๋Š” ํšจ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜๋„ ์žˆ๊ณ  Convolution ์—ฐ์‚ฐ ์†๋„๋ฅผ ํ–ฅ์ƒ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค

ํŒจ๋”ฉ

  • ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ(๋˜๋Š” Feature map)๊ฐ€ ์ž‘์•„์ง€๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•œ ๊ธฐ๋ฒ•

  • Filter ์ ์šฉ ์ „ ๋ณด์กดํ•˜๋ ค๋Š” Feature map ํฌ๊ธฐ์— ๋งž๊ฒŒ ์ž…๋ ฅ์˜ ์ขŒ์šฐ ๋๊ณผ ์ƒํ•˜ ๋์— ์—ด๊ณผ ํ–‰์„ ์ถ”๊ฐ€ํ•œ๋‹ค

  • Conv2D(padding='same') ์„ ํ•˜๋ฉด feature map์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๊ณ  Conv2D(padding='valid') ๋ฅผ ํ•˜๋ฉด ๋ณ„๋„์˜ ํŒจ๋”ฉ์„ ์ ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค

  • ์ˆ˜๋ฅผ ๋ฌด์—‡์œผ๋กœ ์ฑ„์šธ์ง€์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค

    • 0๋ฏ€๋กœ ๋ชจ๋‘ ์ฑ„์šฐ๋Š” Zero Padding

      • ๋ชจ์„œ๋ฆฌ ์ฃผ๋ณ€๊ฐ’์ด 0์ด ๋˜์–ด ๋…ธ์ด์ฆˆ๊ฐ€ ์•ฝ๊ฐ„ ์ฆ๊ฐ€๋˜๋Š” ์šฐ๋ ค๋„ ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ํฐ ์˜ํ–ฅ์€ ์—†๋‹ค

ํ’€๋ง(Pooling)

  • Conv๊ฐ€ ์ ์šฉ๋œ Feature map์˜ ์ผ์ • ์˜์—ญ ๋ณ„๋กœ ํ•˜๋‚˜์˜ ๊ฐ’์„ ์ถ”์ถœํ•˜์—ฌ Feature map์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ์ค„์ด๋Š” ๊ธฐ๋ฒ•

    • ์™œ๋ƒํ•˜๋ฉด filter๊ฐ€ ์ ์šฉํ•  ๋•Œ ์ค‘๋ณต๋˜์„œ ์ ์šฉ๋˜๋Š” ํ”ฝ์…€๊ฐ’๋“ค์ด ์žˆ๋‹ค.

    • ๋ณดํ†ต Poolingํฌ๊ธฐ์™€ Stride๋ฅผ ๋™์ผํ•˜๊ฒŒ ๋ถ€์—ฌํ•˜์—ฌ ๋ชจ๋“  ๊ฐ’์ด ํ•œ๋ฒˆ๋งŒ ์ฒ˜๋ฆฌ ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค

ํŠน์ง•

  • feature๋“ค์ด ์„œ๋กœ ๋‹ค๋ฅธ ์ด๋ฏธ์ง€์—์„œ ์œ„์น˜๊ฐ€ ๋‹ฌ๋ผ์ง€๋ฉด์„œ ๋‹ค๋ฅด๊ฒŒ ํ•ด์„๋˜๋Š” ํ˜„์ƒ์„ ์ค‘ํ™”์‹œ์ผœ์ค€๋‹ค

  • feature map์˜ ํฌ๊ธฐ๋ฅผ ์ค„์ด๋ฏ€๋กœ computation ์—ฐ์‚ฐ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค

  • max pooling์˜ ๊ฒฝ์šฐ ๋ณด๋‹ค sharpํ•œ feature๋ฅผ ์ถ”์ถœํ•˜๊ณ  average์˜ ๊ฒฝ์šฐ smoothํ•œ feature๋ฅผ ์ถ”์ถœํ•œ๋‹ค

  • ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” sharpํ•œ feature๊ฐ€ classification์— ์œ ๋ฆฌํ•ด์„œ max pooling์„ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค

stride/padding/pooling

  • stride๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๋Š”๊ฒƒ๊ณผ pooling ๋ชจ๋‘ ์ถœ๋ ฅ feature map์˜ ํฌ๊ธฐ๋ฅผ ์ค„์ด๋Š”๋ฐ ์‚ฌ์šฉํ•œ๋‹ค

  • pooling์˜ ๊ฒฝ์šฐ ํŠน์ • ์œ„์น˜์˜ feature๊ฐ’์ด ์†์‹ค ๋˜๋Š” ์ด์Šˆ๋กœ ์ตœ๊ทผ์—๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ

  • ์ตœ๊ทผ ๋ฐœํ‘œ๋˜๋Š” ๋…ผ๋ฌธ์—์„œ stride๋กœ feature map ํฌ๊ธฐ๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์ด pooling ๋ณด๋‹ค ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ๋ณด์ธ๋‹ค๋Š” ์—ฐ๊ตฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฐœํ‘œํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค

  • ResNet๋ถ€ํ„ฐ๋Š” ์ตœ๋Œ€ํ•œ Pooling์„ ์ž์ œํ•˜๊ณ  Stride๋ฅผ ์ด์šฉํ•˜์—ฌ Network๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒฝํ–ฅ์ด ๊ฐ•ํ•ด์ง„๋‹ค

Last updated

Was this helpful?