Yet Never Lose Faith

- Good to Great , Jim Collins

How To Preprocess Image Data 자세히보기

Deep Learning/[Books] 머신러닝, 딥러닝 실전 앱 개발 12

자연어처리(카테고리 분류) 데이터 전처리

지난 포스팅에서는 형태소 분석 방법과 문장을 수치로 변환하는 예제에 대해서 공부했다. 이번 포스팅은 "문서"를 입력 받아 수치로 변환하는 방법에 대해서 공부해보겠다. 문장을 수치로 변환하는 예제를 이해했다면, 문서를 변환하는 건 아주 간단하다. 문서를 문장으로 바꾼 뒤, 문장을 수치로 바꾸면 된다. read() 함수를 통해 파일(문서)를 한 줄씩 읽은 후 add_text()에 인자로 전달한다. def add_file(path) : with open(path, "r", encoding="utf-8") as f : s = f.read() add_text(s) 문서별 형태소 분석까지 마쳤다. 이후에는 calc_files()를 사용하여 수치로 변환한다. add_text()와 calc_files()가 궁금하다면?..

자연어 처리(문서 카테고리 분류)의 원리

자연어란 인간의 언어를 의미한다. 기계어는 컴퓨터의 언어를 의미한다. 자연어 처리란 인간의 언어 현상을 컴퓨터와 같은 기계를 이용해서 모사할 수 있도록 연구하고, 이를 구현하는 인공지능의 한 분야이다. 정보검색, 문서자동분류, 신문기사 클러스터링, 대화형 Agent등이 있다. 이번 포스팅에서는 문서자동분류, 신문기사 클러스터링 같이 인공지능으로 자연어로 이루어진 문서의 카테고리를 분류하는 작업의 원리에 대해서 다룬다. 전체적인 과정을 이미지로 표현해보았다. 먼저 자연어로 된 문서들을 컴퓨터가 이해할 수 있도록 입력값(X)과 Target(Y)을 숫자 형태로 변환한다. (①) 적절한 형태의 학습 데이터를 확보하면 머신러닝, 딥러닝 모델을 생성한다. (②) 새로운 문서가 주어지면 이를 다시 숫자형태로 변환하고..

머신러닝 이용하여 언어판정하기 (feat. Unicode code point)

언어판정이란 주어진 문장이 어떤 언어로 작성됐는지 판정하는 것을 의미한다. 머신러닝 모델을 사용해서 언어판정을 해보려고 한다. 1. 이론 (1) Unicode codepoint 언어의 종류마다 사용하는 문자가 다르다. 한국어는 '가, 나,...' 영어는 'a,b,...' 일본어는 'か,つ,...' 언어판정을 위해서는 사용하는 문자의 차이, 사용빈도를 구분할 수 있어야한다. 이때, 문자의 식별을 위해 Unicode codepoint라는 개념을 사용한다. Unicode codepoint란? 문자열을 대표하는 정수값으로, 문자열에 할당된 코드값을 의미한다. 한 문자는 한 코드를 갖는다. 유니코드 전체를 논리적으로 묶은 평면을 유니코드 평면이라고 하는데, 총 17개의 평면으로 구성되어 있으며, 한 평면은 655..

OpenCV 라이브러리 사용해보기(resize함수)

딥러닝은 주로 이미지, 음성, 텍스트에 관련된 문제를 해결하는데 사용한다. 이번 포스팅에서는 이미지를 다루는 데 필요한 라이브러리인 'OpenCV'를 다룬다. OpenCV란 ? OpenCV는 Open Source Computer Vision Library의 줄임말로, 오픈소스 이미지(동영상) 라이브러리를 뜻한다. 인텔이 만들어 공개했다. 이미지 형식 변환, 필터처리 같은 간단한 처리부터 얼굴/물체/문자인식 등 다양하게 활용 가능하다. 동작하는 OS는 안드로이드, 리눅스, 윈도우 등 다양하다. 딥러닝에서는 이미지를 입력으로 전달하기 위해서 이미지를 숫자 데이터로 변환해야한다. 그런데 실제 이미지파일은 BMP, PNG, JPEG 등 다양한 형식일 수 있고 흑백일 수도 있고, 크기도 제각각이다. 그래서 이미지..

머신러닝 모델로 내가 찍은 사진 평가하기

*저는 머신러닝/딥러닝에 관해 공부하고 있는 사람입니다. 잘못된 내용이나 참고할 만한 내용이 있다면 댓글로 남겨주시면 정말 감사드리겠습니다! 이번 포스팅에서는 지금까지 만들었던 MLP모델을 활용해서 내가 찍은 사진이 어떤 카테고리의 사진인지 평가해본다. 그러기 위해서는 다음과 같은 작업이 필요하다. 1. 내가 찍은 사진을 입력 형식에 맞게 가공하기 2. 예측 실행하고 결과 출력하기 STEP 1. 내가 찍은 사진을 입력 형식에 맞게 가공하기 우선 사진을 찍고 이미지를 jupyter notebook에 불러와보자. 귀여운 고양이 사진을 찍고 프로젝트 폴더에 cat.jpg라는 이름으로 저장했다. 이제 OpenCV라는 이미지 라이브러리를 통해 이미지를 읽고, 가공할 것이다. *OpneCV는 이미지 라이브러러리로,..

딥러닝 모델 평가 & 모델 저장하기

*저는 머신러닝/딥러닝에 관해 공부하고 있는 사람입니다. 잘못된 내용이나 참고할 만한 내용이 있다면 댓글로 남겨주시면 정말 감사드리겠습니다! 이번 포스팅에서는 지난 포스팅에서 생성한 모델의 정확도를 평가하고, 모델을 저장하는 법에 대해서 다룬다. 1. 모델 평가 evaluate 함수를 사용하면 모델의 최종적인 정답률과 loss 값을 알 수 있다. loss는 예측값과 실제값이 차이나는 정도를 나타내는 지표이다. 작을 수록 좋다. score = model.evaluate(X_test, y_test, verbose=1) print('정답률 = ', score[1],'loss=', score[0]) 정답률이 0.4796으로 생각보다 낮게 나왔다. 이는 2번 판정하면 1번 이상을 잘못 판정한다는 이야기이다. 이런..

딥러닝 모델 생성, 컴파일 그리고 학습시키기

* 저는 머신러닝/딥러닝에 관해 공부하고 있는 사람입니다. 잘못된 내용이나 참고할 만한 내용이 있다면 댓글로 남겨주시면 정말 감사드리겠습니다! 이번 포스팅에서는 예측을 수행하는 딥러닝 모델을 만들고 학습을 시켜보겠다. 크게 3단계로 나눌 수 있다. STEP 1. 모델 생성 STEP 2. 컴파일 STEP 3. 학습 수행 단계별로 살펴보겠다. Step 1. 모델 생성 모델 생성 단계는 예측을 하기 위한 모델의 껍데기/틀을 만드는 단계이다. x = 1 , -2 , 5 , 7 ... y = 2 , 5 , 3 , 7 ... 위와 같이 x,y값이 주어졌을 때 x에 대한 y의 식을 대략적으로 가늠해보는 단계이다. "음.. 대충 y = a*x + b 라고 할 수 있겠는 걸..?" 라는 식이다. 이 단계에서는 a,b 값..

이미지 데이터 전처리하기

* 저는 머신러닝/딥러닝에 관해 공부하고 있는 사람입니다. 잘못된 내용이나 참고할 만한 내용이 있다면 댓글로 남겨주시면 정말 감사드리겠습니다! 머신러닝/딥러닝 모델을 만들기 위해서는 학습 데이터를 '적절한 형태'로 가공해야한다. 여기서 '적절한 형태'란, 사용하는 모델에 따라 다르다. 내가 사용할 모델은 다층 퍼셉트론(MLP)이다. MLP의 학습데이터는 다음과 같은 조건을 만족해야한다. "정규화한 1차원배열" 그래서 이번 포스팅에서는 이미지데이터(X data)와 카테고리데이터(y data)를 정규화한 1차원배열로 만드는 방법에 대해서 다룬다. 저번 포스팅에서 X_train, X_test, Y_train, Y_test 데이터를 다운로드 받았다. 하나씩 살펴보겠다. 1. X 데이터 (이미지 데이터) X_tr..

학습 데이터 확보하기

나는 사진의 카테고리를 판정하는 머신러닝 프로그램을 만들 것이다. 그러기 위해서는, 학습용 데이터로 사진데이터와 그 사진의 카테고리 데이터를 이용해서 학습을 시켜야 한다. 80 Million Tiny Images라는 웹사이트에서 6만장의 이미지를 추출해 레이블을 붙인 데이터셋을 제공한다. CIFAR-10이라는 데이터 셋이다. 아래 URL에서 CIFAR-10 데이터를 살펴볼 수 있다. //CIFAR-10 dataset //[URL] https://www.cs.toronto.edu/~kriz/cifar.html 이미지 크기는 32 * 32 픽셀이며, RGB 형식의 컬러이미지이다. 이 데이터셋을 다운받는 방법은 몇 가지가 있는데, 나는 Tensorflow에서 제공하는 keras 모듈을 통해 다운로드 받을 것이..

Anaconda 가상환경 세팅 및 Tensorflow 설치

저번 포스팅에서 아나콘다의 첫 번째 장점에 대해 이야기했다. 두 번째 장점은 패키지 관리가 용이하다는 점이다. Python은 개발할 때 여러가지 패키지(라이브러리)를 설치해서 사용하는 경우가 많다. Anaconda는 여러개의 가상환경을 만들 수 있어 패키지 별로 필요한 라이브러리를 관리할 수 있도록 돕는다. 쉽게 말하자면 폴더링을 할 수 있도록 도와준다고 생각하면 된다. 내가 여러개의 프로젝트를 진행하는데 프로젝트에 필요한 자료들을 폴더 구분 없이 모두 바탕화면에 저장해두기만 하면 나중에 어떤 파일들이 그 프로젝트에 속한 파일들인지 확인하기 어려울 것이다. 예를 들어 디스크 용량이 다 차서 이미 끝난 프로젝트의 파일들을 삭제하고 싶을 때 일일이 파일 열어보면서 확인을 해야할 것 이다. Anaconda는 ..