본문 바로가기

카테고리 없음

TensorFlow Developer Professional Certificate [3]-1

해당 내용은 Laurence Moroney 교수님의 Coursera의 TensorFlow Developer Professional Certificate의 3주차 강의 Enhancing Vision with Convolutional Neural Networks 를 듣고 정리한 내용이다.

 

빨리 들어버리자구@.@

그래서. 컨볼루션 신경망을 통한 시각 향상이 뭔데?

 

 

1.andrew ng 선생님의 말씀

- 전에 fashion mnist datasets를 사용하며 모든 픽셀을 살펴보며 분류 하였는데 (dnn), 특징을 살펴보는 것이 더 효과적임을 말하심.

이를 위해 합성곱 신경망인 convolutional neural networks 컨볼루션 신경망(cnn)을 사용할 수 있음.

이는 이미지에서 특징 감지하는데 사용됨. 

 

2. 컨볼루션과 풀링이 뭔데? what are convolutions and pooling?

-이미지에 낭비되는 공간이 있음. 이러한 이미지를 클래스를 분류하기위한 중요한 특징으로 압축할 수 있는 방법

==> convolutions

컨볼루션은 이미지 처리에서 사용되는 기술로, 이미지의 특징을 강조하고 이미지를 압축하는 방법입니다. 이를 위해 이미지의 각 픽셀과 이웃 픽셀을 곱하여 새로운 픽셀 값을 계산합니다. 이를 통해 이미지의 특징을 강조하고 이미지의 크기를 줄일 수 있습니다. 컨볼루션은 이미지에 필터를 적용하여 특정 특징을 강조하는 역할을 합니다. 

 

pooling?

풀링이라는 기술을 사용하여 이미지를 압축할 수 있습니다. 풀링은 이미지를 작은 그룹으로 나누고 각 그룹에서 가장 큰 값을 선택하여 이미지의 크기를 줄이는 방법입니다. 이를 통해 이미지의 특징을 보존하면서 이미지의 크기를 줄일 수 있습니다.

 

 

3.

 

기본 코드

 

컨볼루션 추가

 

주목

 

- 첫 번째 컨볼루션 레이어 구체화

-keras에게 64개 필터 생성 요청

-필터들은 3x3의 크기를 가지고있으며 활성화 함수는 ReLU 사용

-ReLU--> 즉, 모든 음수 값은 0으로 변환됨,

-입력 이미지는 이전처럼 28x28임.-->input_shape

-input shape의 마지막1은 하나의 바이트를 color depth로 사용한다는 의미 --> 그레이스케일임.

 

-->64개 필터??

64개는 컨볼루션 레이어에서 생성되는 필터의 개수를 나타냅니다. 이 필터들은 이미지 데이터를 처리하고 특징을 추출하는 데 사용됩니다. 각 필터는 입력 이미지와 합성곱을 수행하여 특정한 특징을 감지하는 역할을 합니다. 이러한 필터들은 초기에는 미리 정의된 좋은 필터로 시작하고, 시간이 지남에 따라 학습을 통해 더 나은 필터로 개선됩니다. 이렇게 생성된 64개의 필터는 이미지의 다양한 특징을 감지하고 추출하는 데 도움을 줍니다.

 

 

추가 강의 자료

https://www.youtube.com/playlist?list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF

 

 

Convolutional Neural Networks (Course 4 of the Deep Learning Specialization)

 

www.youtube.com

 

 

.4.pooling layer 구현

 

- 풀링 레이어 생성

--> MaxPooling2D : 최대값을 취하기 때문에 max pooling임.

 

-2x2 풀링이라고 부름 , 가장 큰 값만 살아남음.

-또 다른 컨볼루션 레이어와 maxpooling2d 레이어 추가하여 네트워크가 기존 컨볼루션 위의 또 다른 컨볼루션 세트를 학습한 다음 사이즈를 줄이기 위해 풀링을 적용

 

==>이렇게 되면 이미지가 1차원인 그레이 스케일로 dense layer에 들어감

-->이미 많은 데이터가 줄어든 상태 ...1/4  ... 1/4 로 줄어듬

 

이렇게 하면,

합성곱 레이어, 즉 컨볼루션 레이어가 결과를 결정하는데 필요한 특징들만 거러내도록 하는 것.

 

 

model.summary()

-이 레이어는 모델의 레이어들을 출력가능하게함.

 

결과 : 레이어 보여줌

 

 

진짜 중요한 것!!!!!

 

빨간 네모 박스 주목,

-훈련 이미지 사이즈는 28x28로 코드에 넣었는데 출력해보니 26이다???

이미지 가장자리 필터들은 픽셀이 주변에 하나라도 없으므로 계산할 수 없음.

3x3필터에 필요한 여덟개의 픽셀이 모두 있으므로

-->이미지의 모든 부분에서 한 픽셀은 사용할 수 없다는 것 의미

-->3x3 필터 사용시 x보다 2픽셀만큼, y보다 2픽셀 만큼작을 것임.

5x5필터 사용시 4픽셀씩 작을 것임.

 

 

'

maxpooling2d레이어는 2x2로 설정했었음.

-->따라서 4개의 픽셀이 하나의 픽셀로 변함.

절반인 13x13으로 줄어듬.

컨볼루션 적용 한 픽셀씩 읽음 

x-2 , y-2 , 64

이것을 줄이기위해 다시 맥스풀링

5x5이미지가됨.

 

 

여러 컨볼루션이 적용된 결과로 5x5크기를 가진 이미지가 64개 생성되어 입력으로 사용될 예정

합성곱과 풀링 과정을 거치면서 이미지가 5x5 크기로 줄어들었고, 이를 64번 반복하여 64개의 5x5 이미지가 생성되었다는 것을 의미합니다. 이렇게 생성된 64개의 이미지는 이후에 밀집 신경망(Dense Neural Network)에 입력으로 사용됩니다.

 

flatten

: 이를 1차원으로 변환시 5x5x64=1600개의 값 가짐.

 

 

5. Improving the Fashion classifier with convolutions

컨볼루션으로 패션 분류기 개선하기.

 

실습은 다음시간에. . .

밤 12시가 되면 졸려요. . .