미식가의 개발 일기

[KT 에이블스쿨(6기, AI)] 12주차, 6차 미니 프로젝트(2) 본문

KT 에이블스쿨(6기, AI)

[KT 에이블스쿨(6기, AI)] 12주차, 6차 미니 프로젝트(2)

대체불가 핫걸 2024. 11. 21. 16:46

미션

응급상황 자동 인식 및 응급실 연계 서비스

 

데이터셋

주어진 데이터
  • 음성 샘플 파일

  • 중증도 분류 표
  • 학습 데이터 샘플(파인 튜닝 용도)

 

수집 데이터
  • 응급 등급 별 응급상황 전화 녹음 파일

  • 전국 응급실 정보

→ 공공데이터 포털에서 API KEY를 발급받아 사용 

 

공공데이터 포털

국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase

www.data.go.kr

 

  • 주어진 학습 데이터 샘플과 동일한 형태의 데이터 추가 수집

 

 

과제 수행

1. 음성 인식 및 요약

  • Whisper APISTT(Speech-to-Text) 모델에 접근하여 음성 → 텍스트 변환
  • GPT 3.5 turbo API를 사용하여 내용 요약
  • 공공데이터 포털에서 응급실 정보 수집 

2. 응급 등급 분류

  • 추가 학습 데이터 수집({응급 상황, 응급 등급})
  • BERT 모델파인 튜닝하여 응급 등급 분류

3. 응급실 추천

  • Naver Map API를 이용해 거리, 이동 시간 계산가장 가까운 응급실 추천 

4. 각 기능 모듈화

  • API 키 로딩
  • 음성 파일 -> 텍스트 변환
  • 텍스트 요약 
  • 모델 예측
  • 거리 구하기
  • 병원 추천

5. 모듈 파일 불러와서 통합 후 파이프라인 생성 

 

느낀점

  • 이번 프로젝트는 음성 데이터를 분석해서 응급 등급을 분류하고 위급한 상황에 대해 근처 응급실을 추천해 주는 프로젝트를 진행했습니다!
  • 하나의 프로젝트지만 여러 개의 API와 기능이 들어가서 다양한 경험을 해 볼 수 있어 좋았어요!
  • 음성 파일을 텍스트로 변환하기 위해 Whisper API를 활용했고, 변환한 텍스트 파일을 요약하기 위해 GPT 3.5 turbo API를 사용했으며 요약한 내용에 따라 응급 등급을 분류하기 위해 BERT 모델을 사용했고 응급 등급에 따라 1~3등이라면 Naver Map API로 거리를 측정가장 가까운 응급실 3군데를 추천해 주는 구조였습니다.  😶
  • 응급 등급 모델 같은 경우 파라미터 조절로는 성능 향상에 한계가 있었으나 데이터를 균형 있게 보강하는 것은 성능 향상에 큰 영향을 줬습니다. 역시 중요한 건 데이터!!라는 것을 다시 한번 알게 되었어요. 
  • 하나의 기능들을 각각 구현하는 것은 어렵지 않았지만 이 기능들을 하나로 합치는 모듈화 & 통합 부분이 조금 까다로웠던 것 같습니다.. 이 모든 기능을 파이프라인으로 통합하게 되면 어디서 에러가 발생했는지 알기 쉽지 않아서 단위 별로 나눠서 단위 테스트를 미리 실행해 보고 진행하는 것이 필수인 것 같습니다!! 통합 부분에서 가장 시간을 많이 잡아먹긴 했지만 모듈화 후 기능별로 나눠서 파이프라인을 구성하니 훨씬 깔끔하고 보기 좋더라고요! 
  • 여러 API를 사용하며 느낀 점은 API 별로 나와있는 공식 문서나 사용 방법을 잘 따라간다면 익숙하지 않은 API도 어렵지 않게 사용할 수 있다는 것을 알게 되었고, API 요청에 대한 에러 응답 같은 경우 예외 처리를 통해 에러 응답이 어떤 유형인지를 파악한다면 빠르고 정확하게 대처할 수 있다는 것을 알게 되었습니다.(저는 예외 처리에서 시간을 엄청 잡아먹었습니다.. API 제공 페이지에서 에러 응답에 대해 어떤 에러인지 설명을 제공하기도 하니 잘 확인하는 게 중요한 것 같습니다!) 
  • 드디어 길었던 6차 프로젝트가 끝났습니다! 내일은 1차 에이블 데이인데요. 다음 주부터는 자바, SQL, Spring, 가상화 클라우드에 대해 학습한 후 7차 프로젝트를 끝으로 미니 프로젝트는 마무리될 것 같습니다~! 
반응형