AI 서비스를 제공하는 웹 사이트를 만들기 위해서는 웹 서버가 필요하다. flask는 웹 서버를 만드는 간결한 프레임워크다. flask를 통해 AI 모델을 웹 서버 상에서 돌리도록 API를 만들 수 있다. 😊😊😊
1. Flask 개발환경 구축나는 다음 글을 참고하여 그대로 개발환경을 설정했다. https://velog.io/@koeunyeon/차근차근-플라스크-강좌에-오신-것을-환영합니다 2. .h5 또는 .pkl로 저장된 AI 모델 불러오기텐서플로우나 케라스로 만든 모델은 h5파일로 간단하게 저장할 수 있다. 이렇게 저장된 AI 모델 파일들을 vscode에서 사용하도록 폴더에 넣어주자. 간편하게 찾을 수 있도록 app.py가 저장된 src 폴더 안에 두 개의 모델을 넣어주었다. 이제 코드로 이 모델들을 호출해주면 된다.
tf.keras.models.load_model()함수 안에 h5파일의 경로를 넣어주면 된다. 모델이 어떻게 생긴건지, 제대로 불러져온건지 확인하기 위해서는 모델을 로드한 후에
를 치고 python 터미널에서 실행해보자!(오른쪽 버튼-> '터미널에서 python 파일 실행' 클릭) 모델이 잘 요약되어 나올 것이다. predict 함수가 vscode에서 인식이 되지 않아서 혹시 모델이 호출이 안된건지 불안할 수 있다.(내가그랬음)
joblib 라이브러리를 사용하여 모델을 로드한다. 이녀석 또한 predict가 인식되지 않아도 알아서 잘 돌아간다. 3. Flask Api 작성python으로 작성된 딥러닝 모델을 코드 안으로 불러왔으니, 이제 웹 서버상에서 작동할 수 있도록 api를 만들어야 한다. 딥러닝을 위한 Flask api 기본 프레임
우리는
입력값을 받아 모델에 넣어서 예측값을 구하고, 이 예측값을 서버에 전달할 것이기 때문에 POST 메소드를 이용한다. 이제 빈칸에 코드를 채워넣는다. 서버로부터 파일(이미지, 동영상, 텍스트 등) 받기나는 동영상에서 프레임을 추출하여 모델의 입력값으로 넣어야 하기 때문에,
두 줄이 추가되었다. request.files['키 값']을 통해 파일을 받고, save()를 이용하여 파일을 로컬 폴더에 저장한다. 나는 src/dataset 파일에 filename으로 저장했다. 받아온 파일을 모델에 입력값으로 넣기이제 필요한 파일을 웹에서 받아왔으니, 우리가 만든 모델에 넣어야 한다.
몇 줄이 추가되었다. 여기에 쓴 코드는 데이터 전처리와 후처리 등을 빼놓고 아주 간단하게 작성한 코드이기 때문에, 이걸 그대로 따라쓰면 정말 아무것도 아니게 된다. 오류난다.
4. Json으로 응답하기위 코드의 마지막 줄이
인 것을 확인했다. 웹 서버에서는 json으로 값을 주고받기 때문에 우리가 구한 출력값을 서버에 전달하기 위해서는 json으로 바꾸어주어야 한다. 이로써
까지 완성했다. 5. Postman으로 응답 테스트포스트맨이 어떤 것이고 어떻게 사용하는지는 인터넷에 많은 글들이 있으니 참고하면 좋다. 매우 간단하니 겁먹지 ㄴㄴ 정성스럽게 작성한 app.py 를 디버깅없이 실행하고, Postman을 실행하자. 우리는 flask api를 다음과 같이 작성했으니
이제 준비 끝! 나는 http://로컬/model api를 POST 메소드로 호출하여 mp4 파일을 전송한 것이다. 응답이 제대로 오는지 보기 위해 파란 버튼인 Send를 눌러준다. 누르고 나면 밑에 Response가 어떻게 되었는지 결과가 나올 것이다. <---------------------------------------------------------------------------------------------------> 이렇게 내가 만든 AI모델을 웹 서버에서 실행시키기 위한 Api작업이 끝났다. 코드를 전체공개한 것이 아니기 때문에 여기 쓰여진 코드만 따라쓴다면 에러가 난다. 필요한 코드는 직접 추가해주어야 한다.나처럼 "머신러닝, 딥러닝은 해보았는데 웹에서 어떻게 서비스하지?" 라는 의문을 가진 사람에게 조금이나마 도움이 됐으면 한다.내 프로젝트가 끝나고 깨끗한 코드가 완성된다면 이 곳에 공개하도록 하겠다안뇽! |