Viết ứng dụng AI đầu tiên với Daisykit

Khoá học: Xây dựng ứng dụng AI với Daisykit

  • Nội dung
  • Ghi chú
  • Khoá học

Cách bắt đầu với Daisykit dễ nhất là sử dụng Daisykit Python. Bài học này sẽ hướng dẫn các bạn viết chương trình AI đầu tiên của mình với Python, sử dụng thư viện Daisykit để phát hiện khuôn mặt từ webcam.

Chuẩn bị

Để bắt đầu, các bạn cần có một máy tính có webcam và đã cài đặt Python 3.6 trở lên. Nếu bạn chưa cài đặt Python, hãy tham khảo bài hướng dẫn cài đặt Python. Sau khi cài đặt Python, các bạn cần cài đặt Daisykit Python bằng cách chạy lệnh sau:

pip install daisykit

Viết chương trình

Chương trình của chúng ta sẽ phát hiện khuôn mặt từ webcam và vẽ một khung chữ nhật bao quanh khuôn mặt. Để bắt đầu, các bạn tạo một tệp mới có tên là face_detection.py và thêm đoạn mã sau vào file:

import cv2
import json
from daisykit.utils import get_asset_file, to_py_type
import daisykit

config = {
    "face_detection_model": {
        "model": get_asset_file("models/face_detection/yolo_fastest_with_mask/yolo-fastest-opt.param"),
        "weights": get_asset_file("models/face_detection/yolo_fastest_with_mask/yolo-fastest-opt.bin"),
        "input_width": 320,
        "input_height": 320,
        "score_threshold": 0.7,
        "iou_threshold": 0.5,
        "use_gpu": False
    },
    "with_landmark": True,
    "facial_landmark_model": {
        "model": get_asset_file("models/facial_landmark/pfld-sim.param"),
        "weights": get_asset_file("models/facial_landmark/pfld-sim.bin"),
        "input_width": 112,
        "input_height": 112,
        "use_gpu": False
    }
}

face_detector_flow = daisykit.FaceDetectorFlow(json.dumps(config))

# Open video stream from webcam
vid = cv2.VideoCapture(0)

while(True):

    # Capture the video frame
    ret, frame = vid.read()

    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

    faces = face_detector_flow.Process(frame)
    # for face in faces:
    #     print([face.x, face.y, face.w, face.h,
    #           face.confidence, face.wearing_mask_prob])
    face_detector_flow.DrawResult(frame, faces)

    frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)

    # Convert faces to Python list of dict
    faces = to_py_type(faces)

    # Display the resulting frame
    cv2.imshow('frame', frame)

    # The 'q' button is set as the
    # quitting button you may use any
    # desired button of your choice
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# After the loop release the cap object
vid.release()
# Destroy all the windows
cv2.destroyAllWindows()

Chương trình trên sử dụng thư viện DaisyKit để phát hiện khuôn mặt trên video stream từ camera máy tính, đánh dấu vùng khuôn mặt và xác định xem người đó có đang đeo khẩu trang hay không.

Các bước chính trong chương trình:

  • Nhập các thư viện và tài nguyên cần thiết, bao gồm OpenCV (cv2), Daisykit và cấu hình dưới dạng JSON.
  • Cấu hình các tham số cho model phát hiện khuôn mặt và xác định vị trí landmark (điểm đánh dấu trên khuôn mặt).
  • Tạo đối tượng FaceDetectorFlow từ Daisykit với cấu hình được định nghĩa ở bước 2.
  • Mở luồng video stream từ webcam (hoặc bất kỳ nguồn video nào khác).
  • Trong vòng lặp while, chương trình sử dụng OpenCV để đọc frame video stream từ camera.
  • Chuyển đổi frame từ định dạng BGR sang RGB để phù hợp với đầu vào của model phát hiện khuôn mặt.
  • Sử dụng model phát hiện khuôn mặt để tìm kiếm các khuôn mặt trong frame và đánh dấu chúng.
  • Chuyển đổi frame trở lại định dạng BGR để hiển thị lên màn hình.
  • Hiển thị kết quả frame lên màn hình bằng cách sử dụng hàm imshow() của OpenCV.
  • Chương trình tiếp tục chạy cho đến khi người dùng bấm nút 'q' để thoát khỏi vòng lặp.
  • Sau khi vòng lặp kết thúc, chương trình giải phóng tài nguyên camera và đóng tất cả các cửa sổ hiển thị của OpenCV.

Chạy tiếp lệnh:

python face_detection.py

Một cửa sổ mới sẽ xuất hiện, bạn sẽ thấy webcam của bạn đang hoạt động và đánh dấu các vị trí có khuôn mặt, thông tin landmark và thông tin có đeo khẩu trang hay không. Bạn có thể nhấn phím q để thoát chương trình.

Vậy là các bạn đã sử dụng Daisykit để viết chương trình AI đầu tiên của mình, với tính năng phát hiện khuôn mặt, landmark khuôn mặt và phát hiện đeo khẩu trang. Trong các bài học tiếp theo, chúng ta sẽ làm quen với ứng dụng Daisykit trong các bài toán khác, tìm hiểu sâu hơn về kiến trúc thư viện Daisykit và cách đóng góp vào thư viện nguồn mở này.