반응형

NLP_자연언어처리, Colab 9

[Colab] Sobel Prewitt Laplacian LoC 연산

먼저 위의 4가지 연산은 영상 처리에서 사용되는 개념이고 연산들이다. Edge, 즉 경계선을 검출하는데 사용이 되며 영상에서의 edge란 영상의 밝기가 낮은 값에서 높은 값으로, 또는 이와 반대로 변하는 지점에 존재하는 부분을 의미한다. edge는 영상안에 있는 객체의 경계(boundary)를 가리키는 것으로서, 모양(shape), 방향성(direction)을 탐지할 수 있는 등 여러 정보가 담겨있다. edge detection이란 에지에 해당하는 화소를 찾는 과정이다 한마디로 하자면, Edge는 어떤 객체와 배경 혹은 다른 객체와의 경계를 의미한다. 이런 Edge를 탐지하기 위해서는 밝기 값의 변화로 파악하는데 이 변화를 1차 미분과 2차 미분을 통해 확인한다. 1차 미분으로 Edge의 존재여부를, 2..

[Colab] GAN(Generative Adversarial Networks)

GAN Generative Adversarial Networks(GAN)은 적대적 학습(Adversarial Networks) 구조를 이용해서 생성 모델을 학습하는 아키텍쳐이다. GAN은 Discriminator(구분자)와 Generator(생성자)로 구성되어있다. 이는 경찰과 위조지폐생성범의 관계로 비유를 많이 하는데, 경찰은 계속해서 진실을 찾기위해 노력하고 범인은 경찰에게 걸리지 않기 위해 계속해서 노력한다. 구분자(경찰)는 어떤 이미지가 진짜 이미지인지 아니면 생성자(지폐위조범)가 만들어낸 가짜 이미지인지를 구분하도록 학습한다. 생성자는 Latent Variable(Noise Distribution에서 추출한 값)로부터 생성한 이미지가 구분자를 잘 속일 수 있도록 학습한다. 결과적으로 생성자는 원..

[Colab]Canny Edge Detector_hough transform_Edge 탐색 코드

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 import cv2 import numpy as np from google.colab.patches import cv2_imshow from google.colab import drive import sys #colab에서 cv2 이미지를 위한 라인 drive.mount('/content/gdrive') sys.path.insert(0, '/content/gdr..

[Colab] Histogram 코드

Histogram 이미지 처리 컨텍스트에서, 이미지의 히스토그램은 일반적으로 '픽셀 강도 값'의 히스토그램을 지칭한다 . 이 히스토그램은 이미지에서 발견 된 각각의 다른 강도 값에서 이미지 의 픽셀 수를 나타내는 그래프이다. 8 비트 grayscale의 경우 256 가지의 다른 가능한 강도가 있으므로 히스토그램은 그레이 스케일 값 사이의 픽셀 분포를 나타내는 256 개의 숫자를 그래픽으로 표시한다. 히스토그램은 컬러 이미지로도 촬영할 수 있다 .- 빨간색, 녹색 및 파란색 채널의 개별 히스토그램을 촬영하거나 3D 히스토그램을 생성 할 수 있습니다. 세 개의 축은 빨간색, 파란색, 녹색을 나타냅니다.채널 수, 픽셀 수를 나타내는 각 지점의 밝기. 연산의 정확한 결과는 구현에 따라 다르며, 적절한 이미지 형..

[NLP] Word2Vec : CBOW, Skip-gram

Word2Vec 워드투백터 라는 개념이 나온다. 이 백터화 라는 개념이 나오기 전에 이전에는 'one-hot encoding' 방식을 사용했다. 이것은 쉽게 말해 단어 n개짜리 사전이 있다고 생각할 때, 길이 n짜리 벡터를 하나 만들고 그 단어가 해당되는 자리에 1을 넣고 나머지에는 0으로 채우는 방식이다. 예를들어 사전이 [서울, 부산, 대전, 인천] 이라면 서울은 [1, 0, 0, 0] 으로 표현이된다. 이 방식은 단어가 본질적으로 다른 단어와 어떤 차이점을 가지는지 이해할 수 없다는 단점이 있다. 이를 해결하기 위해, 단어 자체가 가지는 의미를 다차원 공간에서 '벡터화' 하는 방식이 나타났다. 단어들이 벡터공간에 흩어져있다고 생각하여 각 단어들 사이이 유사도를 측정할 수 있다는 것이다. 예를들어 '..

[NLP]의사 결정 트리

의사결정트리란 트리를 내려가면서 질문을 하고 그 질문의 응답에 따라 어떤 분류에 속하는지를 결정하는 것이다. 분류결과를 사람이 쉽게 이해하기 위해 노드들을 가장 효율적으로 선정하고 배치하기 위해 정보 획득량과 엔트로피라는 개념이 필요하다. 다음과 같은 그림을 보자. 일반화 하면 이와 같다. 컴공이라면 이진 트리와 비슷한 느낌을 받을 수 있다. 시작 지점은 Root node이고 분기가 거듭될 수록 그에 해당하는 데이터의 수가 줄어들며 각 Terminal node에 속하는 데이터의 개수를 합하면 Root node의 데이터수와 일치한다. 이 의사결정트리는 분류와 회귀 모두 가능하다. 범주나 연속형 수치 모두 예측할 수 있다. 분류 과정은 새로운 데이터가 특정 Terminal node에 속한다는 정보를 확인한 ..

[NLP]합성곱 신경망_CNN : CIFAR-10

CNN은 Convolutional Neural Network의 약자로 완전연결계층과는 다르게 합성곱 계층과 풀링 계층이 추가되는 구조를 가지고 있다. 간단하게 위의 그림과 같이 나타낼 수 있다. 필자는 첫 번째 방식인 합성곱 + 풀링층 + 합성곱 ... + Fully Connected Layer의 구조를 사용한다. Convolution Layer 합성곱에서는 3차원 데이터(1, 28, 28)를 입력하고 3차원 데이터로 출력하므로 형상을 유지할 수 있다. CNN에서는 이러한 입출력 데이터를 Feature map(특징맵)이라고 한다. 합성곱 계층에서의 연산은 데이터와 필터의 모양을 나타내는데 이를 윈도우(Window)라고 부른다. 입력 데이터가 (4,4), 필터가 (3,3)일 때, 필터가 Convolutio..

[NLP]MNIST 문자 인식

참고 및 출처 https://tensorflowkorea.gitbooks.io/tensorflow-kr/content/g3doc/tutorials/mnist/beginners/ http://solarisailab.com/archives/303 MNIST란 28 * 28 크기의 0~9 사이의 숫자 이미지와 이에 해당하는 레이블로 구성된 데이터베이스다. 이것은 데이터의 양이 적당하고 문제 정의가 간단하여 입문용으로 자주 사용한다. MNIST 이미지 X가 입력으로 들어오면 그 이미지가 무슨 숫자인지를 해석해서 Y로 출력해주는 기본적인 이미지 인식 프로그램이다. 컴퓨터는 픽셀값으로 구성된 2차원 행렬만을 가지고 학습을 진행한다. 중요한 점은 숫자의 위치와 모양에 따른 변형이 컴퓨터가 인식을 제대로 못하게 하는 ..

[자연언어처리] 다층 퍼셉트론

자연언어처리를 공부하면서 머신러닝/딥러닝 실습환경으로 Tensorflow, Anaconda, 파이썬을 사용하였다. 이곳에 공부한 내용을 간단하게 정리하고자 한다. 자세한 내용과 공부는 이곳을 참고하자. https://hunkim.github.io/ml/ 퍼셉트론 이와 같은 구조로 이루어지며, W는 입력 X에 대해 곱해지는 가중치이다. 이 입력 X와 가중치 W의 값을 곱한 값들을 모두 더하여 하나의 값으로 만든 후. 특정 임계값과 비교를 하여 임계값 보다 크면 1, 아니면 -1로 출력하는 함수를 정의할 것이다. 이 함수를 활성 함수(Activation function) 라고 한다. 그럼 다층 퍼셉트론이란, 이 중간층, 즉 뉴런이 다수로 구성되어 있는 구조를 다층 퍼셉트론이라 한다. 퍼셉트론에서 결과값을 만..

반응형