(광주인공지능학원) CNN 기초공부하기 2

(광주인공지능학원) CNN 기초공부하기 2

728x90

Conv2D ( filters = 32,

kernel_size = (5, 5), padding='valid', input_shape=(28, 28, 1), activation='relu‘,

strides = (2, 2) )

첫번째 인자 : Convolution 필터의 수.

두번째 인자 : Convolution 커널의 (행, 열).

Conv2D ( filters = 32,

kernel_size = (5, 5), padding='valid', input_shape=(28, 28, 1), activation='relu‘,

strides = (2, 2) )

padding : 경계 처리 방법을 정의.

‘valid’ : 유효한 영역만 출력. 따라서 출력 이미지 사이즈는

입력 사이즈보다 작다.

‘same’ : 출력 이미지 사이즈가 입력 이미지 사이즈와 동일하다. (광주인공지능학원)

Conv2D ( filters = 32,

kernel_size = (5, 5), padding='valid', input_shape=(28, 28, 1), activation='relu‘,

strides = (2, 2) )

input_shape : 샘플 수를 제외한 입력 형태를 정의.

모델에서 첫 레이어일 때만 정의.(행, 열, 채널 수)로 정의.

흑백영상인 경우에는 채널이 1이고, 컬러(RGB)영상인 경우에는 채널을 3으로 설정.

Conv2D ( filters = 32,

kernel_size = (5, 5), padding='valid', input_shape=(28, 28, 1), activation='relu‘,

strides = (2, 2) )

input_shape : 샘플 수를 제외한 입력 형태를 정의.

모델에서 첫 레이어일 때만 정의.(행, 열, 채널 수)로 정의.

흑백영상인 경우에는 채널이 1이고, 컬러(RGB)영상인 경우에는 채널을 3으로 설정.

Conv2D ( filters = 32,

kernel_size = (5, 5), padding='valid', input_shape=(28, 28, 1), activation='relu‘,

strides = (2, 2) )

activation : 활성화 함수 설정.

‘relu’

‘sigmoid’

‘softmax’

‘linear’

Conv2D ( filters = 32,

kernel_size = (5, 5), padding='valid', input_shape=(28, 28, 1), activation='relu‘,

strides = (2, 2) )

stride : stride 크기 지정 (행, 열).

Conv2D ( filters = 1,

kernel_size = (2, 2), padding=‘same', input_shape=(3, 3, 1) )

Conv2D ( filters = 3,

kernel_size = (2, 2), padding=‘same', input_shape=(3, 3, 1) )

Conv2D ( filters = 1,

kernel_size = (2, 2), padding=‘same', input_shape=(3, 3, 3) )

Conv2D ( filters = 2,

kernel_size = (2, 2), padding=‘same', input_shape=(3, 3, 3) )(광주인공지능학원)

MaxPooling2D ( pool_size = (2, 2), stride = (2, 2) )

pool_size : max pooling 크기 지정 (행, 열).

stride : stride 크기 지정 (행, 열).

Flatten ( )

1차원으로 변경하는 함수

Keras활용 고양이, 강아지 분류 실습

과대적합 피하는 방법 – 데이터 확장.

과대적합이 일어나는 이유 중 하나는 훈련데이터가 부족하기 때문이다.

훈련 데이터가 충분히 많다면 과대적합을 줄일 수 있다.

데이터 확장이라 훈련 데이터를 다양하게 변형하여 변형된 새로운 훈련 데이터처럼 사용함으로써 마치 훈련 데이터 수가 늘어난 효과를 얻는 것이다.(광주인공지능학원)

과대적합 피하는 방법

rotation_range = 360 : 0° 에서 360° 사이에서 회전

width_shift_range = 0.1 : 전체에서 10% 내외 수평이동

height_shift_range = 0.1 : 전체에서 10% 내외 수직이동

shear_range = 0.5 : 0.5라디안 내외 시계반대방향으로 변형

zoom_range = 0.3 : 0.7~1.3배로 축소/확대

Horizontal_flip = True : 수평방향으로 뒤집기

Vertical_flip = True : 수직방향으로 뒤집기

기타 성능 개선

가중치 초깃값 설정 (Xavier초깃값, He초깃값)

앞 계층의 노드를 이용해 표준편차가 1 / √n인 정규분포로 초기화하는 방법

배치정규화(Batch Normalization)

활성화 함수 앞 또는 뒤에서 평균 0, 분산 1로 정규화하는 방법

각 층에서 값들이 적당히 분포되도록 조정하는 것(광주인공지능학원)

전이학습

전이학습이란 다른 데이터 셋을 사용하여 이미 학습한 모델을 유사 한 다른 데이터를 인식하는데 사용하는 기법이다.

이 방법은 특히 새로 훈련시킬 데이터가 충분히 확보되지 못한 경우 에 학습 효율을 높여준다.

사전학습모델을 이용하는 방법은 특성 추출(feature extraction)

방식과 미세조정(fine-tuning) 방식이 있다

전이학습 - 특성추출방식

컨볼류션 베이스 부분만 재사용하는 이유는 이 부분은 상당히 일반 적인 학습정보를 포함하고 있기 때문이다.

컨볼류션 계층에서도 재사용할 수 있는 정보의 수준은 몇 번째 계층 인지에 따라 다르다. 모델의 앞 단의 계층일수록 에지, 색상, 텍스처 등 일반적인 정보를 담는다.

반면에 뒷 부분의 깊은 계층일수록 추상적인 정보를 담는다 (예를 들 어 고양이 귀, 강아지 귀 등).

새롭게 분류할 클래스의 종류가 사전 학습에 사용된 데이터와 특성

이 매우 다르면, 컨볼류션 베이스 전체를 재사용해서는 안되고 앞단 의 일부 계층만을 재사용해야 한다.(광주인공지능학원)

전이학습 미세조정 방식

모델 베이스 중 상위 몇개의 계층은 전결합층 분류기와 함께 새로 학 습시키는 방식이다.

최종 분류기의 계수가 랜덤하게 초기화 되어 있으므로 이를 먼저 학 습시키며 이때 사전학습 모델의 컨볼류션 베이스를 초기에는 고정해 야 한다.

먼저 분류기를 계수를 학습시킨 다음에 (즉, 이 동안은 미세조정을 하지 않도록 상위계층의 계수를 고정시켜 두고), 그 이후에 미세조정 을 해야 한다.

처음부터 베이스 상위계층의 계수를 같이 훈련시키면 분류기에서 발 생하는 큰 에러 값으로 인해, 사전 학습된 정보가 많이 손실된다.(광주인공지능학원)

사전 학습된 기본 네트워크 상단에 새로운 네트워크를 추가한다.

기본 네트워크를 고정시킨다.

새로 추가한 부분을 학습시킨다.

기본 계층중에 학습시킬 상위 부분의 고정을 푼다

고정을 푼 계층과 새로 추가한 계층을 함께 훈련시킨다.

미세 조정을 천천히 수행하기 위해서 느린 학습 속도를 선택한다. 갑

자기 큰 변화를 주면 사전 학습된 내용이 훼손되기 때문이다.

Keras활용 고양이, 강아지 분류 전이학습 실습

"스마트인재개발원에서 진행된 수업내용입니다"

https://www.smhrd.or.kr/

from http://30aichallenge.tistory.com/171 by ccl(A) rewrite - 2021-08-03 13:00:40