텐서플로우 48

텐서플로우-배치 처리에 대해서 이해하자

텐서플로우 배치 처리 조대협 (http://bcho.tistory.com) 텐서플로우에서 파일에서 데이타를 읽은 후에, 배치처리로 placeholder에서 읽는 예제를 설명한다.텐서의 shape 의 차원과 세션의 실행 시점등이 헷갈려서 시행착오가 많았기 때문에 글로 정리해놓는다.큐와 파일처리에 대한 기본적인 내용은 아래글http://bcho.tistory.com/1163http://bcho.tistory.com/1165를 참고하기 바란다.데이타 포맷읽어 드릴 데이타 포맷은 다음과 같다. 비행기 노선 정보에 대한 데이타로 “년도,항공사 코드, 편명"을 기록한 CSV 파일이다.2014,VX,1212014,WN,18732014,WN,2787배치 처리 코드이 데이타를 텐서 플로우에서 읽어서 배치로 place h..

연예인 얼굴 인식 서비스를 만들어보자 #2-CSV에 있는 이미지 목록을 텐서로 읽어보자

연예인 얼굴 인식 서비스를 만들어보자 #2 CSV 목록에 있는 이미지 데이타를 읽어보자 조대협 (http://bcho.tistory.com) 앞의 글(http://bcho.tistory.com/1166) 에서는 얼굴 인식 데이타를 확보하고, 전처리를 통해서 96x96 사이즈로 만드는 것을 살펴보았다.그러면, 이 전처리가 끝난 데이타를 텐서플로우에서 학습용으로 쓰기 위해서 데이타를 읽어 들이는 것을 살펴보겠다. 파일에서 학습데이타를 읽는 방법과 큐에 대한 설명은 아래 두 글을 참고하기 바란다.http://bcho.tistory.com/1165http://bcho.tistory.com/1163파일 포맷파일 포맷은 다음과 같다/Users/terrycho/traning_datav2/training/007BIL_..

연예인 얼굴 인식 서비스를 만들어보자 #1 - 학습 데이타 준비하기

연예인 얼굴 인식 서비스를 만들어보자 #1 - 학습데이타 준비하기 조대협 (http://bcho.tistory.com) CNN 에 대한 이론 공부와 텐서 플로우에 대한 기본 이해를 끝내서 실제로 모델을 만들어보기로 하였다.CNN을 이용한 이미지 인식중 대중적인 주제로 얼굴 인식 (Face recognition)을 주제로 잡아서, 이 모델을 만들기로 하고 아직 실력이 미흡하여 호주팀에서 일하고 있는 동료인 Win woo 라는 동료에게 모델과 튜토리얼 개발을 부탁하였다. 이제 부터 연재하는 연예인 얼굴 인식 서비스는 Win woo 가 만든 코드를 기반으로 하여 설명한다. (코드 원본 주소 : https://github.com/wwoo/tf_face )얼굴 데이타를 내려 받자먼저 얼굴 인식 모델을 만들려면, ..

텐서플로우 - 파일에서 학습데이타를 읽어보자#2 (Reader와 Decoder)

텐서플로우 - 파일에서 학습데이타를 읽어보자#2 CSV 파일을 읽어보자 조대협 (http://bcho.tistory.com) 이 글은 http://bcho.tistory.com/1163 의 두번째 글이다. 앞의 글을 먼저 읽고 읽기를 권장한다.앞의 글에서는 트레이닝 파일명의 목록을 읽어서 큐에 넣고, 파일명을 하나씩 읽어오는 처리 방법에 대해서 알아보았다. 이번 글에서는 그 파일들에 있는 데이타를 읽어서 파싱한 후, 실제 트레이닝 세션에 학습용 데이타로 불러들이는 방법을 설명하도록 한다.파일에서 데이타 읽기 (Reader)finename_queue에 파일명이 저장되었으면, 이 파일들을 하나씩 읽어서 처리하는 방법을 알아본다.파일에서 데이타를 읽어오는 컴포넌트를 Reader라고 한다. 이 Reader들은 ..

텐서플로우-파일에서 학습 데이타를 읽어보자 #1 (큐 사용 방법과 구조)

텐서플로우 - 파일에서 학습데이타를 읽어보자#1 조대협 (http://bcho.tistory.com) 텐서플로우를 학습하면서 실제 모델을 만들어보려고 하니 생각보다 데이타 처리에 대한 부분에서 많은 노하우가 필요하다는 것을 알게되었다. MNIST와 같은 예제는 데이타가 다 이쁘게 정리되어서 학습 하기 좋은 형태로 되어 있지만, 실제로 내 모델을 만들고 학습을 하기 위해서는 데이타에 대한 정재와 분류 작업등이 많이 필요하다. 이번글에서는 학습에 필요한 데이타를 파일에서 읽을때 필요한 큐에 대한 개념에 대해서 알아보도록 한다. 피딩 (Feeding) 개념 복습 텐서플로우에서 모델을 학습 시킬때, 학습 데이타를 모델에 적용하는 방법은 일반적으로 피딩 (feeding)이라는 방법을 사용한다. 메모리상의 어떤 변..

텐서플로우에서 이미지 데이타 처리 성능 향상방법

텐서플로우에서 이미지 데이타 처리 성능 향상방법 이미지 인식 모델을 만들다가 파일 포맷 성능 향상 관련해서 좋은 팁을 찾아서 메모 if you are working with >O(1000) JPEG images, keep in mind that it is extremely inefficient to individually ready 1000's of small files. This will slow down your training quite a bit.A more robust and faster solution to convert a dataset of images to a sharded TFRecord of Example protos. Here is a fully worked script for co..

머신러닝 이미지 데이타 뻥튀기 방법

머신러닝에서 학습용 데이타양 늘리기 머신러닝에 대해서 공부하다가 강연을 들은적이 있었는데, 그때 많이 들었던 이야기가 데이타 뻥튀기에 대한 이야기 였다.확보할 수 있는 원본 데이타의 양이 한정되어 있으니, 현재의 데이타를 가지고 그 양을 늘리는 방법인데. 어떻게 하나 사실 궁금했는데.(얼굴의 경우 선글라스를 씌우거나 기타의 방법을 생각했는데..) 오늘 튜토리얼을 보다보니, 구체적인 그 방법이 나와 있어서 잠깐 메모 해놓는다https://www.tensorflow.org/tutorials/deep_cnn 여기서 소개된 방법은이미지의 좌/우를 바꾼다거나, 이미지의 밝기나 선명도를 바꾸는 방법을 사용한다.

텐서 보드를 이용하여 학습 과정을 시각화 해보자

텐서보드를 이용하여 학습 과정을 시각화 해보자 조대협 (http://bcho.tistory.com) 텐서플로우로 머신러닝 모델을 만들어서 학습해보면, 각 인자에 어떤 값들이 학습이 진행되면서 어떻게 변화하는지 모니터링 하기가 어렵다. 앞의 예제들에서는 보통 콘솔에 텍스트로 loss 값이나, accuracy 값을 찍어서, 학습 상황을 봤는데, 텐서보다는 학습에 사용되는 각종 지표들이 어떻게 변화하는지 손쉽게 시각화를 해준다. 예를 들어 보면 다음 그림은 학습을 할때 마다 loss 값이 어떻게 변하는지를 보여주는 그래프이다.가로축은 학습 횟수를 세로축은 모델의 loss 값을 나타낸다. 잘 보면 두개의 그래프가 그려져 있는 것을 볼 수 있는데, 1st 그래프는 첫번째 학습, 2nd 는 두번째 학습에서 추출한 ..

딥러닝을 이용한 숫자 이미지 인식 #2/2-예측

딥러닝을 이용한 숫자 이미지 인식 #2/2 앞서 MNIST 데이타를 이용한 필기체 숫자를 인식하는 모델을 컨볼루셔널 네트워크 (CNN)을 이용하여 만들었다. 이번에는 이 모델을 이용해서 필기체 숫자 이미지를 인식하는 코드를 만들어 보자 조금 더 테스트를 쉽게 하기 위해서, 파이썬 주피터 노트북내에서 HTML 을 이용하여 마우스로 숫자를 그릴 수 있도록 하고, 그려진 이미지를 어떤 숫자인지 인식하도록 만들어 보겠다. 모델 로딩 먼저 앞의 예제에서 학습을한 모델을 로딩해보도록 하자.이 코드는 주피터 노트북에서 작성할때, 모델을 학습 시키는 코드 (http://bcho.tistory.com/1156) 와 별도의 새노트북에서 구현을 하도록 한다. 코드import tensorflow as tfimport nump..

딥러닝을 이용한 숫자 이미지 인식 #1/2-학습

딥러닝을 이용한 숫자 이미지 인식 #1/2 조대협 (http://bcho.tistory.com) 지난 글(http://bcho.tistory.com/1154 ) 을 통해서 소프트맥스 회귀를 통해서, 숫자를 인식하는 모델을 만들어서 학습 시켜 봤다.이번글에서는 소프트맥스보다 정확성이 높은 컨볼루셔널 네트워크를 이용해서 숫자 이미지를 인식하는 모델을 만들어 보겠다. 이 글의 목적은 CNN 자체의 설명이나, 수학적 이론에 대한 이해가 목적이 아니다. 최소한의 수학적 지식만 가지고, CNN 네트워크 모델을 텐서플로우로 구현하는데에 그 목적을 둔다. CNN을 이해하기 위해서는 Softmax 등의 함수를 이해하는게 좋기 때문에 가급적이면 http://bcho.tistory.com/1154 예제를 먼저 보고 이 문서..