--- title: MuscleCare Train AI emoji: πŸ”₯ colorFrom: green colorTo: purple sdk: docker pinned: false license: apache-2.0 --- # MuscleCare Train AI CNN + GRU 기반 근윑 ν”Όλ‘œλ„ 예츑 λͺ¨λΈ μžλ™ ν•™μŠ΅ μ‹œμŠ€ν…œ ## πŸš€ μ£Όμš” κΈ°λŠ₯ - **μžλ™ 데이터 λ‘œλ”©**: Hugging Face `Merry99/MuscleCare-DataSet` 데이터셋 μžλ™ λ‘œλ“œ - **CNN + GRU λͺ¨λΈ**: μ‹œν€€μŠ€ λ°μ΄ν„°μ—μ„œ ν”Όλ‘œλ„ 예츑 - **μžλ™ ν•™μŠ΅ μŠ€μΌ€μ€„λ§**: λ§€μ£Ό μΌμš”μΌ μžμ • μžλ™ λͺ¨λΈ μ—…λ°μ΄νŠΈ - **쀑볡 λ°©μ§€**: 이미 ν•™μŠ΅λœ μ„Έμ…˜ 데이터 μžλ™ μ œμ™Έ - **TFLite λ³€ν™˜**: λͺ¨λ°”일 배포λ₯Ό μœ„ν•œ TFLite λͺ¨λΈ μžλ™ 생성 (ν•„μˆ˜) ## πŸ“¦ μ‹€ν–‰ 방법 ### Docker μ‚¬μš© (ꢌμž₯) ```bash # 이미지 λΉŒλ“œ docker build -t musclecare-train-ai . # μ‹€ν–‰ docker run musclecare-train-ai ``` ### 둜컬 μ‹€ν–‰ (Python 3.10 ν•„μš”) ```bash # Python 3.10 확인 python3.10 --version # νŒ¨ν‚€μ§€ μ„€μΉ˜ python3.10 -m pip install -r requirements.txt # μ‹€ν–‰ python3.10 start.py ``` λ˜λŠ” 슀크립트 μ‚¬μš©: ```bash ./run_local.sh ``` ## πŸ”„ 전체 ν”Œλ‘œμš° 1. **데이터 λ‘œλ“œ**: `load_dataset.py`둜 Hugging Face 데이터셋 λ‘œλ“œ 2. **λͺ¨λΈ ν•™μŠ΅**: `train_e2e.py`둜 CNN + GRU λͺ¨λΈ ν•™μŠ΅ 3. **λͺ¨λΈ μ €μž₯**: ν•™μŠ΅λœ λͺ¨λΈμ„ `./model/fatigue_net_v2.pt`에 μ €μž₯ (PyTorch state_dict ν˜•μ‹) 4. **TFLite λ³€ν™˜**: `convert_tflite.py`둜 TFLite λͺ¨λΈ 생성 β†’ `./model/fatigue_net_v2.tflite` ## πŸ“ 파일 ꡬ쑰 - `load_dataset.py`: Hugging Face 데이터셋 λ‘œλ“œ - `train_e2e.py`: CNN + GRU λͺ¨λΈ ν•™μŠ΅ (PyTorch state_dict ν˜•μ‹μœΌλ‘œ μ €μž₯) - `convert_tflite.py`: PyTorch β†’ TFLite λ³€ν™˜ - `train_scheduler.py`: μžλ™ ν•™μŠ΅ μŠ€μΌ€μ€„λŸ¬ - `start.py`: μžλ™ ν•™μŠ΅ μŠ€μΌ€μ€„λŸ¬ μ‹œμž‘ 슀크립트 - `app.py`: FastAPI μ• ν”Œλ¦¬μΌ€μ΄μ…˜ (λ‚˜μ€‘μ— κ΅¬ν˜„ μ˜ˆμ •) ## πŸ”§ μš”κ΅¬μ‚¬ν•­ - Python 3.10 (TFLite λ³€ν™˜ ν•„μˆ˜) - PyTorch 2.0+ - ONNX, ONNX-TF, TensorFlow (TFLite λ³€ν™˜μš©) ## πŸ“ λͺ¨λΈ μ €μž₯ μœ„μΉ˜ - PyTorch λͺ¨λΈ: `./model/fatigue_net_v2.pt` (state_dict ν˜•μ‹) - **TFLite λͺ¨λΈ: `./model/fatigue_net_v2.tflite`** (λͺ¨λ°”일 배포용, ν•„μˆ˜) - ν•™μŠ΅ μƒνƒœ: `./model/training_state.json` ## ⚠️ μ€‘μš” 사항 - **TFLite λ³€ν™˜μ€ ν•„μˆ˜μž…λ‹ˆλ‹€** (λͺ¨λ°”일 λ””λ°”μ΄μŠ€μ—μ„œ μ‹€ν–‰ ν•„μš”) - λͺ¨λΈμ€ λ°˜λ“œμ‹œ PyTorch state_dict ν˜•μ‹μœΌλ‘œ μ €μž₯λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€ (TorchScript ν˜•μ‹ λΆˆκ°€) - Python 3.10 이상이 ν•„μš”ν•©λ‹ˆλ‹€ (TFLite λ³€ν™˜ νŒ¨ν‚€μ§€ ν˜Έν™˜μ„±) ## πŸ”„ μžλ™ ν•™μŠ΅ μŠ€μΌ€μ€„ - μ‹€ν–‰ μ‹œκ°„: λ§€μ£Ό μΌμš”μΌ μžμ • (00:00) - 쀑볡 λ°©μ§€: `training_state.json`에 μ €μž₯된 μ„Έμ…˜ IDλŠ” μžλ™ μ œμ™Έ - λͺ¨λΈ 버전: μžλ™ 증가 - TFLite λ³€ν™˜: ν•™μŠ΅ ν›„ μžλ™ μˆ˜ν–‰