본문 바로가기

cnn

곱셈과 덧셈만 알면 정말 쉬운 '합성곱' 【2】CNN_합성곱 신경망 / Convolutional Neural Networks의 이해 곱셈과 덧셈만 알면 정말 쉬운 '합성곱' 합성곱 연산은 CNN의 핵심원리라고 할 만큼 중요하다. 그런데, 합성곱은 곱셈과 덧셈만 이용하면 되는 매우 단순한 작업이다. 그림과 함께 보면 합성곱 연산을 쉽게 이해 할 수 있을 것이다. 아래의 그림을 보자. 먼저 합성곱 연산을 위해서는 재료가 되는 입력 데이터와 필터가 필요하다. 사이즈는 (높이, 너비)로 표현하며 필터는 주로 (3,3) 또는 (5,5) 와 같은 정방행렬을 사용한다. 미리 언급했듯이 CNN의 학습 대상은 필터의 값(weight)이므로 적절한 초기 값을 설정할 필요가 있다. 이때 우리가 1장에서 다루었던 초기화 방법들이 CNN의 필터 값을 초기화 할때에도 .. 더보기
합성곱 신경망 (CNN) / 고양이의 눈에서 답을 얻다. 【2】CNN_합성곱 신경망 / Convolutional Neural Networks의 이해 합성곱 신경망 (CNN) / 고양이의 눈에서 답을 얻다. 합성곱 신경망(Convolutional Neural network,CNN)은 딥러닝의 역사에서 최초로 상당한 성과를 거둔 신경망이다. 오늘 날 합성곱 신경망은 일부 복잡한 이미지 처리 문제에서 사람을 능가하는 성과를 내고 있다. 이번 장에서는 CNN이 어떻게 등장했고 구성 요소와 동작 원리를 살펴본 후에 발전된 형태의 CNN 구조까지 알아보도록 하겠다. "고양이의 눈에서 답을 얻다." 1950년대 허블(Hubel)과 비셀(Wiesel)은 고양이의 시각 피질 실험에서 고양이 시야의 한 쪽에 자극을 주었더니 전체 뉴런이 아닌 특정 뉴런만이 활성화되는 것을 발견했.. 더보기
컴퓨터에게 눈이 달렸다! 【2】CNN_합성곱 신경망 / 컴퓨터 비전의 이해 컴퓨터에게 눈이 달렸다! 딥러닝 기반의 컴퓨터 비전 연구 분야에는 어떤 것들이 있을까? 다양한 문제들이 연구되고 있지만 이 책에서는 가장 기본이 되는 이미지 분류, 물체 인식을 포함해 조금 더 발전된 연구인 물체 검출과 이미지 캡셔닝까지 각 분야에 대한 개념을 알아보자. 1. 이미지 분류 (Image Classification) 이미지 분류는 물체 분류(Object classification)라고도 하며 이미지 전체 혹은 이미지 안의 물체(object)의 종류를 구분하는 작업이다. 이때 분류하려는 종류의 개수가 두개면 이진 분류, 여러 개면 다중 분류 작업이 되는데 예를 들면 전자는 강아지와 고양이로 이미지를 분류하는 문제가 있고 후자는 손으로 쓴 숫자(.. 더보기
컴퓨터에게 눈이 달렸다면 얼마나 좋을까? 【2】CNN_합성곱 신경망 / 컴퓨터 비전의 이해 컴퓨터에게 눈이 달렸다면 얼마나 좋을까? 컴퓨터 비전(Computer vision)은 인간의 시각(vision)을 컴퓨터가 가질 수 있도록 하는 인공지능의 한 분야이다. 사람이 눈을 통해 본 장면을 이해하고 정보를 얻는 것처럼 컴퓨터도 물체와 사람을 식별해서 관계를 파악하고 더 나아가 감정과 의도를 추측할 수 있도록 컴퓨터에게 ‘눈’을 달아 주는 것이다. 사람은 직관적으로 사진 속 사물과 그 관계를 파악하는 것이 가능하다. 그러나 이를 컴퓨터에게 가르치기란 결코 쉬운 일이 아니다. 그렇다면 컴퓨터에게 사람처럼 보는 법을 어떻게 알려 주려 했을까? 컴퓨터에게 눈을 달아주려는 아이디어에 맞게 초창기 컴퓨터 비전은 동물의 시각 정보 처리 방식을 모방하는 연구가.. 더보기
[머신러닝] CNN(합성곱 신경망) 모델 만들기 (텐서플로 / 코드) 이번 글에서 텐서플로(tensorflow)를 이용하여 합성곱 층(CNN)을 만들어보도록 하겠습니다. 모델에 사용할 데이터는 텐서플로에서 제공하는 MNIST 데이터셋을 사용하도록 하겠습니다. 1. 텐서플로 import & 데이터셋 준비 먼저, tensorflow 라이브러리를 import 해준 뒤, 학습을 위한 데이터를 다운로드합니다. import tensorflow as tf from tensorflow.keras import datasets, layers, models (train_images, train_labels), (test_images, test_labels) = datasets.mnist.load_data() 이미지 데이터는 아래 코드처럼 28 x 28 형태의 shape으로 바꾸고, 픽셀 값을.. 더보기