Skip to content
@MA-Dot-COM

MA-Dot-COM

SorHive 프로젝트

공간을 통해 일상을 연결하는 플랫폼
진행 기간: 2022.10.05 ~ 2022.12.01

Repositories


주요기능

  • 자신의 일상을 담을 수 있는 페이지

Built With

Unity(XR) 기술과 사용 이유
AI 기술과 사용 이유

  • 공간 분류모델 네이버, 구글에서 술집, 노래방, 카페등 공간에 대한 이미지 크롤링후 전처리, 약 12,000개의 데이터셋을 Resnet50모델에 전이학습하여 사용자가 일상의 사진을 올리면 분석하여 그와 맞는 공간에 대한 카테고리를 분류해 준다.

  • 아바타 생성모델 사용자의 얼굴 사진으로 아바타를 생성해주는 시스템을 설계하고 구현, 데이터 셋은 https://www.kaggle.com/datasets/niten19/face-shape-dataset를 사용한다. 얼굴이 이미 나누어져 있는 kaggle의 Face Shape Dataset 중 약 2500개를 사용해 눈모양과 눈썹모양을 라벨링 한 후, yolo5로 학습시켰다. yolo5의 detect.py와 data.yaml 수정해 얼굴형, 눈모양, 눈썹모양 별로 모델을 만든 뒤, 각 클래스마다 높은 값을 뽑아내 사용자의 얼굴사진을 분석해 아바타를 만든다.

  • Insightface의 Detection모델 공간분류 모델에 사용될 사용자들의 이미지 데이터의 초상권 보호를 위해 Insightface의 Detection모델인 RetinaFace-10GF를 사용하여 얼굴인식 후 모자이크 처리를 해주는 모델을 만들었다. 모자이크 처리한 데이터셋으로 공간분류 모델을 학습한 결과 성능의 차이는 없었고, 이후에도 사용자들에게 사진을 받으면 Insightface의 Detection모델을 거쳐 모자이크 처리되어 초상권이 보호된 데이터셋으로 활용할 계획이다.

  • 추천 시스템 사용자 기반 협업 필터링을 통해 사용자 간 친밀도를 측정해 잠재적인 관계가 가깝지만 아직 팔로워 하지 않은 사용자를 추천해 주는 시스템을 설계하고 구현. 친구 친밀도 도출 시스템은 사용자에게 얼마나 관심이 많은지 클릭해서 본 빈도(룸인, 라이핑, 채팅 등)등 사용자 행동 양식을 수집하여 얼마나 친밀한지 판별하고, 이를 토대로 사용자에 대해 친밀도 순위를 결정한다.

Backend(NET) 기술과 사용 이유

핵심 프레임워크

  • SpringBoot
    • 자바 기반의 웹 어플리케이션을 만들 수 있는 프레임워크인 스프링을 더 쉽게 사용할 수 있어서 사용

Object-relational mapping

  • JPA
    • 객체와 관계형 데이터베이스를 매핑하여 데이터베이스에 대한 의존성을 줄이고 생산성을 높이고 유지보수 향상, 성능 등의 장점 때문에 사용

데이터 저장

  • AWS RDS - MySQL
    • 정규화를 통해 데이터의 일관성과 무결성을 확보하기 위해 사용

대량 데이터 저장

  • MongoDB - Atlas
    • 방대한 데이터 처리, 수정 필요없는 데이터들만 저장하여 빠르게 조회가 가능해서 사용

파일 저장

  • AWS S3
    • 이미지 저장, 호스팅, 뛰어난 보안성 때문에 사용

로드밸런싱 및 CICD

  • AWS Ec2

    • 클라우드 환경의 가상 서버를 구축하기 위해 사용
  • AWS ElasticBeanstalk

    • 서버에서 개발된 웹 애플리케이션 및 서비스를 간단하게 배포하려고 사용한 서비스
    • 로드밸런싱, 오토스케일링 기능 함께 사용
  • AWS Route53

    • ACM 과 ElasticBeanstalk 를 연결하여 사용
    • Domain은 sorhive.shop 을 통해 접속 가능
  • AWS Certificate Manager

    • 로드밸런서에 SSL 인증서를 연결하여 사용
    • HTTP에 SSL 인증서를 사용하여 더 안전한 보안용 프로토콜인 HTTPS를 통해 더 안전한 SNS를 위해 사용

회원 접근 권한 및 토큰 발급

  • Spring Security
    • 스프링 어플리케이션의 보안을 담당하는 스프링 하위 프레임 워크이고, 인증과 권한 부분을 담당
    • JsonWebToken과 함께 사용하여 보안성은 떨어지지만 토큰 기반으로 접근을 통제

데이터 일괄 처리

  • Spring Batch
    • 스프링 어플리케이션에서 일괄적인 데이터 처리를 담당하는 스프링 하위 프레임워크
    • 메인 서버의 부하를 줄이기 위해 사용
    • 라이핑(스토리)의 특성인 24시간 이후 안보이게 하는 기능
    • 추천배열(AI에 회원 * 회원에 대한 데이터를 통해 받아온 코사인 유사도 기반 추천 정렬)을 받아오고 몽고 DB에 저장하는 기능 2 가지를 위해서 사용

이메일 처리


MLOps

MLOps

이미지 → image classification → 공간

(사진)XR → NET → AI(분석) → NET → (공간)XR

Untitled (1) Untitled

융합 구조도

융합구조도

테스트

Jmeter 이용 3만건 가량의 POST 테스트 결과
  • AWS Cloud Watch 그래프 부하테스트 결과 부하테스트 결과2
Android 디버그 브리지(ADB)의 vmstat 출력값 이용 결과
  • 실제 사용하던 폰으로 해서 튀는 부분이 일부 존재 한다.
  • 백그라운드 앱 종료 후 10분간 대기
  • 이후 앱 구동 & 로그인 후 50분 대기
  • 이후 앱 종료 후 10분간 대기 한 그래프 성능테스트 성능테스트2

Author

Popular repositories Loading

  1. MA-Dot-COM-Back-End MA-Dot-COM-Back-End Public

    Java 1

  2. AI-space_classification AI-space_classification Public

    AI관련 레포지토리

    Python

  3. AI-friendfeed_recommend AI-friendfeed_recommend Public

    친구 피드

    Python

  4. AI-avatar_generation AI-avatar_generation Public

    아바타 생성 시 사진을 통해 만드는 모델

    Python

  5. MA-Dot-COM-Lifing-Batch MA-Dot-COM-Lifing-Batch Public

    Java

  6. MA-Dot-COM-Recommend-Batch MA-Dot-COM-Recommend-Batch Public

    Java

Repositories

Showing 8 of 8 repositories

Top languages

Loading…

Most used topics

Loading…