README.md

8.95 KB
14/07/2025 14:45
MD
# 🔍 Face Recognition Web Application

เว็บแอปพลิเคชันสำหรับจดจำใบหน้าด้วย AI โดยใช้ Face-API.js เปรียบเทียบใบหน้าระหว่างรูปภาพต้นฉบับกับกล้องเว็บแคมแบบเรียลไทม์

**ผู้พัฒนา:** Goragod Wiriya

---

## ✨ คุณสมบัติ

- 🖼️ **อัปโหลดรูปภาพต้นฉบับ** - รองรับไฟล์ JPG, PNG, GIF
- 🤖 **AI Face Detection** - ตรวจจับใบหน้าอัตโนมัติด้วย TinyFaceDetector
- ✂️ **Auto Crop Face** - ตัดเฉพาะส่วนใบหน้าแสดงผลให้เห็นชัดเจน
- 📹 **Real-time Comparison** - เปรียบเทียบใบหน้าจากกล้องแบบเรียลไทม์
- 📊 **Similarity Score** - แสดงคะแนนความคล้ายคลึงเป็นเปอร์เซ็นต์
- 🎯 **Face Bounding Box** - วาดกรอบรอบใบหน้าที่ตรวจพบ
- 📱 **Responsive Design** - รองรับทั้งเดสก์ท็อปและมือถือ
- 🎨 **Modern UI** - ดีไซน์สไตล์ Minimal Glass Morphism

---

## 🚀 การติดตั้งและใช้งาน

### ข้อกำหนดระบบ
- เว็บเบราว์เซอร์ที่รองรับ WebRTC (Chrome, Firefox, Safari, Edge)
- การเชื่อมต่ออินเทอร์เน็ต (สำหรับโหลด AI Models)
- กล้องเว็บแคม
- Web Server (Apache, Nginx, หรือ Local Server)

### วิธีติดตั้ง

1. **ดาวน์โหลดโปรเจ็ค**

2. **วางไฟล์ในเว็บเซิร์ฟเวอร์**
   ```
   /var/www/html/face-recognition/
   ├── index.html
   ├── script.js
   └── README.md
   ```

3. **เปิดใช้งาน**
   - เปิดเบราว์เซอร์ไปที่ `http://localhost/face-recognition/`
   - อนุญาตการใช้งานกล้องเมื่อมีการแจ้งเตือน

---

## 🎯 วิธีใช้งาน

### ขั้นตอนที่ 1: อัปโหลดรูปภาพต้นฉบับ
1. คลิกปุ่ม **"เลือกรูปภาพ"**
2. เลือกไฟล์รูปภาพที่มีใบหน้าชัดเจน
3. ระบบจะตรวจจับใบหน้าและตัดเฉพาะส่วนหน้าแสดงผล
4. รอข้อความ **"วิเคราะห์ภาพต้นฉบับสำเร็จ!"**

### ขั้นตอนที่ 2: เปิดกล้องเปรียบเทียบ
1. ระบบจะเปิดกล้องอัตโนมัติ
2. มองไปที่กล้อง เฟรมจะแสดงผลการเปรียบเทียบทันที
3. ดูผลลัพธ์ในส่วน **"ผลการตรวจสอบ"**

### การอ่านผลลัพธ์
- **🟢 ตรงกัน!** - ใบหน้าตรงกับรูปต้นฉบับ (similarity > 50%)
- **🔴 ไม่ตรงกัน** - ใบหน้าไม่ตรงกับรูปต้นฉบับ (similarity ≤ 50%)
- **Similarity Score** - คะแนนความคล้ายคลึง (0-100%)

---

## 🛠️ เทคโนโลยีที่ใช้

### Frontend
- **HTML5** - โครงสร้างหน้าเว็บ
- **CSS3** - ดีไซน์ Responsive และ Glass Morphism Effect
- **Vanilla JavaScript** - ตัวจัดการเหตุการณ์และ API

### AI/ML Libraries
- **[Face-API.js v0.22.2](https://github.com/justadudewhohacks/face-api.js)** - ไลบรารี Face Recognition
- **TensorFlow.js** - Backend สำหรับ Machine Learning

### AI Models (โหลดจาก GitHub)
- **TinyFaceDetector** - ตรวจจับใบหน้า (เร็ว, แม่นยำปานกลาง)
- **FaceLandmark68Net** - จุดสำคัญบนใบหน้า 68 จุด
- **FaceRecognitionNet** - สร้าง Face Descriptor สำหรับเปรียบเทียบ

### Web APIs
- **MediaDevices.getUserMedia()** - เข้าถึงกล้องเว็บแคม
- **Canvas API** - ประมวลผลรูปภาพและวาดกรอบ
- **FileReader API** - อ่านไฟล์รูปภาพ

---

## 📋 โครงสร้างไฟล์

```
face-recognition/
├── index.html          # หน้าเว็บหลัก
├── script.js           # JavaScript สำหรับ Face Recognition
└── README.md           # เอกสารนี้
```

### index.html
- โครงสร้าง HTML แบบ Responsive Grid Layout
- CSS Glass Morphism และ Gradient Background
- การเชื่อมต่อ Face-API.js จาก CDN

### script.js
- ฟังก์ชันโหลด AI Models จาก GitHub
- การประมวลผลรูปภาพและ Face Detection
- Real-time Face Comparison และการแสดงผล
- การจัดการ Canvas และ Bounding Box

---

## ⚙️ การปรับแต่ง

### ปรับค่าความแม่นยำ
```javascript
const threshold = 0.5; // ค่าเกณฑ์ (0-1)
// 0.3 = หลวม, 0.5 = ปานกลาง, 0.7 = เข้มงวด
```

### ปรับความเร็วการตรวจสอบ
```javascript
setInterval(async () => {
  // Face detection code
}, 200); // 200ms = 5 FPS, 100ms = 10 FPS
```

### ปรับขนาด Crop Padding
```javascript
const padding = 30; // pixel รอบใบหน้า
// 20 = แน่น, 30 = ปานกลาง, 50 = หลวม
```

---

## 🔧 การแก้ไขปัญหา

### ปัญหาที่พบบ่อย

**1. ไม่สามารถเข้าถึงกล้องได้**
- ✅ ตรวจสอบสิทธิ์การใช้งานกล้องในเบราว์เซอร์
- ✅ ใช้ HTTPS หรือ localhost เท่านั้น
- ✅ กล้องไม่ถูกใช้งานโดยแอปอื่น

**2. โมเดล AI โหลดไม่ได้**
- ✅ ตรวจสอบการเชื่อมต่ออินเทอร์เน็ต
- ✅ รอสักครู่ (โมเดลใหญ่ ~100MB)
- ✅ ตรวจสอบ Console สำหรับ error message

**3. ไม่พบใบหน้าในรูปภาพ**
- ✅ ใช้รูปที่มีใบหน้าชัดเจน
- ✅ ใบหน้าหันหน้าตรงหรือเฉียง ไม่เกิน 45 องศา
- ✅ แสงสว่างเพียงพอ

**4. ความแม่นยำไม่ดี**
- ✅ ใช้รูปภาพต้นฉบับคุณภาพสูง
- ✅ ปรับค่า threshold ให้เหมาะสม
- ✅ ใบหน้าอยู่ตรงกลางของรูป

---

## 🌟 ฟีเจอร์ขั้นสูง

### การบันทึกผลลัพธ์
สามารถเพิ่มฟังก์ชันบันทึกผลการเปรียบเทียบ:
```javascript
// บันทึกลง LocalStorage
localStorage.setItem('faceResults', JSON.stringify(results));
```

### การเปรียบเทียบหลายใบหน้า
ปรับใช้ `detectAllFaces()` แทน `detectSingleFace()`:
```javascript
const detections = await faceapi.detectAllFaces(image)
  .withFaceLandmarks()
  .withFaceDescriptors();
```

### การปรับปรุงประสิทธิภาพ
- ลดขนาดรูปภาพก่อนประมวลผล
- ใช้ Web Workers สำหรับ Face Detection
- Cache AI Models ใน IndexedDB

---

## 📄 License

MIT License - ใช้งานได้อย่างอิสระทั้งเชิงพาณิชย์และส่วนบุคคล

---

## 👨‍💻 ผู้พัฒนา

**Goragod Wiriya**
- 🌐 Website: [https://goragod.com]
- 📧 Email: [admin@goragod.com]
- 💼 GitHub: [@goragodwiriya]

---

## 🙏 กิตติกรรมประกาศ

- **Face-API.js** - Vincent Mühler และทีมพัฒนา
- **TensorFlow.js** - Google TensorFlow Team
- **Pre-trained Models** - Face-API.js Community