ChartKlas (2)

제목 없음

Demo

(1)편의 분류 모델에 4가지 차트 타입(map, scatter plot, pareto chart, venn diagram)을 추가했다. 정확도는 959개(각 차트 타입당 대략 100개)의 validation set에 대해서 91%이고, 아직 트레이닝이 끝나지 않았으므로 더 올라갈 수도 있다. 현재 95.2%의 정확도를 가지고 있다.

또한, 분류에 대한 restful API를 만들었다. http://wonjaekim.com:30000/classify 로 multipart-encoded file을 http post request로 보내면 json 형식으로 response를 준다.

<예제 python code>

import requests

url = 'http://wonjaekim.com:30000/classify'
files = {'file': open('area_chart/areaprofita.gif', 'rb')}
r = requests.post(url, files=files)
print r.text

<response 형식>

{
    "filename": "areaprofita.gif", 
    "result": [
        [
            "area chart", 
            99.3242
        ], 
        [
            "scatter plot", 
            0.2768
        ], 
        [
            "pie chart", 
            0.1326
        ], 
        [
            "bar chart", 
            0.0886
        ], 
        [
            "map", 
            0.0661
        ]
    ]
}

ChartKlas

chartklas

 

Demo

CNN(Convolutional Neural Network)을 사용해서 차트 분류 모델을 만들었다. 이미지를 업로드하면 Bar, Line, Pie, Area, Radar Chart와 Table. 6개의 차트 타입 중 어느 타입에 속하는지 분류해준다.

사용한 네트워크는 2014 이미지넷 우승에 빛나는 GoogLeNet

슬프게도 GPU가 달려있는 서버가 수중에 없는 관계로 60 epoch의 트레이닝을 무려 24시간동안 진행했다. 각 클래스별로 200개의 이미지, 총 1200개의 이미지에 대해서 75% training set, 25% validation set으로 나눠서 트레이닝을 진행했고. validation set에 대한 accuracy는 94.697%로 측정되었다. 클래스 수가 더 적긴 하지만 기존의 차트 타입 분류를 시도한 ReVision의 10-class 분류 정확도인 80%보다 꽤나 높게 나왔다.

Gtx Titan X 정도의 그래픽카드가 장착된 서버를 구할 수 있다면 다시 트레이닝을 시켜보고 싶지만, 현재로서는 위 결과에 만족.

Google Deep Dream

Dreaming HCIL

dream_hcil_original

dream_hcil_0045

 

GoogLeNet 모델을 이용하여 HCIL 로고를 주제로 구글의 Deep Dream을 꿔봤다.

네트워크 종단점은 inception_4c/output, 옥타브는 4번 * 1.4배, 각 이터레이션은 10번이다.

이미지는 각각 원본, 45번째 프레임

1번째 프레임부터 45번째 프레임까지의 gif는 아래에서 확인할 수 있다.

dream_hcil_no_zooming_resize