본문 바로가기

cnn

CVAE (Convolution VAE) 【8】최근 AutoEncoder 응용 모델 이해하고 사용하기 / CVAE CVAE (Convolution VAE) Convolution VAE를 해보자 기존에 사용했더 VAE는 순환 신경망를 사용하였지만 이번 모델은 CNN으로 바꾼 모델이다. 패키지들은 VAE와 동일하게 때문에 생략을 한다. (x_train, _), (x_test,_) = datasets.mnist.load_data() x_train = x_train.astype('float32') / 255. x_train = x_train.reshape(-1,28,28,1) x_test = x_test.astype('float32') / 255. x_test = x_test.reshape(-1,28,28,1) CNN을 사용하기 때문에 차원은 2차원이.. 더보기
Convolutional AE 【8】최근 AutoEncoder 응용 모델 이해하고 사용하기 / Convolutional AE Convolutional AE 이번에는 CNN과 AE과 결합된 모델인 CAE를 실습해보자 이미지에서 강점을 보인 CNN이기 때문에 성능은 좋아졌다. 바로 CAE로 생성된 mnist 이미지부터 보겠습니다. 위에 있는 이미지는 원본이미지고 아래는 CAE로 나온 예측 이미지다. 손실이 거의 발생하지 않은 상태의 이미지인 것을 확인 할 수가 있다. 높은 성능을 보이기에 책에는 따로 실습을 담지 않았지만 실습파일에는 있으니 시간이 있다면 실습을 하는걸 추천한다. 실습은 노이즈가 섞인 이미지 데이터를 CAE로 학습하는 것을 할 것이다. try: %tensorflow_version 2.x" except Exception: .. 더보기
Show and Tell (이미지 캡셔닝) 【6】 최근 RNN 응용 모델 이해하고 사용하기 / Show and Tell Show and Tell (이미지 캡셔닝) 작성자 홍다혜 ghdek11@gmail.com / 이원재 wonway333@gmail.com 더보기
GRU - 리셋 게이트 /업데이트 게이트 / 입력정보 처리 / 출력 값 계산 출처 【6】최근 RNN 응용 모델 이해하고 사용하기 / GRU GRU - 리셋 게이트 /업데이트 게이트 / 입력정보 처리 / 출력 값 계산 출처 작성자 홍다혜 ghdek11@gmail.com / 이원재 wonway333@gmail.com 더보기
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.. 더보기
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) - 스트라이드 (Stride) 【2】CNN_합성곱 신경망 / Convolutional Neural Networks의 이해 선생님, Padding은 뭔가요?(2) - 스트라이드 (Stride) 스트라이드는 사전적으로 ‘보폭’이라는 의미를 갖는다. 마찬가지로 입력데이터에 필터를 적용할때를 생각해보자. 아래의 예제는 앞에서 계속 다루었던 (4,4)사이즈의 입력 데이터에 (3,3) 필터를 적용한 예이다. 여기에 우리가 배운 세임 패딩을 적용한다면 다음과 같이 나타낼 수 있다. 패딩을 적용한 입력 데이터에 합성곱 연산을 하면 아래의 그림처럼 진행 될 것이다. 그림에서 필터가 적용되는 보폭을 보자. 지금까지는 보았던 연산들이 그러하듯 왼쪽 위부터 오른쪽 방향으로 한칸씩 전진하며 합성곱 연산이 적용된다. 즉 앞에서 본 예시는 모두 스트라이드가 1.. 더보기
선생님, Padding은 뭔가요? 밸리드 패딩 / 풀 패딩 / 세임 패딩 【2】CNN_합성곱 신경망 / Convolutional Neural Networks의 이해 선생님, Padding은 뭔가요? 밸리드 패딩 / 풀 패딩 / 세임 패딩 패딩(padding)의 사용은 앞에서 언급했듯이 출력 크기를 보정하기 위해 사용하며 ‘충전재’라는 의미처럼 입력 데이터의 사방을 특정 값으로 채우는 것을 말한다. 일반적으로 특정 값은 그냥 0을 사용하기에 제로패딩(zero padding)이라고도 한다. 아래의 사진은 (4,4)인 입력데이터에 폭이 1 pixel인 패딩을 적용하여 (6,6) 크기가 된 그림이다. 밸리드 패딩 (valid padding) 우리가 지금까지 다루었던 즉 패딩을 추가 하지 않은 형태는 엄밀히 말하면 밸리드 패딩(valid padding)을 적용했다고 한다. 이렇게 밸리.. 더보기