Skip to content

junwson9/Hanol

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Untitled




About HANOL

  • AI 탈모 진단 및 두피 건강 케어 서비스🌱
  • 개발 기간 : 2023.10.09 ~ 2023.11.17 (6주)


Overview

  • 병원에 가지 않아도 AI가 간편하게 집에서 두피 상태를 진단해 드립니다.
  • 문진을 통해 사용자의 두피 타입을 확인할 수 있습니다.
  • 두피 건강을 위한 데일리 루틴을 설정하고, 알림을 받을 수 있습니다.


Description

  • 사용자는 IoT기기와 휴대폰 카메라 중 하나를 선택해 진단을 받습니다.
  • 두피를 찍으면 그 사진을 AI가 분석하여 탈모, 홍반, 각질, 비듬, 염증, 피지 6가지 두피 지표에 대한 위험도를 4단계로 보여줍니다.
  • 과거 진단 결과 및 변화 추이는 마이리포트에서 확인이 가능합니다.
  • 사용자는 본인 두피 상태에 따라 데일리 루틴을 추천 받고, 원하는 루틴에 대한 알림을 받을 수 있습니다.
  • 촬영 없이 간단한 문진만으로, 랜덤 포레스트 모델을 거쳐 두피 타입을 예측하는 '두피티아이' 기능이 있습니다.


Screens

1. AI 두피 건강 분석



  • 전용 IoT 기기를 통한 AI 두피 건강 진단

    IoT기기_진단

  • 휴대폰 카메라 촬영을 통한 AI 두피 건강 진단


    핸드폰_진단

2. 진단 결과를 모아보는 마이리포트

마이리포트

3. 두피 상태에 맞는 두피 케어 루틴 추천, 알림



  • AI 진단 결과를 기반으로 사용자 맞춤형 두피 케어 루틴 추천


    루틴설정

  • 루틴별 알림 설정 시 원하는 시간에 Push 알림 수신

    알람


4. 생활 습관으로 예측해보는 두피TI



  • 생활 습관 문진을 기반으로 나의 두피 타입 예측

두피ti


Main Features

AI

  • 딥러닝 모델 학습을 통한 AI 두피 진단 서비스 제공
  • 두피 사진을 바탕으로 ‘탈모, 각질, 피지, 홍반, 염증, 비듬’ 6개 증상의 위험도를 4단계로 측정
  • 6개 모델 평균 정확도 75%
  • 모델 추론 시간 12초에서 1.5초로 단축
  • OpenAI gpt-4-vision을 활용한 비 두피 사진 필터링

IoT

  • 최대 24배 배율의 현미경을 장착한 IoT 기기로 선명한 두피 사진 촬영 가능
  • Raspberry Pi Zero 2 W에 fastAPI와 webSockets를 통해 실시간 카메라 스트리밍 서버를 구축
  • GPIO LED모듈 사용
  • IoT 기기가 없는 경우, 휴대폰 카메라 촬영 기능 제공

Front-End

  • PWA
  • 반응형 디자인
  • 차트 커스텀
  • WebSocket을 활용해 라즈베리파이의 실시간 영상을 받음
  • SSE통신으로 찍은 두피사진에 대한 진단결과를 받음

Back-End

  • Spring Batch. no-offset paging 방식의 ItemReader 구현을 통한 데일리 루틴 생성 Job 수행 속도 향상
    • 데이터 10만 건 기준, 잡 수행 시간 17.9% 향상 (6s394ms → 5s252ms)
    • 데이터 20만 건 기준, 잡 수행 시간 35% 향상 (15s180ms → 9s825ms)
  • OpenID Connect(OIDC)를 활용한 카카오 소셜 로그인 및 회원가입
  • JWT Refresh Token을 redis에 저장하여 빠른 엑세스 속도, 데이터 캐싱을 통한 효율성, 토큰 만료 관리 등 다양한 이점을 얻음
  • 클라이언트와 SSE 통신을 사용해 효율적인 단방향 통신 구현
  • RabbitMQ를 활용해 AI 두피 사진 진단 과정을 이벤트 기반 처리
  • Firebase Cloud Messaging을 이용한 대량 Push 알림 발송 기능 구현

INFRA

  • gitlab runner를 이용한 CI/CD 파이프라인 구축
  • SSL 인증서를 활용하여 Nginx에 HTTPS 적용하고 종단간 암호화를 구성
  • Nginx reverse proxy를 활용하여 애플리케이션 서버의 직접적인 노출을 방지하고 요청을 안전하게 처리
  • 시스템 아키텍처

Group_49


Stacks

AI

  • EfficientNet b7
  • Scikit-learn(Random Forest)
  • cuda12.0 & cudnn 8.9.6
  • nvidia driver

IoT

  • raspberry pi zero 2 w
  • Python 3.11.2
  • FastAPI
  • websocket

Front-End

  • React
  • Recoil
  • Java Script
  • Type Script
  • Tailwind CSS
  • service-worker

Back-End

  • Java 11
  • Spring Boot 2.7.1
  • Spring Security
  • Spring Batch
  • Spring Data JPA
  • Query DSL
  • Gradle
  • FCM
  • Python 3.10
  • FastAPI 0.100.0
  • MariaDB 11.1.2
  • Redis 7.0.12

Infra

  • Ubuntu
  • Nginx
  • RabbitMQ
  • Docker
  • AWS EC2
  • AWS S3
  • GitLab Runner


Tools

  • JIRA
    • 매주 40시간의 Sprint를 진행하며 스케줄 관리
    • Agile한 방식으로 Sprint진행
  • GitLab
    • git-flow 전략 사용
    • 코드 리뷰 후 Merge
    • Squash Merge
    • 코드 버전 관리
    • GitLab Runner로 자동배포
  • Figma
    • 와이어프레임 및 디자인
  • Notion - 회의록 보관 - 스프린트 회고 진행 - 컨벤션 정리 - 기술 공유 및 이슈 정리 - 산출물, 공통 문서 관리


Project Outputs

Members