2023. 4. 5. 14:34ใ_Study/AI
CNN(Convolution neural network) ๐¸.•*¨*•¸.•*¨*•¸.•*¨*•¸.•*¨*•
ํด๋น ์๋ฃ๋ ๊ฐ์ ํ์ต์๋ฃ์ ๋๋ค. ๊ฐ์ ์ด์ธ์ ๋ด์ฉ์ ๊ฒ์ ๋ฐ ๋ค์ํ ์๋ฃ๋ฅผ ํตํด ๊ณต๋ถํ๋ฉฐ ์ ๋ฆฌํ ๋ด์ฉ์ ํฌ์คํ ์ ๋๋ค.
#AI #์ธ๊ณต์ง๋ฅ #์ธ๊ณต์ง๋ฅ๊ธฐ์ด #python #study #0405
Convolutional neural network
1. ์ปค๋ /ํน์ง๋งต ์๊ฐํ
2. CNN ์ฑ๋ฅ ํฅ์ ๊ธฐ๋ฒ (ํ์ดํผํ๋ผ๋ฏธํฐ? ์ค๋ฒํผํ ?)
3. ํ๋ก๊ทธ๋๋ฐ ์ฌ๋ก
์ปจ๋ณผ๋ฃจ์ ์ ๊ฒฝ๋ง์ ์๊ฐํ
๋ ๊ฐ์ง ์๊ฐํ๋ฅผ ์๋
- ์ปจ๋ณผ๋ฃจ์ ์ธต์ ์๋ ์ปค๋์ ์๊ฐํ (weight == kernel)
์ํ, ์์ง์ธ์ง ์ฌ๋์ ์์๋ณด๊ธฐ ํ๋ ๋ฐ, ์ปค๋์ ํต๊ณผํ์ฌ ๋์จ output์ ์ฌ๋์ด ์์๋ณด๊ธฐ ํธํ๋ค.
์ฑ๋์ด 3๊ฐ๋ผ์, 3์ฐจ์์ด๋ค. RGB, ex_0_0, 0_1,0_2
๋ค ๋ณด๊ธฐ์ ๋ง์ผ๋๊น 1๋ฒ๋ง imshow
์ปค๋์ ์ด๋ค๊ฒ์ ์ ์ฉํ๋๋์ ๋ฐ๋ผ ๋ค์ํ ํน์ง๋งต์ด ์ถ์ถ.
map7, map12๊ฐ์ ๊ฒฝ์ฐ. ๋ชจ๋ ๊ฒ์์์ผ๋ก ์ถ์ถ๋์๋ค. ๋ฐ๋ผ์ ์ธ๋ชจ์๋ kernel์ด ์กด์ฌํ ์ ์๋ค.
input๋ฐ์ดํฐ๋ฅผ ๋ฐ๊พธ์ด๋ ๊ฒ์์๋ง ์ถ์ถํ๋ค๋ฉด. ์ ๋ง ์ธ๋ชจ์๋ ํน์ง๋งต์ผ ์ ์๋ค.
๋ฐ๋ผ์ ์ค๊ฐ์ค๊ฐ ์ ๊ฒํ ์ ์๋ค.
- ์ปจ๋ณผ๋ฃจ์ ์ธต์ด๋ ํ๋ง์ธต์ด ์ถ์ถํด์ฃผ๋ ํน์ง ๋งต์ ์๊ฐํ
๋ฅ๋ฌ๋์ ๊ท์
๋ฅ๋ฌ๋: ์ถฉ๋ถํ ํฐ ์ ๊ฒฝ๋ง ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋, ๋ค์ํ ๊ท์ ๊ธฐ๋ฒ์ ์ ์ฉํ์ฌ ๊ณผ์ ์ ํฉ์ ๋ฐฉ์ง
- ๋ฐ์ดํฐ ์ฆ๋, ๋๋กญ์์, ๊ฐ์ค์น ๊ฐ์, ์์๋ธ, ๋ฐฐ์น ์ ๊ทํ ๋ฑ์ ๋ค์ํ ๊ท์ ๊ธฐ๋ฒ์ด ์๋ค.
๋ฐ์ดํฐ ์ฆ๋ : ํ์ต ๋ฐ์ดํฐ๋ฅผ ๋๋ฆฐ๋ค.
๊ณผ์ ์ ํฉ์ ๋ฐฉ์งํ๋ ๊ฐ์ฅ ํ์คํ ๋ฐฉ๋ฒ์ ํฐ ํ๋ จ ์งํฉ์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ ์ด๋ ๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋๋ฆฌ๋ ์ผ์ ๋ง์ ๋น์ฉ์ด ์์๋๋ค. ๋ฅ๋ฌ๋์์๋ ์ฃผ์ด์ง ๋ฐ์ดํฐ๋ฅผ ์ธ์์ ์ผ๋ก ๋๋ฆฌ๋ ๋ฐ์ดํฐ ์ฆ๋(data augmentation)๋ฅผ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
- ์์์ ์ด๋, ํ์ ๋๋ ์ข์ฐ๋ฐ์
- ๋ช ์ ์กฐ์ ๋ฑ
- ํ ์ํ๋ก๋ ํ๋ฅญํ ํจ์ ์ ๊ณต
์ฝ๋
generator์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์ฆ๋๋ฅผ ํ๋ค. ๋ฅ๋ฌ๋์ ์ผ๋ฐํ์ ์ฝํ๊ธฐ ๋๋ฌธ์ ์ฝ๊ฐ์ ์์ ๋ง์ผ๋ก๋ ์ ํ๋๋ฅผ ํฅ์ํ ์ ์๋ค.
validation์ ๋ณด๋ฉด ์์ง ์๋ ดํ์ง ์์์ ๋ ์ ํํด์ง ์ ์๋ค.
๋๋กญ์์(dropout)
์ ๋ง ์ค์ํ ๊ฒ์ ๋จ๊ธฐ๊ณ , ์ธ๋ชจ์๋ ๊ฒ์ ๋ฒ๋ ค์ overfitting์ ๋ฐฉ์งํ๋ค. ์ผ์ ๋น์จ์ ๊ฐ์ค์น๋ฅผ ์์๋ก ์ ํํ์ฌ ๋ถ๋ฅ์ผ๋ก ๋ง๋ค๊ณ ํ์ตํ๋ ๊ท์ ๊ธฐ๋ฒ์ด๋ค. ๋ถ๋ฅ์ด ๋ ์์ง๋ ์ํ๋ง๋ค ๋ ๋ฆฝ์ ์ผ๋ก ์ ํ๋๋ฐ ๋์๋ฅผ ์ด์ฉํ์ฌ ๋๋คํ๊ฒ ์ ํ
์ด 3๋ฒ ๋๋กญ์์์ ํ๋๋ฐ ์ฃผ์ํด์ผํ ์ ์ ๋ง์ง๋ง layer์ dropout ํ์ง ์๋๋ค. 10๊ฐ์ class์์ 9๊ฐ์ class๋ฅผ ์ฌ์ฉํ๋ฉด, ์ ํ๋๊ฐ ํฌ๊ฒ ๋จ์ด์ง๊ฒ ๋๋ค.
๊ฐ์ค์น ๊ฐ์ (weight decay)
๊ณผ์ ์ ํฉ์์๋ ๊ฐ์ค์น ๊ฐ์ด ์์ฃผ ํฐ ํ์์ด ๋ํ๋๋ค. ๊ฐ์ค์น ๊ฐ์ ๋ ์ฑ๋ฅ์ ์ ์งํ ์ฑ๋ก ๊ฐ์ค์น ํฌ๊ธฐ๋ฅผ ๋ฎ์ถ๋ ๊ท์ ๊ธฐ๋ฒ์ด๋ค. overgitting์ ๋๋ฌด ๊ฐ์ ์ ๋ง์ถ๊ธฐ ์ํด ๊ฐ์ค์น ๊ฐ์ ์์ฒญ ํฌ๊ฒ ์ก์์ test set์์ overfitting์ด ๋ ์์ฃผ ๋ฐ์ํ ์ ์๋ค. (์ฝ๊ฒ ํ๋ค)
weight ๊ฐ๋ ์ง์ด ๋ฃ์ผ๋ฉด......... ๋ค?
์๋ฌด๋๋.... ๋ค์ ๋ค์ด์ผ๊ฒ ๋ค....
์ ์ ํ๊ฒ 100%, 1%์ ๊ฐ์ ๋๋ค๋ฅผ ์ถ๊ฐํ์ฌ ๊ท์ ํ ์ ์๋ค.
U์์ฒด๋ฅผ ์ ๊ณฑํ์ฌ ๋ ๊ฐ์ค์น๋ฅผ ํ๋ํ ์๋ ์๋ค.
๊ฐ์ค์น ๊ฐ์ ๋ฅผ ์ํ ํ ์ํ๋ก ํ๋ก๊ทธ๋๋ฐ
- Kernel_regularizer(๊ฐ์ค์น์ ์ ์ฉ)
- Bias_regularizer(๋ฐ์ด์ด์ค์ ์ ์ฉ)
- Activity_regularizer(ํ์ฑ ํจ์ ๊ฒฐ๊ณผ์ ์ ์ฉ)
๊ท์ ๊ธฐ๋ฒ3 : Batch(ํ ๋ฐ๊ตฌ๋, ํ ์ธํธ๋ก ๋ฌถ๊ฒ ๋ค.) Normalization(์ ๊ทํ)
ํฌํ ์ต์์ ๊ณ ์์ด ์ฌ์ง์ ๋ฐ๊ธฐ๋ฅผ ๋ฎ์ถ๋ค๊ณ ํด์, ๊ฐ์์ง๊ฐ ๋์ง ์๋๋ค. ๊ทธ๋ฌ๋ input ๋ฐ์ดํฐ์์ ๊ณ ์์ด์ฌ์ง์ ์ค๋ด๋ผ์ ์ด๋ก๊ณ . ๊ฐ์์ง ์ฌ์ง์ ์ฐ์ฑ ํ๋ฉด์ ์ฐ์ด์ ๋ฐ๋ค๋ฉด, ๋ฐ๊ธฐ๋ฅผ ํตํด ๊ณ ์์ด์ ๊ฐ์์ง๋ฅผ ๊ตฌ๋ถํ๋๋ก ํ์ตํ๋ค๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์๋ค. ๋ฐ๋ผ์ ๋ฐ๊ธฐ๋ฅผ ์ ๊ทํํ๋ ์์ ์ด ํ์ํ๋ค.
- batch normalization
- dropout
๋ ์ค ํ๋๋ง์ ์ฌ์ฉํด์ ์ ํ์ฑ์ ๋์ด์.
์ 50๊ฐ๋ฅผ ์ฌ์ฉํ๋๋ฐ ํจ๊ณผ๊ฐ ์๋์ง ์ ์ฆํ๋ ๋ฐฉ๋ฒ
- batch๋ฅผ ๋นผ๋ณธ๋ค. ๋นผ์ ํฌ๊ฒ ์ฐจ์ด๊ฐ ์๋ค๋ฉด? -> ํจ๊ณผ๊ฐ ์๋ค.
- layer์ ๋ช ๊ฐ ๋นผ๋ณธ๋ค. ํฌ๊ฒ ์ฐจ์ด๊ฐ ์๋ค๋ฉด? -> ํด๋น layer ๊ฐ ํจ๊ณผ๊ฐ ์๋ค.
๋ธ๋๋ฐ์ค ๋ชจ๋ธ์ด๊ธฐ ๋๋ฌธ์, ์คํ์ ์ผ๋ก ์ฆ๋ช ํ ์ ๋ฐ์ ์๋ค. ๊ทธ๋์ ๋น๊ต๋ฅผ ํตํด ํ๊ฐํด์ผ ํ๋ค.
์ฑ๋ฅ ํ๊ฐ ์์
์ฑ๋ฅ ํ๊ฐ์ ์ค์์ฑ
- ํ์ดํผ ๋งค๊ฐ๋ณ์ ์ต์ ํ๋ ๋ชจ๋ธ ์ ํ์์ ์ค์
- ํ์ฅ ์ค์น ์ฌ๋ถ๋ฅผ ์ ํ ๋ ์ค์
๊ฐ๊ด์ ์ธ ์ฑ๋ฅ ํ๊ฐ ๋ฐฉ๋ฒ
- ๊ต์ฐจ ๊ฒ์ฆ : ๋ฐ์ดํฐ๋ฅผ ๋ถํ ํ์ฌ ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณตํจ์ผ๋ก์จ ํต๊ณ์ ์ ๋ขฐ์ฑ์ ๋์
- ์ ๊ฑฐ ์กฐ์ฌ (ablation study) : ์ฌ๋ฌ ์ ํ์ฌํญ์ด ์์ ๋, ์ ํ ์ฌํญ์ ํ๋์ฉ ๋นผ๊ณ ์ฑ๋ฅ์ ์ธก์ ํด๋ด์ผ๋ก์จ ๊ฐ๊ฐ์ ๊ธฐ์ฌ๋๋ฅผ ํ๊ฐ
์ ์ด ํ์ต (transfer learning)
์ ์ด ํ์ต์ ์๋ฆฌ
- ์ธ๊ฐ์ ์ ์ด ํ์ต : C์ธ์ด์ ๋ฅ์ํ ํ์์ ํ์ด์ฌ์ ๊ธ๋ฐฉ ๋ฐฐ์ด๋ค, domain์ ๋ณ๊ฒฝ๋๋ ์๋ก์ด domain์ ์ ์ ์ ํ ์ ์๋ค. ์ด๋ ๊ฒ๋ชจ์ต์ ๋ฌ๋ผ๋ ์์ฒ์ ์ธ ๊ฐ๋ ๊ณผ ์ฌ์ฉ๋ฒ์ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฅ๋ฌ๋์๋ ๊ฐ์ ์๋ฆฌ๊ฐ ์ ์ฉ๋๋ค.
์ ์ดํ์ต
- ์ด๋ค ๋๋ฉ์ธ์ ๋ฐ์ดํฐ๋ก ํ์ตํ ๋ชจ๋ธ์ ๋ค๋ฅธ ๋๋ฉ์ธ์ ๋ฐ์ดํฐ๋ฅผ ์ธ์ํ๋๋ฐ ํ์ฉํ์ฌ ์ฑ๋ฅ ํฅ์์ ๊พํ๋ ๊ธฐ๋ฒ
- ๋ฐ์ดํฐ๊ฐ ๋ถ์กฑํ์ฌ ์คํฌ๋์น ํ์ต์ผ๋ก ๋์ ์ฑ๋ฅ์ ๋ฌ์ฑํ๊ธฐ ์ด๋ ค์ด ์ํฉ์ ์ฃผ๋ก ์ฌ์ฉ
๋ฐ๋ผ์ ํ ์ํ๋ก์์๋ ์๋น ํ์ต ๋ชจ๋ธ(pre-trained model)์ ์ ๊ณตํ๋ค. ์ด๋ ImageNet์ผ๋ก ์ด๋ฏธ ํ์ต๋์ด ์๋ ๋ชจ๋ธ์ ์๋ฏธํ๋ฉฐ ๊ฐ์ ธ์์ ์ฌ์ฉํ๋ฉด ํธ๋ฆฌํ๋ค.
๋ง์ด ์ฐ๋ ์๋น ํ์ต ๋ชจ๋ธ์ : VGG, Inception, ResNet
- VGG(๋ณ๊ฒฝ์ด ์ฌ์)
- Inception
- ResNet
๋ค๋ฅธ domain์์๋ ์ ์๋ํ ๊น? ํฐ ์นดํ ๊ณ ๋ฆฌ(์)์์ ์ผ๋ถ ํด๋์ค๋ฅผ ๋ํ ์ผํ๊ฒ ๋ค์ด๊ฐ๋ณธ๋ค.
no.class = ๋ค์ ๋ฃ๊ธฐ
๊ฐ์ ๋ค์ ๋ฃ๊ธฐ
๋ฏธ์ธ ์กฐ์ ๋ฐฉ์๊ณผ ๋๊ฒฐ ๋ฐฉ์
- ๋ฏธ์ธ ์กฐ์ ๋ฐฉ์ (fine-tuning)
- learning-weight์ ์๊ฒ ํ๋ ๋ฒ (ํ์ต๋ฅ ์ ๋ฎ๊ฒ ์ ์งํ์ฌ ์กฐ๊ธ์ฉ ์์ )
- ์ปจ๋ณผ๋ฃจ์ ์ธต๊ณผ ์์ ์ฐ๊ฒฐ์ธต์ ๊ฐ์ค์น๋ฅผ ๋์์ ์์
- tuning์ ๋ง์ด ํ ์๋ก ์๋ก์ด ๋ฐ์ดํฐ์ ์ ํฉํด์ง๋ค.
- ๋๊ฒฐ๋ฐฉ์ (feature extraction or freezing)
- ์ปจ๋ณผ๋ฃจ์ ์ธต์ ๊ฐ์ค์น๋ฅผ ๋๊ฒฐํ์ฌ ์์ ์ด ์ผ์ด๋์ง ์๊ฒ ์ ํ
- dense layer์ ~~~?
- 49ํ ๋ค์ ๋ค์ํ ์ถ๊ฐ
base_nodel.trainable=False
- CUB ๋ฐ์ดํฐ ์ ์ ๋ํด ์คํํ ๊ฒฐ๊ณผ ๋ฏธ์ธ ์กฐ์ ๋ฐฉ์์ด ์ฐ์ํจ.
๋ฌผ์ฒด ๊ฒ์ถ์ ์ํ ๋ฅ๋ฌ๋ ๋ชจ๋ธ
- R-CNN
-