본문 바로가기

BLOG/딥러닝

faster R-CNN (이론 + 실습) 【4】이미지 분류를 넘어, Object Detection 모델 / R-CNN 이론 + 실습 faster R-CNN (이론 + 실습) Resnet을 입힌 Detection model(이론 + 실습) 텐서플로우 공홈에서 배포하고 있는 Faster R-CNN (inception resnet) 모델이다. 코드를 보면서 어떤 구조인지 이해를 해보자 import tensorflow as tf import tensorflow_hub as hub import matplotlib.pyplot as plt import tempfile from six.moves.urllib.request import urlopen from six import BytesIO import numpy as np from PIL import Im.. 더보기
이미지 분류하기 - 실습 【3】최근 CNN 응용 모델 이해하고 사용하기 이미지 분류하기 - 실습 케라스에서는 이미 학습이 완료된 이미지 분류모델들을 모듈로 공유하고 있습니다. 그래서 해당 모델들을 쓰는 법을 배워보겠습니다. 해당 모델들은 Imagenet이라는 데이터셋으로 학습을 하였고, 입력을 받을수 있는 이미지크기부터 RGB 배열까지 달라 사용에 유의해야합니다. from tensorflow.keras.applications import VGG16 from tensorflow.keras.applications import VGG19 from tensorflow.keras.applications import ResNet50 from tensorflow.keras.applications import ResNet152 from ten.. 더보기
ResNet (이론) 【3】최근 CNN 응용 모델 이해하고 사용하기 ResNet ResNet(Residual Network)은 마이크로소트프의 중국 연구진들이 개발하여 2015년 ILSVRC 대회에서 우승한 신경망이다. 놀라운 점은 대회에서 Top-5 오류율이 3.57%라는 것인데 보통 사람이 이미지를 인식할때 오류율이 약 5% 정도이므로 사람을 뛰어넘은 최초의 신경망으로 기록되었다. ResNet은 152개의 층 수를 가진 기존의 신경망과는 비교할 수 없을 만큼 깊은 신경망이다. 일반적으로 해결해야하는 문제가 복잡할 수록 신경망의 깊어 져야 하지만 기울기 손실(vanishing gradient) 혹은 기울기 폭발(exploding gradient)문제가 뒤따르고 깊어진 층 수 만큼 파라미터 수가 늘어나므로 에러가 커지는 상황.. 더보기
GoogleNet (인셉션 모듈/평균 풀링/보조 분류기) 【3】최근 CNN 응용 모델 이해하고 사용하기 GoogleNet (인셉션 모듈/평균 풀링/보조 분류기) 구글넷은 2014년 이미지넷 인식 대회(ILSVRC14)에서 VGG를 이기고 우승한 알고리즘이다. 구글넷은 신경망 내부 컴퓨터 자원의 활용을 높이기 위해 계산량을 일정하게 유지하면서 신경망의 깊이와 폭을 늘릴 수 있도록 설계되었다. 구글넷의 전체적인 구조는 다음의 그림과 같다. 구조도와 함께 구글넷의 특징을 몇가지 살펴 보도록 하겠다. 그림에서 표시된 세개의 부분 중 첫번째 1번이라고 표시된 보라색 상자 부분을 보자. ① 인셉션 모듈(inception module) 구조도에서 보라색 상자로 색칠되어 있는 부분을 보자. 마치 작은 신경망을 연상케 하는 모듈들이 연결되어 있다. 구글넷에서는 이렇게 신경망안.. 더보기
VGGNet (이론) 【3】최근 CNN 응용 모델 이해하고 사용하기 / VGGNet (이론) VGG는 기본적인 CNN의 구조에 깊이를 증가시킨 형태이다. 논문 "Very Deep Convolutional Networks For Large-Scale Image Recognition" 의 제목과 개요에 나와있 듯 VGG는 신경망의 깊이를 깊게 하는데 중점을 두었다. 이러한 이유로 (3,3)의 작은 필터 사이즈를 주어 깊이를 최대로 늘리고자 했다. 필터가 작으면 피처맵의 사이즈가 조금씩 줄어드므로 합성곱 층과 풀링 층을 많이 쌓을 수 있기 때문이다. VGG팀은 최대 19개 까지 층을 늘리는 실험을 통해 층이 16개 이상일 때 성능이 좋다는 것을 발견하고 층이 16개와 19개인 VGG16, VGG19 모델을 만들었다. 아래의 표를 .. 더보기
이미지 분류하기 【2】CNN_합성곱 신경망 / 이미지 분류하기 이미지 분류하기 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() 이미지 분류에 사.. 더보기
선생님, Padding은 뭔가요? 밸리드 패딩 / 풀 패딩 / 세임 패딩 【2】CNN_합성곱 신경망 / Convolutional Neural Networks의 이해 선생님, Padding은 뭔가요? 밸리드 패딩 / 풀 패딩 / 세임 패딩 패딩(padding)의 사용은 앞에서 언급했듯이 출력 크기를 보정하기 위해 사용하며 ‘충전재’라는 의미처럼 입력 데이터의 사방을 특정 값으로 채우는 것을 말한다. 일반적으로 특정 값은 그냥 0을 사용하기에 제로패딩(zero padding)이라고도 한다. 아래의 사진은 (4,4)인 입력데이터에 폭이 1 pixel인 패딩을 적용하여 (6,6) 크기가 된 그림이다. 밸리드 패딩 (valid padding) 우리가 지금까지 다루었던 즉 패딩을 추가 하지 않은 형태는 엄밀히 말하면 밸리드 패딩(valid padding)을 적용했다고 한다. 이렇게 밸리.. 더보기
곱셈과 덧셈만 알면 정말 쉬운 '합성곱' 【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)의 종류를 구분하는 작업이다. 이때 분류하려는 종류의 개수가 두개면 이진 분류, 여러 개면 다중 분류 작업이 되는데 예를 들면 전자는 강아지와 고양이로 이미지를 분류하는 문제가 있고 후자는 손으로 쓴 숫자(.. 더보기