SlideShare una empresa de Scribd logo
1 de 43
로엔엔터테인먼트
플랫폼개발팀
2016.03.09
송준이
(socurites@gmai.com)
딥러닝(Deep Learning)
- using DeepDetect -
목차
• DeepDetect = API + Server
– DeepDetect 개요
– 설치하기
– 학습하고 서비스하기
• DeepDetect /predcit
– 이미지 분류하기
– pre-trained 모델 받기
– 서비스 등록하기
– 이미지 분류 예측하기
• DeepDetect /train
– 입력 데이터셋 준비하기
– 서비스 등록하기
– 모델 학습하기
– 텍스트 분류 예측하기
목차
• DeepDetect 운영
– pre-trained 이미지 분류 모델 등록하기
– pre-trained 텍스트 분류 모델 등록하기
– 학습 서버와 상용 서버 분리
• Auto-tagging on Elasticsearch
– DeepDetect + Elasticsearch
– Auto-tagging
DeepDetect
= API + Server
DeepDetect 개요
• DeepDetect 특징
– 딥러닝을 위한 API와 서버 제공
– 오픈소스
– C++1.1로 개발
– Caffe 딥러닝 라이브러리 지원(https://github.com/BVLC/caffe)
– 이미지/텍스트/CSV 파일에 대한 supervised 딥러닝을 구현
– API 뿐만 아니라 학습(training)과 상용 서비스를 위한 서버를 동시에 지원
– 학습을 위한 개발 서버와 서비스를 위한 상용 서버를 분리한 아키텍처 구성
설치하기
• 설치를 위한 사전 준비
• 컴파일
$ sudo apt-get install build-essential libgoogle-glog-dev libgflags-dev libeigen3-dev libopencv-dev libcppnetlib-dev
libboost-dev libcurlpp-dev libcurl4-openssl-dev protobuf-compiler libopenblas-dev libhdf5-dev libprotobuf-dev
libleveldb-dev libsnappy-dev liblmdb-dev libutfcpp-dev cmake
$ git clone https://github.com/beniz/deepdetect.git
$ cd deepdetect
$ mkdir build
$ cd build
$ cmake ..
$ make
Installing DeepDetect, http://www.deepdetect.com/overview/installing/
설치하기
• 서버 실행하기
– 서버는 8080/http 포트에서 실행
• 서버 상태 확인하기
$ ./main/dede
DeepDetect [ commit c8556f0b3e7d970bcd9861b910f9eae87cfd4b0c ]
Running DeepDetect HTTP server on localhost:8080
Installing DeepDetect, http://www.deepdetect.com/overview/installing/
$ curl -XGET 'http://localhost:8080/info' | json_pp
{
"status" : {
"msg" : "OK",
"code" : 200
},
"head" : {
"version" : "0.1",
"services" : [],
"branch" : "master",
"commit" : "c8556f0b3e7d970bcd9861b910f9eae87cfd4b0c",
"method" : "/info"
}
}
학습하고 서비스하기
• 이미지 분류기(Classifier)
1. 분류(class)가 알려진 이미지를 입력으로 학습(training)시킨다
2. 딥러닝 엔진은 학습된 결과로 모델(model)을 만든다
3. 새로운 이미지에 대한 분류값을 예측(predict) 요청한다
4. 어플리케이션 서비스는 생성된 모델을 기반으로 새로운 이미지에 대한 분류값을 예
측한다.
학습하고 서비스하기
• DeepDetect로 이미지 분류하기
1. 분류(class)가 알려진 이미지를 입력으로 학습(training)시킨다
2. 딥러닝 엔진은 학습된 결과로 모델(model)을 만든다
3. 모델에 대한 서비스를 등록한다.
4. 새로운 이미지에 대한 분류값을 예측(predict) 요청한다
5. 어플리케이션 서비스는 생성된 모델을 기반으로 새로운 이미지에 대한 분류값을 예
측한다.
DeepDetect = API + Server
DeepDetect /predict
이미지 분류하기 예제
이미지 분류하기
• 학습된 모델로 이미지 분류하기
– 이미 학습된 모델이 있다면,
• 모델에 대한 서비스를 등록
• 새로운 이미지에 대한 분류를 예측
– 학습은 조금 후에 다룰 것…
Setup of image classifier, http://www.deepdetect.com/tutorials/imagenet-classifier/
pre-trained 모델 받기
• GoogleNet 모델 받기
• 서비스할 모델 레파지토리 만들기
– 서버에서 사용할 모델 레파지토리 디렉토리를 생성
• 레파지토리 경로는 서비스를 등록할 때 지정하므로, 위치는 어디든 상관 없다
• 서비스 단위로 레파지토리 디렉토리를 생성. 이 경우에는 imgnet을 사용
Setup of image classifier, http://www.deepdetect.com/tutorials/imagenet-classifier/
$ cd build/caffe_dd/src/caffe_dd
$ ./scripts/download_model_binary.py models/bvlc_googlenet/
$ ls -l models/bvlc_googlenet/*.caffemodel
$ cd deepdetect
$ mkdir models
$ mkdir models/imgnet
$ mv build/caffe_dd/src/caffe_dd/models/bvlc_googlenet/bvlc_googlenet.caffemodel models/imgnet
pre-trained 모델 받기
• 분류(Class) 매핑 데이터 추가하기
– 학습 단계에서 자동으로 생성됨
– 예제에서 사용할 pre-trained 모델에 대한 분류 매핑 데이터를 가짐
Setup of image classifier, http://www.deepdetect.com/tutorials/imagenet-classifier/
cp datasets/imagenet/corresp_ilsvrc12.txt models/imgnet/corresp.txt
$ head models/imgnet/corresp.txt
0 n01440764 tench, Tinca tinca
1 n01443537 goldfish, Carassius auratus
2 n01484850 great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias
3 n01491361 tiger shark, Galeocerdo cuvieri
4 n01494475 hammerhead, hammerhead shark
5 n01496331 electric ray, crampfish, numbfish, torpedo
…
서비스 등록하기
• 서버 실행하기
• 서비스 등록하기
Setup of image classifier, http://www.deepdetect.com/tutorials/imagenet-classifier/
$ cd deepdetect/build/main
$ ./dede
curl -X PUT "http://localhost:8080/services/imageserv" -d '{
"mllib":"caffe",
"description":"image classification service",
"type":"supervised",
"parameters":{
"input":{
"connector":"image"
},
"mllib":{
"template":"googlenet",
"nclasses":1000
}
},
"model":{
"templates":"../templates/caffe/",
"repository":"../../models/imgnet"
}
}' | json_pp
{
"status" : {
"code" : 201,
"msg" : "Created"
}
}
서비스 등록하기
• 서비스 등록하기
– 서비스명: imgserve
• mlib: Machine learning LIBrary
• type: supervised
• connector: image, text, csv 중 선택
• nclasses: Number of CLASSES, 예측할 분류값 개수
• repository: 서비스할 모델이 저장된 위치
Setup of image classifier, http://www.deepdetect.com/tutorials/imagenet-classifier/
이미지 분류 예측하기
• 로컬 이미지 파일로 예측하기
Setup of image classifier, http://www.deepdetect.com/tutorials/imagenet-classifier/
$ cd deepdetect/build/main
$ wget http://www.deepdetect.com/img/ambulance.jpg
$ curl -X POST "http://localhost:8080/predict" -d'
{
"service":"imageserv",
"parameters":{
"input":{
"width":224,
"height":224
},
"output":{
"best":3
}
},
"data":[
"ambulance.jpg"
]
}‘ | json_pp
이미지 분류 예측하기
• 로컬 이미지 파일로 예측하기
– 서비스명: imgserve
• output: 예측 결과에 포함할 최대 분류 개수
{
"status" : {
"code" : 200,
"msg" : "OK"
},
"body" : {
"predictions" : {
"uri" : "ambulance.jpg",
"classes" : [
{
"prob" : 0.992852032184601,
"cat" : "n02701002 ambulance"
},
{
"prob" : 0.0069321496412158,
"cat" : "n03977966 police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria"
},
{
"cat" : "n03769881 minibus",
"last" : true,
"prob" : 6.9531706685666e-05
}
]
}
},
"head" : {
"time" : 1211,
"service" : "imageserv",
"method" : "/predict"
}
}
이미지 분류 예측하기
• 이미지 URL로 예측하기
$ curl -X POST "http://localhost:8080/predict" -d'
{
"service":"imageserv",
"parameters":{
"input":{
"width":224,
"height":224
},
"output":{
"best":3
}
},
"data":[
"http://i.ytimg.com/vi/0vxOhd4qlnA/maxresdefault.jpg"
]
}' | json_pp
…
"predictions" : {
"classes" : [
{
"cat" : "n03868863 oxygen mask",
"prob" : 0.225514054298401
},
{
"prob" : 0.209176555275917,
"cat" : "n03127747 crash helmet"
},
],
"uri" : http://i.ytimg.com/vi/0vxOhd4qlnA/maxresdefault.jpg
…
DeepDetect /train
텍스트 학습하기 예제
입력 데이터셋 준비하기
• news20 데이터
– 20가지 주제에 대한 이메일 데이터
– 각 주제별 1000개 이하의 텍스트 이메일 파일
$ cd deepdetect/
$ mkdir input
$ mkdir input/models
$ mkdir input/models/n20
$ cd input/models/n20
$ wget http://www.deepdetect.com/dd/examples/all/n20/news20.tar.bz2
$ tar xvjf news20.tar.bz2
$ rm -rf news20.tar.bz2
$ ll news20/
drwxr-xr-x 2 socurites socurites 32768 9월 30 00:52 alt_atheism/
drwxr-xr-x 2 socurites socurites 36864 9월 30 00:52 comp_graphics/
drwxr-xr-x 2 socurites socurites 36864 9월 30 00:52 comp_os_ms_windows_m/
…
$ cat news20/rec_autos/000000431.eml
From: dduff@col.hp.com (Dave Duff)
Subject: Re: Waxing a new car
I just had my 41 Chrysler painted. I was told to refrain from waxing it and
to leave it out in the sun!! Supposedly this let's the volatiles escape from
the paint over a month or so (I can smell it 15 feet away on a hot day) and
lets any slight irregularites in the surface flow out, as the paint remains
a little soft for a while.
Training a model from text, http://www.deepdetect.com/tutorials/txt-training/
서비스 등록하기
• 서버 실행하기
• 서비스 등록하기
$ cd deepdetect/build/main
$ ./dede
$ cd deepdetect/models
$ mkdir n20
$ curl -X PUT "http://localhost:8080/services/n20" -d '{
"mllib":"caffe",
"description":"newsgroup classification service",
"type":"supervised",
"parameters":{
"input":{
"connector":"txt"
},
"mllib":{
"template":"mlp",
"nclasses":20,
"layers":[200, 200],
"activation":"relu"
}
},
"model":{
"templates":"../../templates/caffe/",
"repository":"../../models/n20"
}
}' | json_pp
서비스 등록하기
• 서비스 등록하기
– 서비스명: n20
• layers: 200 X 200, 200개의 히든 노드(hidden node)의 2개 레이어로 구성
• activation: 활성함수로는 relu(Rectified Linear Unit)을 사용
• 상대 경로는 모두 DeepDetect 서버 실행한 경로로부터 시작
Training a model from text, http://www.deepdetect.com/tutorials/txt-training/
모델 학습하기
• BOW(Bag Of Words) 모델로 학습하기
curl -X POST "http://localhost:8080/train" -d '{
"service":"n20",
"async":true,
"parameters":{
"mllib":{
"gpu":true,
"solver":{
"iterations":2000,
"test_interval":200,
"base_lr":0.05
},
"net":{
"batch_size":300
}
},
"input":{
"shuffle":true,
"test_split":0.2,
"min_count":2,
"min_word_length":2,
"count":false
},
"output":{
"measure":[
"mcll",
"f1"
]
}
},
"data":[
"../../input/models/n20/news20"
]
}'
모델 학습하기
• BOW(Bag Of Words) 모델로 학습하기
– 파라미터
• gpu: 연산시 gpu 사용 여부
• iterations: 이터레이션 횟수
• test_split: 입력데이터 중 테스트 데이터 비율(20%)
• min_count: 최소 단어 빈도, 이 빈도보다 적은 단어는 BOW에서 제외
• min_word_length: 단어의 최소 길이, 이 길이보다 작은 단어는 BOW에서 제외
• count: 빈도값 학습 사용 여부
– 서버 로그
INFO - source=../../templates/caffe/mlp/
INFO - dest=../../models/n20/mlp.prototxt
list subdirs size=20
WARNING: Logging before InitGoogleLogging() is written to STDERR
I0309 18:11:13.121186 31042 txtinputfileconn.cc:182] vocabulary size=88631
data split test size=3770 / remaining data size=15078
vocab size=88631
INFO - user batch_size=300 / inputc batch_size=15078
INFO - batch_size=359 / test_batch_size=290 / test_iter=13
모델 학습하기
• BOW(Bag Of Words) 단어 리스트
$ cd deepdetect
$ cd models/n20/
$ ll
total 1264
drwxrwxr-x 2 socurites socurites 4096 3월 9 18:11 ./
drwxrwxr-x 4 socurites socurites 4096 3월 9 17:50 ../
-rw-rw-r-- 1 socurites socurites 372 3월 9 18:11 corresp.txt
-rw-rw-r-- 1 socurites socurites 1065 3월 9 18:11 deploy.prototxt
-rw-rw-r-- 1 socurites socurites 1704 3월 9 18:11 mlp.prototxt
-rw-rw-r-- 1 socurites socurites 290 3월 9 18:10 mlp_solver.prototxt
-rw-rw-r-- 1 socurites socurites 4389 3월 9 18:11 model.json
-rw-rw-r-- 1 socurites socurites 1259121 3월 9 18:11 vocab.dat
$ head vocab.dat
autoposting,0
seidov,1
ambulances,2
isqat,3
earring,4
grigorevna,5
barfling,6
13271@cs,7
024858,8
aryeh,9
모델 학습하기
• 학습 진행상황 모니터링하기
$ curl -X GET "http://localhost:8080/train?service=n20&job=1" | json_pp
{
"status" : {
"msg" : "OK",
"code" : 200
},
"head" : {
"time" : 791,
"status" : "running",
"method" : "/train",
"job" : 1
},
"body" : {
"measure" : {
"accp" : 0.90053050397878,
"iteration" : 800,
"recall" : 0.902855203525655,
"train_loss" : 0.034172598272562,
"precision" : 0.897884533058947,
"mcll" : 0.389328922262699,
"f1" : 0.900363007899212
}
}
}
## 1s마다 상태 출력하기
$ while :; do curl -X GET "http://localhost:8080/train?service=n20&job=1"; sleep 1; echo ""; done
모델 학습하기
• 학습 완료
$ curl -X GET "http://localhost:8080/train?service=n20&job=1" | json_pp
{
"status":{
"msg":"OK",
"code":200
},
"body":{
"parameters":{
"mllib":{
"batch_size":359
}
},
"measure":{
"f1":0.8919178423728972,
"train_loss":0.0016851313412189484,
"mcll":0.5737156999301365,
"recall":0.8926410552973584,
"iteration":1999.0,
"precision":0.8911958003860988,
"accp":0.8936339522546419
}
},
"head":{
"status":"finished",
"job":1,
"method":"/train",
"time":541.0
}
}
텍스트 분류 예측하기
• /predict
– 서비스명: n20
$ curl -X POST 'http://localhost:8080/predict' -d '{
"service":"n20",
"parameters":{
"mllib":{
"gpu":true
}
},
"data":[
"my computer runs linux"
]
}‘ | json_pp
텍스트 분류 예측하기
• /predict
$ curl -X POST 'http://localhost:8080/predict' -d '{
"service":"n20",
"parameters":{
"mllib":{
"gpu":true
}
},
"data":[
"my computer runs linux"
]
}' | json_pp
{
"status" : {
"msg" : "OK",
"code" : 200
},
"body" : {
"predictions" : {
"classes" : {
"prob" : 0.392086714506149,
"last" : true,
"cat" : "comp_windows_x"
},
"uri" : "0"
}
},
"head" : {
"method" : "/predict",
"service" : "n20",
"time" : 925
}
}
DeepDetect 운영
학습 서버와 서비스 서버 분리
pre-trained 이미지 분류 모델 등록하기
• pre-trained 이미지 분류 모델 예
– 옷
• 분류 개수: 304
• http://www.deepdetect.com/models/clothing.tar.bz2
– 가방
• 분류 개수: 37
• http://www.deepdetect.com/models/bags.tar.bz2
– 신발
• 분류 개수: 51
• http://www.deepdetect.com/models/footwear.tar.bz2
Application-Ready Deep Neural Net Models, http://www.deepdetect.com/applications/model/
pre-trained 이미지 분류 모델 등록하기
• pre-trained clothing 분류 모델 설치하기
$ cd deepdetect/
$ 2037 cd models/
$ mkdir dd
$ cd dd
$ wget http://www.deepdetect.com/models/clothing.tar.bz2
$ bunzip2 clothing.tar.bz2
$ tar xvf clothing.tar
$ rm -rf clothing.tar
$ ll clothing/
total 99688
drwxrwxr-x 2 socurites socurites 4096 11월 26 06:18 ./
drwxrwxr-x 3 socurites socurites 4096 3월 10 10:12 ../
-rw-rw-r-- 1 socurites socurites 6738 11월 23 16:28 corresp.txt
-rw-rw-r-- 1 socurites socurites 35884 11월 20 04:16 deploy.prototxt
-rw-rw-r-- 1 socurites socurites 395 11월 19 01:46 final.json
-rw-rw-r-- 1 socurites socurites 40791 11월 20 04:16 googlenet.prototxt
-rw-rw-r-- 1 socurites socurites 295 11월 20 04:16 googlenet_solver.prototxt
-rw-rw-r-- 1 socurites socurites 602126 11월 16 00:22 mean.binaryproto
-rw-rw-r-- 1 socurites socurites 50682165 11월 26 06:03 model_iter_300000.caffemodel
-rw-rw-r-- 1 socurites socurites 50661476 11월 26 06:03 model_iter_300000.solverstate
-rw-rw-r-- 1 socurites socurites 13896 11월 20 04:16 model.json
$ head clothing/corresp.txt
303 camisole
302 array, raiment, regalia
301 tricorn, tricorne
300 crash helmet
299 ensemble
298 robe
297 seat belt, seatbelt
296 parka, windbreaker, windcheater, anorak
pre-trained 이미지 분류 모델 등록하기
• pre-trained clothing 분류 모델 설치하기
$ cd deepdetect/
$ 2037 cd models/
$ mkdir dd
$ cd dd
$ wget http://www.deepdetect.com/models/clothing.tar.bz2
$ bunzip2 clothing.tar.bz2
$ tar xvf clothing.tar
$ rm -rf clothing.tar
$ ll clothing/
total 99688
drwxrwxr-x 2 socurites socurites 4096 11월 26 06:18 ./
drwxrwxr-x 3 socurites socurites 4096 3월 10 10:12 ../
-rw-rw-r-- 1 socurites socurites 6738 11월 23 16:28 corresp.txt
-rw-rw-r-- 1 socurites socurites 35884 11월 20 04:16 deploy.prototxt
-rw-rw-r-- 1 socurites socurites 395 11월 19 01:46 final.json
-rw-rw-r-- 1 socurites socurites 40791 11월 20 04:16 googlenet.prototxt
-rw-rw-r-- 1 socurites socurites 295 11월 20 04:16 googlenet_solver.prototxt
-rw-rw-r-- 1 socurites socurites 602126 11월 16 00:22 mean.binaryproto
-rw-rw-r-- 1 socurites socurites 50682165 11월 26 06:03 model_iter_300000.caffemodel
-rw-rw-r-- 1 socurites socurites 50661476 11월 26 06:03 model_iter_300000.solverstate
-rw-rw-r-- 1 socurites socurites 13896 11월 20 04:16 model.json
$ head clothing/corresp.txt
303 camisole
302 array, raiment, regalia
301 tricorn, tricorne
300 crash helmet
299 ensemble
298 robe
297 seat belt, seatbelt
296 parka, windbreaker, windcheater, anorak
pre-trained 이미지 분류 모델 등록하기
• pre-trained clothing 분류 서비스 등록하기
$ curl -X PUT "http://localhost:8080/services/clothing" -d '{
"mllib":"caffe",
"description":"clothes classification",
"type":"supervised",
"parameters":{
"input":{
"connector":"image",
"height":224,
"width":224
},
"mllib":{
"nclasses":304
}
},
"model":{
"repository":"../../models/dd/clothing"
}
}' | json_pp
pre-trained 텍스트 분류 모델 등록하기
• pre-trained n20 분류 서비스 등록하기
– dede(DeepDetect) 서버에 등록된 서비스는 메모리 휘발성
– 서버 재기동시 메모리 재등록 필요
– 앞서 직접 학습한 n20 모델을 서비스로 등록
– 학습을 위한 서비스 등록과 구분할 것
$ curl -X PUT "http://localhost:8080/services/n20" -d '{
"mllib":"caffe",
"description":"clothes classification",
"type":"supervised",
"parameters":{
"input":{
"connector":"txt"
},
"mllib":{
"nclasses":20
}
},
"model":{
"repository":"../../models/n20"
}
}' | json_pp
학습 서버와 상용 서버 분리
• 서버 구조
학습 서버
서비스 서버
Auto-tagging on Elasticsearch
DeepDetect + Elasticsearch
DeepDetect + Elasticsearch
• 이미지 분류 예측 문서 색인하기
– url: Elasticsearch 색인 URL
$ curl -XPOST "http://localhost:8080/predict" -d'
{
"service":"clothing",
"parameters":{
"mllib":{
"gpu":true
},
"input":{
"width":224,
"height":224
},
"output":{
"best":3,
"network":{
"url":"http://localhost:9200/images/img",
"http_method":"POST"
}
}
},
"data":[
"http://i.ytimg.com/vi/0vxOhd4qlnA/maxresdefault.jpg"
]
}' | json_pp
{
"created" : true,
"_type" : "img",
"_index" : "images",
"_version" : 1,
"_id" : "AVNeQmBY4KIRwyO4ideH"
}
DeepDetect + Elasticsearch
• 색인 결과
$ curl -XGET 'http://localhost:9200/images/img/_search' | json_pp
…
{
"_source" : {
"body" : {
"predictions" : {
"classes" : [
{
"cat" : "spacesuit",
"prob" : 0.935437917709351
},
{
"cat" : "military uniform",
"prob" : 0.0494481474161148
}
],
"uri" : "http://i.ytimg.com/vi/0vxOhd4qlnA/maxresdefault.jpg"
}
},
"network" : {
"http_method" : "POST",
"url" : "http://localhost:9200/images/img"
},
"head" : {
"time" : 1875,
"service" : "clothing",
"method" : "/predict"
},
},
…
DeepDetect + Elasticsearch
• 검색하기
– spacesuit(우주복)이 있는 이미지 검색하기
$ curl -XGET "http://localhost:9200/images/_search?q=spacesuit" | json_pp
…
"hits" : {
"hits" : [
{
"_id" : "AVNeNkfE4KIRwyO4idNw",
"_source" : {
"status" : {
"msg" : "OK",
"code" : 200
},
"head" : {
"time" : 1330,
"method" : "/predict",
"service" : "clothing"
},
"network" : {
"url" : "http://localhost:9200/images/img",
"http_method" : "POST"
},
"body" : {
"predictions" : {
"classes" : [
{
"prob" : 0.935437917709351,
"cat" : "spacesuit"
},
{
"prob" : 0.0494481474161148,
"cat" : "military uniform“
…
Auto-tagging
• 문서 자동 태그 붙이기
– 문서(이미지/텍스트 등)에 대한 분류 예측 요청
– 예측된 분류값을 문서에 포함하여 Elasticsearch 서버에 색인
– 검색된 문서에 대한 검색 요청
References
• Categorizing images with deep learning into Elasticsearch
https://www.elastic.co/blog/categorizing-images-with-deep-learning-
into-elasticsearch
• DeepDetect Homepage
http://www.deepdetect.com/
• DeepDetect: Installing DeepDetect
http://www.deepdetect.com/overview/installing/
• DeepDetect: Setup of an image classifier
http://www.deepdetect.com/tutorials/imagenet-classifier/
• DeepDetect: Training a model from text
http://www.deepdetect.com/tutorials/txt-training/
• DeepDetect: Application-Ready Deep Neural Net Models,
http://www.deepdetect.com/applications/model/
References
• Categorizing images with deep learning into Elasticesarch
https://www.elastic.co/blog/categorizing-images-with-deep-learning-
into-elasticsearch

Más contenido relacionado

La actualidad más candente

[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기NAVER D2
 
인공지능추천시스템 airs개발기_모델링과시스템
인공지능추천시스템 airs개발기_모델링과시스템인공지능추천시스템 airs개발기_모델링과시스템
인공지능추천시스템 airs개발기_모델링과시스템NAVER D2
 
Java와 Python의 만남: Jython과 Sikuli
Java와 Python의 만남: Jython과 SikuliJava와 Python의 만남: Jython과 Sikuli
Java와 Python의 만남: Jython과 Sikuli용 최
 
Spark Day 2017@Seoul(Spark Bootcamp)
Spark Day 2017@Seoul(Spark Bootcamp)Spark Day 2017@Seoul(Spark Bootcamp)
Spark Day 2017@Seoul(Spark Bootcamp)Sang-bae Lim
 
[246] foursquare데이터라이프사이클 설현준
[246] foursquare데이터라이프사이클 설현준[246] foursquare데이터라이프사이클 설현준
[246] foursquare데이터라이프사이클 설현준NAVER D2
 
[223]rye, 샤딩을 지원하는 오픈소스 관계형 dbms
[223]rye, 샤딩을 지원하는 오픈소스 관계형 dbms[223]rye, 샤딩을 지원하는 오픈소스 관계형 dbms
[223]rye, 샤딩을 지원하는 오픈소스 관계형 dbmsNAVER D2
 
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민XpressEngine
 
Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014Gruter
 
Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014Gruter
 
Python 웹 프로그래밍
Python 웹 프로그래밍Python 웹 프로그래밍
Python 웹 프로그래밍용 최
 
일래스틱 서치 ch7. 일래스틱 서치 클러스터 세부사항
일래스틱 서치 ch7. 일래스틱 서치 클러스터 세부사항일래스틱 서치 ch7. 일래스틱 서치 클러스터 세부사항
일래스틱 서치 ch7. 일래스틱 서치 클러스터 세부사항Minchul Jung
 
[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성NAVER D2
 
[243]kaleido 노현걸
[243]kaleido 노현걸[243]kaleido 노현걸
[243]kaleido 노현걸NAVER D2
 
Apache Htrace overview (20160520)
Apache Htrace overview (20160520)Apache Htrace overview (20160520)
Apache Htrace overview (20160520)Steve Min
 
[232] 수퍼컴퓨팅과 데이터 어낼리틱스
[232] 수퍼컴퓨팅과 데이터 어낼리틱스[232] 수퍼컴퓨팅과 데이터 어낼리틱스
[232] 수퍼컴퓨팅과 데이터 어낼리틱스NAVER D2
 
집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking
집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking
집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & RankingIan Choi
 
2.apache spark 실습
2.apache spark 실습2.apache spark 실습
2.apache spark 실습동현 강
 
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Esun Kim
 
[ 하코사세미나] 의외로 쉬운 D3 그래프 퍼블리싱
[ 하코사세미나] 의외로 쉬운 D3 그래프 퍼블리싱[ 하코사세미나] 의외로 쉬운 D3 그래프 퍼블리싱
[ 하코사세미나] 의외로 쉬운 D3 그래프 퍼블리싱정석 양
 

La actualidad más candente (20)

[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
 
인공지능추천시스템 airs개발기_모델링과시스템
인공지능추천시스템 airs개발기_모델링과시스템인공지능추천시스템 airs개발기_모델링과시스템
인공지능추천시스템 airs개발기_모델링과시스템
 
Java와 Python의 만남: Jython과 Sikuli
Java와 Python의 만남: Jython과 SikuliJava와 Python의 만남: Jython과 Sikuli
Java와 Python의 만남: Jython과 Sikuli
 
Spark Day 2017@Seoul(Spark Bootcamp)
Spark Day 2017@Seoul(Spark Bootcamp)Spark Day 2017@Seoul(Spark Bootcamp)
Spark Day 2017@Seoul(Spark Bootcamp)
 
[246] foursquare데이터라이프사이클 설현준
[246] foursquare데이터라이프사이클 설현준[246] foursquare데이터라이프사이클 설현준
[246] foursquare데이터라이프사이클 설현준
 
[223]rye, 샤딩을 지원하는 오픈소스 관계형 dbms
[223]rye, 샤딩을 지원하는 오픈소스 관계형 dbms[223]rye, 샤딩을 지원하는 오픈소스 관계형 dbms
[223]rye, 샤딩을 지원하는 오픈소스 관계형 dbms
 
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
 
Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014
 
Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014
 
Python 웹 프로그래밍
Python 웹 프로그래밍Python 웹 프로그래밍
Python 웹 프로그래밍
 
일래스틱 서치 ch7. 일래스틱 서치 클러스터 세부사항
일래스틱 서치 ch7. 일래스틱 서치 클러스터 세부사항일래스틱 서치 ch7. 일래스틱 서치 클러스터 세부사항
일래스틱 서치 ch7. 일래스틱 서치 클러스터 세부사항
 
[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성
 
[243]kaleido 노현걸
[243]kaleido 노현걸[243]kaleido 노현걸
[243]kaleido 노현걸
 
SPARK SQL
SPARK SQLSPARK SQL
SPARK SQL
 
Apache Htrace overview (20160520)
Apache Htrace overview (20160520)Apache Htrace overview (20160520)
Apache Htrace overview (20160520)
 
[232] 수퍼컴퓨팅과 데이터 어낼리틱스
[232] 수퍼컴퓨팅과 데이터 어낼리틱스[232] 수퍼컴퓨팅과 데이터 어낼리틱스
[232] 수퍼컴퓨팅과 데이터 어낼리틱스
 
집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking
집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking
집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking
 
2.apache spark 실습
2.apache spark 실습2.apache spark 실습
2.apache spark 실습
 
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
 
[ 하코사세미나] 의외로 쉬운 D3 그래프 퍼블리싱
[ 하코사세미나] 의외로 쉬운 D3 그래프 퍼블리싱[ 하코사세미나] 의외로 쉬운 D3 그래프 퍼블리싱
[ 하코사세미나] 의외로 쉬운 D3 그래프 퍼블리싱
 

Destacado

딥러닝프레임워크비교
딥러닝프레임워크비교딥러닝프레임워크비교
딥러닝프레임워크비교Junyi Song
 
마인즈랩 사업소개 20151031_v1.0
마인즈랩 사업소개 20151031_v1.0마인즈랩 사업소개 20151031_v1.0
마인즈랩 사업소개 20151031_v1.0Taejoon Yoo
 
응답하라 반응형웹 - 3. bootstrap
응답하라 반응형웹 - 3. bootstrap응답하라 반응형웹 - 3. bootstrap
응답하라 반응형웹 - 3. bootstrapredribbon1307
 
영속성 컨텍스트로 보는 JPA
영속성 컨텍스트로 보는 JPA영속성 컨텍스트로 보는 JPA
영속성 컨텍스트로 보는 JPA경원 이
 
Scala로의 산책
Scala로의 산책Scala로의 산책
Scala로의 산책Youmi Bae
 
마인즈랩 회사소개서 V1.5
마인즈랩 회사소개서 V1.5마인즈랩 회사소개서 V1.5
마인즈랩 회사소개서 V1.5Taejoon Yoo
 
Slipp clojure-1212
Slipp clojure-1212Slipp clojure-1212
Slipp clojure-1212완수 양
 
Slipp 발표 자료 20151212
Slipp 발표 자료 20151212Slipp 발표 자료 20151212
Slipp 발표 자료 20151212Jinsoo Jung
 
SLiPP 스터디 - MSA
SLiPP 스터디 - MSASLiPP 스터디 - MSA
SLiPP 스터디 - MSADaekwon Kang
 

Destacado (10)

딥러닝프레임워크비교
딥러닝프레임워크비교딥러닝프레임워크비교
딥러닝프레임워크비교
 
마인즈랩 사업소개 20151031_v1.0
마인즈랩 사업소개 20151031_v1.0마인즈랩 사업소개 20151031_v1.0
마인즈랩 사업소개 20151031_v1.0
 
응답하라 반응형웹 - 3. bootstrap
응답하라 반응형웹 - 3. bootstrap응답하라 반응형웹 - 3. bootstrap
응답하라 반응형웹 - 3. bootstrap
 
영속성 컨텍스트로 보는 JPA
영속성 컨텍스트로 보는 JPA영속성 컨텍스트로 보는 JPA
영속성 컨텍스트로 보는 JPA
 
Scala로의 산책
Scala로의 산책Scala로의 산책
Scala로의 산책
 
마인즈랩 회사소개서 V1.5
마인즈랩 회사소개서 V1.5마인즈랩 회사소개서 V1.5
마인즈랩 회사소개서 V1.5
 
Slipp clojure-1212
Slipp clojure-1212Slipp clojure-1212
Slipp clojure-1212
 
Slipp 발표 자료 20151212
Slipp 발표 자료 20151212Slipp 발표 자료 20151212
Slipp 발표 자료 20151212
 
SLiPP 스터디 - MSA
SLiPP 스터디 - MSASLiPP 스터디 - MSA
SLiPP 스터디 - MSA
 
Slipp 발표 - GO
Slipp 발표 - GOSlipp 발표 - GO
Slipp 발표 - GO
 

Similar a 딥러닝(Deep Learing) using DeepDetect

[AWS Innovate 온라인 컨퍼런스] 수백만 사용자 대상 기계 학습 서비스를 위한 확장 비법 - 윤석찬, AWS 테크 에반젤리스트
[AWS Innovate 온라인 컨퍼런스] 수백만 사용자 대상 기계 학습 서비스를 위한 확장 비법 - 윤석찬, AWS 테크 에반젤리스트[AWS Innovate 온라인 컨퍼런스] 수백만 사용자 대상 기계 학습 서비스를 위한 확장 비법 - 윤석찬, AWS 테크 에반젤리스트
[AWS Innovate 온라인 컨퍼런스] 수백만 사용자 대상 기계 학습 서비스를 위한 확장 비법 - 윤석찬, AWS 테크 에반젤리스트Amazon Web Services Korea
 
Html5 소개 가이드
Html5 소개 가이드Html5 소개 가이드
Html5 소개 가이드Jong-hyun Park
 
20131217 html5
20131217 html520131217 html5
20131217 html5DK Lee
 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs기동 이
 
Unify data and model using Apache S2Graph and GraphQL.
Unify data and model using Apache S2Graph and GraphQL.Unify data and model using Apache S2Graph and GraphQL.
Unify data and model using Apache S2Graph and GraphQL.if kakao
 
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지yongwoo Jeon
 
OpenJigWare(V02.00.04)
OpenJigWare(V02.00.04)OpenJigWare(V02.00.04)
OpenJigWare(V02.00.04)Jinwook On
 
스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...
스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...
스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...Amazon Web Services Korea
 
조은 - AMP PWA 101 [WSConf.Seoul.2017. Vol.2]
조은 - AMP PWA 101 [WSConf.Seoul.2017. Vol.2]조은 - AMP PWA 101 [WSConf.Seoul.2017. Vol.2]
조은 - AMP PWA 101 [WSConf.Seoul.2017. Vol.2]WSConf.
 
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개beom kyun choi
 
Amazon SageMaker 오버뷰 - 강성문, AWS AI/ML 스페셜리스트 :: AIML 특집 웨비나
Amazon SageMaker 오버뷰 - 강성문, AWS AI/ML 스페셜리스트 :: AIML 특집 웨비나Amazon SageMaker 오버뷰 - 강성문, AWS AI/ML 스페셜리스트 :: AIML 특집 웨비나
Amazon SageMaker 오버뷰 - 강성문, AWS AI/ML 스페셜리스트 :: AIML 특집 웨비나Amazon Web Services Korea
 
AWS CLOUD 2018- AWS의 새로운 통합 머신러닝 플랫폼 서비스, Amazon SageMaker (김무현 솔루션즈 아키텍트)
AWS CLOUD 2018- AWS의 새로운 통합 머신러닝 플랫폼 서비스, Amazon SageMaker (김무현 솔루션즈 아키텍트)AWS CLOUD 2018- AWS의 새로운 통합 머신러닝 플랫폼 서비스, Amazon SageMaker (김무현 솔루션즈 아키텍트)
AWS CLOUD 2018- AWS의 새로운 통합 머신러닝 플랫폼 서비스, Amazon SageMaker (김무현 솔루션즈 아키텍트)Amazon Web Services Korea
 
[2017 AWS Startup Day] 스타트업이 인공지능을 만날 때 : 딥러닝 활용사례와 아키텍쳐
[2017 AWS Startup Day] 스타트업이 인공지능을 만날 때 : 딥러닝 활용사례와 아키텍쳐[2017 AWS Startup Day] 스타트업이 인공지능을 만날 때 : 딥러닝 활용사례와 아키텍쳐
[2017 AWS Startup Day] 스타트업이 인공지능을 만날 때 : 딥러닝 활용사례와 아키텍쳐Amazon Web Services Korea
 
Tiny ml study 20201031
Tiny ml study 20201031Tiny ml study 20201031
Tiny ml study 20201031ByoungHern Kim
 
Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나JeongHun Byeon
 
c++ opencv tutorial
c++ opencv tutorialc++ opencv tutorial
c++ opencv tutorialTaeKang Woo
 
권기훈_개인포트폴리오
권기훈_개인포트폴리오권기훈_개인포트폴리오
권기훈_개인포트폴리오Kihoon4
 

Similar a 딥러닝(Deep Learing) using DeepDetect (20)

[AWS Innovate 온라인 컨퍼런스] 수백만 사용자 대상 기계 학습 서비스를 위한 확장 비법 - 윤석찬, AWS 테크 에반젤리스트
[AWS Innovate 온라인 컨퍼런스] 수백만 사용자 대상 기계 학습 서비스를 위한 확장 비법 - 윤석찬, AWS 테크 에반젤리스트[AWS Innovate 온라인 컨퍼런스] 수백만 사용자 대상 기계 학습 서비스를 위한 확장 비법 - 윤석찬, AWS 테크 에반젤리스트
[AWS Innovate 온라인 컨퍼런스] 수백만 사용자 대상 기계 학습 서비스를 위한 확장 비법 - 윤석찬, AWS 테크 에반젤리스트
 
Grunt
GruntGrunt
Grunt
 
Html5 소개 가이드
Html5 소개 가이드Html5 소개 가이드
Html5 소개 가이드
 
20131217 html5
20131217 html520131217 html5
20131217 html5
 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs
 
Unify data and model using Apache S2Graph and GraphQL.
Unify data and model using Apache S2Graph and GraphQL.Unify data and model using Apache S2Graph and GraphQL.
Unify data and model using Apache S2Graph and GraphQL.
 
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
 
Mongo db 최범균
Mongo db 최범균Mongo db 최범균
Mongo db 최범균
 
OpenJigWare(V02.00.04)
OpenJigWare(V02.00.04)OpenJigWare(V02.00.04)
OpenJigWare(V02.00.04)
 
스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...
스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...
스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...
 
조은 - AMP PWA 101 [WSConf.Seoul.2017. Vol.2]
조은 - AMP PWA 101 [WSConf.Seoul.2017. Vol.2]조은 - AMP PWA 101 [WSConf.Seoul.2017. Vol.2]
조은 - AMP PWA 101 [WSConf.Seoul.2017. Vol.2]
 
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
 
Amazon SageMaker 오버뷰 - 강성문, AWS AI/ML 스페셜리스트 :: AIML 특집 웨비나
Amazon SageMaker 오버뷰 - 강성문, AWS AI/ML 스페셜리스트 :: AIML 특집 웨비나Amazon SageMaker 오버뷰 - 강성문, AWS AI/ML 스페셜리스트 :: AIML 특집 웨비나
Amazon SageMaker 오버뷰 - 강성문, AWS AI/ML 스페셜리스트 :: AIML 특집 웨비나
 
AWS CLOUD 2018- AWS의 새로운 통합 머신러닝 플랫폼 서비스, Amazon SageMaker (김무현 솔루션즈 아키텍트)
AWS CLOUD 2018- AWS의 새로운 통합 머신러닝 플랫폼 서비스, Amazon SageMaker (김무현 솔루션즈 아키텍트)AWS CLOUD 2018- AWS의 새로운 통합 머신러닝 플랫폼 서비스, Amazon SageMaker (김무현 솔루션즈 아키텍트)
AWS CLOUD 2018- AWS의 새로운 통합 머신러닝 플랫폼 서비스, Amazon SageMaker (김무현 솔루션즈 아키텍트)
 
Meteor IoT
Meteor IoTMeteor IoT
Meteor IoT
 
[2017 AWS Startup Day] 스타트업이 인공지능을 만날 때 : 딥러닝 활용사례와 아키텍쳐
[2017 AWS Startup Day] 스타트업이 인공지능을 만날 때 : 딥러닝 활용사례와 아키텍쳐[2017 AWS Startup Day] 스타트업이 인공지능을 만날 때 : 딥러닝 활용사례와 아키텍쳐
[2017 AWS Startup Day] 스타트업이 인공지능을 만날 때 : 딥러닝 활용사례와 아키텍쳐
 
Tiny ml study 20201031
Tiny ml study 20201031Tiny ml study 20201031
Tiny ml study 20201031
 
Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나
 
c++ opencv tutorial
c++ opencv tutorialc++ opencv tutorial
c++ opencv tutorial
 
권기훈_개인포트폴리오
권기훈_개인포트폴리오권기훈_개인포트폴리오
권기훈_개인포트폴리오
 

딥러닝(Deep Learing) using DeepDetect

  • 2. 목차 • DeepDetect = API + Server – DeepDetect 개요 – 설치하기 – 학습하고 서비스하기 • DeepDetect /predcit – 이미지 분류하기 – pre-trained 모델 받기 – 서비스 등록하기 – 이미지 분류 예측하기 • DeepDetect /train – 입력 데이터셋 준비하기 – 서비스 등록하기 – 모델 학습하기 – 텍스트 분류 예측하기
  • 3. 목차 • DeepDetect 운영 – pre-trained 이미지 분류 모델 등록하기 – pre-trained 텍스트 분류 모델 등록하기 – 학습 서버와 상용 서버 분리 • Auto-tagging on Elasticsearch – DeepDetect + Elasticsearch – Auto-tagging
  • 5. DeepDetect 개요 • DeepDetect 특징 – 딥러닝을 위한 API와 서버 제공 – 오픈소스 – C++1.1로 개발 – Caffe 딥러닝 라이브러리 지원(https://github.com/BVLC/caffe) – 이미지/텍스트/CSV 파일에 대한 supervised 딥러닝을 구현 – API 뿐만 아니라 학습(training)과 상용 서비스를 위한 서버를 동시에 지원 – 학습을 위한 개발 서버와 서비스를 위한 상용 서버를 분리한 아키텍처 구성
  • 6. 설치하기 • 설치를 위한 사전 준비 • 컴파일 $ sudo apt-get install build-essential libgoogle-glog-dev libgflags-dev libeigen3-dev libopencv-dev libcppnetlib-dev libboost-dev libcurlpp-dev libcurl4-openssl-dev protobuf-compiler libopenblas-dev libhdf5-dev libprotobuf-dev libleveldb-dev libsnappy-dev liblmdb-dev libutfcpp-dev cmake $ git clone https://github.com/beniz/deepdetect.git $ cd deepdetect $ mkdir build $ cd build $ cmake .. $ make Installing DeepDetect, http://www.deepdetect.com/overview/installing/
  • 7. 설치하기 • 서버 실행하기 – 서버는 8080/http 포트에서 실행 • 서버 상태 확인하기 $ ./main/dede DeepDetect [ commit c8556f0b3e7d970bcd9861b910f9eae87cfd4b0c ] Running DeepDetect HTTP server on localhost:8080 Installing DeepDetect, http://www.deepdetect.com/overview/installing/ $ curl -XGET 'http://localhost:8080/info' | json_pp { "status" : { "msg" : "OK", "code" : 200 }, "head" : { "version" : "0.1", "services" : [], "branch" : "master", "commit" : "c8556f0b3e7d970bcd9861b910f9eae87cfd4b0c", "method" : "/info" } }
  • 8. 학습하고 서비스하기 • 이미지 분류기(Classifier) 1. 분류(class)가 알려진 이미지를 입력으로 학습(training)시킨다 2. 딥러닝 엔진은 학습된 결과로 모델(model)을 만든다 3. 새로운 이미지에 대한 분류값을 예측(predict) 요청한다 4. 어플리케이션 서비스는 생성된 모델을 기반으로 새로운 이미지에 대한 분류값을 예 측한다.
  • 9. 학습하고 서비스하기 • DeepDetect로 이미지 분류하기 1. 분류(class)가 알려진 이미지를 입력으로 학습(training)시킨다 2. 딥러닝 엔진은 학습된 결과로 모델(model)을 만든다 3. 모델에 대한 서비스를 등록한다. 4. 새로운 이미지에 대한 분류값을 예측(predict) 요청한다 5. 어플리케이션 서비스는 생성된 모델을 기반으로 새로운 이미지에 대한 분류값을 예 측한다. DeepDetect = API + Server
  • 11. 이미지 분류하기 • 학습된 모델로 이미지 분류하기 – 이미 학습된 모델이 있다면, • 모델에 대한 서비스를 등록 • 새로운 이미지에 대한 분류를 예측 – 학습은 조금 후에 다룰 것… Setup of image classifier, http://www.deepdetect.com/tutorials/imagenet-classifier/
  • 12. pre-trained 모델 받기 • GoogleNet 모델 받기 • 서비스할 모델 레파지토리 만들기 – 서버에서 사용할 모델 레파지토리 디렉토리를 생성 • 레파지토리 경로는 서비스를 등록할 때 지정하므로, 위치는 어디든 상관 없다 • 서비스 단위로 레파지토리 디렉토리를 생성. 이 경우에는 imgnet을 사용 Setup of image classifier, http://www.deepdetect.com/tutorials/imagenet-classifier/ $ cd build/caffe_dd/src/caffe_dd $ ./scripts/download_model_binary.py models/bvlc_googlenet/ $ ls -l models/bvlc_googlenet/*.caffemodel $ cd deepdetect $ mkdir models $ mkdir models/imgnet $ mv build/caffe_dd/src/caffe_dd/models/bvlc_googlenet/bvlc_googlenet.caffemodel models/imgnet
  • 13. pre-trained 모델 받기 • 분류(Class) 매핑 데이터 추가하기 – 학습 단계에서 자동으로 생성됨 – 예제에서 사용할 pre-trained 모델에 대한 분류 매핑 데이터를 가짐 Setup of image classifier, http://www.deepdetect.com/tutorials/imagenet-classifier/ cp datasets/imagenet/corresp_ilsvrc12.txt models/imgnet/corresp.txt $ head models/imgnet/corresp.txt 0 n01440764 tench, Tinca tinca 1 n01443537 goldfish, Carassius auratus 2 n01484850 great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias 3 n01491361 tiger shark, Galeocerdo cuvieri 4 n01494475 hammerhead, hammerhead shark 5 n01496331 electric ray, crampfish, numbfish, torpedo …
  • 14. 서비스 등록하기 • 서버 실행하기 • 서비스 등록하기 Setup of image classifier, http://www.deepdetect.com/tutorials/imagenet-classifier/ $ cd deepdetect/build/main $ ./dede curl -X PUT "http://localhost:8080/services/imageserv" -d '{ "mllib":"caffe", "description":"image classification service", "type":"supervised", "parameters":{ "input":{ "connector":"image" }, "mllib":{ "template":"googlenet", "nclasses":1000 } }, "model":{ "templates":"../templates/caffe/", "repository":"../../models/imgnet" } }' | json_pp { "status" : { "code" : 201, "msg" : "Created" } }
  • 15. 서비스 등록하기 • 서비스 등록하기 – 서비스명: imgserve • mlib: Machine learning LIBrary • type: supervised • connector: image, text, csv 중 선택 • nclasses: Number of CLASSES, 예측할 분류값 개수 • repository: 서비스할 모델이 저장된 위치 Setup of image classifier, http://www.deepdetect.com/tutorials/imagenet-classifier/
  • 16. 이미지 분류 예측하기 • 로컬 이미지 파일로 예측하기 Setup of image classifier, http://www.deepdetect.com/tutorials/imagenet-classifier/ $ cd deepdetect/build/main $ wget http://www.deepdetect.com/img/ambulance.jpg $ curl -X POST "http://localhost:8080/predict" -d' { "service":"imageserv", "parameters":{ "input":{ "width":224, "height":224 }, "output":{ "best":3 } }, "data":[ "ambulance.jpg" ] }‘ | json_pp
  • 17. 이미지 분류 예측하기 • 로컬 이미지 파일로 예측하기 – 서비스명: imgserve • output: 예측 결과에 포함할 최대 분류 개수 { "status" : { "code" : 200, "msg" : "OK" }, "body" : { "predictions" : { "uri" : "ambulance.jpg", "classes" : [ { "prob" : 0.992852032184601, "cat" : "n02701002 ambulance" }, { "prob" : 0.0069321496412158, "cat" : "n03977966 police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria" }, { "cat" : "n03769881 minibus", "last" : true, "prob" : 6.9531706685666e-05 } ] } }, "head" : { "time" : 1211, "service" : "imageserv", "method" : "/predict" } }
  • 18. 이미지 분류 예측하기 • 이미지 URL로 예측하기 $ curl -X POST "http://localhost:8080/predict" -d' { "service":"imageserv", "parameters":{ "input":{ "width":224, "height":224 }, "output":{ "best":3 } }, "data":[ "http://i.ytimg.com/vi/0vxOhd4qlnA/maxresdefault.jpg" ] }' | json_pp … "predictions" : { "classes" : [ { "cat" : "n03868863 oxygen mask", "prob" : 0.225514054298401 }, { "prob" : 0.209176555275917, "cat" : "n03127747 crash helmet" }, ], "uri" : http://i.ytimg.com/vi/0vxOhd4qlnA/maxresdefault.jpg …
  • 20. 입력 데이터셋 준비하기 • news20 데이터 – 20가지 주제에 대한 이메일 데이터 – 각 주제별 1000개 이하의 텍스트 이메일 파일 $ cd deepdetect/ $ mkdir input $ mkdir input/models $ mkdir input/models/n20 $ cd input/models/n20 $ wget http://www.deepdetect.com/dd/examples/all/n20/news20.tar.bz2 $ tar xvjf news20.tar.bz2 $ rm -rf news20.tar.bz2 $ ll news20/ drwxr-xr-x 2 socurites socurites 32768 9월 30 00:52 alt_atheism/ drwxr-xr-x 2 socurites socurites 36864 9월 30 00:52 comp_graphics/ drwxr-xr-x 2 socurites socurites 36864 9월 30 00:52 comp_os_ms_windows_m/ … $ cat news20/rec_autos/000000431.eml From: dduff@col.hp.com (Dave Duff) Subject: Re: Waxing a new car I just had my 41 Chrysler painted. I was told to refrain from waxing it and to leave it out in the sun!! Supposedly this let's the volatiles escape from the paint over a month or so (I can smell it 15 feet away on a hot day) and lets any slight irregularites in the surface flow out, as the paint remains a little soft for a while. Training a model from text, http://www.deepdetect.com/tutorials/txt-training/
  • 21. 서비스 등록하기 • 서버 실행하기 • 서비스 등록하기 $ cd deepdetect/build/main $ ./dede $ cd deepdetect/models $ mkdir n20 $ curl -X PUT "http://localhost:8080/services/n20" -d '{ "mllib":"caffe", "description":"newsgroup classification service", "type":"supervised", "parameters":{ "input":{ "connector":"txt" }, "mllib":{ "template":"mlp", "nclasses":20, "layers":[200, 200], "activation":"relu" } }, "model":{ "templates":"../../templates/caffe/", "repository":"../../models/n20" } }' | json_pp
  • 22. 서비스 등록하기 • 서비스 등록하기 – 서비스명: n20 • layers: 200 X 200, 200개의 히든 노드(hidden node)의 2개 레이어로 구성 • activation: 활성함수로는 relu(Rectified Linear Unit)을 사용 • 상대 경로는 모두 DeepDetect 서버 실행한 경로로부터 시작 Training a model from text, http://www.deepdetect.com/tutorials/txt-training/
  • 23. 모델 학습하기 • BOW(Bag Of Words) 모델로 학습하기 curl -X POST "http://localhost:8080/train" -d '{ "service":"n20", "async":true, "parameters":{ "mllib":{ "gpu":true, "solver":{ "iterations":2000, "test_interval":200, "base_lr":0.05 }, "net":{ "batch_size":300 } }, "input":{ "shuffle":true, "test_split":0.2, "min_count":2, "min_word_length":2, "count":false }, "output":{ "measure":[ "mcll", "f1" ] } }, "data":[ "../../input/models/n20/news20" ] }'
  • 24. 모델 학습하기 • BOW(Bag Of Words) 모델로 학습하기 – 파라미터 • gpu: 연산시 gpu 사용 여부 • iterations: 이터레이션 횟수 • test_split: 입력데이터 중 테스트 데이터 비율(20%) • min_count: 최소 단어 빈도, 이 빈도보다 적은 단어는 BOW에서 제외 • min_word_length: 단어의 최소 길이, 이 길이보다 작은 단어는 BOW에서 제외 • count: 빈도값 학습 사용 여부 – 서버 로그 INFO - source=../../templates/caffe/mlp/ INFO - dest=../../models/n20/mlp.prototxt list subdirs size=20 WARNING: Logging before InitGoogleLogging() is written to STDERR I0309 18:11:13.121186 31042 txtinputfileconn.cc:182] vocabulary size=88631 data split test size=3770 / remaining data size=15078 vocab size=88631 INFO - user batch_size=300 / inputc batch_size=15078 INFO - batch_size=359 / test_batch_size=290 / test_iter=13
  • 25. 모델 학습하기 • BOW(Bag Of Words) 단어 리스트 $ cd deepdetect $ cd models/n20/ $ ll total 1264 drwxrwxr-x 2 socurites socurites 4096 3월 9 18:11 ./ drwxrwxr-x 4 socurites socurites 4096 3월 9 17:50 ../ -rw-rw-r-- 1 socurites socurites 372 3월 9 18:11 corresp.txt -rw-rw-r-- 1 socurites socurites 1065 3월 9 18:11 deploy.prototxt -rw-rw-r-- 1 socurites socurites 1704 3월 9 18:11 mlp.prototxt -rw-rw-r-- 1 socurites socurites 290 3월 9 18:10 mlp_solver.prototxt -rw-rw-r-- 1 socurites socurites 4389 3월 9 18:11 model.json -rw-rw-r-- 1 socurites socurites 1259121 3월 9 18:11 vocab.dat $ head vocab.dat autoposting,0 seidov,1 ambulances,2 isqat,3 earring,4 grigorevna,5 barfling,6 13271@cs,7 024858,8 aryeh,9
  • 26. 모델 학습하기 • 학습 진행상황 모니터링하기 $ curl -X GET "http://localhost:8080/train?service=n20&job=1" | json_pp { "status" : { "msg" : "OK", "code" : 200 }, "head" : { "time" : 791, "status" : "running", "method" : "/train", "job" : 1 }, "body" : { "measure" : { "accp" : 0.90053050397878, "iteration" : 800, "recall" : 0.902855203525655, "train_loss" : 0.034172598272562, "precision" : 0.897884533058947, "mcll" : 0.389328922262699, "f1" : 0.900363007899212 } } } ## 1s마다 상태 출력하기 $ while :; do curl -X GET "http://localhost:8080/train?service=n20&job=1"; sleep 1; echo ""; done
  • 27. 모델 학습하기 • 학습 완료 $ curl -X GET "http://localhost:8080/train?service=n20&job=1" | json_pp { "status":{ "msg":"OK", "code":200 }, "body":{ "parameters":{ "mllib":{ "batch_size":359 } }, "measure":{ "f1":0.8919178423728972, "train_loss":0.0016851313412189484, "mcll":0.5737156999301365, "recall":0.8926410552973584, "iteration":1999.0, "precision":0.8911958003860988, "accp":0.8936339522546419 } }, "head":{ "status":"finished", "job":1, "method":"/train", "time":541.0 } }
  • 28. 텍스트 분류 예측하기 • /predict – 서비스명: n20 $ curl -X POST 'http://localhost:8080/predict' -d '{ "service":"n20", "parameters":{ "mllib":{ "gpu":true } }, "data":[ "my computer runs linux" ] }‘ | json_pp
  • 29. 텍스트 분류 예측하기 • /predict $ curl -X POST 'http://localhost:8080/predict' -d '{ "service":"n20", "parameters":{ "mllib":{ "gpu":true } }, "data":[ "my computer runs linux" ] }' | json_pp { "status" : { "msg" : "OK", "code" : 200 }, "body" : { "predictions" : { "classes" : { "prob" : 0.392086714506149, "last" : true, "cat" : "comp_windows_x" }, "uri" : "0" } }, "head" : { "method" : "/predict", "service" : "n20", "time" : 925 } }
  • 30. DeepDetect 운영 학습 서버와 서비스 서버 분리
  • 31. pre-trained 이미지 분류 모델 등록하기 • pre-trained 이미지 분류 모델 예 – 옷 • 분류 개수: 304 • http://www.deepdetect.com/models/clothing.tar.bz2 – 가방 • 분류 개수: 37 • http://www.deepdetect.com/models/bags.tar.bz2 – 신발 • 분류 개수: 51 • http://www.deepdetect.com/models/footwear.tar.bz2 Application-Ready Deep Neural Net Models, http://www.deepdetect.com/applications/model/
  • 32. pre-trained 이미지 분류 모델 등록하기 • pre-trained clothing 분류 모델 설치하기 $ cd deepdetect/ $ 2037 cd models/ $ mkdir dd $ cd dd $ wget http://www.deepdetect.com/models/clothing.tar.bz2 $ bunzip2 clothing.tar.bz2 $ tar xvf clothing.tar $ rm -rf clothing.tar $ ll clothing/ total 99688 drwxrwxr-x 2 socurites socurites 4096 11월 26 06:18 ./ drwxrwxr-x 3 socurites socurites 4096 3월 10 10:12 ../ -rw-rw-r-- 1 socurites socurites 6738 11월 23 16:28 corresp.txt -rw-rw-r-- 1 socurites socurites 35884 11월 20 04:16 deploy.prototxt -rw-rw-r-- 1 socurites socurites 395 11월 19 01:46 final.json -rw-rw-r-- 1 socurites socurites 40791 11월 20 04:16 googlenet.prototxt -rw-rw-r-- 1 socurites socurites 295 11월 20 04:16 googlenet_solver.prototxt -rw-rw-r-- 1 socurites socurites 602126 11월 16 00:22 mean.binaryproto -rw-rw-r-- 1 socurites socurites 50682165 11월 26 06:03 model_iter_300000.caffemodel -rw-rw-r-- 1 socurites socurites 50661476 11월 26 06:03 model_iter_300000.solverstate -rw-rw-r-- 1 socurites socurites 13896 11월 20 04:16 model.json $ head clothing/corresp.txt 303 camisole 302 array, raiment, regalia 301 tricorn, tricorne 300 crash helmet 299 ensemble 298 robe 297 seat belt, seatbelt 296 parka, windbreaker, windcheater, anorak
  • 33. pre-trained 이미지 분류 모델 등록하기 • pre-trained clothing 분류 모델 설치하기 $ cd deepdetect/ $ 2037 cd models/ $ mkdir dd $ cd dd $ wget http://www.deepdetect.com/models/clothing.tar.bz2 $ bunzip2 clothing.tar.bz2 $ tar xvf clothing.tar $ rm -rf clothing.tar $ ll clothing/ total 99688 drwxrwxr-x 2 socurites socurites 4096 11월 26 06:18 ./ drwxrwxr-x 3 socurites socurites 4096 3월 10 10:12 ../ -rw-rw-r-- 1 socurites socurites 6738 11월 23 16:28 corresp.txt -rw-rw-r-- 1 socurites socurites 35884 11월 20 04:16 deploy.prototxt -rw-rw-r-- 1 socurites socurites 395 11월 19 01:46 final.json -rw-rw-r-- 1 socurites socurites 40791 11월 20 04:16 googlenet.prototxt -rw-rw-r-- 1 socurites socurites 295 11월 20 04:16 googlenet_solver.prototxt -rw-rw-r-- 1 socurites socurites 602126 11월 16 00:22 mean.binaryproto -rw-rw-r-- 1 socurites socurites 50682165 11월 26 06:03 model_iter_300000.caffemodel -rw-rw-r-- 1 socurites socurites 50661476 11월 26 06:03 model_iter_300000.solverstate -rw-rw-r-- 1 socurites socurites 13896 11월 20 04:16 model.json $ head clothing/corresp.txt 303 camisole 302 array, raiment, regalia 301 tricorn, tricorne 300 crash helmet 299 ensemble 298 robe 297 seat belt, seatbelt 296 parka, windbreaker, windcheater, anorak
  • 34. pre-trained 이미지 분류 모델 등록하기 • pre-trained clothing 분류 서비스 등록하기 $ curl -X PUT "http://localhost:8080/services/clothing" -d '{ "mllib":"caffe", "description":"clothes classification", "type":"supervised", "parameters":{ "input":{ "connector":"image", "height":224, "width":224 }, "mllib":{ "nclasses":304 } }, "model":{ "repository":"../../models/dd/clothing" } }' | json_pp
  • 35. pre-trained 텍스트 분류 모델 등록하기 • pre-trained n20 분류 서비스 등록하기 – dede(DeepDetect) 서버에 등록된 서비스는 메모리 휘발성 – 서버 재기동시 메모리 재등록 필요 – 앞서 직접 학습한 n20 모델을 서비스로 등록 – 학습을 위한 서비스 등록과 구분할 것 $ curl -X PUT "http://localhost:8080/services/n20" -d '{ "mllib":"caffe", "description":"clothes classification", "type":"supervised", "parameters":{ "input":{ "connector":"txt" }, "mllib":{ "nclasses":20 } }, "model":{ "repository":"../../models/n20" } }' | json_pp
  • 36. 학습 서버와 상용 서버 분리 • 서버 구조 학습 서버 서비스 서버
  • 38. DeepDetect + Elasticsearch • 이미지 분류 예측 문서 색인하기 – url: Elasticsearch 색인 URL $ curl -XPOST "http://localhost:8080/predict" -d' { "service":"clothing", "parameters":{ "mllib":{ "gpu":true }, "input":{ "width":224, "height":224 }, "output":{ "best":3, "network":{ "url":"http://localhost:9200/images/img", "http_method":"POST" } } }, "data":[ "http://i.ytimg.com/vi/0vxOhd4qlnA/maxresdefault.jpg" ] }' | json_pp { "created" : true, "_type" : "img", "_index" : "images", "_version" : 1, "_id" : "AVNeQmBY4KIRwyO4ideH" }
  • 39. DeepDetect + Elasticsearch • 색인 결과 $ curl -XGET 'http://localhost:9200/images/img/_search' | json_pp … { "_source" : { "body" : { "predictions" : { "classes" : [ { "cat" : "spacesuit", "prob" : 0.935437917709351 }, { "cat" : "military uniform", "prob" : 0.0494481474161148 } ], "uri" : "http://i.ytimg.com/vi/0vxOhd4qlnA/maxresdefault.jpg" } }, "network" : { "http_method" : "POST", "url" : "http://localhost:9200/images/img" }, "head" : { "time" : 1875, "service" : "clothing", "method" : "/predict" }, }, …
  • 40. DeepDetect + Elasticsearch • 검색하기 – spacesuit(우주복)이 있는 이미지 검색하기 $ curl -XGET "http://localhost:9200/images/_search?q=spacesuit" | json_pp … "hits" : { "hits" : [ { "_id" : "AVNeNkfE4KIRwyO4idNw", "_source" : { "status" : { "msg" : "OK", "code" : 200 }, "head" : { "time" : 1330, "method" : "/predict", "service" : "clothing" }, "network" : { "url" : "http://localhost:9200/images/img", "http_method" : "POST" }, "body" : { "predictions" : { "classes" : [ { "prob" : 0.935437917709351, "cat" : "spacesuit" }, { "prob" : 0.0494481474161148, "cat" : "military uniform“ …
  • 41. Auto-tagging • 문서 자동 태그 붙이기 – 문서(이미지/텍스트 등)에 대한 분류 예측 요청 – 예측된 분류값을 문서에 포함하여 Elasticsearch 서버에 색인 – 검색된 문서에 대한 검색 요청
  • 42. References • Categorizing images with deep learning into Elasticsearch https://www.elastic.co/blog/categorizing-images-with-deep-learning- into-elasticsearch • DeepDetect Homepage http://www.deepdetect.com/ • DeepDetect: Installing DeepDetect http://www.deepdetect.com/overview/installing/ • DeepDetect: Setup of an image classifier http://www.deepdetect.com/tutorials/imagenet-classifier/ • DeepDetect: Training a model from text http://www.deepdetect.com/tutorials/txt-training/ • DeepDetect: Application-Ready Deep Neural Net Models, http://www.deepdetect.com/applications/model/
  • 43. References • Categorizing images with deep learning into Elasticesarch https://www.elastic.co/blog/categorizing-images-with-deep-learning- into-elasticsearch

Notas del editor

  1. sudo apt-get install build-essential libgoogle-glog-dev libgflags-dev libeigen3-dev libopencv-dev libcppnetlib-dev libboost-dev libcurlpp-dev libcurl4-openssl-dev protobuf-compiler libopenblas-dev libhdf5-dev libprotobuf-dev libleveldb-dev libsnappy-dev liblmdb-dev libutfcpp-dev cmake