Yet Never Lose Faith

- Good to Great , Jim Collins

How To Preprocess Image Data 자세히보기

Deep Learning 40

머신러닝 이용하여 언어판정하기 (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는 ..

Anaconda 설치하기

Tensorflow는 Python과 C,C++로 API를 제공한다. 그 중에서도 가장 문서화가 잘 되어있는 API는 Python이므로 나는 Python으로 이번 시리즈를 진행한다. Python을 사용하기 위해서는 Anaconda를 설치하면 된다. 내가 이해한 Anaconda는 Python 개발 툴이다. 장점은 이거 하나만 깔면 Python으로 개발하기 위한 거의 모든 준비를 끝낼 수 있다는 점과, 패키지 관리가 가능하다는 점이다. (최근에 알게 된 사실,,) 우선 첫번째 장점에 대해서 살펴보자. 대학교 1학년, 내가 java를 처음 배울 때는 세팅이 진짜 어려웠다. 우선 oracle에 가서 java를 깔고, eclipse에 가서 개발도구를 설치했다. 제어판에서 환경변수를 만들어서, 경로를 어디서 복사해서..

Prologue. 학습능력 키우기 !

배경(그냥 혼자 끄적임) 나는 개발을 잘 못한다. 우선 경력이 길지 않다. 대학교 졸업까지도 개발에 큰 흥미가 없었고, 취직하면서 본격적인 개발 커리어를 쌓기 시작했다. 또, 남들보다 개발 감각이 있는 편도 아니다. 알고리즘 문제 하나 풀려면 굉장한 시간이 소요된다. 그래서 나는 나만의 장점을 갖기 위해서는 아니, 이 시장에서 살아남기 위해서는 개발실력 +알파가 필요하다고 생각했다. 그리고 난 그 +알파가 '학습능력'이라고 생각한다. 내가 정의하는 학습능력은 새로운 것을 공부하고 적용하는 능력이다. 우선 나는 공부하는 것을 좋아하기 때문에 내가 키워낼 수 있는 능력이라고 생각했다. (즐기는 자가 최고라고 하니까!!) 둘째로, 많은 기술을 접해본 개발자는 시스템 설계를 잘 할 수 있다. 나는 학습능력을 키..

1 2 3 4