๐กPooling๋ stride๋ฅผ ์กฐ์ ํ ์ ์์
๐คsoftmax ๋ ์ด๋ป๊ฒ ๊ฒฐ๊ณผ๋ฅผ ์ฒ๋ฆฌํ ๊น?
๐คsigmoid ๋ ์ด๋ป๊ฒ ๊ฒฐ๊ณผ๋ฅผ ์ฒ๋ฆฌํ ๊น?
๐ก์ด๋ฏธ์ง ์ฆ๊ฐ ๊ธฐ๋ฒ
์ด๋ฏธ์ง ์ฆ๊ฐ์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
https://github.com/albumentations-team/albumentations
๐กkeras
์ ImageDataGenerator
์ง์ ๊ธฐ๋ฅ
๊ณต๊ฐ ๋ ๋ฒจ ๋ณํ
ํฝ์ ๋ ๋ฒจ ๋ณํ
๐ค์ด๋ฏธ์ง ์ฌ์ด์ฆ๊ฐ ๋ค ๋ค๋ฅด๋ฉด ๊ณ์ฐ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ์ด์ฆ๋ฅผ ๋ง์ถฐ์ค ํ์๊ฐ ์์. ์ด๋ค ์ฌ์ด์ฆ๋ก ๋ง์ถฐ์ผ ํ ๊น?
ํด ๋, ์์ ๋ ๊ฐ๊ฐ ์ฅ๋จ์ ์ด ์์
์ฌ์ด์ฆ๋ฅผ ์์ ๊ฒ์ ๋ง์ถ๋ฉด ์ด๋ฏธ์ง๊ฐ ์๊ณก๋๊ฑฐ๋ ์์ค๋ ์๋ ์์ง๋ง ๊ณ์ฐ๋์ด ์ค์ด๋ค๊ธฐ ๋๋ฌธ์ ๋น ๋ฅด๊ฒ ํ์ตํจ
์ฌ์ด์ฆ๋ฅผ ํฐ ๊ฒ์ ๋ง์ถฐ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์๋ ์ด๋ฏธ์ง๊ฐ ์๊ณก์ด ๋ ์ ์์. ๋ํ, ๋ ์์ธํ ํ์ตํ๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ด ์ข์ ์ ์์. ๋ค๋ง, ๊ณ์ฐ์ด ์ค๋ ๊ฑธ๋ฆผ
๊ณ์ฐ ํธ์๋ฅผ ์ํด, ๋ณดํต ์ ์ฌ๊ฐํ ํํ๋ก ๋ง๋ค์ด์ค
PIL, OpenCV ๋ฑ์ ๋ด๋ถ์์ ์ฌ์ฉํ๊ณ ์๋๋ฐ ์ฐ๋ฆฌ๊ฐ ํฌํ ์ต์์ ์ด๋ฏธ์ง ์ฌ์ด์ฆ ์ค์ด๋ ๊ฒ ์ฒ๋ผ ์ด๋ฏธ์ง ์ฌ์ด์ฆ๋ฅผ ์กฐ์ ํด ์ค
๐ค์ด๋ฏธ์ง ์ฌ์ด์ฆ๋ณ ๋จ์ ์ convolution ๊ตฌ์กฐ์์ ๋ค์ํ ์ค์ ๋ฐฉ๋ฒ์ผ๋ก ๋ณด์ ๊ฐ๋ฅํ ๊น?
๐ค์๋ณธ์ด๋ฏธ์ง์ ๋น๊ตํ์ ๋ ๊ถ์ฅํ๋ ์ด๋ฏธ์ง ํฌ๊ธฐ?
๋ฐํด์ ์๊ฐ๋ ๊นํ๋ธ
https://github.com/rickiepark
๐ก๊ธฐ๋ณธ keras ๋ชจ๋ธ
num_classes = len(class_names)
model = Sequential([
layers.Rescaling(1./255, input_shape=(img_height, img_width, 3)),
layers.Conv2D(filters=16, kernel_size=3, padding='same', activation='relu'),
layers.MaxPooling2D(),
layers.Conv2D(filters=32, kernel_size=3, padding='same', activation='relu'),
layers.MaxPooling2D(),
layers.Conv2D(filters=64, kernel_size=3, padding='same', activation='relu'),
layers.MaxPooling2D(),
layers.Flatten(),
layers.Dense(units=128, activation='relu'),
layers.Dense(num_classes)
])
๐กํฉ์ฑ๊ณฑ์ธต์ ํ๋ผ๋ฏธํฐ ์ ๋ฆฌ
์ฝ๋ฉ ๋ช
๋ น์ด
!wget
: ํน์ ๊ฒฝ๋ก์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ด ๊ฒฝ๋ก์ ๋ค์ด๋ก๋
!unzip
: ์์ถ ํด์
๐ก์ด๋ฏธ์ง๋ฅผ ๋ก๋ํ๋ ๋ฐฉ๋ฒ
1) matplotlib.pyplot imread()
๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
2) PIL(Pillow) ๋ก ๋ถ๋ฌ์ค๋ ๋ฐฉ๋ฒ => PIL ๋ก ๋ฐ์ดํฐ ์ฆ๊ฐ์ด ๊ฐ๋ฅํจ. TF ๋ด๋ถ์์๋ PIL ์ด๋ OpenCV๋ฅผ ์ฌ์ฉํด์ ์ด๋ฏธ์ง ๋ฐ์ดํฐ ์ฆ๊ฐ์ ํจ. => ์ด๋ฏธ์ง ํธ์ง๊ธฐ๋ฅผ ๋ง๋ค ์๋ ์์
3) OpenCV๋ก ๋ถ๋ฌ์ค๋ ๋ฐฉ๋ฒ => CV(Computer Vision)์ ์ฃผ๋ก ์ฌ์ฉํ๋ ๋๊ตฌ๋ก ๋์์์ฒ๋ฆฌ ๋ฑ์ ์ฃผ๋ก ์ฌ์ฉํจ
trainDatagen.class_indices
์ ๋ผ๋ฒจ์ ํด๋๋ช
์ผ๋ก ์ง์ ๋จ
๐ก์ธต์ ์์ ๋ "๋น์ ํ ํ์ฑํ ํจ์ ์์ด" ๋ ๊ฐ์ ํฉ์ฑ๊ณฑ ์ธต์ ์๋ ๊ฒฝ์ฐ ๊ทธ๋ฅ ๋ง์ ์ปค๋์ ๊ฐ์ง ํ๋์ conv2d ์ธต์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ์ํ์ ์ผ๋ก ๋์ผํ๊ธฐ ๋๋ฌธ์ ๋นํจ์จ ์ ์ผ๋ก ํฉ์ฑ๊ณฑ ์ ๊ฒฝ๋ง์ ๋ง๋๋ ๊ฒ๊ณผ ๊ฐ์. ์ฃผ์ํ ๊ฒ
๐ค๋ง์ง๋ง epochs์์ metrics๊ฐ ๋จ์ด์ก์ผ๋ฉด ์ต์ข ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ๋ ๋ง์ง๋ง epochs๋ก ์ธํ ๋ ๊น metrics๊ฐ ๊ฐ์ฅ ์ข์ ๋ ๊ธฐ์ค์ผ๋ก ์ธํ ๋ ๊น?
๋ฒกํฐ ๋ฐ์ดํฐ(์๊ฐ์ด๋ ์์๊ฐ ์๊ด ์์): MLP (๋ฐ์ง์ธต)
์ด๋ฏธ์ง ๋ฐ์ดํฐ(ํ๋ฐฑ ๋๋ ์ปฌ๋ฌ): 2D ํฉ์ฑ๊ณฑ ์ ๊ฒฝ๋ง
์คํํธ๋ก๊ทธ๋จ ์ค๋์ค ๋ฐ์ดํฐ: 2D ํฉ์ฑ๊ณฑ ์ ๊ฒฝ๋ง์ด๋ ์ํ ์ ๊ฒฝ๋ง
ํ ์คํธ ๋ฐ์ดํฐ: 1D ํฉ์ฑ๊ณฑ ์ ๊ฒฝ๋ง์ด๋ ์ํ ์ ๊ฒฝ๋ง
์๊ณ์ด ๋ฐ์ดํฐ(์๊ฐ์ด๋ ์์๊ฐ ์ค์ํจ): 1D ํฉ์ฑ๊ณฑ ์ ๊ฒฝ๋ง์ด๋ ์ํ ์ ๊ฒฝ๋ง
๋ณผ๋ฅจ ๋ฐ์ดํฐ(์: 3D ์๋ฃ ์ด๋ฏธ์ง): 3D ํฉ์ฑ๊ณฑ ์ ๊ฒฝ๋ง
๋น๋์ค ๋ฐ์ดํฐ(์ด๋ฏธ์ง์ ์ํ์ค): 3D ํฉ์ฑ๊ณฑ ์ ๊ฒฝ๋ง(๋ชจ์ ํจ๊ณผ๋ฅผ ๊ฐ์งํด์ผ ํ๋ ๊ฒฝ์ฐ) ๋๋ ํน์ฑ ์ถ์ถ์ ์ํด ํ๋ ์ ๋ณ๋ก ์ ์ฉํ 2D ํฉ์ฑ๊ณฑ ์ ๊ฒฝ๋ง๊ณผ ๋ง๋ค์ด์ง ํน์ฑ ์ํ์ค๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ RNN์ด๋ 1D ํฉ์ฑ๊ณฑ ์ ๊ฒฝ๋ง์ ์กฐํฉ
ํฉ์ฑ๊ณฑ ์ธต์ ์ ๋ ฅ๋ฐ์ ํ ์์์ ๊ณต๊ฐ์ ์ผ๋ก ๋ค๋ฅธ ์์น์ ๊ธฐํํ์ ๋ณํ์ ์ ์ฉํ์ฌ ๊ตญ๋ถ์ ์ธ ๊ณต๊ฐ ํจํด์ ์ฐพ์ต๋๋ค.
์ด๋ฐ ๋ฐฉ์์ ์ด๋ ๋ถ๋ณ์ฑ์ ๊ฐ์ง ํํ์ ๋ง๋ค๊ธฐ ๋๋ฌธ์ ํฉ์ฑ๊ณฑ ์ธต์ ๋งค์ฐ ๋ฐ์ดํฐ ํจ์จ์ ์ผ๋ก ๋ง๋ค๊ณ ๋ชจ๋ํ ์ํต๋๋ค.
์์ ๊ฐ์ ์์ด๋์ด๋ ์ด๋ค ์ฐจ์ ๊ณต๊ฐ์๋ ์ ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ 1D(์ํ์ค), 2D(์ด๋ฏธ์ง๋ ์ด๋ฏธ์ง๊ฐ ์๋์๋ง ์ฌ์ด๋ ์คํํธ๋ก๊ทธ๋จ์ฒ๋ผ ๋น์ทํ ํํ), 3D(๋ณผ๋ฅจ ๋ฐ์ดํฐ) ๋ฑ์ ๋๋ค.
ํ ์ํ๋ก์ฐ์์๋ conv1d ์ธต์ผ๋ก ์ํ์ค๋ฅผ ์ฒ๋ฆฌํ๊ณ , conv2d์ธต์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ์ฒ๋ฆฌํ๊ณ , conv3d ์ธต์ผ๋ก ๋ณผ๋ฅจ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
ํฉ์ฑ๊ณฑ ์ ๊ฒฝ๋ง์ ํฉ์ฑ๊ณฑ ์ธต๊ณผ ํ๋ง ์ธต์ ์์์ ๊ตฌ์ฑํ๊ฒ ๋ฉ๋๋ค. ํ๋ง ์ธต์ ๊ณต๊ฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ค์ด์ํ๋งํ๊ณ ์ด๋ ํน์ฑ ๊ฐ์๊ฐ ๋์ด๋๊ฒ๋๋ฉด ํ์ ์ธต์ด ํฉ์ฑ๊ณฑ ์ ๊ฒฝ๋ง์ ์ ๋ ฅ ์ด๋ฏธ์ง์์ ๋ ๋ง์ ๊ณต๊ฐ์ ๋ฐ๋ผ๋ณด๋๋ก ํน์ฑ ๋งต์ ํฌ๊ธฐ๋ฅผ ์ ์ ํ๊ฒ ์ ์ง์ํต๋๋ค.
ํฉ์ฑ๊ณฑ ์ ๊ฒฝ๋ง์ ๊ณต๊ฐ์ ์ธ ํน์ฑ ๋งต์ ๋ฒกํฐ๋ก ๋ฐ๊พธ๊ธฐ ์ํด ์ข ์ข flatten ์ธต๊ณผ ์ ์ญ ํ๋ง ์ธต์ผ๋ก ๋๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ผ๋ จ์ ๋ฐ์ง์ธต(MLP)๋ก ์ฒ๋ฆฌํ์ฌ ๋ถ๋ฅ๋ ํ๊ท ์ถ๋ ฅ์ ๋ง๋ค๊ฒ ๋ฉ๋๋ค.
๋ฉด์ ๋ณด๋ฌ ๊ฐ๊ธฐ ์ ์ ์กํ๋๋ ๋ฉด์ ํ๊ธฐ๋ฅผ ๊ผญ ์ฝ์ด๋ณผ ํ์๊ฐ ์์