[TIL] 22.12.06

๋ฌธ์ข…ํ˜„ยท2022๋…„ 12์›” 6์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
53/119
post-custom-banner

๐Ÿ‘‰ ์˜ค๋Š˜ ํ•œ ์ผ

  • CNN ์ด์–ด์„œ

CNN ํŠœํ† ๋ฆฌ์–ผ

๐Ÿ’กPooling๋„ stride๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Œ

๐Ÿค”softmax ๋Š” ์–ด๋–ป๊ฒŒ ๊ฒฐ๊ณผ๋ฅผ ์ฒ˜๋ฆฌํ• ๊นŒ?

  • ์ถœ๋ ฅ๊ฐ’์ด n๊ฐœ์˜ ํ™•๋ฅ ๋กœ ๋‚˜์˜ค๊ณ , n๊ฐœ์˜ ํ™•๋ฅ ๊ฐ’์˜ ํ•ฉ์ด 1

๐Ÿค”sigmoid ๋Š” ์–ด๋–ป๊ฒŒ ๊ฒฐ๊ณผ๋ฅผ ์ฒ˜๋ฆฌํ• ๊นŒ?

  • 0~1 ์‚ฌ์ด์˜ ํ™•๋ฅ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ์ž„๊ณ„๊ฐ’(๋ณดํ†ต์€ 0.5)์„ ๊ธฐ์ค€์œผ๋กœ ๋ถ„๋ฅ˜

๐Ÿ’ก์ด๋ฏธ์ง€ ์ฆ๊ฐ• ๊ธฐ๋ฒ•

  • Mirroring (๋Œ€์นญ)
  • Random Cropping (๋žœ๋คํ•˜๊ฒŒ ์ด๋ฏธ์ง€๋ฅผ ์ž๋ฅด๊ธฐ)
  • Roatation (ํšŒ์ „)
  • Shearing (๊ธฐ์šธ์ด๊ธฐ)
  • Local wraping (์ด๋ฏธ์ง€ ์ฆ๊ฐ•์œผ๋กœ ์ž˜๋ฆฐ ๋ถ€๋ถ„ ์ฑ„์šฐ๊ธฐ)
  • ๋“ฑ๋“ฑ...

์ด๋ฏธ์ง€ ์ฆ๊ฐ•์„ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
https://github.com/albumentations-team/albumentations

๐Ÿ’กkeras์˜ ImageDataGenerator ์ง€์› ๊ธฐ๋Šฅ
๊ณต๊ฐ„ ๋ ˆ๋ฒจ ๋ณ€ํ˜•

  • Flip : ์ƒํ•˜, ์ขŒ์šฐ ๋ฐ˜์ „
  • Rotation : ํšŒ์ „
  • Shift : ์ด๋™
  • Zoom : ํ™•๋Œ€, ์ถ•์†Œ
  • Shear : ๋ˆ•ํžˆ๊ธฐ

ํ”ฝ์…€ ๋ ˆ๋ฒจ ๋ณ€ํ˜•

  • Bright : ๋ฐ๊ธฐ ์กฐ์ •
  • Channel Shift : RGB ๊ฐ’ ๋ณ€๊ฒฝ
  • ZCA Whitening : Whitening ํšจ๊ณผ

๐Ÿค”์ด๋ฏธ์ง€ ์‚ฌ์ด์ฆˆ๊ฐ€ ๋‹ค ๋‹ค๋ฅด๋ฉด ๊ณ„์‚ฐ์„ ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์ด์ฆˆ๋ฅผ ๋งž์ถฐ์ค„ ํ•„์š”๊ฐ€ ์žˆ์Œ. ์–ด๋–ค ์‚ฌ์ด์ฆˆ๋กœ ๋งž์ถฐ์•ผ ํ• ๊นŒ?

  • ํด ๋•Œ, ์ž‘์„ ๋•Œ ๊ฐ๊ฐ ์žฅ๋‹จ์ ์ด ์žˆ์Œ

  • ์‚ฌ์ด์ฆˆ๋ฅผ ์ž‘์€ ๊ฒƒ์— ๋งž์ถ”๋ฉด ์ด๋ฏธ์ง€๊ฐ€ ์™œ๊ณก๋˜๊ฑฐ๋‚˜ ์†์‹ค๋  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๊ณ„์‚ฐ๋Ÿ‰์ด ์ค„์–ด๋“ค๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅด๊ฒŒ ํ•™์Šตํ•จ

  • ์‚ฌ์ด์ฆˆ๋ฅผ ํฐ ๊ฒƒ์— ๋งž์ถฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์›๋ž˜ ์ด๋ฏธ์ง€๊ฐ€ ์™œ๊ณก์ด ๋  ์ˆ˜ ์žˆ์Œ. ๋˜ํ•œ, ๋” ์ž์„ธํžˆ ํ•™์Šตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์ด ์ข‹์„ ์ˆ˜ ์žˆ์Œ. ๋‹ค๋งŒ, ๊ณ„์‚ฐ์ด ์˜ค๋ž˜ ๊ฑธ๋ฆผ

  • ๊ณ„์‚ฐ ํŽธ์˜๋ฅผ ์œ„ํ•ด, ๋ณดํ†ต ์ •์‚ฌ๊ฐํ˜• ํ˜•ํƒœ๋กœ ๋งŒ๋“ค์–ด์คŒ

  • PIL, OpenCV ๋“ฑ์„ ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์šฐ๋ฆฌ๊ฐ€ ํฌํ† ์ƒต์—์„œ ์ด๋ฏธ์ง€ ์‚ฌ์ด์ฆˆ ์ค„์ด๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ์ด๋ฏธ์ง€ ์‚ฌ์ด์ฆˆ๋ฅผ ์กฐ์ •ํ•ด ์คŒ

๐Ÿค”์ด๋ฏธ์ง€ ์‚ฌ์ด์ฆˆ๋ณ„ ๋‹จ์ ์„ convolution ๊ตฌ์กฐ์—์„œ ๋‹ค์–‘ํ•œ ์„ค์ • ๋ฐฉ๋ฒ•์œผ๋กœ ๋ณด์™„ ๊ฐ€๋Šฅํ• ๊นŒ?

  • ์ด๋ฏธ์ง€ ์‚ฌ์ด์ฆˆ๋„ ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ์ฒ˜๋Ÿผ ์กฐ์ •์„ ํ•˜๋ฉด ์„ฑ๋Šฅ์ด ๋‹ฌ๋ผ์ง€๊ณ  Conv, Pooling ๋„ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ์คŒ. ์–ด๋–ค์‹์œผ๋กœ ๋ ˆ์ด์–ด๋ฅผ ๊ตฌ์„ฑํ•˜๋ƒ์— ๋”ฐ๋ผ ๋ณด์™„์ด ๊ฐ€๋Šฅํ•˜๊ธฐ๋„ ํ•จ

๐Ÿค”์›๋ณธ์ด๋ฏธ์ง€์™€ ๋น„๊ตํ–ˆ์„ ๋•Œ ๊ถŒ์žฅํ•˜๋Š” ์ด๋ฏธ์ง€ ํฌ๊ธฐ?

  • ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค๋ฆ„. ์žฅ๋น„๊ฐ€ ์—ฐ์‚ฐ์„ ๋งŽ์ด ์ง€์›ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์›๋ณธ ์‚ฌ์ด์ฆˆ๋ฅผ ์‚ฌ์šฉํ•˜๋‚˜ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋ฉด ์ค„์—ฌ์คŒ
  • ์ด๋ฏธ์ง€์˜ ์‚ฌ์ด์ฆˆ๋Š” ์ž„์˜๋Œ€๋กœ ํ•ด๋„ ์ƒ๊ด€์—†์ง€๋งŒ, ๋”ฅ๋Ÿฌ๋‹์˜ ๊ฒฝ์šฐ Network ๋ชจ๋ธ์˜ ์ž…๋ ฅ ์‚ฌ์ด์ฆˆ์™€ ๋ฐ˜๋“œ์‹œ ๋™์ผํ•˜๊ฒŒ ํ•ด์ฃผ์–ด์•ผ ํ•จ
  • CNN์˜ ๋Œ€ํ‘œ์ ์ธ ๋ชจ๋ธ๋“ค์€ ๋„คํŠธ์›Œํฌ ์ž…๋ ฅ์‚ฌ์ด์ฆˆ๊ฐ€ 224 * 224์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ

๋ฐ•ํ•ด์„  ์ž‘๊ฐ€๋‹˜ ๊นƒํ—ˆ๋ธŒ
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)
])

๐Ÿ’กํ•ฉ์„ฑ๊ณฑ์ธต์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ์ •๋ฆฌ

  • filters : ์ปจ๋ณผ๋ฃจ์…˜ ํ•„ํ„ฐ์˜ ์ˆ˜ == ํŠน์ง•๋งต ์ˆ˜
  • kernel_size : ์ปจ๋ณผ๋ฃจ์…˜ ์ปค๋„์˜ (ํ–‰, ์—ด) => ํ•„ํ„ฐ ์‚ฌ์ด์ฆˆ
  • padding : ๊ฒฝ๊ณ„ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•
    • โ€˜validโ€™ : ์œ ํšจํ•œ ์˜์—ญ๋งŒ ์ถœ๋ ฅ. ๋”ฐ๋ผ์„œ ์ถœ๋ ฅ ์ด๋ฏธ์ง€ ์‚ฌ์ด์ฆˆ๋Š” ์ž…๋ ฅ ์‚ฌ์ด์ฆˆ๋ณด๋‹ค ์ž‘์Œ.
    • โ€˜sameโ€™ : ์ถœ๋ ฅ ์ด๋ฏธ์ง€ ์‚ฌ์ด์ฆˆ๊ฐ€ ์ž…๋ ฅ ์ด๋ฏธ์ง€ ์‚ฌ์ด์ฆˆ์™€ ๋™์ผํ•จ.

CNN ๋ง๋ผ๋ฆฌ์•„ ์…€ ์ด๋ฏธ์ง€

์ฝ”๋žฉ ๋ช…๋ น์–ด
!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๊ฐ€ ๊ฐ€์žฅ ์ข‹์„ ๋•Œ ๊ธฐ์ค€์œผ๋กœ ์„ธํŒ…๋ ๊นŒ?

  • ๋งˆ์ง€๋ง‰์— ํ•™์Šตํ•œ ๊ฒฐ๊ณผ๋กœ ์˜ˆ์ธก(๋งˆ์ง€๋ง‰ epochs)

๐Ÿ’ก์ž…๋ ฅ ๋ฐ์ดํ„ฐ ์ข…๋ฅ˜์™€ ์ด์— ๋งž๋Š” ๋„คํŠธ์›Œํฌ ๊ตฌ์กฐ

  • ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ(์‹œ๊ฐ„์ด๋‚˜ ์ˆœ์„œ๊ฐ€ ์ƒ๊ด€ ์—†์Œ): MLP (๋ฐ€์ง‘์ธต)

  • ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ(ํ‘๋ฐฑ ๋˜๋Š” ์ปฌ๋Ÿฌ): 2D ํ•ฉ์„ฑ๊ณฑ ์‹ ๊ฒฝ๋ง

  • ์ŠคํŽ™ํŠธ๋กœ๊ทธ๋žจ ์˜ค๋””์˜ค ๋ฐ์ดํ„ฐ: 2D ํ•ฉ์„ฑ๊ณฑ ์‹ ๊ฒฝ๋ง์ด๋‚˜ ์ˆœํ™˜ ์‹ ๊ฒฝ๋ง

  • ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ: 1D ํ•ฉ์„ฑ๊ณฑ ์‹ ๊ฒฝ๋ง์ด๋‚˜ ์ˆœํ™˜ ์‹ ๊ฒฝ๋ง

  • ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ(์‹œ๊ฐ„์ด๋‚˜ ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•จ): 1D ํ•ฉ์„ฑ๊ณฑ ์‹ ๊ฒฝ๋ง์ด๋‚˜ ์ˆœํ™˜ ์‹ ๊ฒฝ๋ง

  • ๋ณผ๋ฅจ ๋ฐ์ดํ„ฐ(์˜ˆ: 3D ์˜๋ฃŒ ์ด๋ฏธ์ง€): 3D ํ•ฉ์„ฑ๊ณฑ ์‹ ๊ฒฝ๋ง

  • ๋น„๋””์˜ค ๋ฐ์ดํ„ฐ(์ด๋ฏธ์ง€์˜ ์‹œํ€€์Šค): 3D ํ•ฉ์„ฑ๊ณฑ ์‹ ๊ฒฝ๋ง(๋ชจ์…˜ ํšจ๊ณผ๋ฅผ ๊ฐ์ง€ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ) ๋˜๋Š” ํŠน์„ฑ ์ถ”์ถœ์„ ์œ„ํ•ด ํ”„๋ ˆ์ž„ ๋ณ„๋กœ ์ ์šฉํ•œ 2D ํ•ฉ์„ฑ๊ณฑ ์‹ ๊ฒฝ๋ง๊ณผ ๋งŒ๋“ค์–ด์ง„ ํŠน์„ฑ ์‹œํ€€์Šค๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ RNN์ด๋‚˜ 1D ํ•ฉ์„ฑ๊ณฑ ์‹ ๊ฒฝ๋ง์˜ ์กฐํ•ฉ

๐Ÿ’กํ•ฉ์„ฑ๊ณฑ ์‹ ๊ฒฝ๋ง

  • ํ•ฉ์„ฑ๊ณฑ ์ธต์€ ์ž…๋ ฅ๋ฐ›์€ ํ…์„œ์—์„œ ๊ณต๊ฐ„์ ์œผ๋กœ ๋‹ค๋ฅธ ์œ„์น˜์— ๊ธฐํ•˜ํ•™์  ๋ณ€ํ™˜์„ ์ ์šฉํ•˜์—ฌ ๊ตญ๋ถ€์ ์ธ ๊ณต๊ฐ„ ํŒจํ„ด์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

  • ์ด๋Ÿฐ ๋ฐฉ์‹์€ ์ด๋™ ๋ถˆ๋ณ€์„ฑ์„ ๊ฐ€์ง„ ํ‘œํ˜„์„ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ํ•ฉ์„ฑ๊ณฑ ์ธต์„ ๋งค์šฐ ๋ฐ์ดํ„ฐ ํšจ์œจ์ ์œผ๋กœ ๋งŒ๋“ค๊ณ  ๋ชจ๋“ˆํ™” ์‹œํ‚ต๋‹ˆ๋‹ค.

  • ์œ„์™€ ๊ฐ™์€ ์•„์ด๋””์–ด๋Š” ์–ด๋–ค ์ฐจ์› ๊ณต๊ฐ„์—๋„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 1D(์‹œํ€€์Šค), 2D(์ด๋ฏธ์ง€๋‚˜ ์ด๋ฏธ์ง€๊ฐ€ ์•„๋‹ˆ์ž๋งŒ ์‚ฌ์šด๋“œ ์ŠคํŽ™ํŠธ๋กœ๊ทธ๋žจ์ฒ˜๋Ÿผ ๋น„์Šทํ•œ ํ‘œํ˜„), 3D(๋ณผ๋ฅจ ๋ฐ์ดํ„ฐ) ๋“ฑ์ž…๋‹ˆ๋‹ค.

  • ํ…์„œํ”Œ๋กœ์šฐ์—์„œ๋Š” conv1d ์ธต์œผ๋กœ ์‹œํ€€์Šค๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ , conv2d์ธต์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ , conv3d ์ธต์œผ๋กœ ๋ณผ๋ฅจ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ•ฉ์„ฑ๊ณฑ ์‹ ๊ฒฝ๋ง์€ ํ•ฉ์„ฑ๊ณฑ ์ธต๊ณผ ํ’€๋ง ์ธต์„ ์Œ“์•„์„œ ๊ตฌ์„ฑํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ’€๋ง ์ธต์€ ๊ณต๊ฐ„์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์šด์ƒ˜ํ”Œ๋งํ•˜๊ณ  ์ด๋Š” ํŠน์„ฑ ๊ฐœ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚˜๊ฒŒ๋˜๋ฉด ํ›„์† ์ธต์ด ํ•ฉ์„ฑ๊ณฑ ์‹ ๊ฒฝ๋ง์˜ ์ž…๋ ฅ ์ด๋ฏธ์ง€์—์„œ ๋” ๋งŽ์€ ๊ณต๊ฐ„์„ ๋ฐ”๋ผ๋ณด๋„๋ก ํŠน์„ฑ ๋งต์˜ ํฌ๊ธฐ๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์œ ์ง€์‹œํ‚ต๋‹ˆ๋‹ค.

  • ํ•ฉ์„ฑ๊ณฑ ์‹ ๊ฒฝ๋ง์€ ๊ณต๊ฐ„์ ์ธ ํŠน์„ฑ ๋งต์„ ๋ฒกํ„ฐ๋กœ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•ด ์ข…์ข… flatten ์ธต๊ณผ ์ „์—ญ ํ’€๋ง ์ธต์œผ๋กœ ๋๋‚ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ผ๋ จ์˜ ๋ฐ€์ง‘์ธต(MLP)๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ ๋ถ„๋ฅ˜๋‚˜ ํšŒ๊ท€ ์ถœ๋ ฅ์„ ๋งŒ๋“ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ’กJD

๋ฉด์ ‘๋ณด๋Ÿฌ ๊ฐ€๊ธฐ ์ „์— ์žกํ”Œ๋ž˜๋‹› ๋ฉด์ ‘ ํ›„๊ธฐ๋ฅผ ๊ผญ ์ฝ์–ด๋ณผ ํ•„์š”๊ฐ€ ์žˆ์Œ

  • ๊ธฐ๋ณธ ๋งค๋„ˆ, ๋ฉด์ ‘์„ ๋ณด๋Š” ์‚ฌ๋žŒ์€ ๊ฑฐ์˜ ์ •ํ•ด์ ธ์žˆ์Œ. ์ƒˆ๋กœ์šด ์งˆ๋ฌธ์„ ๋งŒ๋“ค์–ด ์งˆ๋ฌธํ•˜๊ธฐ๊ฐ€ ํ˜„์‹ค์ ์œผ๋กœ ์–ด๋ ค์›€์ด ๋งŽ์Œ. ๋Œ€๋ถ€๋ถ„ ๋น„์Šทํ•œ ์งˆ๋ฌธ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์žกํ”Œ๋ž˜๋‹›์— ์˜ฌ๋ผ์˜จ ์งˆ๋ฌธ์— ๋Œ€ํ•ด์„œ๋Š” ๊ผญ ์ค€๋น„ ํ•ด์„œ ๊ฐ€๋Š”๊ฒƒ์„ ์ถ”์ฒœ
profile
์ž๋ผ๋‚˜๋ผ ์ƒˆ์‹น์ƒˆ์‹น๐ŸŒฑ
post-custom-banner

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