Post

[KT Aivle 3기 AI] 빅프로젝트 4주차

🌟 빅프로젝트 4주차 !

4주차에는 추가적인 API를 구현하고, 서버를 NGINX로 배포했다.

✅ 서버 NGINX 배포

이전에는 장고 API 서버를 python manage.py runserver로 개발용 서버로 매번 실행시켜 프론트와 연결시켰었다. 매번 실행하기도 힘들고, runserver는 진짜 개발용이어서 서버의 안정성이 매우 떨어져 API 요청이 여러개가 들어오거나 하면 바로 서버가 죽거나 했다. 그래서 NGINX로 서버를 배포하여 안정성도 올리고 지속적으로 서버가 열려있어 프론트와 항상 연결할 수 있도록 하였다.

✅ Django Rest Framework

저번주에 이어서 지속적으로 API를 보완하고 새로운 API를 개발했다. 이번주에 사실 백엔드 API 쪽은 필요한 기능들은 다 구현해서 프론트에서 기능을 구현하면서 수정이 필요한 부분들만 수정하면 되는 상태이다.

✔ 사진 업로드 및 AI 모델 진단

우리의 핵심 기능인 반려동물의 피부사진을 업로드하면 AI 모델이 진단해서 결과를 내보내는 API를 작성하였다. AI 쪽은 지속적으로 성능향상을 위해 개발진행 중이다. 다만 조금 아쉬운 부분은 AWS EC2를 프리티어로 가장 낮은 것을 사용하다보니까 AI 모델이 조금 커지면 서버가 죽는 현상이 있는 것이었다. 기본 모델로 Inception V3를 Finetuning 해서 사용해보고 있는데, 이 모델을 1번 사용하는 것은 괜찮지만 2번 사용하면 서버가 죽었다. 2번 사용한다는 것이 무슨 말이냐면, 우리가 사용하는 데이터에서 반려견의 피부질환이 6개의 클래스로 되어있었고 무증상 데이터는 없었었다(왜 ‘없었었냐’면 최근에 다시 확인해보니까 무증상 데이터가 생겼다.. 아니 이제와서… 우리가 메일도 보냈는데… 좀 빡치네) 그래서 무증상 데이터를 DALLE를 사용해 생성하고 Augmentation해서 사용했다. 그렇게 AI Inference Flow를 다음과 같이 구현했다.

  1. 무증상, 유증상을 분류함 (첫 번째 AI 모델)
  2. 유증상으로 분류되었다면 6개의 클래스를 분류하는 모델로 분류함 (두 번째 AI 모델)

근데, 이렇게 AWS EC2에서 작업을 하니 서버가 죽는 것이었다… 그래서 어떤 방법으로 진행해야할 지 고민중이다…

✔ Q&A 게시판, Hospital 정보

Q&A게시판, Hospital 정보에 대한 CRUD API를 만들었다. 여기서 CRUD 기능은 DRF의 ModelViewSet을 통해 간단히 구현했고, 커스텀이 필요한 부분에서 각각 CRUD를 커스텀했다. 그리고 가장 중요한 권한 설정도 커스텀해서 게시글과 병원정보, 사진 정보까지 조회는 모두가 가능하지만 생성, 수정, 삭제는 해당 유저의 것만 할 수 있도록 구현했다.

그리고 게시판 한 페이지에 최신순으로 10개의 게시글이 보이도록 Pagination 설정을 추가해줬다.

✔ 기타

프로필 사진의 경우 원래 기본 이미지를 넣어줬었다가, 우리 팀원분이 pydenticon이라고 하는 것을 구현해오셔서 일단은 랜덤생성되는 pydenticon을 기본 프로필 이미지로 사용하고 있다. 나중에 보고 이쁘지 않으면 바꿔야할 것 같긴하다..

그리고 우리 어플의 차별점 중 하나인 랭킹이 높은 수의사들의 병원을 광고에 넣어준다는 기능을 일단 병원 정보를 랜덤하게 뿌려주는 API를 작성했다. 직접 랭킹을 매기는 것도 해보고 싶긴한데, 시간이 부족해서 이번 프로젝트에서는 못할 것 같다 ㅠ

This post is licensed under CC BY 4.0 by the author.

[KT Aivle 3기 AI] 빅프로젝트 3주차

[KT Aivle 3기 AI] 빅프로젝트 5주차