Skip to content

hula-la/chukka

Repository files navigation

CHUKKA (좀을 배우고 즐기고 μ†Œν†΅ν•  수 μžˆλŠ” μΆ€ ν”Œλž«νΌ)

πŸ“† ν”„λ‘œμ νŠΈ μ§„ν–‰κΈ°κ°„ : 2022/07/18 ~ 2022/08/19

🀠 FE: μœ€ν˜Έμ€€, 홍성λͺ©

😼 BE: κΉ€μˆ˜μ§„(νŒ€μž₯), κΉ€λŒ€μ˜, μ΄μ—°μ˜, μ΅œμ§€μ›

πŸ“½ ν”„λ‘œμ νŠΈ UCC μ˜μƒ λ³΄λŸ¬κ°€κΈ°

image

γ€€

πŸ‘­ μ†Œκ°œ

좀을 μ’‹μ•„ν•˜μ§€λ§Œ λͺΈμ΄ 따라주지 μ•ŠλŠ” 'λšλ”±μ΄'듀을 μœ„ν•œ, μΆ€ ν”Œλž«νΌ <CHUKKA>

μΆ”κΉŒ (CHUKKA) ν”„λ‘œμ νŠΈλŠ”

좀을 μ‹€μ‹œκ°„/κ°•μ˜λ‘œ 배울 수 μžˆλŠ” 배움 μ„œλΉ„μŠ€,

μ¦κΈ°λ©΄μ„œ μΆ€ μ‹€λ ₯을 확인할 수 μžˆλŠ” κ²Œμž„ μ„œλΉ„μŠ€,

짧은 μΆ€ μ˜μƒμœΌλ‘œ μ‚¬λžŒλ“€κ³Ό μ†Œν†΅ν•  수 μžˆλŠ” 숏폼 μ„œλΉ„μŠ€λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

γ€€

πŸ”Ž CHUKKA μ„œλΉ„μŠ€ ν™”λ©΄

κ°•μ˜ νŽ˜μ΄μ§€

  • κ°•μ˜ λͺ©λ‘

    image

  • κ°•μ˜ 상세

    image

  • 라이브 κ°•μ˜ : WebRTC κΈ°μˆ μ„ ν†΅ν•΄μ„œ 강사 ν™”λ©΄κ³Ό μžμ‹ μ˜ 화면을 λΉ„κ΅ν•˜λ©° 좀을 배울 수 μžˆμŠ΅λ‹ˆλ‹€.

    image

  • λ…Ήν™” κ°•μ˜: λ…Ήν™” κ°•μ˜λ₯Ό 듀을 수 있고, μ‚¬μš©μžμ˜ 카메라λ₯Ό on/off ν•˜λ©° 좀을 배울 수 μžˆμŠ΅λ‹ˆλ‹€.

    image


κ²Œμž„ νŽ˜μ΄μ§€

  • μ‹œμž‘ ν™”λ©΄

    image

  • κ²Œμž„ ν”Œλ ˆμ΄: μ€‘κ°„μ˜ μ •λ‹΅ μ˜μƒκ³Ό μ‚¬μš©μžμ˜ λ™μž‘μ„ λΉ„κ΅ν•˜μ—¬, μ μˆ˜κ°€ μ±…μ •λ©λ‹ˆλ‹€.

    image


μŠ€λ‚΅μŠ€ νŽ˜μ΄μ§€

  • μŠ€λ‚΅μŠ€ λͺ©λ‘: λ‹€λ₯Έ νšŒμ›λ“€μ˜ μŠ€λ‚΅μŠ€ (짧은 λ™μ˜μƒ) 듀을 λ³Ό 수 있으며, 일주일 λ™μ•ˆ κ°€μž₯ 많이 μ—…λ‘œλ“œ 된 ν•΄μ‹œνƒœκ·Έλ“€μ„ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

    image

  • μŠ€λ‚΅μŠ€ 등둝: μ›ν•˜λŠ” λ…Έλž˜λ‘œ λ°°κ²½ μŒμ•…μœΌλ‘œ μ„€μ •ν•˜μ—¬ μ˜μƒμ„ λ…Ήν™” 및 μ—…λ‘œλ“œλ₯Ό ν•  수 있고, 미리 λ…Ήν™”λœ μ˜μƒμ„ μ—…λ‘œλ“œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

    image


λ§ˆμ΄νŽ˜μ΄μ§€

  • μžμ‹ μ˜ ν”„λ‘œν•„μ„ λ³Ό 수 있으며, κ°•μ˜/κ²Œμž„/μŠ€λ‚΅μŠ€λ₯Ό 톡해 얻은 κ²½ν—˜μΉ˜λ₯Ό λ§€λ‹¬μ˜ ν˜•νƒœλ‘œ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.image

κ΄€λ¦¬μžνŽ˜μ΄μ§€

  • νšŒμ› 관리, 강사 관리, κ°•μ˜ 관리λ₯Ό ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

    image

γ€€

βš™οΈ 개발 ν™˜κ²½

  • OS

    • Windows 10
  • Front

    • HTML5, CSS3, JavaScript(ES6)
    • Node.js 16.16.0
    • React 17.0.2
  • Back

    • Spring Boot 2.7.2
    • Spring Framework 5.3.22
    • Python 3.7
    • FastAPI 0.79
    • jdk 1.8
  • DB

    • MySQL 8.0.29
  • WebRTc

    • openVidu
  • IDE

    • vscode 1.70
    • IntelliJ 2022.1.3
  • CI/CD
    • Amazon EC2 - Ubuntu 20.04
    • Nginx - 1.18.0
  • ν˜‘μ—…λ„κ΅¬

    • Git, Jira, Notion

γ€€

🧩 μ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜

image

γ€€

🌈 기술 특이점

  • 코사인 μœ μ‚¬λ„ 및 tensorFlowλ₯Ό μ΄μš©ν•œ μžμ„Έ μœ μ‚¬λ„ 계산 μ˜€ν”ˆμ†ŒμŠ€λ₯Ό ν™œμš©ν•œ κ²Œμž„ μ„œλΉ„μŠ€ μ œμž‘
  • μ‹€μ‹œκ°„ λ™μž‘ 츑정을 μœ„ν•œ μ›Ήμ†ŒμΌ“ 톡신 & 정확도 κ°œμ„ μ„ μœ„ν•œ μ˜μƒμ˜ FPS μ „μ²˜λ¦¬ 및 μ›Ήμ†ŒμΌ“ 동기화
  • WebRTCλ₯Ό μ΄μš©ν•œ μ‹€μ‹œκ°„ κ°•μ˜ μ„œλΉ„μŠ€

γ€€

πŸ“„ Manual

1. κΉƒ 클둠

πŸ’‘ git에 μžˆλŠ” ν”„λ‘œμ νŠΈμ˜ source codeλ₯Ό ν΄λ‘ λ°›μŠ΅λ‹ˆλ‹€
# git clone
$ git clone https://github.com/hula-la/chukka.git
$ cd chukka

2. μ„€μΉ˜

πŸ’‘ ν”„λ‘œμ νŠΈ 싀행을 μœ„ν•΄ 개발 ν™˜κ²½μ„ κ΅¬μΆ•ν•©λ‹ˆλ‹€.
  1. Node.js 16.16.0

  2. jdk 1.8

  3. Python 3.7

3. λ°±μ—”λ“œ λΉŒλ“œ

# 1. 디렉토리 이동
$ cd backend-java/
# 2. μ•„λž˜μ˜ application-hide.yml 양식 μ°Έκ³ ν•΄μ„œ μΆ”κ°€
# 3. λΉŒλ“œ
$ ./gradlew build
$ java -jar build/libs/ssafy-web-project-1.0-SNAPSHOT.jar
  • src/resources 에 application-hide.yml 생성 (**인 λΆ€λΆ„ μ±„μ›Œμ„œ)
spring:
  servlet:
    multipart:
      max-file-size: 50MB
      max-request-size: 50MB
  mail:
    host: smtp.naver.com
    port: 465
    username: **********
    password: ****
    properties:
      mail.smtp.auth: true
      mail.smtp.ssl.enable: true
      mail.smtp.ssl.trust: smtp.naver.com
  jpa:
    hibernate:
      naming:
        implicit-strategy: org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
        physical-strategy: org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
      ddl-auto: update
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MySQL57Dialect
        format_sql: true
    show-sql: false
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    hikari:
      password: ******
      username: ******
    url: jdbc:mysql://localhost:3306/***?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Seoul&zeroDateTimeBehavior=convertToNull&rewriteBatchedStatements=true
  data:
    web:
      pageable:
        one-indexed-parameters: 'true'
  mvc:
    throw-exception-if-no-handler-found: 'true'
  devtools:
    livereload:
      enabled: 'true'
  resources:
    static-locations: classpath:/dist/
    add-mappings: 'false'
cloud:
  aws:
    s3:
      bucket: *****
    stack:
      auto: false
    region:
      static: ap-northeast-2
    credentials:
      access-key: ********
      secret-key: ************
      instanceProfile: true

4. ν”„λ‘ νŠΈμ—”λ“œ λΉŒλ“œ

πŸ’‘ λ‹€μš΄λ°›μ€ source code 둜 build 폴더λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

# 1. 디렉토리 이동
$ cd frontend/

# 2. 라이브러리 μ„€μΉ˜
$ npm i

# 3. μ•„λž˜μ˜ .env 파일 양식 μ°Έκ³ ν•΄μ„œ μΆ”κ°€
# 4. μ‹€ν–‰
$ npm build
  • /frontend/ ν•˜μœ„μ— .env 파일 생성

    # .env
    REACT_APP_S3_URL_DANCE = 'https://***.s3.ap-northeast-2.amazonaws.com'
    REACT_APP_S3_URL_CHUKKA = 'https://***.s3.ap-northeast-2.amazonaws.com'

5. FastAPI λΉŒλ“œ

  • 가상 ν™˜κ²½ 생성 & ν™œμ„±ν™”
# venv λΌλŠ” μ΄λ¦„μ˜ κ°€μƒν™˜κ²½ 생성
$ python -m venv venv

# κ°€μƒν™˜κ²½ ν™œμ„±ν™”
$ source venv/Scripts/activate
  • fastAPI 싀행을 μœ„ν•œ 라이브러리 μ„€μΉ˜
$ cd backend-fastAPI/

# FastAPI
$ pip install fastapi uvicorn

# gunicorn: λ©€ν‹° μŠ€λ ˆλ“œ (λ‹€μˆ˜μ˜ μ‚¬μš©μžκ°€ μ‚¬μš©ν•  수 있기 λ•Œλ¬Έμ—, μ„œλ²„μ—μ„œ μ‚¬μš©)
$ pip install gunicorn # λ‘œμ»¬μ—μ„  μ„€μΉ˜ λΆˆν•„μš”
  • λͺ¨μ…˜μΈμ‹μ— ν•„μš”ν•œ 라이브러리 μ„€μΉ˜ 및 ν™˜κ²½ ꡬ좕
# ν•„μš” 라이브러리 μ„€μΉ˜
$ pip install -r requirements.txt

# μœ„ λͺ…λ ΉμœΌλ‘œ 라이브러리λ₯Ό μ„€μΉ˜ν•΄λ„ λͺ¨λ“ˆ μ—λŸ¬κ°€ λ°œμƒν•œλ‹€λ©΄
$ pip install swig
$ pip install pandas
$ pip install tf-slim
$ pip install sklearn
$ pip install request
$ pip install opencv-python
$ pip install tensorflow
$ pip install tqdm
$ pip install scipy
$ pip install psutil
$ pip install pycocotools

# swig μ„€μ •
$ cd tf_pose/pafprocess
$ swig -python -c++ pafprocess.i && python setup.py build_ext --inplace 

# tf_slim μ„€μΉ˜
$ cd ../../
$ git clone https://github.com/google-research/tf-slim.git

# tensorflow κ·Έλž˜ν”„ 파일 λ‹€μš΄
$ cd models/graph/cmu
$ bash download.sh
$ cd ../../..
  • μ‹€ν–‰
$ uvicorn prac2_main:app --reload

About

πŸ’ƒ 좀을 배우고 즐기고 μ†Œν†΅ν•  수 μžˆλŠ” μΆ€ ν”Œλž«νΌ πŸ’ƒ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors