File size: 2,706 Bytes
2b83ee8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
---
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 λ³€ν™˜: ν•™μŠ΅ ν›„ μžλ™ μˆ˜ν–‰