Phát hiện ngôn ngữ ký hiệu
Mục lục
👉 Phần 1: Thu thập dữ liệu
- Chuẩn bị Môi trường
- 1.1 Cài đặt Thư viện
- 1.2 Xây dựng Đoạn Code Thu thập Dữ liệu
- Thu thập Dữ liệu
- 2.1 Thiết lập Camera
- 2.2 Thu thập Ảnh
- 2.3 Lưu trữ Dữ liệu
👉 Phần 2: Huấn luyện Mô hình
- Chuẩn bị Dữ liệu Huấn luyện
- 3.1 Tải Dữ liệu
- 3.2 Phân loại Ảnh
- Huấn luyện Mô hình
- 4.1 Thiết lập Mô hình
- 4.2 Huấn luyện Mô hình
- Kiểm tra Mô hình
👉 Phần 3: Triển khai Ứng dụng
- Xây dựng Ứng dụng
- 6.1 Thiết lập Giao diện
- 6.2 Kết nối Mô hình
- Thử nghiệm Ứng dụng
- 7.1 Kiểm tra Chức năng
- 7.2 Đánh giá hiệu suất
Thu thập dữ liệu
Phần 1: Chuẩn bị Môi trường
Trước khi bắt đầu, chúng ta cần cài đặt một số thư viện cần thiết và xây dựng đoạn code để thu thập dữ liệu.
1.1 Cài đặt Thư viện
Trước tiên, chúng ta cần cài đặt thư viện cần thiết cho dự án của chúng ta. Sử dụng pip để cài đặt các thư viện sau:
pip install openCV-contrib-python
pip install mediapipe
pip install numpy
Đảm bảo rằng tất cả các yêu cầu đã được cài đặt thành công.
1.2 Xây dựng Đoạn Code Thu thập Dữ liệu
Tiếp theo, chúng ta sẽ xây dựng một đoạn code Python để thu thập dữ liệu. Đoạn code này sẽ sử dụng camera để chụp ảnh và lưu trữ chúng trong các thư mục tương ứng.
import cv2
import os
import numpy as np
import time
# Cài đặt tham số
max_hands = 1
hand_offset = 20
image_size = 300
# Tạo thư mục lưu trữ dữ liệu
data_folder = "sign_language_detection"
folders = ["hello", "thank_you", "yes"] # Thêm các dấu hiệu khác nếu cần
for folder in folders:
folder_path = os.path.join(data_folder, folder)
if not os.path.exists(folder_path):
os.makedirs(folder_path)
# Khởi tạo camera
cap = cv2.VideoCapture(0)
# Khởi tạo Hand Detector
detector = HandDetector(max_hands=max_hands, hand_detection_confidence=0.7)
# Bắt đầu thu thập dữ liệu
counter = 0
while True:
success, image = cap.read()
hands, image = detector.find_hands(image)
if hands:
for hand in hands:
x, y, w, h = hand["bounding_box"]
hand_image = image[y - hand_offset:y + h + hand_offset, x - hand_offset:x + w + hand_offset]
hand_image_white = cv2.resize(cv2.cvtColor(hand_image, cv2.COLOR_BGR2GRAY), (image_size, image_size))
# Lưu ảnh
counter += 1
img_name = f"{data_folder}/{folders[counter % len(folders)]}/image_{counter}.jpg"
cv2.imwrite(img_name, hand_image_white)
cv2.imshow("Data Collection", image)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
Đoạn code trên sẽ chụp và lưu trữ ảnh tay từ camera vào các thư mục tương ứng với mỗi dấu hiệu cử chỉ. Đảm bảo rằng bạn đã thay đổi các tham số như max_hands và folders cho phù hợp với nhu cầu của bạn.
Phần 2: Thu thập Dữ liệu
Sau khi đã chuẩn bị môi trường, chúng ta bắt đầu quá trình thu thập dữ liệu.
2.1 Thiết lập Camera
Chúng ta cần thiết lập camera để bắt đầu thu thập dữ liệu.
2.2 Thu thập Ảnh
Chúng ta sử dụng đoạn code đã xây dựng ở phần trước để chụp và lưu trữ các ảnh.
2.3 Lưu trữ Dữ liệu
Dữ liệu được lưu trữ trong các thư mục tương ứng với mỗi dấu hiệu cử chỉ. Đảm bảo rằng bạn đã thu thập đủ dữ liệu cho mỗi loại.
Huấn luyện Mô hình
Phần 3: Chuẩn bị Dữ liệu Huấn luyện
Trước khi huấn luyện mô hình, chúng ta cần chuẩn bị dữ liệu huấn luyện cho các dấu hiệu cử chỉ.
3.1 Tải Dữ liệu
Tải dữ liệu từ các thư mục mà chúng ta đã lưu trữ ảnh.
3.2 Phân loại Ảnh
Phân loại các ảnh vào các lớp tương ứng với từng loại dấu hiệu cử chỉ.
**Phần 4: Huấn luyện Mô h