[종합설계 프로젝트] 16. 서빙방식 채택, 적용, 백엔드 테스트

Serendipity·2023년 6월 4일
0

Fastapi 로 설계를 마친 후
로컬 환경에서 테스트

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=younguk0907&logNo=222044066647

이 블로그의 도움을 받았습니다.

환경 설정

중간에 도커 이미지도 필요해서 다운로드 받았다. 아마 CI/CD를 통한 자동화 배포를 위한 것 같다.

-m uvicorn main:app --reload

로컬로 서버를 열었고, Port는 8000번이다.

아마존 aws서버에서 받는 이미지는
버킷 이름과 프로젝트 명이 필요했다.

Fastapi 설정

이미지 전처리, 클래스 레이블 파일 경로 지정

FastAPI 호출, 모델 불러오기

case1. jpg를 첨부 할 경우

case2. 이미지를 url로 제공할 경우

python 유료 버전을 사용할 경우,
Fastapi 기본 설정을 제공해준다.

서버 로드 및 테스트


몇번의 에러를 거치고 성공했던 Response Body내용이다.
class_id에 해당하는 라벨을 출력하고 싶은데
이름이 왜인지 string이 길다며 출력이 안 되어서 체크중에 있다.

그리고 같은 class_id가 여러개 나왔다.
아마 전처리 하는 값을 [:5]로 설정해둔 탓에
이미지에서 하나만 detect되었으나
6개가 출력된 것 같다.

문제 해결 : Swagger 체크

여러개가 출력되는 경우

뒤에 /docs만 작성하면 확인 가능

정확도 높은 순서대로 출력. 최대 2개까지,
정확도가 50% 이상인 것들

class_id 대신 한글명 출력

class_id 대신 한글명 출력을 위해
label.txt를 넣어주고, 참조 하게 하였다.

Api 테스트, 백엔드와 연결

개인 로컬에 띄우기엔 방화벽 문제도 있어서
결국 aws EC2에 업로드했습니다.

Swagger로도 하고,
서버가 잘 연결이 안 되었다길래
Postman으로 api 값 테스트를 했습니다.

실행은 되는데
Postman 값이 안 받아져서 보니까
백엔드 코드를 살짝 수정했습니다.

출력값 바꿀때에 scp -i key-.pem 써서 main.py만 업로드했습니다.

이미지에 있는 가장 정확도 높은 이미지를 하나만 출력해주니 아쉬운 생각이 들어서 2개까지 출력해주기로 했습니다.

-> 백엔드에서 이미지 url 제공

-> 이미지 url을 이미지로 변환
-> 모델이 분류한 분류 name 추출
(바운딩박스 이미지 추출)
-> json으로 백엔드에 전달
(바운딩박스 이미지 url)

-> 백엔드에서 정보 받기
-> 프론트에 전달
-> UI에 추출

https://dataplay.tistory.com/42
https://velog.io/@rapidrabbit76/FastAPI%EB%A1%9C-Model-serving-%ED%95%98%EA%B8%B0-with-Micro-Batching

profile
I'm an graduate student majoring in Computer Engineering at Inha University. I'm interested in Machine learning developing frameworks, Formal verification, and Concurrency.

0개의 댓글