[AI๋ถ€ํŠธ์บ ํ”„]Convolutional Neural Network

Codincidenceยท2021๋…„ 9์›” 9์ผ
0

๋”ฅ๋Ÿฌ๋‹

๋ชฉ๋ก ๋ณด๊ธฐ
10/13

๐Ÿ† ํ•™์Šต ๋ชฉํ‘œ

  • Part 1: Convolution & pooling ๊ฐœ๋…์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Part 2: CNN์„ ์ด์šฉํ•˜์—ฌ ๋ถ„๋ฅ˜(Classification)๋ฌธ์ œ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Part 3: ์ „์ดํ•™์Šต(transfer learning)์„ ์ด์šฉํ•˜์—ฌ image classification์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์‚ฌ๋ฌผ์ธ์‹ - Object Detection (YOLO) + RCNN(Fast, Faster, MASK RCNN)
  • ํฌ์ฆˆ์˜ˆ์ธก - Pose Estimation (PoseNet)
  • ์œค๊ณฝ๋ถ„๋ฅ˜ - Instance Segmentation (Detectron)


Convolution

filter

๊ฐ€์ค‘์น˜์˜ ์ง‘ํ•ฉ, ํŠน์ง•์„ ์žก์•„๋‚ด๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ฐฝ(๋…ธ๋ž€ ๋„ค๋ชจ)
=kenel
Q. filter์˜ ํฌ๊ธฐ๊ฐ€ ํด์ˆ˜๋ก output์˜ ํฌ๊ธฐ๋Š”?(ํŒจ๋”ฉx)
A. ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฑฐ๋ฆฌ๊ฐ€ ์ค„์–ด๋“ค์–ด ๊ณ„์‚ฐ ํšŸ์ˆ˜๊ฐ€ ์ ์–ด์ง€๋‹ˆ๊นŒ ์‚ฌ์ง„๋„ ์ž‘์•„์ง

stride

stride=1

stride=2

a. ํ•„ํ„ฐ๋ฅผ ๋ช‡ ์นธ ์ด๋™ํ• ์ง€.
Q. stride์˜ ํฌ๊ธฐ๊ฐ€ ํด ์ˆ˜๋ก output ์ž‘์•„์ง„๋‹ค.

padding

ํ–‰๋ ฌ ์™ธ๊ณฝ์— ์ˆซ์ž๋ฅผ ๋‘˜๋Ÿฌ์คŒ
convolution ํ›„ ์‚ฌ์ด์ฆˆ๊ฐ€ ์ค„์–ด๋“ค์ง€ ์•Š๊ฒŒ ํ•จ
๊ฐ€์žฅ์ž๋ฆฌ์˜ ์ˆซ์ž๋“ค์€ padding์„ ํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด ํ•œ ๋ฒˆ๋งŒ ๊ณ„์‚ฐ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋†“์น˜๊ณ  ์‹ถ์ง€์•Š๋‹ค๋ฉด ํ•ด์คŒ
0, ๊ฐ€์žฅ์ž๋ฆฌ์™€ ๊ฐ™์€ ์ˆซ์ž ๋“ฑ๋“ฑ ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€.

keras.layers.Conv2D(10, kernel_size=(3,3), activation='relu',
		     padding='same', strides=1)

Pooling layer

  • ํ•„ํ„ฐ์™€ ๋‹ฌ๋ฆฌ ๊ฐ€์ค‘์น˜๊ฐ€ ์—†์Œ.
  • ๋„์žฅ์„ ์ฐ์€ ์˜์—ญ์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ๊ณ ๋ฅด๊ฑฐ๋‚˜ ํ‰๊ท ๊ฐ’์„ ๊ณ„์‚ฐํ•จ
  • ๋ชฉ์  : ์ฐจ์› ์ถ•์†Œ!
    (+) ํ•ฉ์„ฑ๊ณฑ์—์„œ ์ŠคํŠธ๋ผ์ด๋“œ๋ฅผ ํฌ๊ฒŒ ํ•˜์—ฌ ํŠน์„ฑ๋งต์„ ์ค„์ด๋Š” ๊ฒƒ ๋ณด๋‹ค ํ’€๋ง ์ธต์—์„œ ํฌ๊ธฐ๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์ด ๊ฒฝํ—˜์ ์œผ๋กœ ๋” ๋‚˜์€ ์„ฑ๋Šฅ ๋ƒ„
    2x2๋กœ ๋งŽ์ด ํ•˜๋Š”๋ฐ 8x6 ํ–‰๋ ฌ์„ pooling ํ•˜๋ฉด 4x3์ด ๋จ. ๊ฐ ํ–‰๊ณผ ๋ ฌ์ด ์ ˆ๋ฐ˜์ด ์ค„์–ด๋“œ๋‹ˆ ์ด๋ฏธ์ง€ ํฌ๊ธฐ๋Š” 4๋ถ„์˜ 1๋กœ ์ค„์–ด๋“ฆ.

max pooling

convolution ํ•ด์„œ ๊ฐ€์ค‘์น˜๋ฅผ ๊ณฑํ•œ ๊ฐ’ ์ค‘ ๊ฐ€์žฅ ํฐ ๊ฐ’๋งŒ ๋‚จ๊ธฐ๋Š” ๊ฒƒ
๊ฒฝ๊ณ„๊ฐ€ ํ™•์‹คํ•œ ์ด๋ฏธ์ง€๋ฅผ ์“ธ ๋•Œ ์ถ”์ถœ์ด ์ž˜ ๋œ๋‹ค.

average pooling

๋ฒ”์œ„ ๋‚ด ํ‰๊ท ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ปค๋„ ์‚ฌ์ด์ฆˆ ๋‚ด์˜ ๊ฐ’์„ ํ‰๊ท ํ•˜์—ฌ ํ†ต๊ณผ
-> ์ด๋ฏธ์ง€๊ฐ€ ๋ถ€๋“œ๋Ÿฌ์›Œ ์ง€๊ณ , ์ƒ‰๊ฐ์ด ํฌ๋ฏธํ•ด์ง
= ์„ ๋ช…ํ•œ ํŠน์ง• ์ถ”์ถœ ๋ถˆ๊ฐ€, ํŠน์„ฑ ๋งต์— ์žˆ๋Š” ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ํ‰๊ท ํ•˜์—ฌ ํฌ์„์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ

ํ’€๋งํ•  ๋•Œ๋Š” ํ–‰๋ ฌ ํฌ๊ธฐ๋งŒํผ stride์žก์•„ ์คŒ

2x2 ํ’€๋ง ์ปค๋„์„ ํ•ด์ฃผ๋ฉด ์ŠคํŠธ๋ผ์ด๋“œ๋Š” 2๋กœ ์žก์•„์ฃผ๋Š”๊ฒŒ ๋ณดํ†ต
๊ทธ๋Ÿผ ๋”ฑ ๋ฐ˜์œผ๋กœ ์ค„์–ด๋“ค์Œ
3x3์€ ์ŠคํŠธ๋ผ์ด๋“œ๋ฅผ 3์œผ๋กœ ์žก์•„์ฃผ๋ฉด ๋จ(๊ฒน์น˜์ง€ ์•Š๊ฒŒ ํŠน์ง• ์ถ”์ถœ)

  1. ํ’€๋ง๋ ˆ์ด์–ด๋กœ ํ”ผ์ณ๋งต์˜ ์ฐจ์›์„ ์ค„์ž„
  2. ์ค„์–ด๋“  ํ”ผ์ณ๋“ค์„ ANNํ˜•ํƒœ์˜ ์‹ ๊ฒฝ๋ง์— ๋„ฃ์Œ
  3. classification or regression

์žฅ์ (conv ํ•  ๋•Œ ๋น„ํ•ด)
i. ํ•™์Šตํ•  ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์—†๋‹ค. (์†๋„๊ฐ€ ๋น ๋ฅผ ์ˆ˜๋„ ์žˆ๋‹ค)
ii. ์ฑ„๋„ ์ˆ˜๊ฐ€ ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.

keras.layers.MaxPooling2D(2, stides=2, padding='valid')
keras.layers.AveragePooling2D(2, stides=2, padding='valid')

CNN

์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ์— ํƒ์›”ํ•œ ์„ฑ๋Šฅ์„ ๋ณด์ด๋Š” ์‹ ๊ฒฝ๋ง
CNN์˜ ํ•ต์‹ฌ ๋ชจ๋“ˆ : ํ•ฉ์„ฑ๊ณฑ(Convolution)์ธต, ํ’€๋ง(Pooling)์ธต
Fully Connected Layer์—์„œ ์ ์šฉํ•˜์ง€ ์•Š์•˜๋˜ ๋ฐฉ์‹์ด ์ƒˆ๋กญ๊ฒŒ ๋„์ž…
Weight Sharing ์ ์šฉ
์ฑ„๋„์„ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ -> RGB ์ •๋ณด๊ฐ€ ๊ฒฐํ•ฉ๋œ ์ด๋ฏธ์ง€์—์„œ๋„ 3๊ฐœ ์ฑ„๋„์„ ๊ตฌ์„ฑํ•˜์—ฌ ๊ฐ๊ฐ์˜ ํŠน์ง•์„ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

a. ์žฅ์ 
i. ์ „์ฒ˜๋ฆฌ ๋…ธ๋ ฅ ๊ฐ์†Œ
ii. ๊ฐ€์ค‘์น˜ ๊ฐ์†Œ => ๊ฐ€์ค‘์น˜ ๊ณต์œ (์ด๋ฏธ์ง€์˜ ์œ„์น˜๊ฐ€ ๋‹ฌ๋ผ์ ธ๋„ ์ธ์‹ํ•จ)

ex)
(32, 32, 3) => ํ•„ํ„ฐ (3, 3) => (30, 30, 32)
ํ•„ํ„ฐ ํ•œ ์žฅ 3x3
์ด ํ•„ํ„ฐ์˜ ๊ฐœ์ˆ˜ 3x32๊ฐœ
์ „์ฒด ๊ฐ€์ค‘์น˜ : (3x3)x3x32


4x4๋ฅผ 32๊ฐœ ๋งŒ๋“ค๋ ค๋ฉด 3๊ฐœ ์ฑ„๋„์˜ ํ•„ํ„ฐ๋ฅผ 32๊ฐœ ๊ณฑํ•ด์ค˜์•ผ ๋จ


์ „์ดํ•™์Šต

  • ๊ธฐ์กด(๋‚ด ๋ชฉ์ ๊ณผ๋Š” ๋‹ค๋ฅธ) ๋ฐ์ดํ„ฐ๋กœ ํ•™์Šต๋œ ์‹ ๊ฒฝ๋ง ๋„คํŠธ์›Œํฌ๋ฅผ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋„๋กํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
layer.trainable = True
- True ์ธ ๊ฒฝ์šฐ ๋„คํŠธ์›Œํฌ์— ์žˆ๋Š” ๋ชจ๋“  ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ํ•™์Šต ๋Œ€์ƒ์ด ๋จ -> ๋Š๋ ค์ง
- False ์ธ ๊ฒฝ์šฐ๊ฐ€ True ์ธ ๊ฒฝ์šฐ๋ณด๋‹ค ํ•™์Šตํ•  ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ ์Œ
- False ์ธ ๊ฒฝ์šฐ์™€ True ์ธ ๊ฒฝ์šฐ ๋ชจ๋ธ์— ๋‚ด ์ด ๊ฐ€์ค‘์น˜ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ฐœ์ˆ˜๋Š” ๋™์ผ

ResNet

Residual(skiped) Connection
๊ธฐ์กด CNN์— ์ ์šฉํ•˜์—ฌ ์ธต์„ ๊นŠ๊ฒŒ ์Œ“๋”๋ผ๋„ ์—ญ์ „ํŒŒ ์‹œ ์ •๋ณด๊ฐ€ ์†Œ์‹ค๋˜์ง€ ์•Š์Œ



QnA

ํผ์…‰ํŠธ๋ก : ์Šค์ฑŒ ๋‹ค์‹œ ์“ฐ๊ธฐ

filter : ๊ฐ€์ค‘์น˜์˜ ์ง‘ํ•ฉ, ๊ฐ€์žฅ ์ž‘์€ ํŠน์ง•์„ ์žก์•„๋‚ด๋Š” ์ฐฝ
stride: ํ•„ํ„ฐ๋ฅผ ๋ช‡ ์นธ ์›€์ง์ผ๊ฑด์ง€
padding : ๊ฒ‰์— ๋‘˜๋Ÿฌ์ฃผ๋Š” ๊ฒƒ

ํ•„ํ„ฐ : ์–ด๋–ค ํŠน์ง•์„ ์ถ”์ถœํ•ด์„œ ๊ฒฐ๊ณผ๊ฐ’์ด ์ฐจ์ด๊ฐ€ ์ƒ๊ธฐ๋Š” ๊ฒƒ

  1. kenel์ด ํ•„ํ„ฐ์ธ๊ฐ€์š”?
    ๊ฐ€๋กœํŠน์ง•์„ ์ถ”์ถœํ•˜๊ธฐ ์œ„ํ•œ ํ•„ํ„ฐ
    filter : ๊ฐ€์ค‘์น˜์˜ ์ง‘ํ•ฉ > ๋ชจ๋ธํ•™์Šตํ•  ๋• ๊ฐ€์ค‘์น˜๊ฐ€ ํ•™์Šต๋จ
    ์ด๋ฏธ์ง€๊ฐ€ ํ•™์Šต๋˜๋ฉด์„œ ์–ด๋–ค ํŠน์ง•์„ ์ถ”์ถœํ•ด์•ผ ์ž˜ ๋ถ„๋ฅ˜ํ•˜๊ฒ ๊ตฌ๋‚˜ ํ•˜๋ฉด์„œ ๊ฐ€์ค‘์น˜๋ฅผ ํ•™์Šตํ•จ

  2. ํ•„ํ„ฐ๊ฐ€ ์—ฃ์ง€๋ฅผ ์ฐพ๋Š”๋‹ค๋Š”๋ฐ ์—ฃ์ง€๊ฐ€ ์ด๋ฏธ์ง€์˜ ํŠน์ง•์„ ์˜๋ฏธํ•˜๋‚˜์š”?
    a. ๋„ค

  3. ํ•„ํ„ฐ์˜ ํ–‰๋ ฌ์˜ ๊ฐ ๊ฐ’๋“ค์€ ์›๋ž˜ ์ •ํ˜•ํ™” ๋˜์–ด์žˆ๋Š”๊ฑด๊ฐ€์š”?
    a. ๊ฐ€์ค‘์น˜์ž„. ๊ฐ€์ค‘์น˜๋Š” ์ดˆ๊ธฐํ™”ํ•ด์„œ ๋žœ๋ค ๋ถ€์—ฌํ•จ ํ•™์Šตํ•˜๊ณ  ์—ญ์ „ํŒŒํ•˜๋ฉด์„œ ์—…๋ฐ์ดํŠธ๋จ

  4. ์šฐ๋ฆฌ๊ฐ€ ์ „์ดํ•™์Šตํ•˜๋Š” ๋ถ€๋ถ„์€ ์ € ํ•„ํ„ฐ์™€ ํ’€๋ง๋œ ๋ถ€๋ถ„์„ ๊ฐ€์ ธ๋‹ค๊ฐ€ ์“ฐ๋Š” ๊ฒƒ์ธ๊ฐ€์š”?
    a.

  5. ํ’€๋ง์„ ์‚ฌ์šฉํ•˜๋ฉด ํ”ผ์ฒ˜๋งต์˜ ์ฐจ์›์„ ์ค„์—ฌ์„œ ํ”ผ์ฒ˜ ์…€๋ ‰ใ„ฑ์…˜ ๊ฐ™์€ ์—ญํ• ํ•จ > ๊ณผ์ ํ•ฉ ์ค„์ผ ์ˆ˜ ์ž‡์Œ

  6. ํŒจ๋”ฉํ•˜๋Š” ์ด์œ  : output์˜ ํฌ๊ธฐ๋ฅผ ๋งž์ถฐ์ฃผ๋ ค๊ณ 
    ๋์— ์žˆ๋Š” ์• ๋Š” ํ•œ ๋ฒˆ๋งŒ ์—ฐ์‚ฐ์— ์ฐธ์—ฌํ•จ. ๋์— ์žˆ๋Š” ๊ฐ’๋„ ์ž˜ ์“ฐ๋ ค๊ณ  ํŒจ๋”ฉ์„ ํ•˜๊ธฐ๋„ ํ•จ. > ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค ํ™œ์šฉ์„ ํ•˜๋ ค๊ณ 
    ํ•„ํ„ฐ์— ํŒจ๋”ฉ์„ ํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์ธํ’‹๊ฐ’์— ๋‘˜๋Ÿฌ์คŒ

  7. ์ŠคํŠธ๋ผ์ด๋“œ๋ฅผ 2๋กœ ํ•˜๊ฒŒ ๋˜๋ฉด ํŒจ๋”ฉ์„ ๋ชปํ•œ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ, ์ŠคํŠธ๋ผ์ด๋“œ๋ฅผ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๊ฐ€ ์ž‘์•„์ง€๋Š” ๊ฒƒ์€ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
    ์‚ฌ์ง„ ํฌ๊ธฐ๋ฅผ ๋งž์ถœ ๋•Œ, ํŒจ๋”ฉ์„ 1๊ฐœ ๋‘˜๋Ÿฌ๋†“๊ณ  ์ŠคํŠธ๋ผ์ด๋“œ๋ฅผ 2๋กœ ์žก์œผ๋ฉด ์‚ฌ์ง„ ํฌ๊ธฐ๋ฅผ ๋งž์ถœ ์ˆ˜๊ฐ€ ์—†์–ด์ง. ๊ทธ๋ž˜์„œ ์ŠคํŠธ๋ผ์ด๋“œ๋ฅผ 2๊ฐœ๋ฅผ ์žก์œผ๋ฉด ํŒจ๋”ฉ๋„ ๋” ํฌ๊ฒŒ ๋‘˜๋Ÿฌ์คŒ. ๋ณธ๋ž˜์˜ ๋ชฉ์ ์— ๋งž์ง€ ์•Š์•„์„œ ๊ทธ๋Ÿผ.

  8. ํ–‰๋ ฌ์€ ํ”ฝ์…€์ด ๊ธฐ์ค€์ž„

  9. cnn์„ ์“ฐ๊ฒŒ ๋˜๋ฉด ์žฅ์ ์ด ์žˆ์Œ. fully connected layer๋ฅผ ์“ฐ๋Š” ๊ฒƒ ๋ณด๋‹ค ์žฅ์ ์ด ์žˆ์Œ
    :์ด๋ฏธ์ง€ ์ „์ฒ˜๋ฆฌ๋ฅผ ๋œ ํ•˜๊ฒŒ ๋˜๊ณ , ์ด๋ฏธ์ง€ ์ •๋ณด ์†์‹ค์ด ์—†๊ณ , ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์ค„์–ด๋“ ๋‹ค.
    ์™œ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์ค„์–ด๋“ค๊นŒ? ๊ฐ€์ค‘์น˜ ๊ณต์œ  ๋•Œ๋ฌธ์—
    ๊ฐ€์ค‘์น˜๋ฅผ

๋กœ์ŠคํŽ‘์…˜ ๋งž์ถฐ์•ผํ•จ!

  1. ๋‹ค์ค‘๋ถ„๋ฅ˜๋ฅผ ํ•˜๋ฉด ๋ ˆ์ด๋ธ” ํ˜•ํƒœ๋Š” ์–ด๋–ป๊ฒŒ ์ •ํ•ด์ง€๋Š” ๊ฑด๊ฐ€์š”? ์›ํ•ซ์ธ ๊ฒฝ์šฐ ํ˜น์€ ์ •์ˆ˜์ธ ๊ฒฝ์šฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ฐœ์ƒํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.
    a. ํŒŒ์ผ ์ด๋ฆ„์—์„œ ์ž˜๋ผ์™€์„œ ๊ธฐ๋ก์„ ํ•ด์ค€ ๋‹ค์Œ ๋ ˆ์ด๋ธ” ์ธ์ฝ”๋”ฉ ํ• ๊ฑด์ง€ ์›ํ•ซ์ธ์ฝ”๋”ฉ ํ•  ๊ฑด์ง€ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค

๊ณผ์ œ ์„ค๋ช…

profile
์šฐ์—ฐ๋„ ์‹ค๋ ฅ

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด