개요 (2017.08.24 수정)
이미지 추론 스크립트를 가지고 뭘 해볼까 하다가, 이미지 처리 서버를 만들기 시작 했다.
파이썬 서버와 자바 클라이언트로 만들 생각이다. 클라이언트를 자바로 만들면 서블릿이나 안드로이드에 심기 편할 것 같다. (Spring 이식)
이미지 추론 모델은 imagenet 2012 challenge 2015-12-05 버전이다.
1000개의 사물을 구분할 수 있다.
Tensorflow Serving을 사용해 보려고 했지만 gRPC를 모르겠다.
장치와 운영체제에서 독립적인 클라이언트 환경을 위해 웹으로 방향을 잡았다.
웹 페이지에서 사진을 전송하면 경고창으로 추론 결과를 받게 된다.
데이터 학습 모델만 바꾸면 다른 사물을 추론 할 수 있다.
# Python Tornado 이미지 추론 서버
시스템 구상도 (2017.08.24 수정)
사용자가 웹페이지에서 꽃 업로드(PC) & 촬영(Mobile)하면 WAS에서 Python 서버로 전송 되고 결과를 반환 한다.
Java Class로 만들어 놓아서 Spring으로 쉽게 이식이 가능했다.
이러한 구성으로 하면 기존의 Java웹 서비스나 애플리케이션에 이식을 쉽게 할 수 있다.
WAS와 Python Server가 독립적이기 때문에 서로 에러에 대해 영향을 주지 않는다.
진행 상황 (2017.09.01) : 시스템 시나리오 성공
자바 클라이언트에서 이미지 전송 전 파일의 크기를 보낸 후 파이썬 서버에서 받은 크기만큼 스트림 버퍼를 설정 한다.
그 다음 클라이언트에서 이미지를 보내면 서버에서 이미지를 받아 추론 후 레이블을 클라이언트로 리턴한다
클라이언트는 마지막으로 리턴 받은 레이블을 출력.
------------------------------
위 까지 성공 후 아주 간단하게 웹 페이지를 만들고 기존의 Java 이미지 전송 부분을 웹의 기능 일부로 이식했다.
결과는 내 생각대로 잘 동작 한다.
스마트폰에서 '파일 선택' 버튼을 클릭하면 바로 카메라 앱이 실행 되고, 촬영 후 전송 할 수 있다
----------------------------------
마지막 결과가 쓰여진 경고창 클릭 후 결과값으로 구글 검색 하는 페이지로 이동 한다
<사용자 웹 페이지.....>
<스마트폰으로 선풍기 촬영>
<결과 출력>
소스코드
https://github.com/pipy201/study/tree/master/python_java_image_server
고치고 싶은 사항, 한계점
* 디스크에 이미지 저장 안하고 바로 전달하기
클라이언트가 한번 추론 할 때 마다 이미지 파일을 읽고 쓴다. 디스크 I/O를 최대한 줄이고 싶다.
# 여기서 개선 버전 ~ Python Tornado 이미지 추론 서버
http://gusrb.tistory.com/55
* python socket 말고 flask django 를 써보고 싶다
* 약 30명의 클라이언트 요청에서 오류를 뿜었다.
was, python socket server는 살아 있으나 추론 부분에서 오류가 났다.
python 에서 이미지 파일을 전송 받고 디스크에 쓸때 파일 이름이 겹쳐서 아닌가 싶다...
'archive.tar' 카테고리의 다른 글
[GCP] Compute Engine 방화벽 설정 (0) | 2017.08.24 |
---|---|
[Ubuntu] GCE Ubuntu16 Tomcat 설치 (0) | 2017.08.07 |
[Tensorflow-Serving] Inception-v3 서버 만들기 (0) | 2017.06.25 |
[Tensorflow-Serving] 텐서플로우 서빙 설치 하기 (0) | 2017.06.24 |
[Ubuntu]우분투 무한 로그인 해결 여러 방법들 (1) | 2017.05.18 |