이 글은 2021.02.15 에 진행된 코어멤버 세령님의 ‘REST API를 이용해 손글씨 숫자 예측 웹 만들기’ 세션을 바탕으로 작성된 블로그 포스팅입니다.
새 창에서 열기 (발표자 노트를 참고하실 수 있습니다)
1. RESTful API
REST API란?
|
REST API 호출
머신러닝이랑 무슨 상관?
REST API 장점
- REST API 메시지를 읽는 것 만으로도 메시지가 의도하는 바를 명확하게 파악
- 해당 URI와 원하는 메소드 자체만 독립적으로 이해
- client와 server 각자의 역할이 명확하게 분리
- REST API에 대해 더 자세히 알고 싶다면 다음 링크 참고
gmlwjd9405.github.io/2018/09/21/rest-and-restful.html
2. AJAX
|
3. 손글씨 숫자 예측 페이지 만들기
MNIST란?
|
전체 흐름
REST API 서버
@app.route('/predict', methods=['GET'])
def ajax():
image = ajaxImage((28,28))
model = keras.models.load_model("tf-model.h5")
prediction = model.predict(image)[0]
return {'answer': int(np.argmax(prediction))}
- Method view를 사용하고 싶다면 다음 링크 참고
https://flask.palletsprojects.com/en/1.1.x/views/
웹서버 - API 서버 통신
$.ajax({
url: "http://localhost:5000/predict", // 클라이언트가 요청을 보낼 서버의 URL 주소
type: "GET",
data:{
image: canvas.toDataURL()
}
})
// HTTP 요청이 성공하면 요청한 데이터가 done() 메소드로 전달됨.
.done(function(json) {
console.log(json);
var answer = document.querySelector("#answer");
answer.innerHTML = json["answer"];
})
// HTTP 요청이 실패하면 오류와 상태에 관한 정보가 fail() 메소드로 전달됨.
.fail(function(xhr, status, errorThrown) {
console.log("error");
})
위 실습에서 사용되는 코드는 https://github.com/dsc-sookmyung/2021-deploy-ML-Model-to-the-Web-Session 해당 링크에서 참고 가능합니다.
실습을 완료하고나면 다음 영상과 같은 결과물을 얻으실 수 있습니다.
번외
AWS sagemaker로 머신러닝 모델 배포해서(+AWS Lambda) 사용할 수도 있음 (다음 링크 참고)
** 프리티어 여부 잘 확인하고 할 것!
- AWS SageMaker로 머신러닝 맛보기 1탄
https://theserverside.tistory.com/224
- SAGEMAKER ENDPOINT 호출 LAMBDA 함수 개발하기
https://www.sagemaker-workshop-kr.com/kr/apps/internet_facing_app/_module_4.html
- [rest api 외 다른 방법] WEB : tensorflow.js / Android : tensorflow Lite
'GDSC Sookmyung 활동 > Speaker Session & Hands on Workshop' 카테고리의 다른 글
[Docker] Docker로 배포하기 (0) | 2021.03.27 |
---|---|
[Algorithm]C++로 알고리즘 시작하기 (0) | 2021.03.12 |
[Git/GitHub] 2. branch (0) | 2021.02.23 |
[Git/Github] 0. 깃이란? 깃허브란? (0) | 2021.02.20 |
[Kaggle/ML] 캐글(Kaggle) 시작하기 (0) | 2020.11.18 |