Deep Learning Applications

Daum·2021년 8월 25일
0

Deep Learning

목록 보기
4/5
post-thumbnail

📝 Deep Learning Applications

CNN(Convolutional Neural Networks)

컴퓨터 비전(Computer vision)분야에서 특히 많이 쓰이는 신경망으로 이미지 처리에 탁월한 성능을 지니고 있다.
이미지의 공간적인 구조 정보를 보존하면서 학습할 수 있는 방법이며, 크게 Convolutional layer와 Pooling layer로 이루어져 있다.

합성곱 층(Convolutional Layer)

입력 데이터에 특정 크기의 커널(Kernal matrix)을 적용하여 슬라이딩 윈도우 방식으로 새로운 출력값을 계산하는 역할을 한다.

Weight Sharing
필터의 Weight값을 고정시킨 필터함수를 이동시켜서 이미지의 지역적인 특성을 추출한다. 그런데 필터를 shift 하면서 겹쳐지는 부분이 발생하기도 하며 이 때 필터값들을 공유한다고 하여 Weight Sharing 특성이 존재한다.

Padding
입력 데이터 주변을 특정 값으로 채우는 것을 의미하며,
Zeros(또는 다른 값)을 이미지의 가장자리에 배치하여 합성곱 연산 이후에도 피쳐맵의 크기가 입력의 크기와 동일하게 유지되도록 한다.

zero-padding
feature map의 크기 조절과 데이터를 충분히 활용하기 위해 가장자리에 '0'을 더해준 것이다.

Stride
필터를 적용하는 위치의 간격이다.

Pooling

데이터를 다운 샘플링하기 위해 Pool layer matrix에서 최대 또는 평균을 사용하여 피쳐맵의 차원을 줄인다.

Max pooling
Pool layer matrix에서 가장 큰 값을 꺼내오는 방식이다.

Average pooling
Pool layer matrix에서 모든 요소의 평균을 꺼내오는 방식이다.

CNN에서 층을 깊게 쌓으면 장점은?

층이 깊어질수록 풀링 과정을 여러 번 거치면서 많은 픽셀 정보가 응축되기 때문에 한 번에 이미지의 많은 부분을 볼 수 있다.

Transfer Learning

기존 데이터로 학습된 신경망 네트워크를 재사용 가능하도록 하는 라이브러리이다. 비교적 적은 수의 데이터를 사용하여 빠르고 더 잘 일반화하는 모델을 가질 수 있다.

ResNet

기존 sequential 모델과 달리 skipped connection이 있는 모델로, 모델의 layer가 너무 깊어질수록 오히려 성능이 떨어지는 현상이 나타나는데 이 연결을 통해 층을 깊게 쌓더라도 역전파 시에 정보가 소실되지 않는다.

Image segmentation

1. Semantic Segmentation

입력 이미지 내에 있는 객체들을 픽셀 단위로 분할하여, 카테고리 레이블을 생성하는 작업이다.
object가 겹쳤을때 각각의 object를 구분해주지 못하는 단점이 있다.

2. Instance Segmentation

입력 이미지 내에 있는 객체들을 픽셀 단위로 분할하여,
카테고리 레이블이 같을 경우 서로 다른 instance로 구분한다.

대표 모델: UNet

  • U 모양으로 생겨서 U-Net
  • CN(Fully Convolutional Network)를 기반으로 하여 구축
  • 이미지를 넣으면
    1) 다운 샘플링 과정을 통해 convolution과 pooling이 반복 진행되어 특징을 추출하고, 피쳐맵 크기를 줄인다.
    2) 이후 업샘플링 과정을 통해 이미지 사이즈를 다시 늘린다.
    이유는 Object Detection이나 Segmentation을 위해서 이다.
    3) 마지막 Transposed Convolutional Layer에서 convolution의 출력 크기를 원본 크기로 만든다.

다운샘플링(Down-sampling)
Image 크기를 줄여가며 특징을 추출하는 과정이다.

업샘플링(Up-sampling)
원래 Image 크기로 복원하는 과정이다.

Image Augmentation

원래 데이터를 자르기, 채도변경, 회전, 명도변경 등 적용하여 훈련 세트의 다양성을 증가시킨다.

Object Recognition

사전 학습된 이미지 분류 신경망을 사용하여 슬라이딩 윈도우로 다중 객체를 검출한다.

Autoencoders (AE)

차원 축소 등을 위해 표현학습 또는 특징학습을 비지도 학습의 형태로 학습하는 신경망이다.
입력 데이터를 인코더 과정을 통해 중요한 특징값을 추출한 저차원의 형태로 변환하고, 이후 디코더 과정을 통해 다시 데이터로 재구성하여 출력한다.
데이터압축, 데이터시각화, 노이즈제거, 이상치 탐지 등이 가능하다.

encoder
입력층 부터 Latent Vector 까지 차원이 줄어드는 부분

decoder
Latent Vector 부터 차원이 확대되는 부분

latent feature
신경망 내부에서 추출된 특징적 값들

GAN

Generator(생성자)와 Discriminator(판별자) 두 개의 모델이 동시에 적대적인 과정으로 학습하여 새로운 이미지를 생성한다.

Generator(생성자)
위조지폐범, 이미지를 잘 생성해서 속일 확률을 높인다.

Descriminator(판별자)
경찰, 제대로 구분하는 확률을 높인다.

DCGAN

CycleGAN


📝 Code Review

model = Sequential()
model.add(Conv2D(32, (3,3), activation='relu'))
model.add(MaxPooling2D((2,2)))
model.add(Conv2D(64, (3,3), activation='relu'))
model.add(MaxPooling2D((2,2)))
model.add(Conv2D(64, (3,3), activation='relu'))
model.add(Flatten())
model.add(Dense(64, activation='relu'))
model.add(Dense(10, activation='softmax'))

model.summary()

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])
              
model.fit(train_images, train_labels, epochs=10, validation_data=(test_images, test_labels))

model.evaluate(test_images, test_labels, verbose=2)

0개의 댓글