Machine Learning & Deep Learning/Kmooc

비전공자를 위한 AI 딥러닝 Week 10. CNN

유방울 2023. 8. 10. 19:00

Classification 

cat

어디에 있는지?

감지 : object detection

 

GAN : 새로운 이미지를 창작하는 신경망

고양이 + 고흐의 그림 = 고흐의 화풍으로 고양이 그려줌

style transfer

 

이것들 모두 컴퓨터비젼 응용

 

실제로 4K 이미지

프로세싱은 어려운 문제임!

 

이 자체의 픽셀이 많고 3가지 픽셀 존재

 

이는 MLP, FULLy connected neural network 굉장히 많은 숫자

 

8MB가 됨

 

hidden node 128개면 많음

 

b도 많음

 

흑백 사진은 1GB의 파라미터 가짐

 

이들로 중요한  information만 찾아내서 고양이라고 분류하려면 어떻게 해야 할까?

 

LeNet(르넷)

벨랩에서 여러 연구자가 연구

컴퓨터 비젼은 재래식 알고리즘 사용

 

미국과 우체국에서 수집된 데이터로 연구 시작

 

완성본인 LeNet5는 최초의 완성된 형태의 딥뉴럴 네트워크의 표준임!!

 

AlexNet(알렉스넷)

backpropagation 알고리즘 발명한 스탠포드 그룹의 일원임

복잡한 이미지를 읽어낼 수 있는 컴퓨터 비전 프로그램 만들어보기!!

 

convolutional layer가 5개가 있는 복잡한 신경망 -> 이는 처음으로 딥러닝으로 불림

 

어떻게 효율적인 컴퓨터 비전 학습 뉴럴 네트워크인지?

 

계속 층이 중첩되는 형태임

 

부분의 이미지로부터 합쳐서 어떤 글씨 혹은 동물 특징을 찾음

 

각각의 층이 특징을 찾아내면 좋겠다!!

 

예시 

숫자 4 들어가면 

첫번째 층은 조금한, 대략적인 특징을 찾음

두 개 세개 찾아서 더 큰 특징을 찾아냄

최종적 : 여러 특징이 모이면 4라는 숫자다!!!

 

convolution layer는 5*5인 픽셀로부터 다음 층으로 가는 커낵션 생각

이전의 multilayer perceptron은 모든 인풋이 hidden 노드에 다 연결

 

그 다음에는 풀링 방법을 통해 사이즈 줄임

 

두 가지를 합쳐서 한 층이라고 불림

 

그럼 이는 어떤 일을 하느냐?

 

model = tf.keras.models.Sequential([
	tf.keras.layers.Conv2D(64, (3,3), activation ='relu', input_shape=(28,28,1)),
    tf.keras.layers.MaxPooling2D(2,2),
    tf.keras.layers.Conv2D(64, (3,3), activation='relu'),
    )

Summary

적층되면 high-level 특징을 잡아낼 수 있는 neural network될 수 있음!

cnn은 스스로 데이터로부터 학습해서 분류해야 할 필터를 만들어냄

-----

이미지 필터

스스로 학습을 통해 구현하는 신경망

컴퓨터 비전에 쓰이는 이미지 필터에 대해서 알아보기!

 

image filter은 9개 셀을 모아서 각각 적절한 숫자 곱 -> 수평선만 보이는 형태

즉 수직선을 추출하는 필터!

 

노란 부분이 convolution을 해주고 있음

9셀의 중심위치에 곱한 합을 적고 있음

기존의 자리에 있는 픽셀의 값을 곱해주면?

컨볼류션

 

필터의 위치가 같은 픽셀을 곱함... 전부 곱해서 더함 -> 센터자리에 결과 넣어주면 컨볼루션이 됨

어떻게 수평선, 수직선을 만드는지?

 

왼쪽 10, 오른쪽 0

0~10까지 값을 같은 greyscale 생각

vertical edge로 수직선을 찾아내는 역할

기본적으로 vertical

센터 주변이 숫자가 큼 -> 일반적으로 사용

 

horizontal은 수평!

= Sobel 필터

가운데와 양쪽이 값이 차이가 있는 필터를 sobel

위아래 차이는 수평 sobel 필터 !

 

일반적인 사진에서 핵심 정보를 가지고 있는 엣지! 같은 피처

그런 필터를 사용할 수 있음

 

filter 는 리스트로 구현 -> -1, -2, -1 000 인 것을 보면

엣지 디텍션 필터!

 

풀링 필터!

자주 사용되는 필터 

중요한 개념 stride

그 다음 컨볼루션은 어디 가서 하느냐?

필터를 움직여 가는 거리를 의미함

2개씩, 1개씩 모두 가능함

이를 이용해 컨볼루션하면 2를 할 ㄸ

 

패딩 필터

컨볼루션시 가장자리에 있는 x는 소실되

없던 값인 0을 넣어서 패딩함

원래 이미지의 사이즈와 같은 사이즈가 됨

 

풀링

몇 개의 픽셀을 모아서 -> 하나의 픽셀로 합침

중요한 정보 충분히 찾음 -> 많은 픽셀 유지 x

자유도 줄어듦

 

max pooling

4개를 모아서 -> 가장 큰 값 6

대표값을 정하는 것