ค้นหารูปการแข่งด้วยใบหน้าตัวเอง (AI Face Recognition)
UI ของฟีเจอร์นี้ออกแบบและ deploy แล้ว — ผู้ใช้สามารถเข้าหน้า photo_search.php?id=N ดูแกลเลอรีรูปได้ แต่ปุ่ม "อัปโหลด selfie" ยังถูกปิดอยู่จนกว่า Face API Server บน Proxmox จะติดตั้งเสร็จ
ผู้เล่นต้องการดูรูปของตัวเองในรายการแข่ง — แทนที่จะต้อง scroll หารูปทั้งหมด ระบบจะให้ อัปโหลด selfie 1 รูป → AI หารูปที่มีใบหน้าใกล้เคียงให้ทั้งหมด
| Component | เทคโนโลยี |
|---|---|
| Face Detection | InsightFace (RetinaFace + ArcFace) |
| Embedding | 512-dim vector ต่อใบหน้า |
| Similarity | Cosine similarity (threshold ~0.5) |
| Backend | Python Flask API บน Ubuntu 22.04 |
| Hardware | NVIDIA RTX 3060 (Proxmox passthrough) |
หน้าจอที่ออกแบบไว้ตาม photo_search.php:
รูปที่ 7.2 — UI ปัจจุบัน (Backend ปิด) สร้างจากการอ่านโค้ด photo_search.php
match_detail.php?id=N → tab "รูปภาพ"photo_search.phpBrowser VM1 (PHP) VM2 (Face API) GPU │ │ │ │ ├── POST selfie ─────>│ │ │ │ ├── proxy w/ tournament ─>│ │ │ │ ├── detect face ──>│ │ │ │<── embedding ────│ RTX 3060 │ │ │ (512-d vector) │ │ │ │ │ │ │ ├── compare with ─>│ │ │ │ all photo emb. │ │ │ │<── ranked list ──│ │ │<── JSON results ────────│ │ │<── HTML render ─────│ │ │
POST http://192.168.1.102:5000/api/face/search
Content-Type: multipart/form-data
selfie: <file>
tournament_id: 3
threshold: 0.5
Response:
{
"status": "ok",
"matches": [
{"photo_id": 142, "filename": "img001.jpg", "similarity": 0.87},
{"photo_id": 156, "filename": "img089.jpg", "similarity": 0.74},
...
],
"processing_time_ms": 2340
}
อ่านเอกสารเต็มที่ Proxmox_Setup.md
| ส่วน | รายละเอียด |
|---|---|
| CPU | AMD Ryzen 9 5900X (12C/24T) |
| RAM | 48 GB |
| GPU #1 | NVIDIA RTX 3060 (passthrough → VM2) |
| GPU #2 | Quadro P1000 (host) |
| VM | หน้าที่ | vCPU | RAM | Disk | IP |
|---|---|---|---|---|---|
| VM1 | Web (Apache+PHP+MySQL+LINE) | 4 | 6 GB | 50 GB | 192.168.1.101 |
| VM2 | Face Detection API | 8 | 16 GB | 80 GB | 192.168.1.102 |
pip install insightface flask onnxruntime-gpu opencv-python/api/face/searchprivacy_photo.php)ระบบ search ได้เฉพาะ รูปของรายการที่ผู้ใช้สมัครเข้าแข่งเท่านั้น — ไม่ใช่รูปทั้งระบบ และไม่อนุญาตให้ admin export embeddings ออกนอก server