본문 바로가기

【2】CNN_합성곱 신경망

(7)
이미지 분류하기 CNN으로 이미지를 분류해보자. try: %tensorflow_version 2.x except Exception: pass import tensorflow as tf #텐서플로우 2.x 실행 CNN을 돌리기에 앞서 텐서플로우(Tensorflow) 버전을 2.x으로 바꿔야 한다. 그래서 위에 코드를 실행하면 2.x로 바뀝니다. from tensorflow.keras import datasets, layers, models 모델을 작성하기에 앞서 keras 패키지를 호출한다. (train_images, train_labels), (test_images, test_labels) = datasets.mnist.load_data() 이미지 분류에 사용할 Mnist 데이터셋을 부릅니다. Mnist 데이터는 0 ~..
선생님, Padding은 뭔가요?(2) - 스트라이드 (Stride) 스트라이드는 사전적으로 ‘보폭’이라는 의미를 갖는다. 마찬가지로 입력데이터에 필터를 적용할때를 생각해보자. 아래의 예제는 앞에서 계속 다루었던 (4,4)사이즈의 입력 데이터에 (3,3) 필터를 적용한 예이다. 여기에 우리가 배운 세임 패딩을 적용한다면 다음과 같이 나타낼 수 있다. 패딩을 적용한 입력 데이터에 합성곱 연산을 하면 아래의 그림처럼 진행 될 것이다. 그림에서 필터가 적용되는 보폭을 보자. 지금까지는 보았던 연산들이 그러하듯 왼쪽 위부터 오른쪽 방향으로 한칸씩 전진하며 합성곱 연산이 적용된다. 즉 앞에서 본 예시는 모두 스트라이드가 1이다. 만약 스트라이드가 3이라면 세칸씩 이동하면서 필터를 적용한다. 이를 그림으로 나타내면 다음과 같다. 스트라이드를 1에서 3으로 조정했더니 연산의 출력 데이..
선생님, Padding은 뭔가요? 밸리드 패딩 / 풀 패딩 / 세임 패딩 패딩(padding)의 사용은 앞에서 언급했듯이 출력 크기를 보정하기 위해 사용하며 ‘충전재’라는 의미처럼 입력 데이터의 사방을 특정 값으로 채우는 것을 말한다. 일반적으로 특정 값은 그냥 0을 사용하기에 제로패딩(zero padding)이라고도 한다. 아래의 사진은 (4,4)인 입력데이터에 폭이 1 pixel인 패딩을 적용하여 (6,6) 크기가 된 그림이다. 밸리드 패딩 (valid padding) 우리가 지금까지 다루었던 즉 패딩을 추가 하지 않은 형태는 엄밀히 말하면 밸리드 패딩(valid padding)을 적용했다고 한다. 이렇게 밸리드 패딩을 적용하고 필터를 통과시키면 그 결과는 항상 입력 사이즈보다 작게 된다. 밸리드 패딩은 합성곱 연산시 입력데이터의 모든 원소가 같은 비율로 사용되지 않는 문..
곱셈과 덧셈만 알면 정말 쉬운 ‘합성곱' 합성곱 연산은 CNN의 핵심원리라고 할 만큼 중요하다. 그런데, 합성곱은 곱셈과 덧셈만 이용하면 되는 매우 단순한 작업이다. 그림과 함께 보면 합성곱 연산을 쉽게 이해 할 수 있을 것이다. 아래의 그림을 보자. 먼저 합성곱 연산을 위해서는 재료가 되는 입력 데이터와 필터가 필요하다. 사이즈는 (높이, 너비)로 표현하며 필터는 주로 (3,3) 또는 (5,5) 와 같은 정방행렬을 사용한다. 미리 언급했듯이 CNN의 학습 대상은 필터의 값(weight)이므로 적절한 초기 값을 설정할 필요가 있다. 이때 우리가 1장에서 다루었던 초기화 방법들이 CNN의 필터 값을 초기화 할때에도 사용이 된다. 그럼 그림과 같은 예시가 주어졌을때 어떤 계산 방식으로 피처맵이 구해졌는지 아래의 그림을 보며 살펴보자. 그림에서 보다..
합성곱 신경망(CNN) / 고양이의 눈에서 답을 얻다. 합성곱 신경망(Convolutional Neural network,CNN)은 딥러닝의 역사에서 최초로 상당한 성과를 거둔 신경망이다. 오늘 날 합성곱 신경망은 일부 복잡한 이미지 처리 문제에서 사람을 능가하는 성과를 내고 있다. 이번 장에서는 CNN이 어떻게 등장했고 구성 요소와 동작 원리를 살펴본 후에 발전된 형태의 CNN 구조까지 알아보도록 하겠다. "고양이의 눈에서 답을 얻다." 1950년대 허블(Hubel)과 비셀(Wiesel)은 고양이의 시각 피질 실험에서 고양이 시야의 한 쪽에 자극을 주었더니 전체 뉴런이 아닌 특정 뉴런만이 활성화되는 것을 발견했다. 또한 물체의 형태와 방향에 따라서도 활성화되는 뉴런이 다르며 어떤 뉴런의 경우에는 저수준 뉴런의 출력을 조합한 복잡한 신호에만 반응한다는 것을 ..
컴퓨터에게 눈이 달렸다! 딥러닝 기반의 컴퓨터 비전 연구 분야에는 어떤 것들이 있을까? 다양한 문제들이 연구되고 있지만 이 책에서는 가장 기본이 되는 이미지 분류, 물체 인식을 포함해 조금 더 발전된 연구인 물체 검출과 이미지 캡셔닝까지 각 분야에 대한 개념을 알아보자. 1. 이미지 분류 (Image Classification) 이미지 분류는 물체 분류(Object classification)라고도 하며 이미지 전체 혹은 이미지 안의 물체(object)의 종류를 구분하는 작업이다. 이때 분류하려는 종류의 개수가 두개면 이진 분류, 여러 개면 다중 분류 작업이 되는데 예를 들면 전자는 강아지와 고양이로 이미지를 분류하는 문제가 있고 후자는 손으로 쓴 숫자(0~9)를 분류하는 문제가 있다. 2. 물체 위치인식(Object Local..
컴퓨터에게 눈이 달렸다면 얼마나 좋을까? 컴퓨터 비전(Computer vision)은 인간의 시각(vision)을 컴퓨터가 가질 수 있도록 하는 인공지능의 한 분야이다. 사람이 눈을 통해 본 장면을 이해하고 정보를 얻는 것처럼 컴퓨터도 물체와 사람을 식별해서 관계를 파악하고 더 나아가 감정과 의도를 추측할 수 있도록 컴퓨터에게 ‘눈’을 달아 주는 것이다. 사람은 직관적으로 사진 속 사물과 그 관계를 파악하는 것이 가능하다. 그러나 이를 컴퓨터에게 가르치기란 결코 쉬운 일이 아니다. 그렇다면 컴퓨터에게 사람처럼 보는 법을 어떻게 알려 주려 했을까? 컴퓨터에게 눈을 달아주려는 아이디어에 맞게 초창기 컴퓨터 비전은 동물의 시각 정보 처리 방식을 모방하는 연구가 진행되었다. 뇌가 사물을 인식하기 전 테두리(edge), 색(color), 질감(textu..