오늘은 평일에 하는 마지막 오프라인 수업이다.
딥러닝을 활용하는 방법을 배웠다.
AI를 연결하여 얼굴 인식 웹 앱을 만들고, 백혈병 분류하는 웹앱을 만들어보았다.
[Part 1] 간단한 앱 만들어보기: 나이 예측 앱
얼굴 사진을 업로드하면 나이를 추정해주는 앱이다. HTML을 통해 웹으로 만들었다.
1. 앱 설계 프로세스
: 딥러닝 모델(설계/학습) → 모델 이식(앱 이식 여부) → 앱디자인(플랫폼) → 앱배포 (검수 및 최종 배포)
1) 딥러닝 모델
모델 파이프라인 구성: 원본 데이터 → 전처리된 데이터 → 모델 예측
2) 모델 이식
딥러닝 앱의 용량은 머신러닝에 비해 굉장히 크기 때문에 앱에 어떻게 연동시킬지, 연동시킬지 말지 여부도 고민할 필요가 있다.
- 이를 해결하기 위한 방법 중 하나는 모델 경량화, 앱에 경량화된 모델 이식 (32bit->16bit, 8bit)
- 두번째 방법은 앱 외부에서 딥러닝 모델을 연결, 클라이언트가 아닌 외부 서버에서 모델을 사용하는 방식
모델의 용량이 너무 크다면 경량화 역시 답이 되지 못하기 때문이다.
- API
: 프로그램과 프로그램 같의 연결 -> 프로그램(서버)이 제공하는 기능을 다른 프로그램(클라이언트)이 사용할 수 있도록 여는 통로
ex) 온라인 쇼핑몰에서 결제한 후, 결제완료 카카오톡 전송, 챗지피티
- API서버와 클라이언트가 주고 받는 HTTP 데이터는 header(생성시간, 데이터 유형, API키 등)와 body(전달할 데이터)로 구성
- 클라이언트의 요청을 받으면 API 서버는 Response Code를 전송한다
장점 | 단점 | |
API 방식 | · 클라이언트의 성능이 중요하지 않음 · 모델 성능 개량 및 유지 보수가 용이 · 앱 개발이 훨씬 쉬움 |
· 인터넷이 연결되어 있어야만 사용 사능 · 서버 작업량이 많으면 대기시간 증가 · 실시간 inference(카메라 영상에서 얼굴추적 등) 불가 |
: 여러가지 모델, 특히 자연어 처리 모델을 공유하고 활용할 수 있는 플랫폼 (깃허브와 비슷)
- GPT2, LLAMA 등 여러가지 모델을 다운로드하여 코드로 활용 가능
- 모델 API 서비스를 사용 가능 (단, 일부 모델에 한함)
- 오늘은 nateraw/vit-age-classifier 모델 사용을 활용
- hugging face에서 가입하여, access token(api 키)가 필요
3) 앱 디자인
: Anaconda에서 만든 플랫폼으로 파이썬 기반의 웹 앱을 호스팅할 수 있음
- Djago, Flask 등의 프레임워크를 지원
- 무료 버전은 3개월 마다 리셋이 됨, 용량이 비교적 적음
4) 앱 배포
본인의 pythonanywhere URL로 접속하여 테스트를 진행한다.
HTML 웹페이지가 출력되는지, 이미지가 제대로 업로드 되는지, hugging face API와 연동이 잘되는지, 그리고 예측 결과가 화면에 표시되는지를 확인하면 된다.
2. 앱 설계 결과
사진을 입력하면, 나이대를 추정해주는 결과를 내준다.
근데 웃긴게, 다른 친구들 얼굴은 다 20-29세라고 나오는데 나만 이런 결과가 나왔다ㅋㅋㅠ
[Part 2] 백혈병 분류 솔류션 프로젝트
팀프로젝트라서 한명은 AI 모델 학습 및 API 서버 구축, 다른 한명은 WebAPP 개발(챗 지피티 활용)을 맡게 된다. 우리팀은 따로 역할을 정하지 않고, 같이 진행하기로 했다.
1. 프로젝트 개요
Acute Lymphoblastic Leukemia (ALL, 급성 림프성 백혈병) 데이터셋을 이용한다.
· 89명의 ALL 환자로부터 추출한 혈액을 현미경으로 촬영
· Benign(양성) / Maligant(악성): Early Pre-B, Pre-B, Pro-B
2. 프로젝트 진행 과정
1) AI 모델 학습
· 이미지 데이터 Preprocessing 과정
· 모델 선정 및 하이퍼파라미터 설정
· 모델 학습 후 GradCAM을 이용한 성능 검증
딥파이(DEEP:PHI)에서 AI모델 인퍼런스 서비스를 이용한다.
최종 결과로 End Point(URL)이 나오게 되면 이를 다음 스텝인 웹앱 구현에 적용하게 된다.
2) 웹 개발
chatGPT를 활용하여 Flask 기반의 앱을 개발한다.
이미지 파일을 선택하면 이를 API서버(딥파이 인퍼런스 서비스)에 전송되고, API서버가 결과를 클라이언트에세 전송하면 이를 화면에 표시하게 된다.
API 검증은 POSRTMAN 프로그램과 웹사이트를 이용하여 작동여부를 점검하게 된다.
3. 프로젝트 결과
과제로 내준 것이기 때문에 완료되면 업로드 예정.
※ 해당 카테고리는 딥노이드, 오픈놀, 앙트비에서 주최하는 '<스타트업 유니버시티: DX Challenge 교육> AI+X 역량 강화 트랙'에 대한 기록입니다.
'[AI+X 역량 강화] 인공지능 > 2) 주특기 심화: 머신러닝, 딥러닝' 카테고리의 다른 글
[머신러닝] #3 정형데이터 전처리 실습 // 결측치 처리(평균, 최빈값), 정규화, missingno (1) | 2023.09.16 |
---|---|
[머신러닝] #2 머신러닝을 위한 데이터 전처리 // 특성공학, 결측값, 범주형 변수 처리 (0) | 2023.09.09 |
DX AI 산업 특강 // 챗GPT로 웹페이지 만들기 (0) | 2023.09.07 |
[머신러닝]#1 머신러닝의 이해 // 데이터 종류, 스팸 필터, 머신러닝 특징 (0) | 2023.09.05 |