반응형
합성곱 신경망 (CNN)
고수준 뉴런이 이웃한 저수준 뉴런의 출력에 기반한다는 아이디어에서 착안된 신경망 모델이며 각 뉴런은 이전 층에 있는 몇 개의 뉴런에만 연결됩니다.
이미지나 영상을 처리하는데 유용한 신경망입니다.
이미지 전체를 한 번에 계산하는 것이 아닌 이미지의 국소적 부분을 계산함으로써 시간과 자원을 절약하여
이미지의 세밀한 부분까지 분석할 수 있는 신경망입니다.
1) 합성곱 신경망의 구조
- 입력층
- 합성곱층
- 폴링층
- 완전연결층
- 출력층
첫 번째 합성곱층의 뉴런은 입력 이미지의 모든 픽셀에 연결되는 것이 아닌 합성곱 층 뉴런의 수용장 안에 있는 픽셀에만 연결됩니다.
두 번째 합성곱층에 있는 각 뉴런은 첫 번째층의 작은 사각 영역 안에 위치한 뉴런에 연결됩니다.
이런 구조는 네트워크가 첫번째 은닉층에서 작은 저수준 특성에 집중하고 그다음 은닉층에서는 더 큰 고수준 특성으로 조합해나가는 계층적 구조를 띄게 한다.
(1-1) 입력층
- 입력 이미지 데이터가 최초로 입력되는 계층입니다.
- 이미지 분석 시 예시로 3*3 배열을 1차원으로 펼쳐서 각 픽셀에 가중치를 곱하여 은닉층으로 전달하게 됩니다.
- 이미지는 높이, 너비, 채널의 값을 갖는 3차원 데이터입니다. (채널 = 1이면 gray scale / 3이면 RGB scale)
(1-2) 합성곱층
- 입력 데이터에서 특성을 추출하는 역할을 수행합니다.
- 입력 이미지가 들어왔을 때 이미지에 대한 특성을 감지하기 위해 커널이나 필터를 사용합니다.
- 커널/필터는 이미지의 모든 영역을 훑으면서 특성을 추출하게 되는데, 이렇게 추출된 결과물이 특성 맵(feature map)입니다.
- 필터 사용 시 스트라이드(stride)라는 지정된 간격에 따라 순차적으로 이동합니다.
(1-3) 폴링층
- 합성곱층과 유사하게 특성 맵의 차원을 다운 샘플링하여 연산량을 감소시키고, 주요한 특성 벡터를 추출하여 학습을 효과적으로 할 수 있게 해 줍니다.
목적 : 과대 적합의 위험을 줄여주기 위해 파라미터 수를 줄이는 축소본을 만드는 것입니다.
최대 폴링 (max pooling) : 대상 영역에서 최댓값을 추출
평균 폴링 (average pooling) : 대상 영역에서 평균을 반환
(1-4) 완전 연결층
- 합성곱층과 폴링층을 거치면서 차원이 축소된 특성 맵은 최종적으로 완전 연결층으로 전달됩니다.
- 이미지는 3차원 벡터에서 1차원 벡터로 펼쳐지게 됩니다.
(1-5) 출력층
- 활성화 함수를 적용하여 가장 높은 확률 값을 갖는 레이블을 최종 값으로 선정합니다.
합성곱 신경망 구현해보기
데이터 전처리
# 이미지 데이터 정규화 해주기
x_train_final = x_train.reshape((-1, 28, 28, 1)) / 255.
x_test_final = x_test.reshape((-1,28, 28, 1)) / 255.
모델 구성
model_with_conv = tf.keras.Sequential([
tf.keras.layers.Conv2D(32, (3,3), padding='same', activation='relu', input_shape=(28,28,1)),
tf.keras.layers.MaxPooling2D((2,2), strides=2),
tf.keras.layers.Conv2D(64, (3,3), padding='same', activation='relu'),
tf.keras.layers.MaxPooling2D((2,2), strides=2),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(10, activation='softmax')
])
model_with_conv.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
반응형
'AI > Deep Learning' 카테고리의 다른 글
[딥러닝] 학습 모델 저장하기 / 불러오기 / 보기 (0) | 2022.06.22 |
---|---|
[딥러닝] 모델 성능 최적화하기 (배치정규화, 드롭아웃, 조기종료) (0) | 2022.06.21 |
[딥러닝] RNN 순환신경만이란, (0) | 2022.06.20 |