250x250
Link
๋‚˜์˜ GitHub Contribution ๊ทธ๋ž˜ํ”„
Loading data ...
Notice
Recent Posts
Recent Comments
๊ด€๋ฆฌ ๋ฉ”๋‰ด

Data Science LAB

[Deep Learning] ํ•ฉ์„ฑ๊ณฑ ์‹ ๊ฒฝ๋ง CNN (Convolution Neural Network) ์ •๋ฆฌ ๋ณธ๋ฌธ

๐Ÿง  Deep Learning

[Deep Learning] ํ•ฉ์„ฑ๊ณฑ ์‹ ๊ฒฝ๋ง CNN (Convolution Neural Network) ์ •๋ฆฌ

ใ…… ใ…œ ใ…” ใ…‡ 2022. 12. 10. 03:22
728x90

1. CNN ์ด๋ž€?

: ๋”ฅ๋Ÿฌ๋‹์˜ ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ์ฃผ๋กœ ์ด๋ฏธ์ง€ ์ธ์‹์— ๋งŽ์ด ์‚ฌ์šฉ๋จ, ๊ธฐ๋ณธ์ ์ธ ์•„์ด๋””์–ด๋Š” ์ด๋ฏธ์ง€๋ฅผ ์ž‘์€ ํŠน์ง•์—์„œ ๋ณต์žกํ•œ ํŠน์ง•์œผ๋กœ ์ถ”์ƒํ™”ํ•˜๋Š” ๊ฒƒ

 

  • ์ธ๊ฐ„์˜ ์‹œ์‹ ๊ฒฝ ๊ตฌ์กฐ๋ฅผ ๋ชจ๋ฐฉํ•œ ๊ธฐ์ˆ 
  • ํŠน์ง•๋งต์„ ์ƒ์„ฑํ•˜๋Š” ํ•„ํ„ฐ๊นŒ์ง€๋„ ํ•™์Šต์ด ๊ฐ€๋Šฅํ•ด ๋น„์ „ (vision) ๋ถ„์•ผ์—์„œ ์„ฑ๋Šฅ์ด ์šฐ์ˆ˜ํ•จ
  • ์ด๋ฏธ์ง€๋ฅผ ์ธ์‹ํ•˜๊ธฐ ์œ„ํ•ด ํŒจํ„ด์„ ์ฐพ๋Š”๋ฐ ํŠนํžˆ ์œ ์šฉ
  • ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ํ•™์Šตํ•˜๊ณ  ํŒจํ„ด์„ ์‚ฌ์šฉํ•ด ์ด๋ฏธ์ง€ ๋ถ„๋ฅ˜
  • ์ด๋ฏธ์ง€์˜ ๊ณต๊ฐ„ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•œ ์ฑ„ ํ•™์Šต์„ ํ•˜๊ฒŒ ํ•˜๋Š” ๋ชจ๋ธ (2D ๊ทธ๋Œ€๋กœ ์ž‘์—…)
  • ์‚ฌ๋žŒ์ด ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ณ  ๊ธฐ์–ตํ•œ ํ›„์— ๋ฌด์—‡์ธ ์ง€ ๋งž์ถ”๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•จ

 

 

 

2. CNN ๊ตฌ์กฐ

Fully Connected Layer ๋งŒ์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ธ๊ณต์‹ ๊ฒฝ๋ง์˜ ์ž…๋ ฅ๋ฐ์ดํ„ฐ๋Š” 1์ฐจ์› ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ํ•œ์ •๋œ๋‹ค. ํ•œ ์žฅ์ด ์ปฌ๋Ÿฌ ์‚ฌ์ง„์€ 3์ฐจ์› ๋ฐ์ดํ„ฐ์ด๋‹ค. ๋ฐฐ์น˜ ๋ชจ๋“œ์— ์‚ฌ์šฉ๋˜๋Š” ์—ฌ๋Ÿฌ์žฅ์˜ ์‚ฌ์ง„์€ 4์ฐจ์› ๋ฐ์ดํ„ฐ์ด๋‹ค. ์‚ฌ์ง„ ๋ฐ์ดํ„ฐ๋กœ ์™„์ „์—ฐ๊ฒฐ ์‹ ๊ฒฝ๋ง์„ ํ•™์Šต์‹œ์ผœ์•ผ ํ•  ๊ฒฝ์šฐ์—๋Š” 3์ฐจ์› ๋ฐ์ดํ„ฐ๋ฅผ 1์ฐจ์›์œผ๋กœ ํ‰๋ฉดํ™”ํ•ด์•ผ ํ•œ๋‹ค. ์‚ฌ์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ํ‰๋ฉดํ™” ์‹œํ‚ค๋Š” ๊ณผ์ •์—์„œ ๊ณต๊ฐ„ ์ •๋ณด๊ฐ€ ์†์‹ค๋  ์ˆ˜ ๋ฐ–์— ์—†๋Š”๋ฐ, ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ด๋ฏธ์ง€ ๊ณต๊ฐ„ ์ •๋ณด ์œ ์‹ค๋กœ ์ธํ•œ ์ •๋ณด ๋ถ€์กฑ์œผ๋กœ ์ธ๊ณต ์‹ ๊ฒฝ๋ง์˜ ํŠน์ง•์„ ์ถ”์ถœ ๋ฐ ํ•™์Šต์ด ๋น„ํšจ์œจ์ ์ด๊ฒŒ ๋œ๋‹ค. ์ด๋ฏธ์ง€์˜ ๊ณต๊ฐ„ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•œ ์ฑ„๋กœ ํ•™์Šต์ด ๊ฐ€๋Šฅํ•œ ๋ชจ๋ธ์ด ๋ฐ”๋กœ CNN ์ด๋‹ค. 

CNN์€ ์œ„์™€ ๊ฐ™์ด ์ด๋ฏธ์ง€์˜ ํŠน์ง•์„ ์ถ”์ถœํ•˜๋Š” ๋ถ€๋ถ„๊ณผ ํด๋ž˜์Šค๋ฅผ ๋ถ„๋ฅ˜ํ•˜๋Š” ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. ํŠน์ง• ์ถ”์ถœ(Feature extraction/learning) ์˜์—ญ์€ Covnolution Layer์™€ Pooling Layer๋ฅผ ์—ฌ๋Ÿฌ ๊ฒน ์Œ“๋Š” ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. Convolution Layer๋Š” ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์— ํ•„ํ„ฐ๋ฅผ ์ ์šฉํ•œ ํ›„ ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋ฅผ ๋ฐ˜์˜ํ•˜๋Š” ํ•„์ˆ˜ ์š”์†Œ์ด๋‹ค. Convolution Layer ๋‹ค์Œ์— ์œ„์น˜ํ•˜๋Š” Pooling Layer๋Š” ์„ ํƒ์ ์ธ ๋ ˆ์ด์–ด๋‹ค. 
CNN์˜ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์—๋Š” ์ด๋ฏธ์ง€ ๋ถ„๋ฅ˜ (Classification)๋ฅผ ์œ„ํ•œ Fully Connetcted Layer๊ฐ€ ์ถ”๊ฐ€๋œ๋‹ค. ์ด๋ฏธ์ง€์˜ ํŠน์ง•์„ ์ถ”์ถœํ•˜๋Š” ๋ถ€๋ถ„๊ณผ ์ด๋ฏธ์ง€๋ฅผ ๋ถ„๋ฅ˜ํ•˜๋Š” ๋ถ€๋ถ„ ์‚ฌ์ด์— ์ด๋ฏธ์ง€ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ๋งŒ๋“œ๋Š” Flatten ๋ ˆ์ด์–ด๊ฐ€ ์œ„์น˜ํ•œ๋‹ค. 

 

 

 

ํ•ฉ์„ฑ๊ณฑ ๊ณ„์ธต (Convolution Layer)

: ์ฐจ์›์— ๋”ฐ๋ผ ์ž…๋ ฅ๊ฐ’ i๋ฅผ ์Šค์บ”ํ•  ๋•Œ ํ•ฉ์„ฑ๊ณฑ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 

 

 

- Filter ์ ์šฉ

: ํ•˜๋‚˜์˜ ํ•ฉ์„ฑ๊ณฑ ๊ณ„์ธต์—๋Š” ์ด๋ฏธ์ง€ ์ฑ„๋„์˜ ๊ฐœ์ˆ˜(ํ‘๋ฐฑ์€ 1, ์ปฌ๋Ÿฌ๋Š” 3) ๋งŒํผ ํ•„ํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋ฉฐ, ๊ฐ ์ฑ„๋„์— ํ• ๋‹น๋œ ํ•„ํ„ฐ๋ฅผ ์ ์šฉํ•˜์—ฌ ํ•ฉ์„ฑ๊ณฑ ๊ณ„์ธต์˜ ์ถœ๋ ฅ ์ด๋ฏธ์ง€๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค. 

 

 

 

- Stride

: ์ด๋ฏธ์ง€์— ๋Œ€ํ•ด ํ•„ํ„ฐ๋ฅผ ์ ์šฉํ•  ๋•Œ๋Š” ํ•„ํ„ฐ์˜ ์ด๋™๋Ÿ‰์„ ์˜๋ฏธํ•˜๋Š” stride๋ฅผ ์„ค์ •ํ•ด์•„ ํ•œ๋‹ค. stride๊ฐ€ 2์ด๋ฉด ํ•„ํ„ฐ๋Š” 2์นธ์”ฉ ์ด๋™ํ•˜๋ฉฐ ํ•ฉ์„ฑ๊ณฑ ๊ณ„์‚ฐ

 

 

- Padding

์ž…๋ ฅ ์ด๋ฏธ์ง€์— ๋Œ€ํ•ด ํ•ฉ์„ฑ๊ณฑ์„ ์ˆ˜ํ–‰ํ•˜๋ฉด, ์ถœ๋ ฅ ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๋Š” ์ž…๋ ฅ ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๋ณด๋‹ค ์ž‘์•„์ง€๊ฒŒ ๋œ๋‹ค. ํ•ฉ์„ฑ๊ณฑ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๋Š” ์ ์  ๋” ์ž‘์•„์ง€๊ฒŒ ๋˜๊ณ , ์ด๋ฏธ์ง€์˜ ๊ฐ€์žฅ์ž๋ฆฌ์— ์œ„์น˜ํ•œ ํ”ฝ์…€์˜ ์ •๋ณด๋Š” ์ ์  ์‚ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ด ํŒจ๋”ฉ(Padding)์ด๋‹ค. ํŒจ๋”ฉ์€ ์ž…๋ ฅ ์ด๋ฏธ์ง€์˜ ๊ฐ€์žฅ์ž๋ฆฌ์— ํŠน์ • ๊ฐ’์œผ๋กœ ์„ค์ •๋œ ํ”ฝ์…€๋“ค์„ ์ถ”๊ฐ€ํ•จ์œผ๋กœ์จ ์ž…๋ ฅ ์ด๋ฏธ์ง€์™€ ์ถœ๋ ฅ ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ™๊ฑฐ๋‚˜ ๋น„์Šทํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. 

์ด๋ฏธ์ง€์˜ ๊ฐ€์žฅ์ž๋ฆฌ์— 0์˜ ๊ฐ’์„ ๊ฐ–๋Š” ํ”ฝ์…€์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ zero-padding ์ด๋ผ๊ณ  ํ•˜๋ฉฐ, CNN์—์„œ๋Š” ์ฃผ๋กœ ์ด๋Ÿฌํ•œ zero-padding์ด ์ด์šฉ๋œ๋‹ค. 

 

 

 

 

 

 

 

Pooling Layer

: ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๋ฅผ ๊ณ„์† ์œ ์ง€ํ•œ ์ฑ„ Fully Connected Layer๋กœ ๊ฐ€๊ฒŒ ๋œ๋‹ค๋ฉด ์—ฐ์‚ฐ์ด ๊ธฐํ•˜ ๊ธ‰์ˆ˜์ ์œผ๋กœ ๋Š˜์–ด๋‚˜๊ฒŒ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ํ•ฉ์„ฑ๊ณฑ ๊ณ„์ธต ๋‹ค์Œ์— ์ ์šฉ๋˜๋Š” ๋‹ค์šด ์ƒ˜ํ”Œ๋ง ์ž‘์—…์„ Pooling์ด๋ผ๊ณ  ํ•œ๋‹ค. 

์ตœ๋Œ€ ํ’€๋ง ํ‰๊ท  ํ’€๋ง
๊ฐ ํ’€๋ง ์ž‘์—…์€ ํ˜„์žฌ ๋ทฐ(view)์—์„œ ์ตœ๋Œ€๊ฐ’์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ํ’€๋ง ์ž‘์—…์€ ํ˜„์žฌ ๋ทฐ(view)์˜ ๊ฐ’๋“ค์˜ ํ‰๊ท ์„ ์ทจํ•ฉ๋‹ˆ๋‹ค.
• ํƒ์ง€๋œ ํŠน์ง•์„ ๋ณด์กด
• ๊ฐ€์žฅ ๋ณดํŽธ์ ์œผ๋กœ ์‚ฌ์šฉ
• ํ”ผ์ณ๋งต์˜ ๋‹ค์šด์ƒ˜ํ”Œ๋ง
• LeNet์— ์‚ฌ์šฉ

 

-> ์ฃผ๋กœ Max Pooling ์ด ์‚ฌ์šฉ๋˜๋ฉฐ, Pooling Layer๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ์ด๋ฏธ์ง€ ๊ตฌ์„ฑ ์š”์†Œ๋“ค์˜ ์ด๋™ ๋ฐ ํšŒ์ „์— ์˜ํ•ด CNN์˜ ์ถœ๋ ฅ๊ฐ’์ด ์˜ํ–ฅ์„ ๋ฐ›๋Š” ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ์˜ค๋ฒ„ํ”ผํŒ… ๋ฌธ์ œ๋ฅผ ์–ด๋Š์ •๋„ ๋ฐฉ์ง€ ๊ฐ€๋Šฅํ•˜๋‹ค. 

 

 

 

 

 

Fully Connected Layer (FC)

: ๊ฐ ์ž…๋ ฅ์ด ๋ชจ๋“  ๋‰ด๋Ÿฐ์— ์—ฐ๊ฒฐ๋œ ํ‰ํ‰ํ•œ ์ž…๋ ฅ์—์„œ ์ž‘๋™ํ•œ๋‹ค. ์กด์žฌํ•œ๋‹ค๋ฉด, FC ๊ณ„์ธต์€ ์ผ๋ฐ˜์ ์œผ๋กœ CNN ๊ตฌ์กฐ์˜ ๋๋ถ€๋ถ„์—์„œ ๋ฐœ๊ฒฌ๋˜๋ฉฐ, ํด๋ž˜์Šค ์ ์ˆ˜์™€ ๊ฐ™์€ ๋ชฉํ‘œ๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐ์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

 

 

 

3. ํ•„ํ„ฐ ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ 

: ์ž…๋ ฅ ๋ณผ๋ฅจ ํฌ๊ธฐ์˜ ๊ธธ์ด , ํ•„ํ„ฐ์˜ ๊ธธ์ด , ์ œ๋กœํŒจ๋”ฉ(zero-padding)์˜ ์–‘ P, ์ŠคํŠธ๋ผ์ด๋“œ S์— ๋Œ€ํ•˜์—ฌ, ํ”ผ์ฒ˜๋งต์˜ ์ถœ๋ ฅํฌ๊ธฐ O๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฃผ์–ด์ง„๋‹ค.

728x90
Comments