컨볼루션 신경망

noo·2021년 8월 12일
0
post-thumbnail

프로그래머스 2021 국민대 여름방학 인공지능 과정 5주차 Day4 TIL


🔍컨볼루션 신경망

  • 인공신경망에 필터링(합성곱 이용) 기법 적용
  • 이미지 처리에 특화

데이터 전처리

x_train = x_train.reshape(60000, 28, 28, 1).astype('float32') / 255.0
x_test = x_test.reshape(10000, 28, 28, 1).astype('float32') / 255.0
y_train = to_categorical(y_train)
y_test = to_categorical(y_test)

데이터 전처리 방식이 다중 퍼셉트론 신경망 방식과는 차이가 있음

  • 다중 퍼셉트론 신경망 3차원(샘플수, 행, 열) → 2차원(샘플수, 벡터수)
  • 컨볼루션 신경망 3차원(샘플수, 행, 열) → 4차원(샘플수, 행, 열, 채널)

모델 구성

  1. 합성곱 계층과 풀링 계층 원본 이미지에 필터링 기법 적용
  2. 완전 연결 계층(fully connected layer) 필터링된 이미지 분류
model = Sequential([
    Conv2D(32, (3, 3), padding='same', input_shape=(28, 28, 1), activation='relu'),
    Conv2D(32, (3, 3), padding='same', activation='relu'), 
    MaxPooling2D(pool_size=(2, 2)), 
    Conv2D(64, (3, 3), padding='same', activation='relu'), 
    Conv2D(64, (3, 3), padding='same', activation='relu'), 
    MaxPooling2D(pool_size=(2, 2)), 
    Flatten(), 
    Dense(512, activation='relu'), 
    Dense(10, activation='softmax')
])

model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

합성곱 계층

Conv2D(컨볼루션 필터의 수, (필터 행, 필터 열), padding='same', input_shape=(행, 열, 채널), activation='relu')

padding

  • 'valid' 유효한 영역만 출력 → 입력이미지 사이즈 > 출력이미지 사이즈
  • 'same' 이미지의 가장자리에 특정값으로 설정된 픽셀들을 추가함 → 입력이미지 사이즈 = 출력이미지 사이즈

input_shape

  • 입력 형태 정의
  • 모델에서 첫 레이어일 때만 정의하면 됨

풀링 계층

MaxPooling2D(pool_size=(2, 2))

합성곱 계층활성 함수를 거쳐 생성된 이미지에서 주요한 값만 뽑아냄
사소한 이미지 구성 요소들의 변화가 영향을 미치지 않도록 함


코드 AI factory
참고 https://tykimos.github.io/2017/01/27/CNN_Layer_Talk/
참고 https://untitledtblog.tistory.com/150


컨볼루션 신경망에 대해서 찾아보다가 다중 퍼셉트론 신경망에 대해서도 다시 알아보게 됐다. so hard,,

담엔 피그마 깔짝 시도해서 사진도 넣어봐야징^,^..

실습 위주의 수업방식으로 바뀐 이후로 뭔가 어떻게 공부를 해야하나 막막했는데, 어제 실시간 세션에서의 질의응답시간이 도움이 많이 됐던 것 같다.
코드 하나부터 열까지 다 알아야 될 것 같고 다 쓸 수 있어야 될 것 같았는데😅 그게 아니였다. 전체적인 메커니즘을 이해하는게 먼저인 것 같다. 그리고 거기서 튜닝해나가는...

그리고 정말 인공지능에 익숙해지려고 해야겠다. 나 이 쪽에 진짜 너무 무지함。・゚(゚><゚)゚・。

0개의 댓글

관련 채용 정보