1. Trang chủ
  2. » Luận Văn - Báo Cáo

Xử lý dữ liệu ảnh với mô hình yolo và ứng dụng vào bài toán điểm danh tự động

77 0 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xử lý dữ liệu ảnh với mô hình YOLO và ứng dụng vào bài toán điểm danh tự động
Tác giả Nguyễn Thanh Hiệp
Người hướng dẫn TS. Lê Xuân Vinh
Trường học Trường Đại học Quy Nhơn
Chuyên ngành Khoa học dữ liệu ứng dụng
Thể loại Luận văn Thạc sĩ
Năm xuất bản 2023
Thành phố Bình Định
Định dạng
Số trang 77
Dung lượng 4,01 MB

Cấu trúc

  • 1. Lý do chọn đề tài (8)
  • 2. Mục tiêu nghiên cứu (10)
  • 3. Đối tượng và phạm vi nghiên cứu (0)
  • 4. Nội dung nghiên cứu (11)
  • 5. Phương pháp nghiên cứu (11)
  • CHƯƠNG I: KIẾN THỨC CƠ SỞ LIÊN QUAN (12)
    • 1.1. Học máy, học máy bằng mạng ANN (12)
      • 1.1.1. Học máy (12)
      • 1.1.2. Học máy bằng mạng ANN (15)
    • 1.2. Học sâu, mạng CNN (18)
      • 1.2.1. Học sâu (18)
      • 1.2.2. Mạng CNN (20)
    • 1.3. Bài toán nhận dạng đối tượng (25)
      • 1.3.1. Một số khái niệm liên quan (25)
      • 1.3.2. Nhận dạng khuôn mặt (26)
      • 1.3.3. Cách thức hoạt động (27)
      • 1.3.4. Mô tả bài toán (28)
      • 1.3.5. Kết luận chương I (30)
  • CHƯƠNG II: MÔ HÌNH YOLO (31)
    • 2.1. Cấu trúc mô hình YOLO (31)
      • 2.1.1. Input Layer (31)
      • 2.1.2. Backbone Network (32)
      • 2.1.5. Non-Maximum Suppression (NMS) trong mô hình YOLO (36)
      • 2.1.6. Output (Đầu ra) trong mô hình YOLO (38)
    • 2.2. Dữ liệu (40)
    • 2.3. Thuật toán YOLO (41)
    • 2.4. Hàm Loss (42)
    • 2.5. Huấn luyện (43)
    • 2.6. Kết luận chương II (45)
  • CHƯƠNG III: ỨNG DỤNG CỦA MÔ HÌNH MẠNG YOLO TRONG VIỆC NHẬN DIỆN KHUÔN MẶT (46)
    • 3.1. Phát biểu bài toán điểm danh tự động (46)
    • 3.2. Dữ liệu huấn luyện (48)
      • 3.2.1. Thu thập dữ liệu (48)
      • 3.2.2. Xử lý dữ liệu và gán nhãn (50)
    • 3.3. Thành phần của mô hình (52)
      • 3.3.1. Tìm hiểu về YOLO v5 (52)
      • 3.3.2. Tổ chức thư mục (53)
      • 3.3.3. Chọn mô hình (54)
      • 3.3.4. Xây dựng mô hình YOLOv5 trên môi trường Colab (54)
    • 3.4. Huấn luyện mô hình (55)
      • 3.4.1. Huấn luyện mô hình (55)
      • 3.4.2. Phân tích dữ liệu đầu vào (56)
      • 3.4.3. Huấn luyện mô hình (57)
      • 3.4.5. Đánh giá mô hình điểm danh học sinh (63)
    • 3.5. Sử dụng mô hình để diểm danh (67)
      • 3.5.1. Mô hình nhận dạng dựa trên biến val (67)
      • 3.5.2. Áp dụng vào thực tế (70)

Nội dung

Trang 1 TRƢỜNG ĐẠI HỌC QUY NHƠN NGUYỄN THANH HIỆP XỬ LÝ DỮ LIỆU ẢNH VỚI MÔ HÌNH YOLO VÀ ỨNG DỤNG VÀO BÀI TỐN ĐIỂM DANH TỰ ĐỘNG LUẬN VĂN THẠC SĨ KHOA HỌC DỮ LIỆU ỨNG DỤNG Trang 2 TRƢỜNG

Mục tiêu nghiên cứu

Mục tiêu nghiên cứu của luận văn "Xử lí dữ liệu ảnh với mô hình YOLO và ứng dụng vào bài toán điểm danh tự động" là:

Nghiên cứu và hiểu rõ về cơ sở lý thuyết của Deep Learning: Đề tài sẽ mục tiêu nghiên cứu các kiến thức cơ bản và nâng cao về Deep Learning, bao gồm các kiến thức về mạng nơ-ron sâu (Deep Neural Networks), thuật toán học máy, và các kiến thức liên quan đến xử lý dữ liệu ảnh

Phát triển mô hình Deep Learning cho nhận dạng khuôn mặt: Chúng ta sẽ xây dựng và tối ưu hóa một mô hình Deep Learning đáng tin cậy để nhận dạng khuôn mặt từ dữ liệu ảnh Điều này bao gồm việc chọn lựa kiến trúc mạng, đào tạo mô hình trên tập dữ liệu lớn, và kiểm định mô hình để đảm bảo tính chính xác và ổn định Áp dụng mô hình Deep Learning vào các ứng dụng thực tế: Chúng ta sẽ thực hiện các thử nghiệm và thử nghiệm về hiệu suất của mô hình Deep

Learning trong các ứng dụng nhận dạng khuân mặt Mục tiêu là đánh giá tính khả thi và hiệu suất của mô hình trong các tình huống thực tế

3 Đối tƣợng và phạm vi nghiên cứu Đối tƣợng nghiên cứu: Nghiên cứu cơ sở lý thuyết về học máy, học sâu và mô hình YOLO

Về không gian: tại trường THCS Trần Bá, thị trấn Diêu Trì, huyện Tuy

Nội dung: Xử lí dữ liệu ảnh với mô hình YOLO vào bài toán điểm danh tự động

Lý thuyết và mô hình YOLO Ứng dụng mô hình YOLO xây dựng hệ thống điểm danh tự động

5 Phương pháp nghiên cứu Đề tài sử dụng nhiều phương pháp khác như phương pháp thu thập thông tin và xử lý thông tin như tiến hành sưu tầm các sách, báo, tạp chí, tài liệu khoa học, nguồn Internet… các công trình liên quan đến học máy và học sâu, các lớp mô hình phát hiện đối tượng, tiến hành sử dụng phương pháp xử lý thông tin, ngoài ra luận văn còn sử dụng các phương pháp khác như sử dụng phương pháp so sánh, tổng hợp, hệ thống hóa các vấn đề được nghiên cứu làm cơ sở lý luận và thực tiễn cho các nội dung nghiên cứu

CHƯƠNG I: KIẾN THỨC CƠ SỞ LIÊN QUAN

Trong chương I của luận văn này, em sẽ trình bày sơ lược về học máy, học máy bằng mạng ANN, học sâu, cấu trúc mạng CNN, trình bày về bài toán nhận dạng đối tượng

1.1 Học máy, học máy bằng mạng ANN

Học máy là một lĩnh vực của khoa học máy tính, theo Arthur Samuel vào năm 1959, "máy tính có khả năng học hỏi mà không cần được lập trình một cách rõ ràng." Phát triển từ nghiên cứu về nhận dạng mẫu và lý thuyết học tính toán trong trí tuệ nhân tạo Học máy xây dựng các thuật toán có thể học hỏi và thực hiện các dự đoán về dữ liệu, các thuật toán như vậy vượt qua các hướng dẫn chương trình nghiêm ngặt bằng cách dự đoán dữ liệu hoặc quyết định thông qua xây dựng một mô hình từ mẫu đầu vào Học máy được sử dụng trong một loạt các tác vụ khi thiết kế và lập trình các thuật toán rõ ràng với hiệu năng tốt là khó hoặc không khả thi; Các ví dụ ứng dụng bao gồm lọc email, phát hiện các kẻ xâm nhập mạng hoặc những người trong nội bộ đang làm việc để phá vỡ dữ liệu, nhận dạng ký tự quang học (OCR), học để xếp hạng và tầm nhìn máy tính

Học máy liên quan chặt chẽ và thường thống kê tính toán, tập trung vào việc dự đoán bằng cách sử dụng máy tính Nó có quan hệ chặt chẽ với việc tối ưu hóa toán học, cung cấp các phương pháp, lý thuyết và các lĩnh vực ứng dụng cho lĩnh vực này Việc học máy đôi khi được kết hợp với việc khai thác dữ liệu, trong đó lĩnh vực nhỏ thứ hai tập trung nhiều hơn vào phân tích dữ liệu thăm dò và được biết đến là học không giám sát Học máy cũng có thể là giám sát và được sử dụng để tìm hiểu và thiết lập hồ sơ hành vi cơ bản cho các thực thể khác nhau và sau đó được sử dụng để tìm các dị thường có ý nghĩa

Trong lĩnh vực phân tích dữ liệu, học máy là một phương pháp được sử dụng để đưa ra các mô hình phức tạp và các thuật toán cho phép dự đoán; Trong sử dụng thương mại, điều này được gọi là phân tích tiên đoán Các mô hình phân tích này cho phép các nhà nghiên cứu, các nhà khoa học dữ liệu, các kỹ sư và các nhà phân tích "đưa ra các quyết định, kết quả đáng tin cậy, lặp lại" và khám phá những "cái nhìn sâu sắc ẩn giấu" thông qua việc học hỏi từ các mối quan hệ và xu hướng lịch sử trong dữ liệu

Các loại học máy Học máy thường được phân thành ba loại, tùy thuộc vào tính chất của "tín hiệu" hoặc "phản hồi" của hệ thống học Gồm có:

- Học có giám sát (Supervied learning): Máy tính được thể hiện với các đầu vào ví dụ và các đầu ra mong muốn của nó, được cho bởi "người dạy" và mục tiêu là tìm hiểu một quy tắc chung cho phép ánh xạ các đầu vào cho đầu ra

- Học không giám sát (Unsupervied learing): Không có nhãn nào được đưa ra cho thuật toán học, mục đích là để nó tự tìm ra cấu trúc trong đầu vào của nó Học tập không giám sát có thể là một mục tiêu tự nó (khám phá các mẫu ẩn trong dữ liệu)

- Học tăng cường (Reinforcement learning): Một chương trình máy tính tương tác với một môi trường động, trong đó nó phải thực hiện một mục đích nhất định Chương trình được cung cấp phản hồi về đầu ra khi nó điều hướng các vấn đề của nó

Các thuật toán học máy

Có rất nhiều thuật toán học máy được nghiên cứu và ứng dụng, có thể kể đến các thuật toán học máy dưới đây:

- Thuật toán cây quyết định (Decision tree learning): là một phương pháp không tham biến (không cần đưa vào dạng hàm phụ thuộc vector tham biến của hàm mục tiêu) Phương pháp này sẽ chia không gian vector đặc trưng thành các miền, rồi xấp xỉ hàm mục tiêu trên mỗi miền bởi một hàm đơn giản nhất, gọi là hàm hằng Khi đó, toàn bộ hàm mục tiêu sẽ được xấp xỉ bởi một hàm có thể mô tả dưới dạng cấu trúc cây

- Học theo quy tắc kết hợp (Association rule learning): là một phương pháp học dựa trên quy tắc để học tập các mối quan hệ thú vị giữa các biến trong các cơ sở dữ liệu lớn Nó nhằm xác định các quy tắc mạnh mẽ được phát hiện trong cơ sở dữ liệu sử dụng một số biện pháp thú vị

- Thuật toán mạng neural nhân tạo (ANN): thường được gọi là "mạng nơ-ron" (NN), là một thuật toán học được lấy cảm hứng từ cấu trúc và các khía cạnh chức năng của mạng nơ-ron sinh học Tính toán được cấu trúc theo một nhóm các neuron nhân tạo kết nối, xử lý thông tin bằng cách sử dụng một cách tiếp cận kết nối để tính toán Mạng nơ-ron hiện đại là các công cụ mô hình hoá dữ liệu không tuyến tính Chúng thường được sử dụng để mô hình các mối quan hệ phức tạp giữa đầu vào và đầu ra, để tìm các mẫu trong dữ liệu hoặc để nắm bắt cấu trúc thống kê trong phân bố xác suất chung không xác định giữa các biến quan sát được

- Học sâu (Deep learning): bao gồm nhiều lớp ẩn trong một mạng nơ- ron nhân tạo Cách tiếp cận này cố gắng mô hình hóa cách não người xử lý hình ảnh và âm thanh bởi thị giác và thính giác

- SVMs là một tập hợp các phương pháp học tập có giám sát liên quan được sử dụng để phân loại và hồi quy Với một tập hợp các ví dụ huấn luyện, được đánh dấu là thuộc một trong hai loại, thuật toán huấn luyện SVM xây dựng mô hình dự đoán xem một ví dụ mới có thuộc một loại hay không

Nội dung nghiên cứu

Lý thuyết và mô hình YOLO Ứng dụng mô hình YOLO xây dựng hệ thống điểm danh tự động.

Phương pháp nghiên cứu

Đề tài sử dụng nhiều phương pháp khác như phương pháp thu thập thông tin và xử lý thông tin như tiến hành sưu tầm các sách, báo, tạp chí, tài liệu khoa học, nguồn Internet… các công trình liên quan đến học máy và học sâu, các lớp mô hình phát hiện đối tượng, tiến hành sử dụng phương pháp xử lý thông tin, ngoài ra luận văn còn sử dụng các phương pháp khác như sử dụng phương pháp so sánh, tổng hợp, hệ thống hóa các vấn đề được nghiên cứu làm cơ sở lý luận và thực tiễn cho các nội dung nghiên cứu.

KIẾN THỨC CƠ SỞ LIÊN QUAN

Học máy, học máy bằng mạng ANN

Học máy là một lĩnh vực của khoa học máy tính, theo Arthur Samuel vào năm 1959, "máy tính có khả năng học hỏi mà không cần được lập trình một cách rõ ràng." Phát triển từ nghiên cứu về nhận dạng mẫu và lý thuyết học tính toán trong trí tuệ nhân tạo Học máy xây dựng các thuật toán có thể học hỏi và thực hiện các dự đoán về dữ liệu, các thuật toán như vậy vượt qua các hướng dẫn chương trình nghiêm ngặt bằng cách dự đoán dữ liệu hoặc quyết định thông qua xây dựng một mô hình từ mẫu đầu vào Học máy được sử dụng trong một loạt các tác vụ khi thiết kế và lập trình các thuật toán rõ ràng với hiệu năng tốt là khó hoặc không khả thi; Các ví dụ ứng dụng bao gồm lọc email, phát hiện các kẻ xâm nhập mạng hoặc những người trong nội bộ đang làm việc để phá vỡ dữ liệu, nhận dạng ký tự quang học (OCR), học để xếp hạng và tầm nhìn máy tính

Học máy liên quan chặt chẽ và thường thống kê tính toán, tập trung vào việc dự đoán bằng cách sử dụng máy tính Nó có quan hệ chặt chẽ với việc tối ưu hóa toán học, cung cấp các phương pháp, lý thuyết và các lĩnh vực ứng dụng cho lĩnh vực này Việc học máy đôi khi được kết hợp với việc khai thác dữ liệu, trong đó lĩnh vực nhỏ thứ hai tập trung nhiều hơn vào phân tích dữ liệu thăm dò và được biết đến là học không giám sát Học máy cũng có thể là giám sát và được sử dụng để tìm hiểu và thiết lập hồ sơ hành vi cơ bản cho các thực thể khác nhau và sau đó được sử dụng để tìm các dị thường có ý nghĩa

Trong lĩnh vực phân tích dữ liệu, học máy là một phương pháp được sử dụng để đưa ra các mô hình phức tạp và các thuật toán cho phép dự đoán; Trong sử dụng thương mại, điều này được gọi là phân tích tiên đoán Các mô hình phân tích này cho phép các nhà nghiên cứu, các nhà khoa học dữ liệu, các kỹ sư và các nhà phân tích "đưa ra các quyết định, kết quả đáng tin cậy, lặp lại" và khám phá những "cái nhìn sâu sắc ẩn giấu" thông qua việc học hỏi từ các mối quan hệ và xu hướng lịch sử trong dữ liệu

Các loại học máy Học máy thường được phân thành ba loại, tùy thuộc vào tính chất của "tín hiệu" hoặc "phản hồi" của hệ thống học Gồm có:

- Học có giám sát (Supervied learning): Máy tính được thể hiện với các đầu vào ví dụ và các đầu ra mong muốn của nó, được cho bởi "người dạy" và mục tiêu là tìm hiểu một quy tắc chung cho phép ánh xạ các đầu vào cho đầu ra

- Học không giám sát (Unsupervied learing): Không có nhãn nào được đưa ra cho thuật toán học, mục đích là để nó tự tìm ra cấu trúc trong đầu vào của nó Học tập không giám sát có thể là một mục tiêu tự nó (khám phá các mẫu ẩn trong dữ liệu)

- Học tăng cường (Reinforcement learning): Một chương trình máy tính tương tác với một môi trường động, trong đó nó phải thực hiện một mục đích nhất định Chương trình được cung cấp phản hồi về đầu ra khi nó điều hướng các vấn đề của nó

Các thuật toán học máy

Có rất nhiều thuật toán học máy được nghiên cứu và ứng dụng, có thể kể đến các thuật toán học máy dưới đây:

- Thuật toán cây quyết định (Decision tree learning): là một phương pháp không tham biến (không cần đưa vào dạng hàm phụ thuộc vector tham biến của hàm mục tiêu) Phương pháp này sẽ chia không gian vector đặc trưng thành các miền, rồi xấp xỉ hàm mục tiêu trên mỗi miền bởi một hàm đơn giản nhất, gọi là hàm hằng Khi đó, toàn bộ hàm mục tiêu sẽ được xấp xỉ bởi một hàm có thể mô tả dưới dạng cấu trúc cây

- Học theo quy tắc kết hợp (Association rule learning): là một phương pháp học dựa trên quy tắc để học tập các mối quan hệ thú vị giữa các biến trong các cơ sở dữ liệu lớn Nó nhằm xác định các quy tắc mạnh mẽ được phát hiện trong cơ sở dữ liệu sử dụng một số biện pháp thú vị

- Thuật toán mạng neural nhân tạo (ANN): thường được gọi là "mạng nơ-ron" (NN), là một thuật toán học được lấy cảm hứng từ cấu trúc và các khía cạnh chức năng của mạng nơ-ron sinh học Tính toán được cấu trúc theo một nhóm các neuron nhân tạo kết nối, xử lý thông tin bằng cách sử dụng một cách tiếp cận kết nối để tính toán Mạng nơ-ron hiện đại là các công cụ mô hình hoá dữ liệu không tuyến tính Chúng thường được sử dụng để mô hình các mối quan hệ phức tạp giữa đầu vào và đầu ra, để tìm các mẫu trong dữ liệu hoặc để nắm bắt cấu trúc thống kê trong phân bố xác suất chung không xác định giữa các biến quan sát được

- Học sâu (Deep learning): bao gồm nhiều lớp ẩn trong một mạng nơ- ron nhân tạo Cách tiếp cận này cố gắng mô hình hóa cách não người xử lý hình ảnh và âm thanh bởi thị giác và thính giác

- SVMs là một tập hợp các phương pháp học tập có giám sát liên quan được sử dụng để phân loại và hồi quy Với một tập hợp các ví dụ huấn luyện, được đánh dấu là thuộc một trong hai loại, thuật toán huấn luyện SVM xây dựng mô hình dự đoán xem một ví dụ mới có thuộc một loại hay không

- Phân cụm (Clustering): Phân cụm là sự phân chia của một tập các quan sát thành các tập con (gọi là các cụm) để các quan sát trong cùng một cụm tương tự theo một số tiêu chí hoặc tiêu chí được chuẩn bị trước, trong khi các quan sát được rút ra từ các cụm khác nhau thì không giống nhau Các kỹ thuật phân cụm khác nhau đưa ra các giả định khác nhau về cấu trúc dữ liệu, thường được xác định bởi một số chỉ số tương tự và được đánh giá bởi sự tương tự giữa các thành viên của cùng một cụm và sự tách biệt giữa các cụm khác nhau Các phương pháp khác dựa trên mật độ và kết nối đồ thị Phân cụm là một phương pháp học không được giám sát và là một kỹ thuật phổ biến để phân tích dữ liệu thống kê

- Mạng Bayesian là một mô hình đồ thị xác suất (một loại mô hình thống kê) đại diện cho một tập các biến ngẫu nhiên và các phụ thuộc có điều kiện của chúng qua một đồ thị trục không hướng (DAG)

- Học máy dựa trên nguyên tắc là một thuật ngữ chung cho bất kỳ phương pháp học máy nào xác định, học hỏi, hoặc phát triển “các quy tắc” để lưu trữ, vận dụng hoặc áp dụng kiến thức Đặc điểm xác định của học máy dựa trên quy tắc xác định và sử dụng một tập hợp các quy tắc quan hệ đại diện cho kiến thức thu được bởi hệ thống Điều này trái ngược với những học máy khác thường xác định một mô hình độc nhất có thể được áp dụng phổ quát cho bất kỳ trường hợp nào để dự đoán Các phương pháp học tập dựa trên nguyên tắc máy học bao gồm các hệ thống phân loại học tập, học về quy tắc kết hợp và các hệ thống miễn dịch nhân tạo

- Bên cạnh đó còn một số thuật toán học máy khác như: thuật toán di truyền (Genetic algorithm), Học máy dựa trên nguyên tắc (Rule-based machine learning), hệ thống phân loại học (Learning classifier systems)

1.1.2 Học máy bằng mạng ANN

1.1.2.1 Tổng quan về mạng ANN

Học sâu, mạng CNN

Học sâu (Deep Learning) là một phần của lĩnh vực Trí tuệ nhân tạo (Artificial Intelligence - AI) tập trung vào việc sử dụng các mô hình máy tính phức tạp gọi là mạng nơ-ron nhân tạo (Artificial Neural Networks) để học và hiểu dữ liệu Khái niệm này đặc biệt nổi tiếng trong thời gian gần đây nhờ vào khả năng của nó trong việc giải quyết nhiều vấn đề phức tạp và đạt được kết quả xuất sắc trong các ứng dụng như thị giác máy tính, xử lý ngôn ngữ tự nhiên, xử lý giọng nói, tự động lái xe, và nhiều lĩnh vực khác

Kiến trúc mạng nơ-ron sâu (DNN)

Kiến trúc mạng nơ-ron sâu (DNN) là một phần quan trọng của lĩnh vực học sâu (Deep Learning), đã thay đổi cách chúng ta tiếp cận và giải quyết các vấn đề phức tạp liên quan đến dữ liệu Với khả năng học biểu diễn tự động từ dữ liệu đầu vào, DNN đã mang lại sự tiến bộ đáng kể trong nhiều ứng dụng quan trọng như thị giác máy tính, xử lý ngôn ngữ tự nhiên, xe tự động, và nhiều lĩnh vực khác Trong phần này, chúng ta sẽ tìm hiểu về kiến trúc DNN và tại sao nó trở thành công cụ quan trọng trong học sâu

Cấu Trúc Cơ Bản của DNN

Kiến trúc DNN bao gồm nhiều lớp nơ-ron xếp chồng lên nhau Các lớp này chia thành ba loại chính: lớp nhập, lớp ẩn và lớp đầu ra

Lớp nhập chứa các đầu vào ban đầu của mạng Điều này thường là dữ liệu thô, ví dụ, các pixel của hình ảnh hoặc các từ trong văn bản

Lớp ẩn là nơi diễn ra hầu hết công việc trong DNN Mỗi lớp ẩn chứa nhiều nơ-ron hoặc các đơn vị tính toán Các nơ-ron trong lớp ẩn kết nối với tất cả các nơ-ron trong lớp trước đó và lớp sau nó Mỗi kết nối được điều chỉnh bằng các trọng số riêng biệt, và mỗi nơ-ron có một hàm kích hoạt non- linear

Lớp Đầu Ra (Output Layer)

Lớp đầu ra chứa đầu ra cuối cùng của mô hình Số lượng nơ-ron trong lớp này thường phụ thuộc vào nhiệm vụ cụ thể Ví dụ, trong bài toán phân loại hình ảnh, số lượng nơ-ron có thể là số lượng lớp phân loại

Hàm Kích Hoạt (Activation Functions)

Mỗi nơ-ron trong một lớp thường có một hàm kích hoạt non-linear Hàm này giúp mô hình học được các biểu diễn phi tuyến tính và khả năng biểu diễn dữ liệu phức tạp Các hàm kích hoạt phổ biến bao gồm Rectified Linear Unit (ReLU), sigmoid, và tanh Sử dụng hàm kích hoạt non-linear cho phép DNN học các biểu diễn phức tạp từ dữ liệu đầu vào

Kết Nối và Trọng Số

Mỗi kết nối giữa các nơ-ron trong DNN được điều chỉnh bằng một trọng số riêng biệt Quá trình học của DNN dựa vào việc cập nhật và tinh chỉnh các trọng số này trong quá trình huấn luyện Mục tiêu là tối ưu hóa các trọng số sao cho mô hình có khả năng dự đoán và biểu diễn dữ liệu tốt nhất

Mạng nơ-ron tích chập (CNN - Convolutional Neural Network) là một trong những mô hình mạng Học sâu phổ biến nhất hiện nay, có khả năng nhận dạng và phân loại hình ảnh với độ chính xác rất cao, thậm chí còn tốt hơn con người trong nhiều trường hợp Mô hình này đã và đang được phát triển, ứng dụng vào các hệ thống xử lý ảnh lớn của Facebook, Google hay Amazon… cho các mục đích khác nhau như các thuật toán tagging tự động, tìm kiếm ảnh hoặc gợi ý sản phẩm cho người tiêu dùng

Sự ra đời của mạng CNN là dựa trên ý tưởng cải tiến cách thức các mạng nơ-ron nhân tạo truyền thống học thông tin trong ảnh Do sử dụng các liên kết đầy đủ giữa các điểm ảnh vào node, các mạng nơ-ron nhân tạo truyền thẳng (Feedforward Neural Network) bị hạn chế rất nhiều bởi kích thước của ảnh, ảnh càng lớn thì số lượng liên kết càng tăng nhanh và kéo theo sự bùng nổ khối lượng tính toán Ngoài ra sự liên kết đầy đủ này cũng là sự dư thừa khi với mỗi bức ảnh, các thông tin chủ yếu thể hiện qua sự phụ thuộc giữa các điểm ảnh với những điểm xung quanh nó mà không quan tâm nhiều đến các điểm ảnh ở cách xa nhau Mạng CNN ra đời với kiến trúc thay đổi, có khả năng xây dựng liên kết chỉ sử dụng một phần cục bộ trong ảnh kết nối đến node trong lớp tiếp theo thay vì toàn bộ ảnh như trong mạng nơ-ron truyền thẳng

Mạng CNN có kiến trúc khác với Mạng Nơ-ron thông thường Mạng ANN bình thường chuyển đổi đầu vào thông qua hàng loạt các tầng ẩn Mỗi tầng là một tập các nơ-ron và các tầng được liên kết đầy đủ với các nơ-ron ở tầng trước đó Và ở tầng cuối cùng sẽ là tầng kết quả đại diện cho dự đoán của mạng Đầu tiên, mạng CNN được chia thành 3 chiều: rộng, cao, và sâu Kế đên, các nơ ron trong mạng không liên kết hoàn toàn với toàn bộ nơ-ron kế đến nhưng chỉ liên kết tới một vùng nhỏ Cuối cùng, một tầng đầu ra được tối giản thành véc-tơ của giá trị xác suất

Hình 1.3 Mạng nơ-ron thông thường (trái) và CNN (phải)

Mạng CNN gồm hai thành phần:

Phần tầng ẩn hay phần rút trích đặc trưng: trong phần này, mạng sẽ tiến hành tính toán hàng loạt phép tích chập và phép hợp nhất (pooling) để phát hiện các đặc trưng Ví dụ: nếu ta có hình ảnh con ngựa vằn, thì trong phần này mạng sẽ nhận diện các sọc vằn, hai tai, và bốn chân của nó

Phần phân lớp: tại phần này, một lớp với các liên kết đầy đủ sẽ đóng vai trò như một bộ phân lớp các đặc trưng đã rút trích được trước đó Tầng này sẽ đưa ra xác suất của một đối tượng trong hình

Hình 1.4 Kiến trúc mạng CNN

Tích chập là một khối quan trọng trong CNN Thuật ngữ tích chập được dựa trên một phép hợp nhất toán học của hai hàm tạo thành hàm thứ ba Phép toán này kết hợp hai tập thông tin khác nhau

Trong trường hợp CNN, tích chập được thực hiện trên giá trị đầu vào của dữ liệu và kernel/filter (thuật ngữ này được sử dụng khác nhau tùy tình huống) để tạo ra một bản đồ đặc trưng (feature map)

Ta thực hiện phép tích chập bằng cách trượt kernel/filter theo dữ liệu đầu vào Tại mỗi vị trí, ta tiến hành phép nhân ma trận và tính tổng các giá trị để đưa vào bản đồ đặc trưng

Trong thực tế, tích chập được thực hiện hiện trên không gian 3 chiều

Vì mỗi hình ảnh được biểu diễn dưới dạng 3 chiều: rộng, cao, và sâu Chiều sâu ở đây chính là giá trị màu sắc của hình (RGB)

Bài toán nhận dạng đối tượng

1.3.1 Một số khái niệm liên quan

Nhận dạng đối tượng (object recognition) là một thuật ngữ chung để mô tả một tập hợp các cách xử lý trong thị giác máy tính có liên quan đến việc xác định các đối tượng trong ảnh kỹ thuật số

Phân loại hình ảnh (image classification) liên quan đến việc dự đoán, phân loại các lớp thông tin của một đối tượng trong một hình ảnh

Khoanh vùng đối tượng (object localization) là việc xác định vị trí của một hoặc nhiều đối tượng trong một hình ảnh bằng hình chữ nhật xung quanh phạm vi của đối tượng bằng hộp chứa (bounding box)

Phát hiện đối tượng (object detection) kết hợp cả hai nhiệm vụ nhận dạng đối tượng và khoanh vùng đối tượng Phát hiện đối tượng là việc khoanh vùng và phân loại một hoặc nhiều đối tượng khác nhau trong một hình ảnh Nhận dạng đối tượng khác với phát hiện đối tượng ở chỗ nhận dạng đối tượng mang ý nghĩa rộng hơn, bao gồm cả việc phân loại hình ảnh (đòi hỏi thuật toán xác định các lớp của đối tượng xuất hiện trong hình ảnh), cũng như phát hiện đối tượng (đòi hỏi thuật toán khoanh vùng, định vị được tất cả các đối tượng có trong hình ảnh)

Hình 1.8: Sự khác biệt giữa nhận dạng đối tƣợng và phát hiện đối tƣợng

Nhận dạng khuôn mặt là khả năng nhận diện, lưu trữ,so sánh và phân tích các mẫu dựa trên đường nét khuôn mặt để nhận dạng người từ hình ảnh hoặc video Hệ thống thường sử dụng các công nghệ để thực hiện nhận dạng khuôn mặt như sử dụng sinh trắc học để ánh xạ các đặc điểm khuôn mặt từ ảnh hoặc video Hệ thống so sánh thông tin này với một cơ sở dữ liệu đã lưu trữ về các khuôn mặt để tìm ra một kết quả khớp chính xác

Nhận dạng khuôn mặt ngày càng được quan tâm trong nhiều lĩnh vực, như Trung Quốc có hệ thống Skynet để chấm điểm công dân, hay nhiều chuỗi cửa hàng lớn cũng sử dụng nhận dạng khuôn mặt khách hàng thân thiết để phân tích thói quen tiêu dùng Trên thực tế, công nghệ nhận dạng khuôn mặt đã nhận được sự chú ý đáng kể vì nó có tiềm năng cho một loạt các ứng dụng liên quan đến thực thi pháp luật cũng như các doanh nghiệp khác

Hình 1.9: Một minh họa về một số bản đồ đặc trƣng của các lớp DC12, conv22, conv32, conv42 và conv52 đƣợc đào tạo cho nhiệm vụ nhận dạng khuôn mặt

Phương pháp bao gồm các bước khác nhau để thực hiện nhận diện khuôn mặt tự động Đầu tiên là thực hiện phát hiện khuôn mặt để khoanh vùng khuôn mặt trong từng khung hình ảnh và video Sau đó, dữ liệu ở bước trên đuợc liên kết với các khuôn mặt được phát hiện với danh tính chung trên các video và căn chỉnh các khuôn mặt thành tọa độ bằng cách sử dụng các mốc được phát hiện Cuối cùng, hệ thống thực hiện xác minh khuôn mặt để tính toán độ tương tự giữa một cặp hình ảnh / video Sơ lược phương pháp được minh họa trong hình 1.10

Hình 1.10: Tổng quan về phương pháp nhận dạng khuôn mặt người bằng mạng nơ ron tích chập

Cụ thể, ta có thể xem xét ví dụ với thiết kế mạng ở hình 1.11 để rõ hơn về tổng quan cách thức hoạt động:

Hình 1.11: Thiết kế mạng nơ ron để xử lý ảnh

Từ mạng nơ ron trên, ta có thể thấy các bước xử lý ảnh từ trái sang phải Lần lượt, ta có thể thấy hình ảnh các cửa sổ dò tìm (ô vuông màu xanh) đang giảm dần và hiệu chỉnh dần theo từng giai đoạn dò tìm:

Hình 1.12: Các giai đoạn dò tìm và hiệu chỉnh

Hiện nay, camera rất thông dụng và được lắp ở mọi nơi Tuy nhiên, camera dân dụng thông thường chỉ có chức năng chụp ảnh hoặc ghi hình mà không có chức năng thông minh nào khác Do đó, giải pháp hướng đến là lập nên một hệ thống có chức năng thống kê người vào/ra Hệ thống có thể áp dụng cho nhiều địa điểm như các cổng ra vào ở bệnh viện, trường học, siêu thị, Dựa trên kết quả thống kê, người dùng có thể nắm được các thông tin về trạng thái hiện tại của khu vực đặt camera Hệ thống này được xây dựng theo kiến trúc như trong hình Trong đó:

1 Hệ thống camera: hệ thống camera nhận dạng đối tượng được lắp đặt ở các khu vực cần đếm người ra/vào Hoặc dữ liệu video do người dùng tải lên

2 Máy chủ xử lý nhận diện và đếm lượng người: máy chủ có cấu hình mạnh, tốc độ xử lý cao, có thể xử lý toàn bộ dữ liệu của hệ thống camera, tạo thành báo cáo để đẩy vào hệ thống trích xuất dữ liệu

3 Hệ thống trích xuất dữ liệu và hình ảnh đối chiếu: sau khi được xử lý qua máy chủ xử lý, dữ liệu được gom nhóm kèm video, và được lưu trữ ở đây trước khi được đẩy về máy chủ trung tâm

4 Cơ sở dữ liệu chứa thông tin nhận diện đối tượng: đây là dữ liệu bao gồm số liệu và hình ảnh và video của hệ thống nhận diện đối tượng

5 Quản trị viên: quản trị viên là người kết nối lên máy chủ tổng, là người xem xét dữ liệu để nắm được thông tin số lượng người ra/vào theo khung giờ, và lập các báo cáo cần thiết

Hình 1.13: Hình ảnh thiết kế của hệ thống nhận diện đối tƣợng

Trong chương I, luận văn đã trình bày các nội dung chính như: Giới thiệu về học máy, phân loại các phương pháp học máy, các thuật toán của học máy Tìm hiểu về mạng nơ-ron nhân tạo, tìm hiểu về học sâu, tìm hiểu về học máy bằng mạng ANN, trình bày về cấu trúc mạng CNN, trình bày về cấu trúc mạng DNN Tìm hiểu một số khái niệm liên quan đến bài toán nhận dạng đối tượng, phương thức hoạt động của mô hình nhận dạng đối tượng Trong chương II, luận văn sẽ trình bày chi tiết về cấu trúc mô hình mạng YOLO trong bài toán phát hiện khuôn mặt người, thuật toán YOLO (You Only Look Once), sử dụng dữ liệu hình ảnh được gắn nhãn để huấn luyện và kiểm tra để phát hiện các đối tượng trong hình ảnh.

MÔ HÌNH YOLO

Cấu trúc mô hình YOLO

Hình 2.1 Kiến trúc mô hình mạng YOLO

YOLO là một mô hình mạng CNN cho việc phát hiện, nhận dạng, phân loại đối tượng YOLO được tạo ra từ việc kết hợp giữa các convolutional layers và connected layers Trong đó, cácconvolutional layers sẽ trích xuất ra các feature của ảnh; full-connected layers sẽ dự đoán ra xác suất và tọa độ của đối tượng YOLO được đề xuất từ ý tưởng con người có thể phát hiện và định vị được một đối tượng nào đó khi đã nhìn qua một lần

2.1.1 Input Layer Đầu vào hình ảnh: Đầu vào của mô hình YOLO là một hình ảnh chứa đối tượng cần phát hiện Hình ảnh này có thể có bất kỳ kích thước nào, nhưng thường được coi như một hình ảnh đầu vào với kích thước cố định nào đó

Chia thành lưới ô (grid): Để thực hiện phát hiện đối tượng trong hình ảnh, YOLO chia hình ảnh thành một lưới ô với kích thước cố định Mỗi ô trong lưới này có nhiệm vụ dự đoán và quản lý thông tin về đối tượng mà nó bao gồm Ô trong lưới (grid cell): Mỗi ô trong lưới ô chứa thông tin về các đối tượng mà nó bao gồm Các dự đoán về đối tượng, chẳng hạn như tọa độ của bounding boxes, xác suất tồn tại của đối tượng và các xác suất của các lớp đối tượng, được thực hiện trong mỗi ô này Điều này giúp YOLO phát hiện đối tượng trong hình ảnh và dự đoán vị trí của chúng

Kích thước của lưới ô: Kích thước của lưới ô (grid) thường phụ thuộc vào phiên bản cụ thể của YOLO Kích thước này quyết định số lượng ô trong lưới và cách chúng được sắp xếp trên hình ảnh đầu vào

Cấu trúc Input Layer này giúp YOLO phát hiện và localize các đối tượng trong hình ảnh một cách hiệu quả, bằng cách chia hình ảnh thành các phần nhỏ và dự đoán các thông tin quan trọng về đối tượng trong từng phần của hình ảnh

Mục đích của Backbone Network:

Backbone network trong mô hình YOLO (You Only Look Once) có nhiệm vụ chính là trích xuất các đặc trưng quan trọng từ hình ảnh đầu vào

Các đặc trưng này sau đó được sử dụng để nhận biết và phát hiện các đối tượng trong hình ảnh, cụ thể là trong lưới ô (grid) được tạo bởi mô hình YOLO

Cấu trúc của Backbone Network:

Backbone network thường là một mạng neural convolutional deep learning có kiến trúc phức tạp

Nó bao gồm nhiều lớp convolutional và pooling layers để thực hiện việc trích xuất các đặc trưng từ hình ảnh

Mạng này thường được xây dựng dựa trên kiến thức về computer vision và deep learning như ResNet, Darknet, hoặc các kiến trúc tương tự

Quá trình trích xuất đặc trưng:

Backbone network hoạt động bằng cách thực hiện các phép tích chập (convolution) trên hình ảnh đầu vào

Các lớp convolutional này sẽ tìm kiếm các đặc điểm quan trọng trong hình ảnh như cạnh, góc, màu sắc, và các đặc điểm đặc trưng của các đối tượng

Sau đó, thông tin này được truyền qua mạng để xác định các đặc điểm chung của hình ảnh

Sau khi đã trích xuất các đặc trưng từ hình ảnh, các lớp detection head (phần đầu dự đoán) của mô hình YOLO sẽ sử dụng thông tin này để dự đoán tọa độ của bounding boxes, xác suất tồn tại của đối tượng trong từng ô của lưới, và xác suất của các lớp đối tượng

Backbone network đóng vai trò quan trọng trong việc cung cấp thông tin đặc trưng cần thiết để làm cho các dự đoán này chính xác

Trong nhiều trường hợp, backbone network được đào tạo trước trên một tập dữ liệu lớn (pre-trained) và sau đó được sử dụng lại cho nhiệm vụ phát hiện đối tượng cụ thể

Việc này gọi là transfer learning và giúp mô hình YOLO học được các đặc trưng tổng quan từ nhiều loại hình ảnh khác nhau

2.1.3 Detection Head trong mô hình YOLO

Detection Head là một thành phần quan trọng trong mô hình YOLO, thực hiện việc dự đoán các thông tin liên quan đến đối tượng trong hình ảnh, bao gồm tọa độ của bounding boxes, xác suất tồn tại của đối tượng trong mỗi ô của lưới, và xác suất của các lớp đối tượng

Tọa độ của Bounding Boxes:

Detection Head dự đoán tọa độ của bounding boxes, bao gồm tọa độ x, y, chiều rộng (width), và chiều cao (height) của bounding boxes

Thường thì tọa độ này được dự đoán dưới dạng tọa độ tương đối với kích thước của ô trong lưới ô Sau đó, tọa độ này được chuyển về tọa độ tương đối trên toàn bức ảnh

Xác suất tồn tại (Objectness Score):

Mỗi ô trong lưới ô dự đoán xác suất tồn tại của đối tượng trong ô đó Điều này đo lường xem có một đối tượng nằm trong ô đó hay không

Xác suất tồn tại này thường được tính bằng hàm sigmoid, giá trị dự đoán sẽ nằm trong khoảng từ 0 đến 1

Xác suất của Các Lớp Đối Tượng:

Ngoài xác suất tồn tại, Detection Head cũng dự đoán xác suất của các lớp đối tượng cụ thể Số lượng lớp này phụ thuộc vào bài toán cụ thể, ví dụ: trong mô hình YOLOv3, có thể có nhiều lớp đối tượng (classes) được dự đoán

Xác suất của các lớp này cũng được tính bằng hàm sigmoid để đảm bảo giá trị nằm trong khoảng từ 0 đến 1 cho mỗi lớp

Dự đoán nhiều Bounding Boxes:

Mỗi ô trong lưới ô có thể dự đoán nhiều bounding boxes cho các đối tượng khác nhau Số lượng bounding boxes này được xác định trước (ví dụ: 3 hoặc 5 bounding boxes cho mỗi ô)

Mỗi bounding box được dự đoán bằng cách kết hợp thông tin về tọa độ, xác suất tồn tại, và xác suất của các lớp đối tượng

Sau khi Detection Head dự đoán các bounding boxes, thuật toán Non- Maximum Suppression (NMS) được áp dụng để loại bỏ các bounding boxes dự đoán trùng lặp và chỉ giữ lại bounding boxes có độ tin cậy cao nhất cho mỗi đối tượng

NMS giúp làm sạch dự đoán và loại bỏ các redundancies

Detection Head của YOLO là lớp cuối cùng của mô hình, và thông qua quá trình huấn luyện, nó học cách dự đoán các thông tin quan trọng về đối tượng trong hình ảnh Điều này cho phép mô hình YOLO phát hiện và localize các đối tượng một cách chính xác và hiệu quả trong thời gian thực

2.1.4 Bounding Box Regression trong mô hình YOLO

Dữ liệu

Mô hình YOLO (You Only Look Once) sử dụng dữ liệu hình ảnh được gắn nhãn để huấn luyện và kiểm tra để phát hiện và localize các đối tượng trong hình ảnh Dữ liệu này bao gồm hai thành phần chính:

Hình ảnh đầu vào (Input Images):

Dữ liệu hình ảnh đầu vào là tập hợp các bức ảnh mà mô hình YOLO sẽ phân tích và dự đoán các đối tượng trong đó

Hình ảnh có thể có kích thước và độ phân giải khác nhau, tuy nhiên, thường thì tất cả các hình ảnh đều phải được chuẩn hóa hoặc chuyển đổi về cùng một kích thước cố định trước khi đưa vào mô hình

Nhãn và Bounding Boxes (Labels and Bounding Boxes):

Mỗi hình ảnh đầu vào đi kèm với thông tin nhãn và bounding boxes tương ứng với các đối tượng trong ảnh

Bounding Boxes: Đây là các khung hình chứa đối tượng được đánh dấu bằng tọa độ tương đối (ví dụ: tọa độ x, y, chiều rộng, và chiều cao) trong hình ảnh

Nhãn (Labels): Đây là các thông tin về lớp (class) của đối tượng trong bounding box Ví dụ, trong một bức ảnh của một con chó, nhãn có thể là "chó."

Dữ liệu này thường được tổ chức thành các tập dữ liệu huấn luyện (training dataset) và tập dữ liệu kiểm tra (testing dataset) Tập dữ liệu huấn luyện sẽ chứa các hình ảnh đầu vào cùng với nhãn và bounding boxes tương ứng để mô hình YOLO có thể học cách phát hiện và localize đối tượng Tập dữ liệu kiểm tra sẽ được sử dụng để đánh giá hiệu suất của mô hình sau khi huấn luyện

Ngoài ra, dữ liệu huấn luyện cho YOLO cũng cần được chuẩn bị và xử lý một cách cẩn thận để đảm bảo tính nhất quán và chất lượng cao của dữ liệu Điều này bao gồm việc xác định bounding boxes chính xác, nhãn đúng cho đối tượng, và chuẩn hóa kích thước hình ảnh để đảm bảo rằng mô hình hoạt động một cách hiệu quả.

Thuật toán YOLO

Nhận diện đối tượng trong hình ảnh và video đã trở thành một trong những ứng dụng quan trọng của thị giác máy tính Sự phát triển của công nghệ trong lĩnh vực này đã dẫn đến sự xuất hiện của nhiều thuật toán và phương pháp tiên tiến để thực hiện nhiệm vụ này Một trong những thuật toán nổi bật và được ưa chuộng nhất trong lĩnh vực này là thuật toán YOLO (You Only Look Once) YOLO là một thuật toán nhận diện đối tượng thời gian thực (real-time object detection) với khả năng phát hiện và phân loại đồng thời nhiều đối tượng trong một khung hình (frame) của video hoặc một bức ảnh Thuật toán này nổi bật với tốc độ cao và khả năng nhận diện chính xác, làm cho nó trở thành lựa chọn hàng đầu cho các ứng dụng yêu cầu xử lý hình ảnh nhanh chóng như xe tự lái, giám sát an ninh, và nhiều ứng dụng khác

Thuật toán YOLO hoạt động theo mô hình "You Only Look Once", nghĩa là nó chia bức ảnh thành lưới ô và thực hiện dự đoán đối tượng và nhãn cho từng ô trong lưới Quá trình này có các bước chính sau: a Chia Ảnh thành Lưới Ô: Ảnh đầu vào được chia thành một lưới ô với kích thước cố định, ví dụ 7x7 hoặc 13x13 b Dự Đoán Bounding Box: Cho mỗi ô trong lưới, YOLO dự đoán một số lượng bounding box (thông thường 2 hoặc 3) Mỗi bounding box bao gồm tọa độ (x, y) của trung tâm, chiều rộng và chiều cao (w, h), và một điểm tin cậy đại diện cho độ tự tin của thuật toán về việc hộp giới hạn đó chứa một đối tượng c Dự Đoán Lớp: Bên cạnh dự đoán bounding box, YOLO cũng dự đoán xác suất của các lớp đối tượng trong các bounding box đó Mỗi bounding box được gán xác suất cho các lớp đối tượng mà thuật toán đã được huấn luyện để nhận diện d Loại Bỏ Hộp Trùng Lặp (NMS): YOLO sử dụng thuật toán Non-Maximum Suppression (NMS) để loại bỏ các bounding box trùng lặp hoặc chồng lấn, chỉ giữ lại các bounding box có điểm tin cậy cao nhất.

Hàm Loss

Hàm chi phí (Loss function) trong mô hình YOLO (You Only Look Once) được sử dụng để đo lường sự sai lệch giữa dự đoán của mô hình và thực tế trong quá trình huấn luyện Hàm chi phí này giúp mô hình tối ưu hóa các thông số để cải thiện khả năng phát hiện và localize đối tượng Công thức của hàm chi phí được đưa ra như sau:

Hàm chi phí (Loss function):

Như sự sai lệch trong tọa độ, kích thước, độ tin cậy của bounding boxes, và xác suất của lớp đối tượng Nó đánh giá độ chính xác của dự đoán so với thực tế và được sử dụng trong quá trình tối ưu hóa mô hình YOLO trong quá trình huấn luyện.

Huấn luyện

Nhận diện khuôn mặt người là một trong những ứng dụng quan trọng của thị giác máy tính trong thời đại số hóa ngày nay Trong bài viết này, chúng ta sẽ phân tích chi tiết quá trình huấn luyện một mô hình YOLO (You Only Look Once) để thực hiện nhiệm vụ này YOLO là một thuật toán nhận diện đối tượng thời gian thực với khả năng phát hiện và phân loại đồng thời nhiều đối tượng trong một khung hình của video hoặc một bức ảnh

1 Chuẩn bị Dữ liệu Đào Tạo: Đầu tiên, để huấn luyện một mô hình YOLO cho nhận diện khuôn mặt người, chúng ta cần dữ liệu đào tạo Dữ liệu này bao gồm các hình ảnh chứa khuôn mặt người và nhãn bounding box cho khuôn mặt người trên mỗi hình ảnh Dữ liệu đào tạo nên đa dạng và cân bằng để đảm bảo mô hình có khả năng tổng quát hóa tốt hơn

2 Tiền Xử Lý Dữ Liệu: Sau khi thu thập dữ liệu, chúng ta cần thực hiện tiền xử lý dữ liệu Điều này bao gồm việc resize tất cả các hình ảnh đào tạo và kiểm tra về cùng một kích thước đầu vào mạng YOLO Điều này đảm bảo rằng mô hình có thể xử lý các hình ảnh có kích thước đồng nhất Hơn nữa, chúng ta cần chuẩn hóa giá trị pixel của hình ảnh về một phạm vi cụ thể, thường là [0, 1] hoặc [-1, 1], để đảm bảo rằng dữ liệu đầu vào có thể được xử lý hiệu quả bởi mạng nơ-ron

3 Xây Dựng Mô Hình YOLO: Với dữ liệu đã được tiền xử lý, chúng ta bắt đầu xây dựng mô hình YOLO Cần chọn phiên bản phù hợp của YOLO (ví dụ: YOLOv3) và xây dựng mô hình mạng nơ-ron tương ứng Mô hình YOLO được xây dựng dựa trên kiến thức về kiến trúc mạng và sử dụng các lớp convolutional để phát hiện đối tượng

4 Huấn Luyện Mô Hình: Quá trình huấn luyện là bước quan trọng nhất trong việc xây dựng mô hình YOLO cho nhận diện khuôn mặt người Trong giai đoạn này, mô hình sẽ học cách dự đoán bounding box và lớp đối tượng chính xác từ dữ liệu đào tạo Sử dụng hàm loss, như Mean Squared Error cho bounding box và Cross-Entropy cho lớp, để đo lường sự sai khác giữa dự đoán và thực tế

5 Điều Chỉnh Tham Số Huấn Luyện: Để đạt được một mô hình hiệu quả, chúng ta cần điều chỉnh các siêu tham số huấn luyện như tốc độ học, số vòng lặp, kích thước batch, và các tham số khác Việc này đòi hỏi thử nghiệm và đánh giá định kỳ để điều chỉnh các tham số sao cho mô hình đạt được hiệu suất tốt nhất trên tập kiểm tra

6 Đánh Giá và Kiểm Tra: Cuối cùng, sau khi hoàn thành quá trình huấn luyện, chúng ta cần đánh giá và kiểm tra mô hình trên tập kiểm tra Các chỉ số như độ chính xác, độ chuẩn xác, độ phủ và F1-score sẽ giúp đánh giá hiệu suất của mô hình đối với nhiệm vụ nhận diện khuôn mặt người

Huấn luyện một mô hình YOLO cho nhận diện khuôn mặt người là một quá trình phức tạp đòi hỏi kiến thức về mạng nơ-ron, xử lý ảnh, và thực hành sâu sắc Tuy nhiên, nó mang lại khả năng nhận diện khuôn mặt người trong thời gian thực và có ứng dụng rộng rãi trong lĩnh vực an ninh, giám sát, và nhận dạng biometric.

Kết luận chương II

Trong chương II của luận văn này, em đã trình bày cơ bản về cấu trúc mô hình mạng YOLO, sử dụng dữ liệu hình ảnh được gắn nhãn nhằm mục đích huấn luyện, kiểm tra để phát hiện các đối tượng trong hình ảnh trên mô hình YOLO và cách thức hoạt động của mô hình YOLO Qua chương III tiếp theo của luận văn, em sẽ trình bày phát biểu bài toán điểm danh tự động, đề cập đến cách thu thập dữ liệu để huấn luyện mô hình, cách xử lí dữ liệu, tìm hiểu về YOLOv5, giải thích vì sao lại chọn YOLOv5, cách tổ chức thư mục, chọn mô hình và xây dựng mô hình, huấn luyện mô hình và đánh giá mô hình trong YOLOv5 này.

ỨNG DỤNG CỦA MÔ HÌNH MẠNG YOLO TRONG VIỆC NHẬN DIỆN KHUÔN MẶT

Phát biểu bài toán điểm danh tự động

Mô hình mạng YOLO (You Only Look Once) có thể được sử dụng trong việc nhận diện khuôn mặt và phát triển ứng dụng để thực hiện bài toán điểm danh tự động tại lớp học Bài toán điểm danh tự động tại lớp học có thể được mô tả như sau:

Bài toán: Xây dựng một hệ thống điểm danh tự động tại lớp học sử dụng mạng YOLO để nhận diện khuôn mặt của các học sinh trong lớp học

Nhận diện khuôn mặt của các học sinh trong lớp học từ một luồng video hoặc hình ảnh đầu vào

Gắn nhãn (label) cho từng khuôn mặt đã nhận diện để xác định danh tính của học sinh

Tự động điểm danh dựa trên danh tính của học sinh được xác định từ khuôn mặt

Ghi lại thời gian điểm danh và danh tính của học sinh

Chuẩn bị dữ liệu: Thu thập tập dữ liệu hình ảnh của các học sinh trong lớp học và gắn nhãn cho mỗi khuôn mặt với thông tin về danh tính của học sinh tương ứng

Huấn luyện mô hình YOLO: Sử dụng dữ liệu được gắn nhãn để huấn luyện mô hình YOLO để nhận diện khuôn mặt Mô hình sẽ học cách phát hiện khuôn mặt và xác định vị trí của chúng trên hình ảnh hoặc video

Triển khai ứng dụng: Triển khai mô hình YOLO trên lớp học sử dụng một camera hoặc luồng video Mô hình sẽ xác định khuôn mặt của học sinh trong thời gian thực

Nhận diện danh tính: Sau khi mô hình đã xác định khuôn mặt, ứng dụng sẽ so sánh khuôn mặt đã nhận diện với dữ liệu danh tính mà bạn đã gắn nhãn trước đó để xác định danh tính của học sinh

Ghi lại thông tin điểm danh: Khi danh tính của học sinh được xác định, ứng dụng sẽ ghi lại thông tin điểm danh, bao gồm thời gian và danh tính của học sinh Thông tin này có thể được lưu trữ hoặc gửi đến hệ thống quản lý lớp học

Hiển thị thông tin điểm danh (tùy chọn): Tùy thuộc vào yêu cầu, bạn có thể hiển thị thông tin điểm danh trên một giao diện người dùng để giám sát lớp học

Bảo trì và cải tiến: Liên tục bảo trì và cải tiến hệ thống để đảm bảo hoạt động ổn định và cải thiện hiệu suất nhận diện khuôn mặt

Hình 3.1: Các em học sinh tham gia thử nghiệm

Trong luận văn, em đã sử dụng bộ dữ liệu hình ảnh các em học sinh có chứa 400 hình ảnh học sinh, được chụp ảnh chính diện, nghiêng trái và nghiên phải giống những bức ảnh trên Hình ảnh các em học sinh được phân theo tên của các em học sinh

Hình ảnh được thu thập khi trong một tiết học, tại cùng 1 phòng học, nên điều kiện ánh sáng như nhau Em còn có quay them video để có thể nhận diện nhiều góc cạnh của các em học sinh tham gia với các tư thế quay trái, quay phải, ngước lên, ngước xuống Với mỗi video có độ dài khoảng là 5-10s.

Dữ liệu huấn luyện

Việc chuẩn bị dữ liệu cho bài toán điểm danh tự động bằng YOLO bao gồm thu thập dữ liệu hình ảnh và video

Tập dữ liệu hình ảnh sử dụng trong luận văn được thu thập bằng cách chụp ảnh khuôn mặt các em học sinh của Trường trung học cơ sở Trần Bá tại Thị trấn Diêu Trì, Huyện Tuy Phước, Tỉnh Bình Định

Tập dữ liệu thu thập gồm tổng cộng 398 ảnh của 4 học sinh như sau:

Tên học sinh Số lƣợng ảnh

Hình 3.2: Mẫu hình ảnh thu thập

Bộ dữ liệu được chia thành 2 tập:

- Tập dữ liệu train: gồm có 398 hình ảnh của 4 học sinh dùng để train

- Tập dữ liệu test: gồm có 50 hình ảnh của 4 học sinh dùng để test

Em có bộ dữ liệu train và test Trong bộ dữ liệu sẽ được gán nhãn với các nhãn

Nhãn dữ liệu Tên học sinh

0: Hồng Thắm 1: Hữu Phúc 2: Kim Ngân 3: Vĩnh Phúc

3.2.2 Xử lý dữ liệu và gán nhãn

Các hình ảnh sau khi được thu thập sẽ được xử lý đưa về định dạng chuẩn 640x360 pixel sau đó được gán nhãn sử dụng công cụ makesense.ai,

Makesense.ai hỗ trợ gán nhãn trên cả 2 định dạng PASCAL VOC và YOLO với phần mở rộng file annotation tương ứng là xml và txt

Trong bài toán sử dụng mô hình YOLO, mình lưu file annotation dưới dạng txt

Mỗi dòng trong một file annotation bao gồm:

Trong đó: tương ứng là tọa độ trung tâm và kích thước của đối tượng Các giá trị này đã được chuẩn hóa lại, do vậy giá trị luôn nằm trong đoạn [0,1] object-class là chỉ số đánh dấu các classes

Với bài toán có nhiều nhãn, chúng tôi cùng gán nhãn thì cần thống nhất với nhau trước về thứ tự nhãn Nguyên nhân do trong file annotation chỉ lưu chỉ số (0,1,3,4,…) của nhãn chứ không lưu tên nhãn

Sau khi gán nhãn xong chúng ta để file annotation và ảnh tương ứng vào cùng một thư mục

Hình 3.4: Gán nhãn cho dữ liệu

Dữ liệu sau khi được gán nhãn được xuất bản ở định dạng hỗ trợ YOLO gồm các tập các file text chứa tọa độ khuôn mặt được đánh dấu và số thứ tự (số index) của nhãn

Hình 3.5: Các file nhãn của hình ảnh được tạo ra từ việc gán nhãn dữ liệu

Thành phần của mô hình

Joseph Redmon đã phát triển một hệ thống phát hiện đối tượng theo thời gian thực có tên là “BẠN CHỈ NHÌN MỘT LẦN” (YOLO) YOLO xử lý việc phát hiện nhanh hơn bất kỳ mô hình phát hiện đối tượng nào khác Nó được chạy trên “Darknet”, một khung mạng thần kinh được sử dụng làm xương sống để đào tạo và thử nghiệm các mô hình CV Các mô hình YOLO chia tỷ lệ hình ảnh bằng cách áp dụng các vị trí và vùng có điểm cao được coi là phát hiện trong số các vùng khác Các mô hình Yolo tỏ ra tốt hơn các mô hình dựa trên xếp hạng Không giống như các mô hình RCNN yêu cầu hàng nghìn điểm mạng cho một hình ảnh, các mô hình Yolo đưa ra dự đoán bằng cách sử dụng một điểm mạng duy nhất

Nói một cách chung chung thì YOLOv5 sử dụng Pytorch – một framework deep learning khác

Khác với các bản YOLO trước, YOLOv5 cung cấp 4 phiển bản với kiến trúc mạng khác nhau:

- yolov5-s là mô hình phiên bản nhỏ

- yolov5-m là mô hình phiên bản trung bình

- yolov5-l là mô hình phiên bản lớn

- yolov5-x là mô hình phiên bản cực lớn

Hình 3.6 Kiến trúc của các mô hình YOLOv5

Tất nhiên, mạng lớn hơn thì độ chính xác cao hơn nhưng tốc độ train và inference sẽ thấp hơn, tùy vào nhu cầu sử dụng để đưa ra lựa chọn tốc độ hay độ chính xác, chúng ta có thể tham khảo tốc độ và độ chính xác qua hình vẽ bên trên

!git clone https://github.com/ultralytics/yolov5

Câu lệnh tải thư viện Yolov5 Colab

!pip install -r /content/yolov5/requirements.txt

Câu lệnh cài thư viện cho Yolov5 trên Colab

Sắp xếp hình ảnh train, nhãn (txt), ảnh (jpg) theo thứ tự bên dưới

Hình 3.7: Tổ chức dữ liệu

Hình 3.8: Kiến trúc của các mô hình YOLOv5

Tuy hiện nay đã có phiên bản mới nhất YOLOv8 nhưng ở đây em chọn YOLOv5s, là vì mô hình nhỏ gọn, thích hợp cho các dự án nghiên cứu với các máy cấu hình thấp, ngoài ra các mô hình YOLOv5 đã được chứng minh là hoạt động ổn định, qua rất nhiều dự án trên cộng đồng

3.3.4 Xây dựng mô hình YOLOv5 trên môi trường Colab

Tiếp theo vào Google Colab để train từng bước! Đào tạo mô hình YOLOv5s trên COCO128 bằng cách chỉ định tập dữ liệu, kích thước lô, kích thước hình ảnh và weights yolov5s.pt được đào tạo trước (được khuyến nghị) hoặc weights '' cfg yolov5s.yaml (không được khuyến nghị) File trọng số được tự động tải xuống từ bản phát hành YOLOv5 mới nhất

!python /content/yolov5/train.py img 640 batch 24 epochs 100 data coco128.yaml weights yolov5s.pt

Câu lệnh train model trên Colab, trong đó: img 640 là kích thước của ảnh batch 24 là số hình mỗi lần train epochs 100 là số lần train data coco128.yaml là nơi lấy thông tin để train weights yolov5s.pt là thư viện để train

Tất cả các kết quả đào tạo được lưu vào running/train/ với các thư mục tên tự động được đặt tăng dần cho mỗi lần chạy, tức là running/train/exp2, running/train/exp3, v.v.

Huấn luyện mô hình

Tạo thư mục: Điểm danh học sinh với câu lệnh cd bên dưới

%cd /content/drive/MyDrive/Colab Notebooks/20231031 Nhan dien khuon mat Hiep

Tải yolo v5 về drive và cài đặt các yêu cầu cần thiết

!git clone https://github.com/ultralytics/yolov5

Câu lệnh tải thư viện Yolov5 Colab

!pip install -r /content/yolov5/requirements.txt

Câu lệnh cài thư viện cho Yolov5 trên Colab

Sao chép tập tin hình ảnh học sinh đã được gán nhãn vào coco128/train2017/images (đối với hình ảnh) và label (Đối với nhãn TXT) COCO128 là một tập dữ liệu hướng dẫn nhỏ bao gồm 398 hình ảnh các em học sinh trong lớp học 398 hình ảnh giống nhau này được sử dụng cho cả quá trình đào tạo và xác thực để xác minh quy trình đào tạo và phát hiện model có khả năng bị overfit data / coco128.yaml, được hiển thị bên dưới train: /content/coco128 # train images (relative to 'path') 398 images val: /content/coco128 # val images (relative to 'path') 398 images test: # test images (optional)

Dòng train: là đường dẫn đến thư mục ảnh train Chú ý là thư mục ảnh, ko cần dẫn đường đến thư mục labels

Dòng val: là đường dẫn đến thư mục ảnh val Chú ý là thư mục ảnh, ko cần dẫn đường đến thư mục labels

Dòng names: Bạn liệt kê danh sách tên các class theo đúng thứ tự từ 0 đến 3

3.4.2 Phân tích dữ liệu đầu vào

Qua biểu đồ trên cho thấy biến HuuPhuc là 100 nhãn, HongTham là

100 nhãn, KimNganlà 100 nhãn, VinhPhuc là 100 nhãn

Xét về mối tương quan giữa các tọa độ Ta thấy vị trí x, y nằm ở các vị trí từ 0.35 đến 0.6 Ttức là các vị trí x, y nằm ở giữa các bức ảnh

Hình 3.9: Sự tương quan dữ liệu với nhãn dữ liệu

Xét về mối tương quan giữa chiều cao và chiều rộng ta thấy phân bổ rải rác, với các nhãn có chiều rộng nhỏ từ 0.2 đến 0.3 Nhưng cũng tập trung nhiều nhãn có chiều cao từ 0.4 đến 0.8 Tức hình ảnh khuôn mặt

Dựa vào biểu đồ phân bố ta thấy tần suất x chiếm từ 0.4 đến 0.6 và y từ 0.3 đến 0.7 được phân bổ nhiều Đối với chiều rộng và chiều cao thì phân bổ ở 0.1 đến 0.3

Hình 3.9: Mối tương quan giữa kích thước với nhãn dữ liệu

3.4.3 Huấn luyện mô hình Đào tạo mô hình YOLOv5s trên COCO128 bằng cách chỉ định tập dữ liệu, kích thước lô, kích thước hình ảnh và weights yolov5s.pt được đào tạo trước (được khuyến nghị) hoặc weights '' cfg yolov5s.yaml (không được khuyến nghị) File trọng số được tự động tải xuống từ bản phát hành YOLOv5 mới nhất

!python /content/yolov5/train.py img 640 batch 24 epochs 100 data coco128.yaml weights yolov5m.pt

Câu lệnh train model trên Colab, trong đó: img 640 là kích thước của ảnh batch 24 là số hình mỗi lần train epochs 100 là số lần train data coco128.yaml là nơi lấy thông tin để train weights yolov5m.pt là thư viện để train

Tất cả các kết quả đào tạo được lưu vào running/train/ với các thư mục tên tự động được đặt tăng dần cho mỗi lần chạy, tức là running/train/exp2, running/train/exp3, v.v train: weights=yolov5m.pt, cfg=, data=coco128.yaml, hypa/hyps/hyp.scratch-low.yaml, epochsP, batch_size$, imgszd0, rectse, resumese, nosavese, novalse, noautoanchorse, noplotsse, evolve=None, bucket=, cache=None, image_weightsse, device=, multi_scalese, single_clsse, optimizer=SGD, sync_bnse, workers=8, project=runs/train, name=exp, exist_okse, quadse, cos_lrse, label_smoothing=0.0, patience0, freeze=[0], save_period=-1, seed=0, local_rank=-1, entity=None, upload_datasetse, bbox_interval=-1, artifact_alias=latest github: up to date with https://github.com/ultralytics/yolov5 ✅ fatal: cannot change to '/content/drive/MyDrive/Colab': No such file or directory

YOLOv5 ✅ 2023-10-30 Python-3.10.12 torch-2.1.0+cu118 CUDA:0 (Tesla

V100-SXM2-16GB, 16151MiB) hyperparameters: lr0=0.01, lrf=0.01, momentum=0.937, weight_decay=0.0005, warmup_epochs=3.0, warmup_momentum=0.8, warmup_bias_lr=0.1, box=0.05, cls=0.5, cls_pw=1.0, obj=1.0, obj_pw=1.0, iou_t=0.2, anchor_t=4.0, fl_gamma=0.0, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, degrees=0.0, translate=0.1, scale=0.5, shear=0.0, perspective=0.0, flipud=0.0, fliplr=0.5, mosaic=1.0, mixup=0.0, copy_paste=0.0

Comet: run 'pip install comet_ml' to automatically track and visualize

TensorBoard: Start with 'tensorboard logdir runs/train', view at http://localhost:6006/

Overriding model.yaml nc with nc=4 from n params module arguments

11 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2,

13 -1 2 1182720 models.common.C3 [768, 384, 2, False] 14 -1 1 74112 models.common.Conv [384, 192, 1, 1] 15 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest'] 16 [-1, 4] 1 0 models.common.Concat [1]

17 -1 2 296448 models.common.C3 [384, 192, 2, False] 18 -1 1 332160 models.common.Conv [192, 192, 3, 2] 19 [-1, 14] 1 0 models.common.Concat [1]

20 -1 2 1035264 models.common.C3 [384, 384, 2, False] 21 -1 1 1327872 models.common.Conv [384, 384, 3, 2] 22 [-1, 10] 1 0 models.common.Concat [1]

Model summary: 291 layers, 20883441 parameters, 20883441 gradients, 48.3 GFLOPs

Transferred 475/481 items from yolov5m.pt

AMP: checks passed ✅ optimizer: SGD(lr=0.01) with parameter groups 79 weight(decay=0.0), 82 weight(decay=0.0005625000000000001), 82 bias albumentations: Blur(p=0.01, blur_limit=(3, 7)), MedianBlur(p=0.01, blur_limit=(3, 7)), ToGray(p=0.01), CLAHE(p=0.01, clip_limit=(1, 4.0), tile_grid_size=(8, 8)) train: Scanning /content/drive/MyDrive/Colab Notebooks/20231031 Nhan dien khuon mat Hiep/datasets/coco128/labels/train2017.cache 398 images,

0 backgrounds, 0 corrupt: 100% 398/398 [00:00

Ngày đăng: 25/03/2024, 14:52

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w