본문 바로가기

Tech

(11)
Graph DB Neo4j에 대해서 들어본지는 꽤 된것 같다. 여전히 1위를 지키고 있는 위엄... 주목할만한 부분은 클라우드에서 서비스되는 GraphDB의 약진이다 MS Azure의 Cosmos DB, AWS의 Neptune 아무리 좋은 기술이라도 비즈니스에 적용함에 있어서 기술 커뮤니티와 레퍼런스는 무시하지 못한다. Neo4j를 우선적으로 검토해봐야겠다. https://db-engines.com/en/system/Neo4j 1. ACID 트랜잭션 지원 2. Native 그래프 DB (스토리지 레벨까지 구현됨) 3. Cypher 쿼리 언어 제공 (SQL-like) 4. 고정 시간(constant time) 순회 지원 - 속성(Property)과 레이블(Label)을 색인 5. 유연한 스키마 6. 유료 기능 - 클러스터..
Dlib Face Recognition에서 CUDA 가속하기 Face recognition 오픈소스 : https://github.com/ageitgey/face_recognition Dlib을 이용하여 구현하였고, CPU와 GPU를 둘다 지원한다. GPU 가속을 사용하기 위해서는 Dlib 빌드시에 GPU 옵션을 주고 해야한다. 1. Dlib을 git에서 다운로드 받는다 git clone https://github.com/davisking/dlib.git 2. 아래 명령어를 실행해서 Dlib을 빌드한다. cd dlib mkdir build; cd build; cmake .. -DDLIB_USE_CUDA=1 -DUSE_AVX_INSTRUCTIONS=1; cmake --build . -- Using CMake version: 3.5.1 -- Compiling dlib..
Python의 성능을 높이는 방법 100만번 이상의 Euclidean Distance 연산을 할 일이 있었다. Python으로 Single Processor 연산을 하였을 경우 15초 가량 소요가 되었는데 이를 줄일 방법이 필요했다. 1. Multi-Processing 요즘 CPU는 4개의 Core가 보편적이다. Python 연산을 하였을때 확인해보니 하나의 Core만 가지고 100% 점유율의 연산을 하는 것을 확인할 수 있었다. 이를 Python의 Multi-processing을 이용하여 계산해보니 4개의 코어로 나누었을때 4배 가량 향상을 볼 수 있었다. [참고] https://doorbw.tistory.com/205 파이썬(python) #24_ 멀티프로세싱(Multi-processing) 과 멀티쓰레딩(Multi-threading..
리눅스에서 백그라운드 실행 Screen 명령어 Screen이란? #Screen이란 Linux에서 물리적인 터미널을 여러 개의 가상 터미널로 다중화해주는 도구입니다. 각 가상 터미널은 독립적으로 동작하며 사용자 세션이 분리되어도 동작합니다. 간단히 말하면 이 도구는 백그라운드로 동작하는 다중 터미널을 만들어 줍니다. 이걸 이용해서 백그라운드 작업을 간단히 수행할 수도 있고 회사에서 작업하던 터미널 화면을 집에 가서도 같은 터미널 화면을 보며 작업을 이어 할 수도 있습니다.Install #screen 이라는 명령어를 실행했을때 명령어가 없다고 나오면 아래와 같이 설치를 해줍니다.RedHat계열 (RedHat, CentOS, Fedora 등...) #yum install screen Debian 계열(Ubuntu 등..) #apt-get install s..
pix2pix (2) - 데이터 학습 및 테스트 https://github.com/affinelayer/pix2pix-tensorflow위의 소스를 활용하였다. 학습환경 - OS : Ubuntu 16.0.4 - Python 3.6, Tensorflow 1.4.1 - GPU : Geforce 1080Ti 기본 설정이 되어있는데로 학습시켰으며 200 epoch 학습시켰다.논문에도 나와 있지만 별도의 parameter tweak 없이도 잘 돌아간다고 하니 건드릴게 없었다아래는 tensorboard를 통해 확인가능한 중간결과물이다. 물론 트레이닝셋 표본 안에서 돌린것이니 잘나왔다고 생각할 수 있겠다.다음은 실제 드로잉 이미지로 테스트해보자아래 사진에서 오른쪽 이미지는 인터넷에서 누군가 그린 펜더 이미지이다.그냥 팬더에 가까운 사진은 꽤 그럴사 하지 않은가?쿵..
pix2pix (1) - 데이터 준비 1.데이터 준비고래, 고양이, 공룡 등 여러가지 동물 데이터셋을 수집하였다.각각 500~700장 가량 수준이 모였다. 2. Training Set 준비 (전처리)pix2pix를 학습시키기 위해서는 아래와 같은 이미지를 준비해야 한다좌측이 입력이미지, 우측이 출력이미지가 된다.이러한 이미지를 학습시키면 트레이닝이 끝난 후 왼쪽과 같은 스타일의 이미지를 입력했을때우측과 같은 이미지를 만들어 낸다왼쪽의 이미지는 꼭 스케치한 형태가 아니어도 된다. 아래 이미지처럼 좌측 이미지의 형태를 우측으로 바꾸는데 적용할 수 있다.다른 것도 그렇지만 흑백이미지를 컬러로 변환하는 것도 눈길을 끈다.다시 고양이로 돌아가서 스케치한 이미지와 고양이 이미지를 준비할때 개인적인 생각으로 고양이를 사람이 직접 그린것을 쌍으로 준비하면..
[추천시스템] 딥 오토인코더 추천시스템 논문 번역 : Training Deep AutoEncoders for Collaborative Filtering 요약a) Deep AutoEncoder가 얕은 형태의 모델보다 훨씬 잘 동작함b) 비선형 activation Function과 Negative parts 가 딥모델을 학습시키는데 결정적이었음c) Overfitting을 방지하기 위해 Dropout과 같은 정규화 사용이 필요했음CF모델의 Sparseness를 해결하기 위한 반복적이고 re-feeding에 기반한 새로운 트레이닝 알고리즘을 제안함1. 서론추천시스템은 Context-based와 개인화 추천으로 나눌 수 있음Context-based : 위치, 날짜, 시간 등 상황에 기반한 추천개인화 추천은 일반적으로 CF를 이용하여 유저에게 아이템을 추천함유저의 선호도는 다른 사용자의 선호도에 기반하여 이루어지고 유저와 다른 유저간의 '유사성'을 기반으로 한 명..
4. Django RestFramework - urls.py 수정 및 서버실행 1. urls.py 수정 ProjectName폴더 밑에 보면 urls.py이 있다안에 내용을 아래와 같이 수정해준다 from django.conf.urls import url, includefrom rest_framework import routersfrom AppName import views router = routers.DefaultRouter()router.register(r'forcast', views.ForcastDataViewSet) urlpatterns = [ url(r'^', include(router.urls)), url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))] 2. 서버 실행Project 폴..