전체 글
-
QEMU와 KVM - 1개발/가상화 2017. 11. 1. 00:59
QEMU 'Quick Emulator' 풀네임 만으로는 와닿지 않지만 QEMU는 현재 PC에 설치된 운영체제와 다른 여러 개의 다른 운영체제를 구동 할 수 있는, 전가상화(Full Virtualization)를 지원하는 가상화 소프트웨어중 하나다. 전가상화 소프트웨어로는 VirtualBox나 VMware가 대중적으로 알려져있지만 가상화 기술 개발자들 사이에선 QEMU는 빼놓을 수 없는 가상화 소프트웨어중 하나다. 거의 가상화 기술 초창기를 주도 했던 소프트웨어이며 이때 만들어진 개념들도 상용화된 가상화 소프트웨어에서 사용되고 있다. 실제로 VirtualBox에선 상당부분을 QEMU 소스를 사용했다고 한다. QEMU는 다른 가상화 소프트웨어와는 다르게 오픈소스로 개발됐다(물론 VirtualBox도 오픈소스..
-
폴리페이스 - 데이터 학습시키기사이드 프로젝트/폴리페이스 2017. 10. 12. 21:21
데이터 구하고 가공하기에서 한 작업은 정치인들의 사진을 인터넷에서 크롤링 한 후 정확도 향상을 위해 사진에서 얼굴 부분만 추려낸 후 이 것을 Tensorflow서 사용 할 수 있는 파일 형식인 tfrecord로 변환하는 작업이었다. 이제는 변환된 데이터를 이용해서 학습을 시키는 일만 남았다. 이번 포스팅에서는 데이터를 학습시키는 과정들을 쭉 살펴보려고 한다. 1. Tensorflow 설치하기 (feat, 그래픽 카드 없이는 못쓴다) Tensorflow는 내 데스크탑에 그래픽 카드가 있느냐 아니면 없느냐에 따라서 설치 명령어가 달라진다. (tensorflow)$ pip install --upgrade tensorflow # for Python 2.7 (tensorflow)$ pip3 install --up..
-
폴리페이스 - 데이터 구하고 가공하기사이드 프로젝트/폴리페이스 2017. 9. 12. 22:41
인공지능 개발시 훌륭한 학습 알고리즘도 중요하지만 양질의 데이터를 구하는 작업 또한 중요하다. 데이터는 되도록 많을 수록 그리고 정확할 수록 학습에 도움이 된다. 이번 포스팅에서는 폴리페이스에서 어떤 방식으로 데이터를 구했고 가공했는지를 정리해보려 한다. 1. 학습에 사용할 데이터 모으기 학습에 사용할 전혀 손때 묻지 않는 RAW 데이터를 구하는 것이 첫번째 과정이다. 폴리페이스의 서비스는 정치인 얼굴 닮은 정도를 측정하는 것이므로 이때 필요한 RAW 데이터는 인터넷 상에 떠도는 정치인의 얼굴이 담긴 사진이다. 가장 간단한 방법은 정치인의 이름으로 구글 이미지 검색을 해서 나오는 이미지들을 다운 받는 것이다. 그런데 한 명당 몇장이나 필요한가가 의문이었다. 딥마인드는 알파고를 학습시키려고 10만기보를 준..
-
폴리페이스 -기획사이드 프로젝트/폴리페이스 2017. 9. 4. 21:13
회사안에서 계속 시대에 뒤쳐진 기술을 부여잡고 살다간 밥벌이를 잃게 될 것 같아서 마음이 맞는 친구와 공부를 해볼겸 새로운 프로젝트를 시작했다. 이름은 폴리페이스(Poliface)다. 폴레페이스 이름은 정치인(Poliface)와 얼굴(Face)를 합친 말이다. 이름에서 대강 짐작할 수 있듯이 이 프로젝트는 '정치인 닮은 꼴'을 찾아주는 서비스다. 웹크롤러를 이용해 인터넷 상에 있는 정치인들의 얼굴을 모으고 tensorflow에 있는 이미지 학습 기능을 응용해 학습시킨 후 파이썬을 사용하는 서버 프레임워크를 입혀 사용자들이 웹 또는 모바일에서 자신과 닮은 정치인을 찾아 볼 수 있게 하는 것이 이번 프로젝트의 목표다. (폴리페이스 구상도) 이것으로 특별히 수익을 낼 생각은 없다. 이번 프로젝트는 순수히 배우..
-
뉴럴네트워크(Neural Network)개발/인공지능 2017. 8. 18. 20:45
숫자 인식 코드를 분석 할 때 이미지 사이즈의 크기는 28x28이라서 총 784개의 feature를 두어서 구할 수 있었습니다. 그런데 실제로 사용하는 이미지는 이것보다 훨씬 크기가 큽니다. 바탕화면 해상도는 1920x1020이고 여기에 색깔을 넣기 위해 3차원까지 넣어서 총 요소(Element)들의 개수는 5,875,200(1920*1020*3)개가 됩니다. 요소들의 개수만큼 feature로 놓고 학습을 시킨다면 매우 시간이 오래 걸리겠죠? 그래서 인공지능 과학자들은 다른 방법을 고안했습니다. 과학자들은 연구에서 어려움이 있을 때마다 주로 자연에서 해답을 얻곤 하는데요 인공지능 뇌과학자들은 인간의 뇌의 뉴런구조를 본따서 이 문제를 해결하기로 했습니다. 인간의 뇌가 생각하는 방식을 컴퓨터에 이식 할 수 ..
-
오버피팅(Overfitting)개발/인공지능 2017. 8. 10. 21:18
학습 능률을 높인다는 것은 비용함수(Cost function)의 값을 줄이는 것입니다. 하지만 학습에 사용하는 Feature(쎄타라고 생각하시면 됩니다)의 개수가 일정하면 Gradient Decent와 같은 최적화 작업을 통해 통해 최적의 해에 도달 했다고 해도 절대적인 비용은 어쩔 수가 없습니다. 최대한 학습 데이터를 따르는 직선을 만들었지만 그래도 비용은 어쩔수가 없네요. 그런데 우리가 직선이 아니라 볼록한 함수를 이용해서 학습한다면 어떨까요? 쎄타2를 추가하고 이때의 x는 제곱으로 본다고 합시다. 여러차례 최적화 작업을 거치면서 아래로 볼록한 함수가 나온다면 데이터의 흐름을 잘 따를 수 있을 것 같습니다. 실제로 그림으로 그려보봐도 그렇네요. 데이터 흐름을 더 잘 따라가는 것 같습니다. 실제로 계산..
-
숫자인식 코드 분석해보기개발/인공지능 2017. 8. 3. 20:49
지난 포스팅에서 인공지능 이론중 가장 간단한 Linear Regression과 Logistic Regression에 대해서 설명했습니다. 이번 포스팅에선 tensorflow 튜토리얼에 있는 숫자 인식 코드를 차근차근 분석해가며 어떻게 우리가 배운 이론이 접목되었는지 공부해보는 시간을 가지려고 합니다. 먼저 숫자 인식 코드는 여기를 공식 튜토리얼 페이지는 여기를 클릭하면 볼 수 있습니다. 튜토리얼 페이지를 클릭하시면 MNIST라는 단어를 보실 수 있을겁니다. 이건 컴퓨터 비전에 사용되는 데이터 셋을 말하는 용어니 너무 주의깊게 보시지 않아도 괜찮아요. 그냥 이런 이미지를 가지고 있다는 것만 기억하시면 됩니다! 위의 이미지들은 우리가 숫자를 직접 손으로 쓸 때의 이미지들입니다. 우리가 만든 숫자 인식 인공지..
-
Softmax와 Cross entropy개발/인공지능 2017. 8. 3. 20:36
학습시키는 데이터의 Feature가 3가지이고 이 데이터들을 총 3개의 분류로 나눈다고 해봅시다. 이때 우리는 하나의 feature에 대하여 총 3가지로 분류해줄 weight값이 필요합니다. 만약 데이터의 Feature들을 x1, x2, x3라고 표현하면 x1이 첫번째 분류, 두번째 분류 그리고 세번째 분류로 나눠 질 수 있도록 값을 조정하는 weight값이 필요하게됩니다. 그림으로 표현하면 더 알아보기 쉽습니다. x1, x2, x3의 집합을 X, Wi,j값의 집합을 W, bi의 집합을 B로 표현하면 위 식은 S = Wx + B로 표현 할 수 있겠네요. 그리고 이 값이 가장 큰 것으로 분류되게 됩니다. 하지만 학습을 하려면 내가 낸 결과물이 얼마나 비슷한지도 알아야합니다. 내가 고른 값이 옳다 하더라도 ..