Spaces:
Sleeping
title: Deeplearning Board
emoji: π§
colorFrom: pink
colorTo: yellow
sdk: docker
pinned: false
ASL Letter Board
Teachable MachineμΌλ‘ νμ΅ν ASL μνλ²³ μ΄λ―Έμ§ λΆλ₯ λͺ¨λΈμ FastAPIμ React νλ©΄μ μ°κ²°ν νλ‘μ νΈμ λλ€. μ¬μ©μλ μ΄λ―Έμ§ μ λ‘λ λλ μΉμΊ 촬μμΌλ‘ ASL A-Z μνλ²³μ μμΈ‘νκ³ , μμΈ‘ κ²°κ³Όλ₯Ό κ²μνμ μ μ₯ν΄ νμ΅ κΈ°λ‘μ²λΌ κ΄λ¦¬ν μ μμ΅λλ€.
λ¨μ΄ νμ΅ νλ©΄μ νΉμ λ¨μ΄λ§ 보μ¬μ£Όλ λ°©μμμ λ²μ΄λ, μ¬μ©μκ° μνλ μμ΄ λ¨μ΄λ₯Ό μ λ ₯νλ©΄ κ° μνλ²³μ ASL μν μ΄λ―Έμ§λ₯Ό μμλλ‘ νμΈνλ λ°©μμΌλ‘ κ°μ νμ΅λλ€. λͺ¨λΈ νμ μ΄ μμ§ μμ ν μμ μ μ΄μ§ μμ μ μ κ³ λ €ν΄, νμ΅ νλ©΄μμλ μλ μ±μ λ³΄λ€ μΉμΊ μ κ±°μΈμ²λΌ μ¬μ©ν΄ μνκ³Ό μμ μ μ λͺ¨μμ μ§μ λΉκ΅νλ νλ¦μ μ§μ€νμ΅λλ€.
μ£Όμ κΈ°λ₯
- Teachable Machine Keras λͺ¨λΈ(
keras_model.h5) κΈ°λ° ASL A-Z μνλ²³ μ΄λ―Έμ§ λΆλ₯ labels.txtλ₯Ό μ΄μ©ν ν΄λμ€ λΌλ²¨ λ‘λ© λ° κ²μν νν° μμ±- μ΄λ―Έμ§ μ λ‘λ, λλκ·Έ μ€ λλ‘, μΉμΊ 촬μ λΆμ
- μμΈ‘ κ²°κ³Ό Top 5, μ λ’°λ, λͺ¨λΈ μ 보, μΆλ‘ μκ° νμ
- μμΈ‘ κ²°κ³Ό κ²μν μ μ₯, λͺ©λ‘ μ‘°ν, μμΈ μ‘°ν
- κ²μκΈ μ λͺ© μμ λ° μμ
- μνλ μμ΄ λ¨μ΄λ₯Ό μ λ ₯ν΄ ASL μνλ²³ μνμ μμλλ‘ νμ΅
- μΉμΊ κ±°μΈ λͺ¨λλ‘ μν μ¬μ§κ³Ό λ΄ μ λͺ¨μ λΉκ΅
- SQLite κΈ°λ° λ‘컬 λ°μ΄ν° μ μ₯
νλ©΄ ꡬμ±
![]() |
![]() |
![]() |
![]() |
![]() |
μ£Όμ κ²½λ‘:
/: ν νλ©΄/classify: ASL μνλ²³ λΆλ₯ νλ©΄/learning: λ¨μ΄ μ λ ₯ν ASL νμ΅ νλ©΄/board: μ μ₯λ νμ΅ κΈ°λ‘ κ²μν/post/{id}: κ²μκΈ μμΈ νλ©΄/webcam-test: μΉμΊ μ₯μΉ ν μ€νΈ νλ©΄
μ€ν λ°©λ²
Python ν¨ν€μ§λ₯Ό μ€μΉν©λλ€.
pip install -r requirements.txt
React νλ©΄μ λΉλν©λλ€.
cd frontend
npm install
npm run build
cd ..
FastAPI μλ²λ₯Ό μ€νν©λλ€.
python -m uvicorn backend.app.main:app --reload
λΈλΌμ°μ μμ μλ μ£Όμλ‘ μ μν©λλ€.
http://127.0.0.1:8000
μΉμΊ κΈ°λ₯μ λΈλΌμ°μ κΆνμ΄ νμν©λλ€. κΆν μμ²μ΄ λ¨λ©΄ νμ©ν΄μΌ 촬μ λΆμκ³Ό κ±°μΈ μ°μ΅μ μ¬μ©ν μ μμ΅λλ€.
κ°λ° μ€ React dev serverλ₯Ό λ°λ‘ μ€ννλ €λ©΄ μλ λͺ
λ Ήμ μ¬μ©ν©λλ€. Vite proxyκ° /api, /word-images, /static μμ²μ FastAPI μλ²λ‘ μ λ¬ν©λλ€.
cd frontend
npm run dev
λͺ¨λΈ νμΌ
Teachable Machineμμ TensorFlow/Keras νμμΌλ‘ λ΄λ³΄λΈ λͺ¨λΈ νμΌμ μλ μμΉμ λ‘λλ€.
ai/model/keras_model.h5
ai/model/labels.txt
labels.txtλ Teachable Machine κΈ°λ³Έ νμμ μ§μν©λλ€.
0 A
1 B
2 C
...
25 Z
μλΉμ€λ λΌλ²¨ νμΌμ μ½μ΄ μμΈ‘ κ²°κ³Ό μ΄λ¦κ³Ό κ²μν νν°λ₯Ό ꡬμ±ν©λλ€.
λ¨μ΄ νμ΅ μ΄λ―Έμ§
λ¨μ΄ νμ΅ νλ©΄μ docs/image/test_imageμ μλ A-Z ν
μ€νΈ μ΄λ―Έμ§λ₯Ό μνλ²³ μνλ‘ μ¬μ©ν©λλ€. νμΌλͺ
μ {μνλ²³}_test.jpg νμμ μ¬μ©ν©λλ€.
docs/image/test_image/
ββ A_test.jpg
ββ B_test.jpg
ββ C_test.jpg
...
ββ Z_test.jpg
FastAPIλ μ΄ ν΄λλ₯Ό /test-images κ²½λ‘λ‘ μ 곡ν©λλ€.
http://127.0.0.1:8000/test-images/A_test.jpg
http://127.0.0.1:8000/test-images/Z_test.jpg
νμ¬ μ΄λ―Έμ§λ ν μ€νΈμ©μ΄λΌ λ€μ μ΄λμΈ μ μμ΅λλ€. μ΄ν λ°κΈ°μ λ°°κ²½μ 보μ ν A-Z λν μ΄λ―Έμ§λ₯Ό κ°μ νμΌλͺ μΌλ‘ κ΅μ²΄νλ©΄ νλ©΄ λ‘μ§μ λ°κΎΈμ§ μκ³ νμ§μ κ°μ ν μ μμ΅λλ€.
API
μ΄λ―Έμ§ μμΈ‘
POST /api/v1/predict
Content-Type: multipart/form-data
μμ² νλ:
file: jpg, jpeg, png μ΄λ―Έμ§ νμΌ
μλ΅ μμ:
{
"success": true,
"filename": "sample.png",
"predicted_class": "A",
"confidence": 0.9821,
"top_k": [
{ "label": "A", "score": 0.9821 },
{ "label": "B", "score": 0.0121 }
],
"model": {
"name": "keras_model.h5",
"version": "v1"
},
"inference_time_ms": 123
}
λΌλ²¨ μ‘°ν
GET /api/v1/predict/labels
μλ΅ μμ:
{
"classes": ["A", "B", "C"],
"count": 3
}
κ²μκΈ
GET /api/v1/posts
GET /api/v1/posts?category=A
GET /api/v1/posts/{post_id}
POST /api/v1/posts
PUT /api/v1/posts/{post_id}
DELETE /api/v1/posts/{post_id}
κ²μκΈ μ μ₯ μμ² μμ:
{
"title": "ASL A λΆλ₯ κ²°κ³Ό",
"image_url": "data:image/png;base64,...",
"prediction": "A",
"confidence": 0.95
}
νλ‘μ νΈ κ΅¬μ‘°
Deeplearning_Board/
ββ ai/
β ββ model/
β ββ keras_model.h5
β ββ labels.txt
ββ backend/
β ββ app/
β ββ main.py
β ββ routers/
β β ββ pages.py
β β ββ post.py
β β ββ predict.py
β ββ services/
β ββ classifier_service.py
β ββ post_service.py
ββ data/
β ββ app.db
ββ docs/
β ββ image/
β ββ test_image/
β β ββ A_test.jpg
β β ββ ...
β ββ words/
β ββ LOVE/
β ββ APPLE/
β ββ manifest.json
ββ frontend/
β ββ src/
β β ββ api/client.js
β β ββ main.jsx
β β ββ style.css
β ββ static/
β β ββ css/style.css
β β ββ images/placeholder.jpg
β ββ index.html
β ββ package.json
β ββ package-lock.json
β ββ vite.config.js
ββ Dockerfile
ββ requirements.txt
ββ README.md
λ°°ν¬
μ΄ νλ‘μ νΈλ Hugging Face Spacesμ Docker νκ²½μ λ°°ν¬νμ΅λλ€. Docker λΉλλ React μ±μ λ¨Όμ λΉλν λ€, FastAPIκ° λΉλλ μ μ νμΌκ³Ό APIλ₯Ό νλμ μλ²μμ μ 곡ν©λλ€.
https://huggingface.co/spaces/eunzzang/Deeplearning_Board
μ£Όμ:
- λ¬΄λ£ Spaceλ μ¬μμ μ SQLite λ°μ΄ν°κ° μ΄κΈ°νλ μ μμ΅λλ€.
- μ₯κΈ° μ μ₯μ΄ νμνλ©΄ λ³λ λ°μ΄ν°λ² μ΄μ€λ persistent storageκ° νμν©λλ€.
- 첫 λΉλλ TensorFlow μ€μΉ λλ¬Έμ μκ°μ΄ 걸릴 μ μμ΅λλ€.
νμ¬ νκ³μ ν₯ν κ°μ
- νμ¬ λ¨μ΄ νμ΅ μνμ ν μ€νΈμ© μ΄λ―Έμ§λΌ λ°κΈ°μ λ°°κ²½ νμ§μ μΆκ°λ‘ 보μ ν μ μμ΅λλ€.
- μ΄λ―Έμ§ λΆλ₯ λͺ¨λΈμ μ‘°λͺ , λ°°κ²½, μ μμΉ, μΉ΄λ©λΌ κ°λμ μν₯μ λ°μ μ μμ΅λλ€.
- λ¨μ΄ νμ΅ νλ©΄μ μΉμΊ μ νμ¬ μλ μ±μ μ΄ μλ κ±°μΈ λΉκ΅ μ©λμ λλ€.
- λͺ¨λΈ μ νλκ° μΆ©λΆν κ°μ λλ©΄ κΈμλ³ μλ νμΈ κΈ°λ₯μ μΆκ°ν μ μμ΅λλ€.
- μλμ²΄ν¬ λͺ¨λλ μμ μ μΈ μμΈ‘ μ±λ₯κ³Ό νΈμΆ μ ν μ μ± μ΄ μ€λΉλ λ€ λ§μ§λ§ λ¨κ³μμ λμ νλ κ²μ΄ μ μ ν©λλ€.
μ°Έκ³ μ¬ν
- κ²μκΈ λ°μ΄ν°λ
data/app.dbμ μ μ₯λ©λλ€. data/app.dbλ μ€ν μ€ μλ μμ±λ©λλ€.- μΉμΊ μ
http://127.0.0.1λλ HTTPS νκ²½μμ μμ μ μΌλ‘ λμν©λλ€. - Teachable Machine λͺ¨λΈ νΈνμ μν΄
tf-kerasλ₯Ό μ¬μ©ν©λλ€. __pycache__μ μ€ν μ€ μμ± νμΌμ μ»€λ° λμμμ μ μΈνλ κ²μ κΆμ₯ν©λλ€.





