Attendance_System / README.md
HossamFakher's picture
Upload 42 files
c1ff2a6 verified
|
Raw
History Blame Contribute Delete
3.73 kB
# Face Attendance API
ู†ุธุงู… ุญุถูˆุฑ ุจุงู„ุชุนุฑู ุนู„ู‰ ุงู„ูˆุฌู‡ุŒ ู…ุจู†ูŠ ุนู„ู‰ **FastAPI** + **PostgreSQL** + **YOLOv8 (ูƒุดู ุงู„ูˆุฌู‡)** + **EdgeFace (embedding)**.
## ู‡ูŠูƒู„ ุงู„ู…ุดุฑูˆุน
```
face_attendance/
โ”œโ”€โ”€ app/
โ”‚ โ”œโ”€โ”€ main.py # ู†ู‚ุทุฉ ุชุดุบูŠู„ ุงู„ุชุทุจูŠู‚
โ”‚ โ”œโ”€โ”€ config.py # ุงู„ุฅุนุฏุงุฏุงุช (DB, threshold, ู…ุณุงุฑุงุช ุงู„ู…ูˆุฏูŠู„ุงุช)
โ”‚ โ”œโ”€โ”€ api/
โ”‚ โ”‚ โ”œโ”€โ”€ register.py # POST /register โ†’ ุชุณุฌูŠู„ ุดุฎุต ุฌุฏูŠุฏ
โ”‚ โ”‚ โ””โ”€โ”€ attendance.py # POST /attendance โ†’ ุชุณุฌูŠู„ ุงู„ุญุถูˆุฑ
โ”‚ โ”œโ”€โ”€ database/
โ”‚ โ”‚ โ”œโ”€โ”€ database.py # ุงุชุตุงู„ SQLAlchemy
โ”‚ โ”‚ โ””โ”€โ”€ models.py # ุฌุฏูˆู„ Person + ุฌุฏูˆู„ Attendance
โ”‚ โ”œโ”€โ”€ services/
โ”‚ โ”‚ โ”œโ”€โ”€ edgeface_model.py # ุชุนุฑูŠู ู…ูˆุฏูŠู„ EdgeFace (ุจุฏูˆู† ุชุนุฏูŠู„)
โ”‚ โ”‚ โ”œโ”€โ”€ embedding.py # ุชุญู…ูŠู„ EdgeFace ูˆุญุณุงุจ embedding
โ”‚ โ”‚ โ”œโ”€โ”€ face_detector.py # ุชุญู…ูŠู„ YOLO ูˆูƒุดู/ุชุชุจุน ุงู„ูˆุฌูˆู‡
โ”‚ โ”‚ โ””โ”€โ”€ recognition.py # ู…ู‚ุงุฑู†ุฉ embeddings ูˆุชุญุฏูŠุฏ ุงู„ุดุฎุต
โ”‚ โ”œโ”€โ”€ utils/
โ”‚ โ”‚ โ””โ”€โ”€ preprocess.py # ุชุฌู‡ูŠุฒ ุงู„ุตูˆุฑุฉ + cosine similarity
โ”‚ โ””โ”€โ”€ weights/ # ุญุท ู‡ู†ุง ู…ู„ูุงุช ุงู„ู…ูˆุฏูŠู„ุงุช (.pt)
โ”œโ”€โ”€ requirements.txt
โ””โ”€โ”€ .env.example
```
## 1) ุชุฌู‡ูŠุฒ ุงู„ุจูŠุฆุฉ
```bash
python -m venv venv
source venv/bin/activate # ูˆูŠู†ุฏูˆุฒ: venv\Scripts\activate
pip install -r requirements.txt
```
## 2) ุชุฌู‡ูŠุฒ PostgreSQL
```sql
CREATE DATABASE face_attendance;
```
ุงู†ุณุฎ `.env.example` ุฅู„ู‰ `.env` ูˆุนุฏู‘ู„ ุงู„ุจูŠุงู†ุงุช ุญุณุจ ุงู„ุณูŠุฑูุฑ ุจุชุงุนูƒ:
```bash
cp .env.example .env
```
ุงู„ุฌุฏุงูˆู„ (`person`, `attendance`) ู‡ุชุชุนู…ู„ ุชู„ู‚ุงุฆูŠู‹ุง ุฃูˆู„ ู…ุง ุงู„ุณูŠุฑูุฑ ูŠุดุชุบู„ุŒ ู…ููŠุด ุญุงุฌุฉ ุชุนู…ู„ู‡ุง ูŠุฏูˆูŠ.
## 3) ุญุท ู…ู„ูุงุช ุงู„ู…ูˆุฏูŠู„ุงุช
ุญุท ุงู„ู…ู„ููŠู† ุฏูˆู„ ุฌูˆู‡ `app/weights/`:
- `YoloV8_Face.pt`
- `edgeface_xxs_q.pt`
(ู„ูˆ ุงู„ุงุณู… ู…ุฎุชู„ู ุนู†ุฏูƒุŒ ุนุฏู‘ู„ู‡ ูู‰ `app/config.py`)
## 4) ุชุดุบูŠู„ ุงู„ุณูŠุฑูุฑ
```bash
uvicorn app.main:app --reload
```
ู‡ูŠูุชุญ ุนู„ู‰: `http://127.0.0.1:8000/docs` (Swagger UI ุชู„ู‚ุงุฆูŠ ู„ุชุฌุฑุจุฉ ุงู„ู€ APIs).
## 5) ุงุณุชุฎุฏุงู… ุงู„ู€ APIs
### ุชุณุฌูŠู„ ุดุฎุต ุฌุฏูŠุฏ
```bash
curl -X POST "http://127.0.0.1:8000/register/?name=Hossam"
```
ู‡ุชูุชุญ ุงู„ูƒุงู…ูŠุฑุง:
- ุงุถุบุท **c** ู„ู…ุง ูˆุฌู‡ูƒ ูŠุจู‚ู‰ ูˆุงุถุญ ูู‰ ุงู„ู…ุฑุจุน ุงู„ุฃุฎุถุฑ โ†’ ูŠุณุฌู„ ูู‰ ุงู„ุฏุงุชุงุจูŠุฒ.
- ุงุถุบุท **q** ู„ู„ุฅู„ุบุงุก.
### ุชุณุฌูŠู„ ุงู„ุญุถูˆุฑ (Real-time)
```bash
curl -X POST "http://127.0.0.1:8000/attendance/"
```
ู‡ุชูุชุญ ุงู„ูƒุงู…ูŠุฑุง ูˆุชุชุนุฑู ุนู„ู‰ ูƒู„ ุงู„ูˆุฌูˆู‡ ุงู„ู„ูŠ ู‚ุฏุงู…ู‡ุง ูˆุชุณุฌู„ู‡ู… ูู‰ ุฌุฏูˆู„ `attendance`
(ู…ุฑุฉ ูˆุงุญุฏุฉ ุจุณ ู„ูƒู„ ุดุฎุต ูู‰ ุงู„ูŠูˆู…). ุงุถุบุท **q** ู„ุฅู†ู‡ุงุก ุงู„ุฌู„ุณุฉ.
## ู…ู„ุงุญุธุงุช ู„ู„ุชุนุฏูŠู„ ู„ุงุญู‚ู‹ุง
- **threshold ุงู„ุชุนุฑู**: ุบูŠู‘ุฑู‡ ู…ู† `RECOGNITION_THRESHOLD` ูู‰ `app/config.py`.
- **ุฑู‚ู… ุงู„ูƒุงู…ูŠุฑุง**: ุบูŠู‘ุฑู‡ ู…ู† `CAMERA_INDEX` ูู‰ ู†ูุณ ุงู„ู…ู„ู (ู„ูˆ ุนู†ุฏูƒ ุฃูƒุชุฑ ู…ู† ูƒุงู…ูŠุฑุง).
- **ุชุณุฌูŠู„ ุดุฎุต ู…ู† ุตูˆุฑุฉ ุจุฏู„ ุงู„ูƒุงู…ูŠุฑุง ู…ุจุงุดุฑุฉ**: ุนุฏู‘ู„ `app/api/register.py` ูู‚ุทุŒ ุจุงู‚ูŠ ุงู„ู…ู„ูุงุช ู…ุด ู‡ุชุชุฃุซุฑ.
- **ุงู„ุชุฑู‚ูŠุฉ ุฅู„ู‰ pgvector** (ุจุญุซ ุฃุณุฑุน ู„ู„ู€ embeddings ุนู†ุฏ ุฒูŠุงุฏุฉ ุนุฏุฏ ุงู„ุฃุดุฎุงุต): ุบูŠู‘ุฑ ู†ูˆุน ุนู…ูˆุฏ `embedding` ูู‰ `app/database/models.py` ู…ู† `ARRAY(Float)` ุฅู„ู‰ `Vector(512)` ุจุนุฏ ุชูุนูŠู„ extension `pgvector` ูู‰ ุจูˆุณุชุฌุฑูŠุณ.