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

Báo cáo trí tuệ nhân tạo Đề tài nhận diện khuôn măt

37 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 đề Nhận Diện Khuôn Mặt
Tác giả Hán Đức Long, Nguyễn Quang Minh, Nguyễn Thành Nam, Trần Huy Hoàng, Đỗ Đức Tuân
Người hướng dẫn Th.S Phạm Nghĩa Luân
Trường học Đại học Hải Phòng
Chuyên ngành Công Nghệ Thông Tin
Thể loại báo cáo
Định dạng
Số trang 37
Dung lượng 3,23 MB

Cấu trúc

  • 1.1 Sơ lược về trí tuệ nhân tạo nhận diện khuôn mặt (3)
  • 1.2 Ưng dụng của nhận diện khuôn mặt trong thực tế (3)
  • 1.1 Ý tưởng thuật toán (5)
  • 1.2 Lựa chọn mô hình (7)
  • 1.3 Lược đồ mô hình (11)
  • 2.0 Giới thiệu về Pychamr và thư viện Face_recognition (12)
  • 2.1 Tiền xử lí dữ liệu với sự hỗ trợ của thư viện Face_recognition trên môi trường Pychamr (12)
  • 2.2 Upload dữ liệu lên google drive (13)
  • 2.3 Chia tập dữ liệu dùng scikit-learn (15)
  • 3.1 Lớp tích chập (Conv2D) (17)
  • 3.2 Lớp pooling (MaxPooling2D) (18)
  • 3.3 Lớp liên kết đầy đủ (Dense) (19)
  • 3.4 Lớp làm phẳng (Flatten) và Dropout (19)
  • 3.5 Hàm kích hoạt ReLU (20)
  • 3.6 Hàm kích hoạt Softmax (20)
  • 3.7 Thuật toán adam (21)
  • 3.8 Hàm mất mát Categorical-Crossentropy (23)
  • 3.9 Mô hình tổng quan (23)
  • 3.1 Giới thiệu về Colab,TensorFlow (26)

Nội dung

Sử dụng và triển khai: Sau khi đạt được hiệu suất đáng chấp nhận trên tập dữ liệu kiểm tra, bạn có thể sử dụng mô hình nhận diện khuôn mặt chi tiết để áp dụng cho các ứng dụng thực tế..

Sơ lược về trí tuệ nhân tạo nhận diện khuôn mặt

AI là viết tắt của Artificial Intelligence, có nghĩa là trí tuệ nhân tạo.

Công nghệ AI nhận diện khuôn mặt ứng dụng trí tuệ nhân tạo để xác định danh tính qua việc phân tích các đặc điểm khuôn mặt như tròng mắt, hình dạng, kích thước và khoảng cách giữa các bộ phận Hiện nay, hệ thống AI có khả năng nhận diện dựa vào các đặc điểm nổi bật như mô cứng và xương, giúp phân tích rõ nét đường cong của hốc mắt, mũi và cằm để nhận ra đối tượng Những đặc điểm này là độc nhất cho mỗi khuôn mặt và không thay đổi theo thời gian.

Hệ thống hoạt động hiệu quả trong mọi điều kiện thời tiết, bao gồm cả ban ngày và ban đêm, ngay cả khi thiếu ánh sáng Công nghệ AI nhận diện khuôn mặt với tính năng vượt trội đã được ứng dụng thành công trong nhiều lĩnh vực, giúp người quản lý kiểm soát dễ dàng mà không làm ảnh hưởng đến cảm giác riêng tư của đối tượng, tránh xâm phạm quyền riêng tư của họ.

Ưng dụng của nhận diện khuôn mặt trong thực tế

Nhận diện khuôn mặt là một lĩnh vực quan trọng trong công nghệ thông tin, với nhiều ứng dụng thực tế đa dạng Một số ví dụ về ứng dụng của công nghệ này bao gồm bảo mật, nhận diện người dùng trong các thiết bị di động, và phân tích hành vi trong lĩnh vực marketing.

Nhận diện khuôn mặt là công nghệ tiên tiến giúp người dùng đăng nhập và xác thực trong nhiều hệ thống và thiết bị như điện thoại di động, máy tính, cổng vào văn phòng và ứng dụng di động Thay vì phụ thuộc vào mật khẩu hay mã PIN, người dùng có thể sử dụng khuôn mặt của mình để xác thực, mang lại sự tiện lợi và an toàn hơn trong việc bảo vệ thông tin cá nhân.

Quản lý danh sách đen bằng công nghệ nhận diện khuôn mặt là một giải pháp hiệu quả trong các hệ thống an ninh và kiểm soát truy cập Hệ thống này có khả năng so sánh khuôn mặt của người dùng với danh sách đen đã được xác định trước, giúp phát hiện và ngăn chặn những cá nhân có liên quan đến hoạt động bất hợp pháp hoặc nguy hiểm.

Doanh nghiệp trong lĩnh vực bán lẻ và dịch vụ khách hàng có thể áp dụng công nghệ nhận diện khuôn mặt để theo dõi và nhận dạng khách hàng, từ đó tạo ra trải nghiệm cá nhân hóa Việc này không chỉ giúp gợi ý sản phẩm phù hợp và giới thiệu dịch vụ một cách hiệu quả, mà còn nâng cao quản lý khách hàng trung thành và cải thiện chất lượng phục vụ.

Nhận diện khuôn mặt đóng vai trò quan trọng trong giám sát an ninh và giám sát công cộng, giúp phát hiện và nhận dạng các đối tượng nghi ngờ hoặc nguy hiểm Hệ thống này có khả năng so sánh khuôn mặt trong hình ảnh hoặc video với cơ sở dữ liệu để xác định sự tương đồng, từ đó nâng cao hiệu quả trong việc bảo đảm an toàn.

5 Quản lý sự kiện và đám đông: Nhận diện khuôn mặt có thể được sử dụng để quản lý sự kiện và đám đông trong các sự kiện lớn.

Nhận diện khuôn mặt đóng vai trò quan trọng trong lĩnh vực an ninh và pháp luật, hỗ trợ giám sát và điều tra tội phạm hiệu quả Hệ thống này có khả năng so sánh khuôn mặt của các đối tượng nghi ngờ với cơ sở dữ liệu tội phạm hoặc danh sách tìm kiếm, từ đó xác định danh tính của họ Việc áp dụng công nghệ này có thể góp phần giảm thiểu tội phạm và nâng cao an ninh công cộng.

Nhận diện khuôn mặt trong quản lý nhận dạng tại sân bay và cửa khẩu giúp xác định danh tính hành khách một cách hiệu quả Hệ thống này so sánh khuôn mặt của hành khách với dữ liệu trong danh sách an toàn, cung cấp thông tin cần thiết cho các cơ quan an ninh để thực hiện kiểm tra và kiểm soát an ninh.

Nhận diện khuôn mặt trong lĩnh vực y tế giúp xác định và theo dõi bệnh nhân tại các cơ sở y tế, đảm bảo tính chính xác trong việc cung cấp dịch vụ y tế Hệ thống này liên kết thông tin y tế của bệnh nhân, từ đó nâng cao chất lượng chăm sóc sức khỏe.

Nhận diện khuôn mặt là một giải pháp hiệu quả để kiểm soát truy cập và nâng cao an ninh trong các tòa nhà và cơ quan Thay vì dựa vào thẻ hoặc mã PIN, công nghệ này cho phép người dùng dễ dàng truy cập vào các khu vực an ninh chỉ bằng cách nhận dạng khuôn mặt của họ.

Công nghệ nhận diện khuôn mặt có thể được áp dụng trong xe tự hành để xác định và nhận diện người lái, từ đó nâng cao mức độ an toàn và bảo mật trong việc sử dụng cũng như quản lý các dịch vụ liên quan đến xe tự lái.

Tổng hợp lại, nhận diện khuôn mặt có nhiều ứng dụng thực tế trong các lĩnh vực như an ninh, công nghệ, y tế, giao thông v.v…

II XÂY DỰNG MÔ HÌNH

Ý tưởng thuật toán

Để xây dựng một hệ thống trí tuệ nhân tạo nhận diện khuôn mặt chi tiết, bạn có thể áp dụng các bước sau:

Để xây dựng một bộ dữ liệu chi tiết, bạn cần thu thập hình ảnh khuôn mặt với các đặc điểm như mắt, mũi, miệng và những chi tiết nhỏ khác Việc tạo ra bộ dữ liệu này có thể thực hiện bằng cách gắn nhãn các điểm chi tiết trên khuôn mặt trong một tập hợp ảnh.

Để xây dựng mô hình mạng nơ-ron, bạn nên sử dụng kiến trúc mạng tích chập (CNN) nhằm học và trích xuất các đặc trưng từ khuôn mặt chi tiết Các lớp tích chập giúp tìm kiếm các đặc trưng cục bộ, trong khi các lớp kích hoạt phi tuyến như ReLU giới hạn đầu ra Bên cạnh đó, việc sử dụng các lớp gộp sẽ giúp giảm kích thước dữ liệu và trích xuất các đặc trưng quan trọng.

Mạng nơ-ron cần được huấn luyện bằng cách cung cấp hình ảnh khuôn mặt chi tiết đã được gắn nhãn, bao gồm các điểm chi tiết Để tối đa hóa độ chính xác trong việc nhận diện các điểm này, cần tối ưu hóa hàm mất mát (loss function) Các thuật toán tối ưu như gradient descent có thể được áp dụng để điều chỉnh trọng số của mạng nơ-ron.

Đánh giá và tinh chỉnh mô hình là bước quan trọng trong quá trình phát triển Để đánh giá hiệu suất, sử dụng tập dữ liệu kiểm tra hoặc dữ liệu không nhìn thấy trước đó, với các độ đo như độ chính xác (accuracy) và độ chính xác tương đối (precision-recall) Nếu kết quả không đạt yêu cầu, có thể tinh chỉnh mô hình bằng cách điều chỉnh kiến trúc mạng, siêu tham số (hyperparameters) hoặc áp dụng các kỹ thuật huấn luyện khác.

Sau khi đạt hiệu suất tốt trên tập dữ liệu kiểm tra, mô hình nhận diện khuôn mặt có thể được triển khai cho các ứng dụng thực tế Các ứng dụng này bao gồm nhận diện biểu hiện khuôn mặt, nhận diện dấu vết, và nhận diện đặc điểm khuôn mặt, phục vụ cho mục đích xác thực và giám sát an ninh.

Tăng cường dữ liệu là một kỹ thuật quan trọng để cải thiện khả năng tổng quát hóa và độ chính xác của mô hình Bằng cách tạo ra các phiên bản biến thể của dữ liệu huấn luyện thông qua các phép biến đổi như xoay, phóng to, thu nhỏ, lật ngang, lật dọc, điều chỉnh ánh sáng và sắc tố, mô hình có thể học được khái quát hơn Kỹ thuật này giúp giảm thiểu hiện tượng overfitting, từ đó nâng cao hiệu suất của mô hình.

Học chuyển tiếp (Transfer learning) là một kỹ thuật hữu ích khi làm việc với tập dữ liệu nhỏ, cho phép bạn tận dụng kiến thức từ các mạng nơ-ron đã được huấn luyện trên các tác vụ tương tự Bằng cách áp dụng các trọng số và đặc trưng đã học từ mạng lớn, bạn có thể giảm thiểu thời gian và nguồn lực cần thiết để huấn luyện mô hình của mình.

Để duy trì hiệu suất tối ưu cho mô hình nhận diện khuôn mặt, việc đánh giá và cải thiện thường xuyên là rất quan trọng Bạn nên thử nghiệm với các kiến trúc mạng khác nhau, tinh chỉnh các siêu tham số và áp dụng các kỹ thuật huấn luyện để xác định cấu trúc và cài đặt phù hợp nhất cho bài toán này.

Xây dựng một hệ thống trí tuệ nhân tạo nhận diện khuôn mặt yêu cầu thiết kế một kiến trúc mạng nơ-ron thích hợp, đào tạo trên một bộ dữ liệu chất lượng và thực hiện các bước đánh giá để cải thiện hiệu suất của hệ thống.

Lựa chọn mô hình

Mô hình học máy nhận diện khuôn mặt rất đa dạng, trong đó CNN (Convolutional Neural Network) nổi bật như một trong những phương pháp quan trọng và phổ biến nhất Bài viết này sẽ tập trung vào các mô hình học máy nhận diện khuôn mặt, đặc biệt nhấn mạnh vai trò của CNN trong lĩnh vực này.

LeNet-5 là một trong những mô hình CNN đầu tiên do Yann LeCun phát triển, ban đầu được thiết kế để nhận dạng chữ số viết tay Mô hình này sau đó đã được áp dụng vào việc nhận diện khuôn mặt LeNet-5 sử dụng các lớp convolutional và pooling để trích xuất đặc trưng từ hình ảnh, đóng góp quan trọng cho sự phát triển của các ứng dụng học sâu trong thị giác máy tính.

Mô hình VGGFace, được phát triển dựa trên mạng VGG (Visual Geometry Group), nổi bật với khả năng nhận diện khuôn mặt chính xác cao VGGFace đã đạt được thành công lớn tại cuộc thi nhận diện khuôn mặt ILSVRC 2014 Mô hình này sử dụng các lớp convolutional và fully connected để học hỏi các đặc trưng quan trọng từ hình ảnh khuôn mặt.

FaceNet là một mô hình nhận diện khuôn mặt tiên tiến, sử dụng mạng nơ-ron tích chập (CNN) để học cách biểu diễn khuôn mặt trong không gian vectơ Mô hình này áp dụng phương pháp triplet loss nhằm tạo ra các biểu diễn khuôn mặt gần nhau cho cùng một người và xa nhau cho những người khác Nhờ vào những cải tiến này, FaceNet đã đạt được hiệu suất xuất sắc trong các bài toán nhận diện và xếp hạng khuôn mặt.

DeepFace là mô hình nhận diện khuôn mặt tiên tiến do Facebook AI Research phát triển, sử dụng mạng CNN sâu để học và nhận diện khuôn mặt Mô hình này thực hiện các bước quan trọng như phát hiện, phân loại và xác minh khuôn mặt, đạt hiệu suất cao trong các bài toán nhận diện trên tập dữ liệu lớn.

CNN (Mạng nơ-ron tích chập) là thành phần chính trong việc học các đặc trưng khuôn mặt từ dữ liệu ảnh Nó tự động tổ chức các đặc trưng không gian và học các đặc trưng phức tạp qua các lớp convolutional CNN cho phép mô hình nắm bắt các mức độ độ sâu của đặc trưng, từ các yếu tố cơ bản như cạnh và góc đến những đặc trưng phức tạp hơn như cấu trúc khuôn mặt và biểu cảm.

Việc áp dụng CNN trong nhận diện khuôn mặt giúp giảm sự phụ thuộc vào các đặc trưng cụ thể của khuôn mặt, cho phép mô hình tự động học các đặc điểm như đường viền mắt, cung mày và môi Điều này nâng cao khả năng tổng quát của mô hình, giúp nhận diện khuôn mặt của nhiều người trong các điều kiện khác nhau Chúng tôi sẽ sử dụng mô hình CNN của TensorFlow để phát triển AI nhận diện khuôn mặt.

CNN (Mạng Nơ-ron Tích Chập) là một mô hình nơ-ron đặc biệt, phổ biến trong xử lý ảnh và nhận diện khuôn mặt Sự phổ biến của CNN trong AI nhận diện khuôn mặt đến từ khả năng phân tích và nhận diện đặc trưng hình ảnh một cách hiệu quả.

CNN có cấu trúc tổ chức đặc biệt với các lớp convolutional và pooling, giúp hiểu và trích xuất thông tin từ các đặc trưng không gian trong ảnh Cấu trúc này rất phù hợp cho việc nhận diện khuôn mặt, vì khuôn mặt sở hữu các đặc trưng không gian như mắt, mũi, miệng và khuôn khổ tổng thể.

CNN có khả năng tự động học các đặc trưng từ dữ liệu huấn luyện, giúp giảm sự phụ thuộc vào các đặc trưng được định nghĩa bởi con người Thay vì phải xác định các đặc trưng cụ thể của khuôn mặt, CNN có thể tự động nhận diện các yếu tố như viền mắt, đường cung mày và môi, từ đó cải thiện khả năng tổng quát của mô hình.

Xử lý đa phân tầng trong CNN cho phép nhận diện khuôn mặt hiệu quả bằng cách sử dụng các lớp convolutional và pooling Điều này giúp mô hình có khả năng phân tích các đặc trưng ở nhiều mức độ sâu khác nhau, từ các đặc trưng cơ bản như viền và góc cho đến các đặc trưng phức tạp hơn như cấu trúc khuôn mặt và biểu cảm.

CNN (Mạng Nơ-ron Tích Chập) nổi bật với độ chính xác cao trong việc nhận diện khuôn mặt Khả năng học tự động các đặc trưng phức tạp giúp CNN xử lý hiệu quả các biến đổi như ánh sáng, góc chụp và biểu cảm, từ đó nâng cao hiệu suất nhận diện.

CNN là một công nghệ AI được sử dụng rộng rãi trong nhận diện khuôn mặt nhờ vào cấu trúc tổ chức phù hợp với đặc trưng không gian của khuôn mặt Với khả năng học tự động từ dữ liệu huấn luyện, CNN cung cấp khả năng xử lý đa phân tầng, cho phép phân tích sâu các đặc trưng khuôn mặt Công nghệ này cũng xử lý hiệu quả các biến đổi trên khuôn mặt, đạt độ chính xác cao trong nhận diện Vì vậy, CNN trở thành lựa chọn phổ biến và hiệu quả cho các ứng dụng thực tế trong lĩnh vực nhận diện khuôn mặt.

Có một số ý tưởng và cải tiến liên quan đến CNN:

Đa tầng tích chập cho phép sử dụng nhiều lớp tích chập liên tiếp, giúp mô hình học được các đặc trưng phức tạp hơn Việc áp dụng nhiều tầng tích chập nâng cao khả năng nhận diện các đặc trưng ở mức độ trừu tượng cao hơn.

Mạng nơ-ron chồng chéo (Inception network) sử dụng các module chồng chéo với kích thước khác nhau, cho phép học các đặc trưng ở nhiều tỉ lệ không gian khác nhau Nhờ đó, mô hình có khả năng phát hiện các đặc trưng với nhiều mức độ chi tiết và tỉ lệ khác nhau trong hình ảnh.

Lược đồ mô hình

Mô hình lọc ảnh sử dụng các lớp đặc biệt nhằm trích xuất những đặc trưng chung nhất của khuôn mặt Các đặc trưng này sau đó được lưu vào hệ thống và liên kết với các nhãn tương ứng.

Mô hình tổng quan CNN trong TensorFlow

2 Tiền xử lí dữ liệu.

Giới thiệu về Pychamr và thư viện Face_recognition

PyCharm là một IDE mạnh mẽ dành cho lập trình Python, được phát triển bởi JetBrains Nó cung cấp nhiều tính năng hữu ích như trình biên dịch Python, hỗ trợ gỡ lỗi và kiểm tra cú pháp, giúp lập trình viên nâng cao hiệu suất làm việc và quản lý dự án Python một cách dễ dàng.

Thư viện face_recognition là một công cụ mã nguồn mở cho Python, chuyên nhận diện và nhận dạng khuôn mặt trong ảnh và video Với công nghệ deep learning, thư viện này trích xuất các đặc trưng khuôn mặt và so sánh chúng với cơ sở dữ liệu đã được huấn luyện Face_recognition cung cấp nhiều chức năng hữu ích như tìm kiếm khuôn mặt trong ảnh, nhận dạng khuôn mặt từ video, và cung cấp thông tin chi tiết như vị trí khuôn mặt, điểm đặc trưng, cũng như khuôn mặt nổi bật.

Khi sử dụng PyCharm cùng với thư viện face_recognition, bạn có thể phát triển ứng dụng nhận diện khuôn mặt trong Python một cách hiệu quả PyCharm hỗ trợ việc viết mã và tổ chức dự án dễ dàng, trong khi face_recognition cung cấp các công cụ mạnh mẽ để xử lý và phân tích khuôn mặt.

Tiền xử lí dữ liệu với sự hỗ trợ của thư viện Face_recognition trên môi trường Pychamr

Face_recognition trên môi trường Pychamr

Dữ Liệu Thô Gồm 100 ảnh của 2 cầu thủ Messi và Ronaldo được thu thập từ internet và 100 ảnh cá nhân.

Với sự hỗ trợ của thư viện Face_recognition (Haar Cascade), chúng tôi đã cắt rõ các khuôn mặt và loại bỏ các chi tiết thừa, giúp quá trình huấn luyện mô hình trở nên nhanh chóng và chính xác hơn Việc tiền xử lý dữ liệu được thực hiện trong môi trường tối ưu.

Dữ liệu gốc được thu thập từ nhiều nguồn

Dữ liệu sau khi đã được xử lý bằng

Upload dữ liệu lên google drive

Sau khi xử lí dữ liệu xong ta phân chia dữ liệu theo đúng chuẩn rồi up lên google drive để có thể sử dụng trong Colab dễ dàng.

We will use the following code to read and label the data used for training: ```pythonfrom PIL import Image class Datasets(): def init (self): pass def load_data(self):```This code snippet outlines the creation of a class for handling datasets, which includes methods for initializing the class and loading data efficiently.

In this article, we explore how to process image files in a specified directory using Python We begin by defining an empty list for labels and images, and set the data directory to '/content/drive/MyDrive/Testdatasets' We then gather all subfolders within this directory For each subfolder, we enumerate the labels and iterate through the files, checking for those that end with ".jpg" or ".png" Each valid image is opened, resized to 100x100 pixels, and converted into a NumPy array for further analysis or processing.

X.append(image_array) y.append(label)

X = np.array(X) y = np.array(y) classes = os.listdir(data_dir) return X, y, classes

Sau khi thực hiện các đoạn mã này, chúng ta đã tạo ra biến X dưới dạng mảng ma trận, chứa các đặc trưng của ảnh Biến Y là mảng các nhãn dán đã được chuyển đổi thành số nguyên, trong khi biến classes lưu trữ tên của các nhãn.

Chia tập dữ liệu dùng scikit-learn

Phân chia dữ liệu thành tập huấn luyện và tập kiểm tra là bước thiết yếu trong mô hình học máy Việc này giúp đảm bảo rằng mô hình được đào tạo trên một tập dữ liệu và được kiểm tra trên một tập dữ liệu khác, từ đó đánh giá chính xác khả năng tổng quát của mô hình Ngoài ra, phân chia dữ liệu cũng giúp phát hiện hiện tượng quá khớp (overfitting) và cải thiện độ tin cậy của các dự đoán.

Đánh giá hiệu suất là một bước quan trọng trong việc xây dựng mô hình học máy, nhằm xác định khả năng dự đoán của mô hình trên dữ liệu mới chưa được huấn luyện Tập kiểm tra được sử dụng để đo lường độ chính xác và khả năng tổng quát hóa của mô hình Nếu không có tập kiểm tra riêng, mô hình có thể cho kết quả tốt trên dữ liệu huấn luyện nhưng lại không thể tổng quát hóa hiệu quả trên dữ liệu mới.

Để tránh overfitting, điều quan trọng là nhận diện khi mô hình trở nên quá phức tạp và học quá nhiều từ dữ liệu huấn luyện, dẫn đến khả năng tổng quát kém trên dữ liệu mới Sử dụng tập kiểm tra độc lập giúp đánh giá tình trạng overfitting của mô hình Nếu hiệu suất của mô hình trên tập kiểm tra thấp hơn so với tập huấn luyện, điều này chỉ ra rằng mô hình có khả năng đang bị overfitting và cần được điều chỉnh phù hợp.

Trong quá trình xây dựng mô hình, việc tinh chỉnh tham số là rất quan trọng để tối ưu hóa hiệu suất Tập kiểm tra cho phép đánh giá hiệu suất của mô hình với các tham số khác nhau và lựa chọn bộ tham số tốt nhất Tuy nhiên, nếu sử dụng cùng một tập dữ liệu cho cả huấn luyện và kiểm tra, mô hình có thể chỉ học thuộc các điểm dữ liệu mà không tổng quát hóa được, dẫn đến khó khăn trong việc đánh giá hiệu quả thực sự.

Việc phân chia dữ liệu thành tập huấn luyện và tập kiểm tra là rất quan trọng trong việc đánh giá hiệu suất của mô hình học máy, giúp phòng tránh hiện tượng overfitting và tối ưu hóa các tham số Scikit-learn cung cấp cách đơn giản để thực hiện việc này thông qua một dòng code dễ sử dụng.

Đoạn mã trên sử dụng hàm `train_test_split` từ thư viện `scikit-learn` để chia dữ liệu thành hai tập: tập huấn luyện và tập kiểm tra, với kích thước tập kiểm tra chiếm 10% tổng dữ liệu và thiết lập giá trị ngẫu nhiên là 17.

Giải thích từng tham số:

- `X` là ma trận đặc trưng (feature matrix) chứa dữ liệu đầu vào.

- `y` là vector nhãn (label vector) chứa các nhãn tương ứng với mỗi mẫu dữ liệu trong `X`.

`test_size` là tỷ lệ từ 0 đến 1, xác định phần trăm dữ liệu dùng cho tập kiểm tra Trong đoạn mã này, test_size = 0.1 có nghĩa là 10% dữ liệu sẽ được dành cho kiểm tra, trong khi 90% còn lại được sử dụng để huấn luyện mô hình.

`random_state` là một số nguyên quan trọng giúp kiểm soát việc phân chia dữ liệu trong quá trình phân tích Bằng cách cung cấp một giá trị cố định cho `random_state`, chúng ta đảm bảo rằng kết quả phân chia dữ liệu sẽ nhất quán qua các lần chạy khác nhau Điều này rất hữu ích cho việc tái tạo kết quả và so sánh hiệu suất giữa các mô hình hoặc phương pháp khác nhau.

Kết quả của `train_test_split` là bốn biến:

- `X_train` là ma trận đặc trưng của tập huấn luyện.

- `X_test` là ma trận đặc trưng của tập kiểm tra.

- `y_train` là vector nhãn của tập huấn luyện.

- `y_test` là vector nhãn của tập kiểm tra.

Bằng phương pháp này, chúng ta có thể dễ dàng chia dữ liệu thành các tập huấn luyện và kiểm tra, từ đó tiến hành huấn luyện và đánh giá mô hình một cách hiệu quả.

Mô hình bao gồm ba thành phần chính: các lớp, hàm mất mát và thuật toán, cùng với hàm kích hoạt Để nắm vững mô hình, việc tìm hiểu sơ lược về các thành phần này là rất quan trọng.

Lớp tích chập (Conv2D)

Lớp tích chập (Convolutional Layer) là thành phần quan trọng trong mạng nơ-ron, chuyên dùng cho xử lý hình ảnh và dữ liệu dạng ma trận Lớp này áp dụng bộ lọc (filter/kernel) trên toàn bộ ảnh đầu vào nhằm phát hiện các đặc trưng ở mức độ cao hơn.

Các tham số quan trọng của lớp tích chập bao gồm:

Số lượng filter là yếu tố quan trọng trong việc áp dụng lên đầu vào, với mỗi filter tạo ra một feature map (bản đồ đặc trưng) nhằm phát hiện các đặc trưng khác nhau trong dữ liệu đầu vào.

Kích thước của bộ lọc ảnh là yếu tố quan trọng, thường được chọn là số lẻ như 3x3, 5x5, hoặc 7x7 Sự lựa chọn kích thước này ảnh hưởng đến chất lượng và độ sắc nét của hình ảnh đầu ra.

Bước nhảy (stride) là khoảng cách giữa các vị trí áp dụng bộ lọc trên ảnh đầu vào Khi stride bằng 1, bộ lọc sẽ được áp dụng liên tiếp trên từng pixel, trong khi nếu stride lớn hơn 1, bộ lọc sẽ được áp dụng cách đều nhau, dẫn đến việc giảm kích thước của output feature map.

Padding là phương pháp thêm viền xung quanh ảnh đầu vào nhằm bảo vệ thông tin khi áp dụng bộ lọc Việc này có thể thực hiện bằng cách thêm các giá trị 0 vào các cạnh hoặc trung tâm của ảnh.

Các tham số này ảnh hưởng đến kích thước và số lượng feature map của đầu ra, từ đó tác động đến quá trình huấn luyện và hiệu suất của mạng nơ-ron Vì vậy, việc tinh chỉnh các tham số này là rất quan trọng để tối ưu hóa kết quả từ mạng nơ-ron sử dụng lớp tích chập.

Lớp pooling (MaxPooling2D)

Hàm MaxPooling là một lớp quan trọng trong mạng nơ-ron, thường được sử dụng trong xử lý hình ảnh Lớp này giúp giảm kích thước của feature map bằng cách chọn giá trị lớn nhất từ mỗi vùng không chồng lấp, từ đó tối ưu hóa hiệu suất của mô hình.

Các tham số quan trọng của lớp MaxPooling bao gồm:

Kích thước của cửa sổ pooling ảnh hưởng đến vùng không chồng lên nhau trên feature map, từ đó xác định giá trị lớn nhất được đưa vào output feature map Thông thường, kích thước này là số lẻ, phổ biến nhất là 2 hoặc 3.

Bước nhảy (stride) trong lớp tích chập quy định khoảng cách giữa các vị trí áp dụng cửa sổ pooling trên bản đồ đặc trưng Khi stride bằng kích thước của cửa sổ pooling, các vùng không chồng lên nhau sẽ được chọn để tính giá trị lớn nhất Ngược lại, nếu stride lớn hơn kích thước của cửa sổ pooling, những vùng không được chọn sẽ bị bỏ qua.

Lớp MaxPooling giúp giảm kích thước của feature map, trích xuất các đặc trưng quan trọng nhất, đồng thời giảm số lượng tham số và tính toán trong mạng nơ-ron Việc sử dụng lớp này là cần thiết để tối ưu hóa hiệu suất của mô hình.

MaxPooling cũng giúp giảm overfitting trong quá trình huấn luyện mạng nơ-ron.

Lớp liên kết đầy đủ (Dense)

The Dense layer in TensorFlow is a fully connected neural network layer, meaning that every input from the previous layer is connected to all outputs of this layer.

Lớp Dense là thành phần quan trọng trong các mô hình học sâu, giúp ánh xạ đầu vào thành đầu ra thông qua việc sử dụng trọng số và độ lệch Để sử dụng lớp Dense trong TensorFlow, bạn cần khởi tạo một thể hiện của lớp với số lượng đầu ra mong muốn và sau đó truyền đầu vào vào để tính toán kết quả đầu ra.

Lớp làm phẳng (Flatten) và Dropout

Lớp Flatten và Dropout là các lớp quan trọng trong các mô hình học sâu được sử dụng để giảm overfitting và cải thiện hiệu suất mô hình.

Lớp Flatten là một thành phần quan trọng trong mạng nơ-ron, có chức năng chuyển đổi dữ liệu đầu vào từ định dạng ma trận sang định dạng vector Lớp này giúp trải phẳng dữ liệu trước khi đưa vào các lớp nơ-ron tiếp theo Chẳng hạn, nếu dữ liệu đầu vào có kích thước (batch_size, 28, 28), lớp Flatten sẽ chuyển đổi nó thành một vector với kích thước (batch_size, 784).

Lớp Dropout là một kỹ thuật regularization hiệu quả nhằm ngăn chặn hiện tượng overfitting trong các mô hình học sâu Bằng cách bỏ qua ngẫu nhiên một tỷ lệ nhất định các nơ-ron trong mạng nơ-ron trong quá trình huấn luyện, lớp Dropout giúp mô hình học được một cách tổng quát hơn, từ đó cải thiện khả năng tổng quát và giảm thiểu overfitting.

Hàm kích hoạt ReLU

Hàm kích hoạt ReLU (Rectified Linear Unit) là một trong những hàm phổ biến nhất trong mạng nơ-ron, đặc biệt trong các bài toán phân loại ảnh Hàm ReLU được định nghĩa bằng công thức f(x) = max(0, x), với x là đầu vào và f(x) là đầu ra.

Hàm ReLU đóng vai trò quan trọng trong phân loại ảnh bằng cách giúp mạng nơ-ron học các đặc trưng của ảnh một cách hiệu quả hơn Khi sử dụng hàm ReLU, các giá trị âm được đưa về 0, trong khi các giá trị dương được giữ nguyên, từ đó giúp mạng nơ-ron phát hiện những đặc trưng quan trọng như sự tương phản và đường viền của ảnh.

Hàm ReLU giúp ngăn chặn hiện tượng mất mát gradient trong huấn luyện mạng nơ-ron Khi sử dụng các hàm kích hoạt khác như sigmoid hay tanh, gradient có xu hướng tiến dần về 0 khi đầu vào xa trung tâm, gây khó khăn trong việc cập nhật trọng số Ngược lại, với hàm ReLU, gradient được giữ nguyên khi đầu vào lớn hơn 0, từ đó cải thiện hiệu quả huấn luyện mạng nơ-ron.

Hàm kích hoạt ReLU đóng vai trò quan trọng trong việc giúp mạng nơ-ron nhận diện các đặc trưng quan trọng của ảnh, đồng thời ngăn chặn hiện tượng mất mát gradient, từ đó nâng cao hiệu quả của quá trình huấn luyện mạng nơ-ron.

Hàm kích hoạt Softmax

Hàm kích hoạt softmax là một công cụ quan trọng trong trí tuệ nhân tạo, đặc biệt cho các bài toán phân loại đa lớp Nó chuyển đổi một vector đầu vào thành phân phối xác suất cho các lớp khác nhau Đầu vào của hàm softmax là vector z = [z1, z2, , zn], và hàm này tính toán xác suất cho từng phần tử, ký hiệu là p = [p1, p2, , pn] Công thức tính toán của hàm softmax được thể hiện qua biểu thức: pi = exp(zi) / (exp(z1) + exp(z2) + + exp(zn)).

Trong đó, exp(x) là hàm mũ e^x và tổng của tất cả các giá trị exp(zi) đảm bảo rằng tổng của p sẽ bằng 1.

Hàm softmax chuyển đổi các giá trị đầu vào thành xác suất, với giá trị cao nhất tương ứng với xác suất lớn nhất Nhờ vào đặc tính này, hàm softmax trở nên rất hữu ích trong các bài toán phân loại đa lớp, giúp xác định xác suất cho mỗi lớp dựa trên đầu vào.

Hàm kích hoạt softmax là một thành phần quan trọng trong việc huấn luyện mô hình phân loại đa lớp, thường được kết hợp với hàm mất mát Cross-Entropy trong các thuật toán học máy và mạng nơ-ron.

Thuật toán adam

Adam (Adaptive Moment Estimation) là một thuật toán tối ưu hóa gradient descent phổ biến trong huấn luyện mạng nơ-ron và các mô hình học máy Thuật toán này kết hợp ưu điểm của hai phương pháp tối ưu hóa khác là AdaGrad và RMSProp, giúp cải thiện hiệu suất trong quá trình huấn luyện.

Adam duy trì một tập hợp các tham số để theo dõi và điều chỉnh tốc độ học cho từng tham số trong quá trình huấn luyện Thuật toán Adam có một số thuộc tính chính quan trọng, giúp cải thiện hiệu suất trong việc tối ưu hóa mô hình học sâu.

1 Tích hợp moment bậc nhất (first-order moment): Adam tính toán moment bậc nhất của gradient (tức là giá trị trung bình của gradient) để xác định hướng cập

Adam sử dụng tích hợp moment bậc hai để tính toán giá trị trung bình của bình phương gradient, từ đó ước lượng độ lớn của gradient Phương pháp này giúp điều chỉnh tốc độ học phù hợp với từng gradient, nâng cao hiệu quả tối ưu hóa trong quá trình huấn luyện mô hình.

Adam điều chỉnh tốc độ học cho từng tham số riêng biệt bằng cách sử dụng các moment đã tính toán Điều này giúp Adam tự động điều chỉnh tốc độ học phù hợp với từng tham số trong quá trình huấn luyện, nâng cao hiệu quả học tập.

Trong các vòng lặp đầu tiên, moment bậc nhất và bậc hai thường được khởi tạo gần với giá trị 0, dẫn đến nhiễu và ảnh hưởng tiêu cực đến quá trình đầu tư Để khắc phục vấn đề này, Adam áp dụng một bước hiệu chỉnh gọi là bias correction.

Adam có nhiều ưu điểm, bao gồm:

Adam là một thuật toán tối ưu hóa hiệu suất cao, kết hợp cả moment bậc nhất và bậc hai, giúp cải thiện tốc độ hội tụ và đạt được hiệu suất tối ưu trong quá trình huấn luyện.

Adam có khả năng tự điều chỉnh tốc độ học cho từng tham số, giúp nhanh chóng tìm ra kết quả tối ưu và giảm thiểu nguy cơ rơi vào vùng cực tiểu cục bộ.

Thuật toán Adam rất hiệu quả khi xử lý dữ liệu thưa, nơi chỉ có một số ít đặc trưng quan trọng trong khi phần lớn các giá trị là 0.

Tuy nhiên, Adam cũng có một số hạn chế:

Tham số tuning trong Adam bao gồm tốc độ học, beta1 và beta2, đòi hỏi sự điều chỉnh cẩn thận Quá trình này có thể phức tạp và cần kiến thức cũng như kinh nghiệm để tối ưu hóa hiệu suất của mô hình trong huấn luyện.

Adam yêu cầu một lượng bộ nhớ lớn hơn so với nhiều thuật toán tối ưu hóa khác do cần lưu trữ các moment bậc nhất và bậc hai cho từng tham số.

Adam có thể nhạy cảm với quy mô của gradient, đặc biệt khi các tham số có gradient lớn hoặc nhỏ Sự nhạy cảm này có thể ảnh hưởng đến quá trình huấn luyện, do đó cần được cân nhắc trong quá trình điều chỉnh tham số.

Adam là một thuật toán tối ưu hóa nổi bật trong học máy, kết hợp những ưu điểm của AdaGrad và RMSProp Thuật toán này cung cấp phương pháp hiệu quả cho việc huấn luyện mô hình, với tốc độ học tự điều chỉnh và khả năng xử lý dữ liệu thưa.

Hàm mất mát Categorical-Crossentropy

Hàm mất mát Categorical Crossentropy, hay còn gọi là Cross-Entropy Loss, là một công cụ quan trọng trong các bài toán phân loại đa lớp trong machine learning Hàm này giúp đo lường sự khác biệt giữa phân phối xác suất thực tế và dự đoán xác suất của mô hình, từ đó cải thiện độ chính xác của các dự đoán.

Hàm mất mát Categorical Crossentropy được xây dựng dựa trên nguyên lý thông tin entropy trong lý thuyết thông tin Hàm này đo lường tổng entropy, tức là sự mất mát thông tin giữa các dự đoán xác suất và nhãn thực tế Mục tiêu chính của mô hình là giảm thiểu mất mát entropy này nhằm tối ưu hóa hiệu suất phân loại.

Mô hình tổng quan

Bằng cách sử dụng Tensorflow ta có thể dễ dàng học hoặc tạo mạng nơ-ron phân

Dưới đây là ảnh mô hình tổng quan mà ta xây dựng.

To train a neural network model using the TensorFlow library, the following Python code is utilized: `model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])` This command configures the model with the Adam optimizer, categorical cross-entropy loss function, and accuracy as a performance metric.

Hàm `compile` được sử dụng để cấu hình mô hình để chuẩn bị cho việc huấn luyện Nó cần được gọi trước khi bắt đầu huấn luyện mô hình.

Các tham số của hàm `compile` là:

Optimizer là quá trình tối ưu hóa mà mô hình áp dụng để cập nhật trọng số trong quá trình huấn luyện Phương pháp `adam` là một trong những kỹ thuật tối ưu hóa phổ biến nhất trong lĩnh vực deep learning.

Hàm mất mát (hay hàm chi phí) là công cụ quan trọng để đo lường sự khác biệt giữa giá trị dự đoán và giá trị thực tế trong các mô hình học máy Trong trường hợp này, `categorical_crossentropy` được áp dụng để huấn luyện mô hình phân loại đa lớp, giúp cải thiện độ chính xác của dự đoán.

Các chỉ số, hay còn gọi là metrics, là những công cụ quan trọng để đánh giá hiệu suất của mô hình trong quá trình huấn luyện Một trong những chỉ số phổ biến nhất là `accuracy`, được sử dụng để đo lường tỷ lệ dự đoán đúng của mô hình trên tập dữ liệu huấn luyện.

Sau khi cấu hình mô hình bằng hàm `compile`, nó sẽ được huấn luyện với dữ liệu đầu vào, sử dụng tiêu chuẩn mất mát và chỉ số hiệu suất đã được xác định bởi các tham số đã thiết lập.

Giới thiệu về Colab,TensorFlow

Colab là dịch vụ miễn phí của Google, cung cấp môi trường Jupyter Notebook trực tuyến Người dùng có thể tạo và chạy các notebook Jupyter trực tiếp trên trình duyệt web mà không cần cài đặt phần mềm hay cấu hình môi trường trên máy tính cá nhân.

Dưới đây là một số đặc điểm và lợi ích chính của Colab:

Colab cung cấp một môi trường Jupyter Notebook trực tuyến, cho phép người dùng dễ dàng tạo, chỉnh sửa và chạy mã Python Với các tính năng như viết mã, thực thi code, hiển thị đầu ra và thêm markdown, Colab mang đến sự tiện lợi tối đa cho việc lập trình và phân tích dữ liệu.

Colab là một công cụ miễn phí và dễ sử dụng, không yêu cầu cài đặt phần mềm hay tài nguyên phần cứng trên máy tính Chỉ cần một trình duyệt web và tài khoản Google, bạn có thể bắt đầu ngay lập tức.

Colab tích hợp mạnh mẽ với Google Drive, cho phép người dùng lưu trữ và truy cập các notebook một cách dễ dàng Tính năng này không chỉ hỗ trợ việc chia sẻ và hợp tác trong nhóm mà còn giúp duy trì lưu trữ dữ liệu và mã nguồn hiệu quả.

Colab tích hợp sẵn với các thư viện và framework phổ biến như TensorFlow, Keras, PyTorch và OpenCV, giúp người dùng dễ dàng triển khai các dự án học máy Bạn cũng có thể cài đặt và sử dụng các thư viện bổ sung thông qua câu lệnh pip, mở rộng khả năng của môi trường làm việc.

Colab cung cấp tài nguyên tính toán mạnh mẽ như GPU và TPU, cho phép thực hiện các tác vụ nặng một cách hiệu quả Người dùng có thể dễ dàng chuyển đổi giữa các loại tài nguyên này để tối ưu hóa thời gian chạy và nâng cao hiệu suất.

Colab là công cụ lý tưởng cho nghiên cứu và phát triển mã Python trong machine learning và AI, giúp đơn giản hóa quá trình cài đặt và cấu hình môi trường phát triển Với Colab, bạn có thể dễ dàng viết và thử nghiệm mã, thực hiện huấn luyện mô hình machine learning, phân tích dữ liệu, trực quan hóa, cũng như xử lý ảnh và video.

TensorFlow là một thư viện mã nguồn mở nổi bật trong lĩnh vực machine learning và deep learning, được phát triển bởi Google Thư viện này cung cấp nền tảng mạnh mẽ cho việc xây dựng và huấn luyện các mô hình học máy hiệu quả.

Dưới đây là một số đặc điểm chính của TensorFlow:

TensorFlow sử dụng mô hình tính toán dựa trên đồ thị, trong đó các phép tính được biểu diễn dưới dạng các nút và các cung Điều này giúp tối ưu hóa việc sử dụng tài nguyên tính toán và cho phép thực hiện song song trên nhiều thiết bị như CPU, GPU và TPU.

TensorFlow tích hợp mạnh mẽ với các công cụ và thư viện phổ biến như NumPy, scikit-learn và Matplotlib, giúp người dùng dễ dàng thực hiện các tác vụ phức tạp như xử lý dữ liệu, trực quan hóa và đánh giá mô hình.

TensorFlow offers a comprehensive set of layers and APIs designed to facilitate the construction of deep learning models With TensorFlow, users can create multilayer neural networks, convolutional neural networks, recurrent neural networks, and various other deep learning architectures.

TensorFlow Extended (TFX) là nền tảng phát triển và triển khai mạnh mẽ, giúp xây dựng và triển khai các ứng dụng machine learning phức tạp TFX cung cấp công cụ và khung làm việc hiệu quả cho việc quản lý dữ liệu, huấn luyện mô hình và triển khai sản phẩm.

TensorFlow là một công cụ quan trọng trong phát triển ứng dụng machine learning và deep learning, được sử dụng rộng rãi trong nhiều lĩnh vực như nhận dạng hình ảnh, dịch máy, nhận dạng giọng nói, tự động lái xe và phân tích dữ liệu lớn Với khả năng mạnh mẽ và tích hợp đa dạng, TensorFlow hỗ trợ hiệu quả cho việc xây dựng các ứng dụng trí tuệ nhân tạo.

3.1 Cài đặt mô hình trên Colab

Mô hình phân loại và nhận diện khuôn mặt được xây dựng đơn giản bằng CNN của TensorFlow, với tổng trọng số là 2.127.267 Dưới đây là đoạn code cài đặt mô hình trên môi trường Colab: model = tf.keras.Sequential([

Conv2D( 32 , ( , ), padding = 3 3 'same' ,activation = 'relu' , input_shape =

Conv2D( 32 , ( , ), padding = 3 3 'same' ,activation = 'relu' ),

Conv2D( 64 , , , padding = 3 3 'same' ,activation = 'relu' ),

Dense( len (classes), activation = 'softmax' )

Đoạn mã Python sau đây sử dụng thư viện TensorFlow để huấn luyện mô hình neural network: `history = model.fit(X_train, y_train, batch_size= , epochs=50, validation_data=(X_test, y_test))` Trong đó, `X_train` và `y_train` là dữ liệu huấn luyện, `X_test` và `y_test` là dữ liệu kiểm tra, và quá trình huấn luyện diễn ra trong 50 epochs.

`model` là một đối tượng neural network được định nghĩa trước đó và đã được cấu hình bằng hàm `compile`.

Các tham số của hàm `fit` là:

- `X_train`: là tập dữ liệu huấn luyện đầu vào (features) được sử dụng để huấn luyện mô hình Đây là một ma trận numpy.

- `y_train`: là tập dữ liệu huấn luyện đầu ra (labels) được sử dụng để huấn luyện mô hình Đây là một ma trận numpy.

Ngày đăng: 24/12/2024, 16:06