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

(Đồ án hcmute) thiết kế mô hình mạng cnn ứng dụng trong nhận dạng độ tuổi và giới tính

69 2 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

Định dạng
Số trang 69
Dung lượng 2,54 MB

Cấu trúc

  • CHƯƠNG 1: TỔNG QUAN (16)
    • 1.1. GIỚI THIỆU (16)
    • 1.2. MỤC TIÊU ĐỀ TÀI (17)
    • 1.3. GIỚI HẠN ĐỀ TÀI (17)
    • 1.4. PHƯƠNG PHÁP NGHIÊN CỨU (18)
    • 1.5. ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU (18)
    • 1.6. BỐ CỤC QUYỂN BÁO CÁO (18)
  • CHƯƠNG 2: CƠ SỞ LÝ THUYẾT (19)
    • 2.1. GIỚI THIỆU MẠNG NƠ-RON TÍCH CHẬP (19)
      • 2.1.1. Tổng quan về mạng nơ-ron tích chập (19)
      • 2.1.2. Điểm đặc trưng của mạng nơ-ron tích chập (19)
    • 2.2. CẤU TRÚC MẠNG NƠ-RON TÍCH CHẬP (20)
      • 2.2.1. Lớp tích chập (Convolution layer) (21)
      • 2.2.2. Lớp gộp (Pooling layer) (24)
      • 2.2.3. Lớp kết nối đầy đủ (Fully Connected Layer) (25)
    • 2.3. KIẾN TRÚC MẠNG VGG (26)
      • 2.3.1. Tổng quan về mạng VGG (26)
      • 2.3.2. Kiến trúc của mạng VGG16 (27)
    • 2.4. BỘ CƠ SỞ DỮ LIỆU (DATASET) (29)
  • CHƯƠNG 3: THIẾT KẾ MÔ HÌNH PHÂN LOẠI ĐỘ TUỔI VÀ GIỚI TÍNH (33)
    • 3.1. XỬ LÝ BỘ CƠ SỞ DỮ LIỆU (DATASET) (33)
      • 3.1.1. Sắp xếp và phân chia tập dữ liệu (33)
      • 3.2.1. Phân tích tập dữ liệu (34)
    • 3.2. TỔNG QUAN QUY TRÌNH THỰC HIỆN (36)
      • 3.2.1. Sơ lược về quy trình thực hiện (36)
      • 3.2.2. Phương pháp thực hiện (37)
    • 3.3. PHÂN TÍCH KIẾN TRÚC MÔ HÌNH XỬ LÝ (39)
      • 3.3.1. Mô hình phát hiện khuôn mặt (Face detection) (39)
      • 3.3.2. Kiến trúc mô hình xử lý dùng mạng VGG16 (40)
      • 3.3.3 Phương pháp cho từng nhiệm vụ phân loại (42)
        • 3.3.3.1. Phân loại giới tính (42)
        • 3.3.3.2. Phân loại độ tuổi (43)
      • 3.3.4. Thuật toán được sử dụng trong mô hình (45)
  • CHƯƠNG 4: KẾT QUẢ VÀ ĐÁNH GIÁ (46)
    • 4.1. KẾT QUẢ XÂY DỰNG MÔ HÌNH (46)
    • 4.2. KẾT QUẢ HUẤN LUYỆN MÔ HÌNH (48)
      • 4.2.1 Giới tính (48)
        • 4.2.1.1. Kết quả huấn luyện (48)
        • 4.2.1.2. Ma trận nhầm lẫn (confusion matrix) (49)
      • 4.2.2. Độ tuổi (54)
        • 4.2.2.1 Kết quả huấn luyện (54)
        • 4.2.2.2. Ma trận nhầm lẫn (54)
    • 4.3. KẾT QUẢ THỰC NGHIỆM (57)
      • 4.3.1. Kết quả nhận dạng khuôn mặt ở điều kiện bình thường (57)
      • 4.3.2. Kết quả nhận dạng khuôn mặt ở điều kiện không tốt (61)
      • 4.3.3. Kết quả tổng quan (62)
  • CHƯƠNG 5: KẾT LUẬN VÀ PHƯƠNG HƯỚNG PHÁT TRIỂN (65)
    • 5.1. KẾT LUẬN (65)
      • 5.1.1. Đối với kết quả phân loại độ tuổi (65)
      • 5.1.2. Đối với kết quả phân loại giới tính (65)
      • 5.1.3. Kết quả nhận dạng trực tiếp độ tuổi và giới tính thông qua webcam (65)
    • 5.2. PHƯƠNG HƯỚNG PHÁT TRIỂN (65)
  • TÀI LIỆU THAM KHẢO (67)

Nội dung

TỔNG QUAN

GIỚI THIỆU

Mặc dù đã được các nhà nghiên cứu quan tâm và đề cập từ những năm 1955, nhưng đến hiện tại thì Trí tuệ nhân tạo (AI) mới thực sự được biết đến phổ biến ở hầu hết các quốc gia trên toàn thế giới Cuốn theo dòng chảy của cuộc Cách mạng công nghiệp 4.0, AI đã và đang phát triển rộng rãi, dần tham gia nhiều hơn vào các hoạt động của đời sống hàng ngày Một trong những nhánh chính của AI là Học máy (Machine Learning), với ưu điểm là có thể xử lý được lượng dữ liệu khổng lồ giúp cho việc huấn luyện, phân tích dữ liệu… trở nên hiệu quả hơn Thêm vào đó là sự đa dạng của các thuật toán Học sâu đã hỗ trợ rất nhiều trong việc xây dựng mô hình cho các bài toán trong lĩnh vực Thị giác máy tính Không chỉ dừng lại ở việc nhận diện đối tượng trong ảnh mà ngày nay Thị giác máy tính ngày càng được mở rộng hơn trong các bài toán khác như nhận dạng, phân loại biển báo giao thông, nhận diện giọng nói, khuôn mặt, cử chỉ và hành động… Đặc biệt, có thể thấy việc nhận dạng khuôn mặt trong vài năm gần đây rất phát triển và được ứng dụng rộng rãi Ngoài việc dựa vào khuôn mặt để xác định danh tính của đối tượng thì việc nhận diện cảm xúc, biểu cảm trên khuôn mặt hay giới tính và độ tuổi của họ cũng đang được quan tâm khá nhiều Thông thường việc nhận diện này đối với con người khá dễ dàng, nhưng việc cho máy móc nhận dạng đúng được độ tuổi, giới tính là một vấn đề phức tạp cũng như cần rất nhiều thời gian để nghiên cứu và phát triển Sau khi xây dựng được mô hình nhận dạng, nó có thể làm tiền đề cơ sở cho các ứng dụng liên quan ví dụ như phân loại tuổi và giới tính tự động trong lĩnh vực thương mại, truyền thông Hay hướng đến ứng dụng cụ thể trong những trang web thương mại điện tử, giúp gợi ý sản phẩm cho khách hàng dựa theo từng độ tuổi và giới tính của họ, từ đó các gợi ý đưa ra cho từng cá nhân sẽ phù hợp hơn.

Nhận thấy sự cần thiết của việc nhận dạng tuổi và giới tính dựa trên máy móc, từ lâu các nhà nghiên cứu đã bắt đầu đưa ra các giải quyết cho bài toán này Năm 1990, Cattrel và Matcalfe đưa ra nghiên cứu sơ bộ cho mô hình nhận dạng giới tính, cảm xúc dùng Holo với bộ dữ liệu gồm 160 ảnh khuôn mặt của 10 đối tượng nam và

10 đối tượng nữ [1] Năm 1994, Kwon và Lobo đã đi đầu trong việc xây dựng bài toán ước lượng độ tuổi từ ảnh chụp khuôn mặt với ba loại đối tượng là trẻ sơ sinh, thanh niên và người già [2] Nhưng các bài toán thường là tách rời nhau, các mô hình nghiên cứu có nhiệm vụ riêng biệt và vẫn còn hạn chế trong quá trình nhận diện Gần đây, sự kết hợp nhận dạng đồng thời cả độ tuổi và giới tính cũng đã và đang được cải tiến để nâng cao độ chính xác Gần đây hơn vào năm 2015, Gil Levi cùng TalHassncer đã dùng CNN để phân loại độ tuổi và giới tính dựa trên tập dữ liệu Audience benchmark gồm các khuôn mặt chưa được lọc [3] Từ nghiên cứu của Gil Levi và cộng sự cho thấy CNN có thể được sử dụng để huấn luyện mô hình và đưa ra các kết quả phân loại theo độ tuổi, giới tính được cải thiện khá nhiều.

Có thể thấy đã có rất nhiều những nghiên cứu ngoài nước liên quan đến nhận dạng độ tuổi và giới tính như được nêu ở trên, nhưng trong nước thì đây vẫn là một đề tài đang được tìm hiểu cũng như có khá ít bài báo tập trung về đề tài này Và đa số độ tuổi trong các nghiên cứu được phân chia thành các nhóm nhỏ như (0 – 2), (4 – 6), (8 – 13), (15 – 20), (25 – 32), (38 – 43), (48 – 53) và (60 – 100) [3], [4], [5]. Giữa các nhóm tuổi có khoảng cách khá xa và một số độ tuổi không nằm trong nhóm tuổi đó sẽ không được phân loại hay nhận dạng.

Dựa trên những phân tích liên quan đến đề tài, nhóm vẫn sử dụng mô hình mạng CNN dựa trên kiến trúc VGG sẵn có, tuy nhiên điểm khác biệt đó là nhóm thực hiện tạo môt bộ cơ sở dữ liệu (dataset) mới, thay đổi các lớp trong mô hình mạng và chia lại tỷ lệ nhóm tuổi Với mục tiêu nhận diện độ tuổi, giới tính thời gian thực cùng một lúc, nhóm lựa chọn thực hiện đề tài “Thiết kế mô hình mạng CNN ứng dụng trong nhận dạng độ tuổi và giới tính” Mô hình định hướng đến việc phân chia các nhóm tuổi với độ tuổi liên tiếp để có thể nhận dạng khuôn mặt ở mọi độ tuổi và giới tính.

MỤC TIÊU ĐỀ TÀI

- Nghiên cứu, tìm hiểu kiến trúc mạng nơ-ron tích chập trong mô hình phân loại độ tuổi và giới tính.

- Tạo tập dữ liệu với số lượng ảnh ở mọi độ tuổi đều bằng nhau cũng như cân bằng về số lượng ảnh giới tính.

- Triển khai mô hình đa nhiệm vụ có thể nhận diện độ tuổi và giới tính cùng một lúc Phân loại giới tính (nam, nữ) Đối với phân loại độ tuổi, thực hiện phân thành 8 nhóm nhỏ với độ tuổi liên tiếp (1 – 9), (10 – 19), (20 – 29), (30

- Mô hình mạng CNN được thiết kế dựa trên kiến trúc VGG16 Tuy nhiên thay đổi một số thông số để phù hợp với tập dữ liệu mà mục tiêu phân loại độ tuổi, giới tính.

- Dữ liệu đầu vào được nhận dạng thời gian thực thông qua camera laptop và kết quả hiển thị độ tuổi, giới tính trên màn hình thông qua web.

GIỚI HẠN ĐỀ TÀI

Đề tài chỉ tập trung nghiên cứu nhận dạng độ tuổi và giới tính dựa vào tập dữ liệu bao gồm các khuôn mặt được chụp cận mặt ở điều kiện ban ngày, đủ ánh sáng,góc chụp là trực diện.

PHƯƠNG PHÁP NGHIÊN CỨU

- Tìm hiểu về lý thuyết của mạng nơ-ron tích chập, kiến trúc mạng VGG16.

- Tạo bộ cơ sở dữ liệu mới gồm 18000 ảnh

- Nghiên cứu bài toán về phân loại độ tuổi, giới tính.

- Thiết kế, xây dựng mô hình phát hiện khuôn mặt, phân loại tuổi và giới tính.

- Tìm hiểu các phương pháp cải thiện độ chính xác, dựa trên độ chính xác để thay đổi các thông số trong mô hình mạng sao cho tối ưu.

- Phân tích và đánh giá mô hình mạng.

ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU

- Đối tượng nghiên cứu: mạng nơ-ron tích chập, kiến trúc mạng VGG16 Tập dữ liệu UTKFace, VN-celeb… Mô hình mạng dùng để phát hiện khuôn mặt, phân loại độ tuổi, giới tính.

- Phạm vi nghiên cứu: nghiên cứu từ những mô hình đã có, áp dụng kiến trúcVGG16 vào mô hình huấn luyện Một số phương pháp cải thiện độ chính xác.

BỐ CỤC QUYỂN BÁO CÁO

Nội dung của đề tài được trình bày bao gồm 5 chương như sau:

- Chương 1 GIỚI THIỆU: giới thiệu chung về đề tài, mục tiêu nghiên cứu, giới hạn đề tài, phương pháp nghiên cứu, đối tượng và phạm vi nghiên cứu.

- Chương 2 CƠ SỞ LÝ THUYẾT: giới thiệu tổng quan về mạng nơ-ron tích chập, kiến trúc mạng nơ-ron tích chập Lý thuyết về kiến trúc mạng VGG16 và quá trình thu thập ảnh để làm bộ cơ sở dữ liệu.

- Chương 3 THIẾT KẾ MÔ HÌNH PHÂN LOẠI ĐỘ TUỔI VÀ GIỚI

TÍNH: trình bày chi tiết cách sắp xếp, phân chia số lượng hình ảnh trong tập dữ liệu Đưa ra tổng quan quá trình xử lý của mô hình, các khối trong mô hình Phân tích kiến trúc mạng được dùng để huấn luyện.

- Chương 4 KẾT QUẢ: chương này trình bày kết quả sau khi huấn luyện mô hình và kết quả nhận dạng độ tuổi và giới tính dựa trên khuôn mặt trong điều kiện thực tế.

- Chương 5 KẾT LUẬN VÀ PHƯƠNG HƯỚNG PHÁT TRIỂN: rút ra các kết luận về kết quả sau khi huấn luyện mô hình cũng như kết quả thực nghiệm Đề ra hướng phát triển cho đề tài.

CƠ SỞ LÝ THUYẾT

GIỚI THIỆU MẠNG NƠ-RON TÍCH CHẬP

2.1.1 Tổng quan về mạng nơ-ron tích chập

Thuật ngữ Học sâu (DL) hay cụ thể hơn là mạng nơ-ron sâu (DNN) dùng để chỉ mạng thần kinh nhân tạo (ANN) với nhiều lớp ẩn [6] Những năm qua, Học sâu đã được biết đến là một trong những phương pháp phổ biến và mạnh mẽ nhất trong việc mô phỏng lại chức năng, cách thức hoạt động phức tạp của não bộ con người.

Và mạng nơ-ron tích chập (CNN) là một trong những mạng nơ-ron sâu được biết đến rộng rãi nhất, hay nó có tên gọi khác là ConvNet Năm 1998, mạng CNN được giới thiệu bởi nhóm Yann LeCun, Bottou, Bengio và Haffner [7] thông qua mô hình nhận dạng chữ số viết tay sử dụng kiến trúc mạng LeNet-5 CNN đã dần trở nên nổi tiếng hơn khi nó được áp dụng vào kiến trúc Alexnet và đạt giải nhất trong cuộc thi ImageNet (ILSVRC) Tên của mô hình mạng này được đặt dựa trên một phép tính dùng trong mạng, phép tính này ảnh hưởng rất nhiều đến mô hình nhận dạng và tạo ra sự khác biệt to lớn đó là phép tính tích chập.

CNN đã có những kết quả đột phá trong thập kỷ qua trong hầu hết các lĩnh vực liên quan đến nhận dạng mẫu, xử lý giọng nói… không chỉ dừng lại ở việc nhận dạng và phân loại hình ảnh mà độ chính xác của CNN còn cao hơn, thậm chí tốt hơn con người trong một số trường hợp [8] Chẳng hạn như khi được sử dụng trong Thị giác máy tính, xử lý tập cơ sở dữ liệu hình ảnh lớn nhất (ImageNet) [6] kết quả đạt được rất đáng kinh ngạc.

Mô hình mạng nơ-ron tích chập ngày càng phát triển và mở rộng, được ứng dụng vào các hệ thống xử lý hình ảnh lớn của Google, Amazon hay Facebook với nhiều mục đích sử dụng khác nhau Ví dụ như chức năng tự động nhận dạng khuôn mặt khi ảnh được đăng tải lên Facebook, hay khi nhập một từ khóa bất kì lên Google thì trong mục Hình ảnh (Image) sẽ hiện lên rất nhiều ảnh liên quan đến từ khóa đó Bên cạnh đó còn có nhiều ứng dụng khác như FaceID ở các điện thoại thông minh, công nghệ phát hiện ra đối tượng trong hình ảnh rồi làm sắc nét các đặc trưng của chúng sau khi phóng to của Lightroom…

2.1.2 Điểm đặc trưng của mạng nơ-ron tích chập

CNN được tạo thành bởi các nơ-ron mang trọng số (weight) và sai số hay còn gọi là độ lệch (bias) Mỗi nơ-ron được nhận một số dữ liệu ở đầu vào, sau đó thực hiện hàng loạt các phép tính nhân chập và chọn một hàm truyền phù hợp để đưa ra dự đoán. Ở mạng nơ-ron nhân tạo truyền thống, liên kết đầy đủ giữa tất cả các nơ-ron với nhau gây ra sự dư thừa do các điểm ảnh về cơ bản chỉ chủ yếu bị ảnh hưởng với nhau hay với những điểm ảnh xung quanh nó mà không phụ thuộc nhiều đến các điểm ảnh nằm cách xa khác Ngoài ra mạng nơ-ron truyền thống còn bị giới hạn bởi kích thước ảnh, khi ảnh có kích thước càng lớn thì số lượng liên kết càng cao dẫn đến sự bùng nổ về khối lượng tính toán [8] Mạng nơ-ron tích chập ra đời với kiến trúc được thay đổi, nó chỉ xây dựng các liên kết đến những nơ-ron cần thiết trong một vùng nhỏ và sau khi trích xuất đặc trưng thì dữ liệu sẽ được làm phẳng thành véc-tơ của giá trị xác suất Khía cạnh có lợi nhất của nó là giảm số lượng tham số (parameters) trong ANN [6] Ngoài ra, việc áp dụng kiến trúc mạng CNN cho phép chúng ta xây dựng những mô hình với độ chính xác cao bằng cách sử dụng nhiều lớp xử lý có cấu trúc phức tạp hoá Từ đó thúc đẩy và phát triển những nghiên cứu tiếp cận tới các mô hình lớn để giải quyết được các nhiệm vụ phức tạp – điều mà ANN cổ điển không có khả năng thực hiện được. Điểm nổi bật của CNN so với các phương pháp khác trong Học máy truyền thống chính là độ lớn của tập dữ liệu dùng để huấn luyện Mặc dù, phương pháp truyền thống cũng có thể phân loại và gán nhãn, tuy nhiên vẫn còn giới hạn về kích thước tập dữ liệu Nhưng CNN đã giải quyết được vấn đề này khi huấn luyện với số lượng dữ liệu rất lớn và còn có thể đạt được độ chính xác cao Bên cạnh đó, điểm chung của các kiến trúc mạng nơ-ron tích chập là kích thước (chiều rộng, chiều cao) của các lớp giảm dần, song song đó thì độ sâu cũng sẽ tăng dần Khi kích thước của ma trận giảm thì số lượng tham số cũng sẽ giảm đáng kể trong khi độ chính xác của mô hình không bị giảm nhiều Số bộ lọc tăng làm tăng độ sâu giúp mạng CNN học được đa dạng và có thể phân biệt được nhiều chi tiết đặc trưng hơn.

CẤU TRÚC MẠNG NƠ-RON TÍCH CHẬP

Trong mạng nơ-ron tích chập, dữ liệu ảnh đầu vào sẽ được chuyển thành ma trận pixel (với mỗi pixel có giá trị thay đổi từ 0 đến 255) ứng với kích thước [w x h x d], trong đó w là chiều rộng (width), h là chiều cao (height), d là độ sâu (dimension) hay đơn giản là số kênh màu của ảnh đầu vào Nếu ảnh là màu xám thì chỉ có một kênh màu, còn đối với ảnh màu sẽ có 3 kênh màu là Red, Green và Blue (RGB). Ý tưởng chung của mô hình mạng CNN là nó thực hiện quá trình trích lọc hình ảnh đầu vào trước khi được đưa vào huấn luyện (training) [9] Quá trình này bao gồm các lớp ẩn (hidden) dùng để rút trích các đặc trưng có trong ảnh, sau đó tiến hành tính toán thông qua các lớp tích chập (Conv) và lớp Pooling Giả sử ảnh đầu vào là khuôn mặt của một người thì phần này sẽ nhận diện mắt, mũi, miệng… từ đó có thể phát hiện ra được khuôn mặt trên hình Phần tiếp theo là phân lớp, ở đây ta dùng một số lớp kết nối đầy đủ để kết nối tất cả nơ-ron lại với nhau và xử lý kết quả của phần tích chập.

Hình 2.1 Cấu trúc mạng nơ-ron tích chập [9]

Như thể hiện ở Hình 2.1 thì một mô hình CNN cơ bản bao gồm những lớp sau: lớp tích chập (convolution layer), lớp gộp (pooling layer), lớp kết nối đầy đủ (fully connected layer) Tuỳ vào số lượng và cách sắp xếp các lớp sẽ xây dựng được những mô hình khác nhau cũng như phù hợp với đặc điểm của từng bài toán.

2.2.1 Lớp tích chập (Convolution layer)

Lớp tích chập hay còn gọi là lớp ẩn (hidden layer) được dùng với mục đích là làm giảm kích thước hình ảnh để dễ xử lý mà vẫn giữ được các đặc trưng của dữ liệu (ảnh) ngõ vào Trong đó, đặc trưng ảnh chính là những chi tiết như cạnh (ngang, chéo…), hình khối, hình tròn, hay phức tạp hơn như mắt, mũi, miệng, hình dạng khuôn mặt, con vật, xe, đèn giao thông Chúng ta sẽ dùng các bộ lọc để giữ lại những chi tiết quan trọng của bức ảnh, có nhiều bộ lọc được sử dụng phố biến như bộ lọc đường chéo, cạnh, góc, hình vuông, hình tròn… [9] Ở các lớp (layers) đầu tiên, phép tích chập chỉ thực hiện công việc đơn giản là tìm biên ảnh, các lớp tiếp theo sẽ có nhiệm vụ trích xuất tiếp các đặc trưng khác có trong ảnh Trong số rất nhiều điểm trên ảnh đầu vào nó sẽ lấy ra những điểm nổi bật nhất và tập hợp lại để làm hiện lên đặc trưng của đối tượng trong hình.

Lớp tích chập chính là lớp quan trọng nhất và cũng là điểm làm cho CNN trở nên khác biệt hơn so với các mô hình mạng khác Một ví dụ cho lớp tích chập được biểu diễn ở Hình 2.2 bên dưới, ảnh ngõ vào với kích thước là 6x6x3 (6 hàng, 6 cột và 3 kênh màu) sử dụng bộ lọc 3x3x3 sau đó dùng phép tích chập để tính toán và cho ra một giá trị duy nhất Ngõ ra của lớp tích chập sau khi được tính toán (ở ví dụ này đầu ra có kích thước 4x4) là một tập mang các giá trị đặc trưng của hình ảnh đầu vào hay còn gọi là features map.

Hình 2.2 Ví dụ về phép tích chập với hình ảnh đầu vào (6x6x3) và bộ lọc (3x3x3) [10]

Một số thuật ngữ được đề cập trong lớp tích chập bao gồm: Kernel, Filter hay

Feature detector đều là tên gọi của các bộ lọc (ma trận lọc) Đây là một ma trận hệ số có giá trị 0 và 1 Tại mỗi vị trí có filter sẽ thực hiện phép toán tính tổng các tích giữa mỗi phần tử trong filter và phần tử đầu vào tương ứng.

Stride (bước trượt): chính là khoảng cách mà bộ lọc di chuyển mỗi lần dịch.

Ví dụ chúng ta cho stride = 1 thì sau khi tính toán xong tại một vùng ảnh, bộ lọc sẽ được dịch sang phải 1 pixel, cho đến khi dịch hết một hàng sẽ tiếp tục dịch xuống dưới một đơn vị và lặp lại cho đến khi bộ lọc dịch hết ảnh như Hình 2.3 bên dưới.

Hình 2.3 Ví dụ khi bước trượt (stride) bằng 1

Padding (đệm): là phương pháp thêm giá trị 0 ở ngoài viền của ảnh ngõ vào

(thêm cột 0 và hàng 0 vào ma trận input) Được chia thành 2 loại là: valid và same.

Valid chính là không dùng padding, ta sẽ sử dụng bộ lọc trực tiếp lên ngõ vào Same sẽ thêm padding, làm cho ngõ ra có cùng kích thước với ngõ vào Để rõ hơn ta xét một ảnh vào có kích thước là 5x5, bộ lọc 3x3, stride = 1 Để ngõ ra cũng có kích thước là

5x5 ta sẽ thêm số 0 ở ngoài viền ngõ vào sau đó mới áp bộ lọc lên Ví dụ được minh hoạ như Hình 2.4 bên dưới.

Hình 2.4 Hình ảnh ngõ ra sau khi thêm padding.

Feature map (mạng đặc trưng): là ngõ ra của ảnh đầu vào khi bộ lọc được dịch chuyển trên hết bức ảnh với phép tích vô hướng Có thể nói feature map sẽ lọc các đặc trưng của ngõ vào ví dụ như đường viền, cạnh, góc… và các lớp tiếp theo sẽ trích xuất tiếp những đặc trưng của ngõ vào đó, bằng cách sử dụng nhiều lớp như vậy sẽ chia nhỏ được các đặc trưng của ảnh nhất có thể Công thức (1) được dùng để tính kích thước ma trận ngõ ra là:

Trong đó: n : là kích thước ảnh ngõ vào (n x n). f : là kích thước bộ lọc (f x f). p : là padding. s : là bước trượt (stride).

Hàm kích hoạt (activation function): Hàm này được dùng nhằm đảm bảo tính phi tuyến của mô hình huấn luyện sau quá trình thực hiện một loạt phép tính ở lớp tích chập Các hàm kích hoạt phi tuyến chuyên dùng như hàm Sigmoid, hàm Tanh và hàm ReLU như được thể hiện ở Hình 2.5 bên dưới:

Hình 2.5 Các dạng hàm kích hoạt phổ biến

Hàm Sigmoid: công thức σ = 1+ − có giá trị ngõ ra nằm trong khoảng (0, 1). Ưu điểm của hàm này là việc thực hiện phép đạo hàm đơn giản hơn các hàm khác nên giảm thiểu được khối lượng tính toán trong quá trình huấn luyện Tuy nhiên, nhược điểm của hàm Sigmoid là gây ra hiện tượng Vanishing gradient (giá trị cập nhật tiến dần về 0 dẫn đến không cập nhật tham số).

Hàm Tanh: công thức tanh(x) =

− − có giá trị ngõ ra (-1, 1) Hàm Tanh

+ − cũng có hiện tượng Vanishing gradient nhưng hàm này có giá trị kì vọng bằng 0 giúp cho việc học ở các lớp sâu nhanh hơn.

Hàm ReLU: có công thức là f(x) = max (0, x) Hàm ReLU được hiểu đơn giản hơn là giữ lại giá trị lớn hơn 0, còn những giá trị nhỏ hơn 0 sẽ được xem là bằng 0. Với ưu điểm là tốc độ hội tụ và khả năng tính toán nhanh, hiện nay hầu hết các mô hình CNN đều sử dụng hàm ReLU trong quá trình huấn luyện.

Trong lớp tích chập này, hàm ReLU được dùng nhiều hơn thay vì hàm Sigmod hay hàm Tanh vì nó hạn chế sự triệt tiêu của Gradient Descent, tốc độ xử lý nhanh, đơn giản mà vẫn giữ được hiệu quả tốt trong khi tính toán Áp dụng hàm kích hoạt ReLU lên đầu ra của lớp tích chập, nhằm mục đích chuyển các giá trị âm của ngõ vào thành giá trị 0, giúp loại bỏ hết những giá trị âm không cần thiết gây ảnh hưởng đến việc tính toán ở các lớp tiếp theo.

2.2.2 Lớp gộp (Pooling layer) Đây là lớp được chèn vào giữa những lớp tích chập để giảm kích thước của dữ liệu bằng cách lấy mẫu (sampling) Mục đích của việc này là giúp giảm bớt số lượng nơ-ron và đơn giản hóa thông tin ngõ ra nhưng sẽ vẫn giữ được thông tin quan trọng của ma trận Thông thường, lớp gộp có nhiều phương thức phù hợp cho nhiều bài toán khác nhau, tuy nhiên hai phương pháp nổi bật nhất là Max Pooling (tổng hợp tối đa) và Average Pooling (tổng hợp trung bình).

Max Pooling được sử dụng nhiều nhất với ý tưởng giữ lại những chi tiết có đặc điểm nổi bật nhất hay nói cách khác chính giữ lại pixel có giá trị lớn nhất Bằng cách chia ngõ vào thành các ô cửa sổ (window), thông thường cửa sổ của Max Pooling là 2x2 (vì nếu lấy giá trị quá lớn, nó sẽ phá vỡ cấu trúc ảnh và làm ảnh hưởng đến dữ liệu ngõ vào), sử dụng bước trượt là 2 hay chính bằng với kích thước của ô cửa sổ để không bị trùng lặp Kích thước của ngõ ra sau khi đi qua lớp Max Pooling sẽ giảm đi một nửa nhưng vẫn giữ được những điểm nổi bật nhất của ngõ vào.

Ví dụ cho Max Pooling dùng bộ lọc 2x2, có bước trượt (stride) bằng 2 Bộ lọc sẽ trượt theo chiều ngang và dọc của ảnh Và với mỗi vùng ảnh được áp bộ lọc lên sẽ chọn ra 1 giá trị lớn nhất và giữ lại như Hình 2.6 bên dưới.

Hình 2.6 Phương pháp Max pooling [11]

KIẾN TRÚC MẠNG VGG

2.3.1 Tổng quan về mạng VGG Được ra mắt vào năm 2014 trong cuộc thi ImageNet, VGG đã biết đến rộng rãi với một số kiến trúc cải thiện hơn so với Alexnet Trong khi mạng LeNet và AlexNet sử dụng các lớp theo thứ tự Conv-Maxpooling thì kiến trúc của VGG lại được xây dựng với các lớp Conv liên tiếp Conv-Conv-Conv [9] Nhờ vậy, những đặc trưng của dữ liệu sẽ được giữ lại nhiều hơn so với việc dùng Maxpooling ngay sau lớp Conv, tuy nhiên việc tính toán cũng sẽ trở nên chậm hơn VGGNet là mạng nơ-ron tích chập sâu cơ bản Từ “sâu” đề cập đến số lượng các lớp với VGG16 gồm

16 lớp và VGG19 gồm 19 lớp phức hợp Kiến trúc VGG là cơ sở của các mô hình nhận dạng đối tượng mang tính đột phá và hiện nay nó là một trong những kiến trúc nhận dạng hình ảnh phổ biến nhất Kiến trúc sơ lược của VGGNet bao gồm: Đầu vào: VGGNet có kích thước hình ảnh đầu vào là 224x224 Trong cuộc thi ILSVRC, những người tạo ra mô hình đã sử dụng kích thước 224×224 trong mỗi hình ảnh để giữ cho kích thước dữ liệu ngõ vào được nhất quán Tuy nhiên, kích thước ảnh đầu vào có thể được tùy chỉnh để phù hợp hơn với các mô hình nhận dạng khác nhau.

Các lớp tích chập (convolution layers): những lớp này dùng receptive field

(vùng mà filte trượt trên ảnh) tối thiểu là 3x3 Hơn nữa, còn có các bộ lọc tích chập 1x1 hoạt động như một phép biến đổi tuyến tính của ngõ vào Kế tiếp là hàm ReLU, nó là một hàm tuyến tính giúp cải thiện khả năng huấn luyện Bước trượt (stride) được giữ cố định ở 1 pixel để giữ nguyên độ phân giải sau khi thực hiện tích chập.

Các lớp ẩn (hidden layers): tất cả các lớp ẩn trong VGGNet đều dùng hàm

ReLU VGG thường không dùng Local Response Normalization (LRN) vì nó làm tăng thời gian huấn luyện và tiêu thụ bộ nhớ Hơn nữa, nó không cải thiện độ chính xác tổng thể.

2.3.2 Kiến trúc của mạng VGG16

VGG16 là mạng nơ-ron tích chập được đưa ra bởi A Zisserman và K.Simonyan Mô hình sau khi được huấn luyện bởi kiến trúc mạng VGG16 đã đạt độ chính xác cao lên đến 92.7% và đạt top 5 trong tập dữ liệu ImageNet gồm 14 triệu hình ảnh thuộc 1000 lớp khác nhau Kiến trúc của VGG16 được thể hiện như Hình2.10 bên dưới.

Hình 2.10 Kiến trúc mạng VGG16 [9]

Trong kiến trúc VGG16 gồm có 16 lớp với 13 lớp tích chập (2 nhóm lớp tích chập liền nhau Conv-Conv và 3 nhóm lớp tích chập Conv-Conv-Conv), theo sau mỗi nhóm lớp Conv là lớp Maxpooling, cuối cùng là 3 lớp kết nối đầy đủ và 1 lớp ngõ ra Softmax Tổng tham số (parameters) trong mô hình là hơn 138 triệu tham số.

Cụ thể hơn, các lớp có các thông số như sau [8]:

- Lớp Conv1, Conv2: kích thước bộ lọc là (3x3x64) với số lượng tham số lần lượt là 1.728 và 36.864.

- Lớp Pooling 1: kích thước 2x2, stride = 2, padding = 0 Tạo ra feature map có kích thước giảm một nửa còn (112x112x3) và giữ nguyên chiều sâu từ lớp

- Lớp Conv3, Conv4: kích thước bộ lọc là (3x3x128), số tham số lần lượt là

- Lớp Pooling 2: kích thước 2x2, stride = 2, padding = 0 Tạo ra feature map có kích thước giảm đi một nửa còn (56x56x3), giữ nguyên chiều sâu từ đầu ra ở lớp trước.

- Lớp Conv5, Conv6, Conv7: kích thước bộ lọc (3x3x256), số tham số lần lượt ở lớp Conv5 là 294.912, ở lớp Conv6 và Conv7 bằng nhau là 589.824.

- Lớp Pooling 3: kích thước 2x2, stride = 2, padding = 0 Tạo ra feature map có kích thước giảm còn (28x28x3), giữ nguyên chiều sâu.

- Lớp Conv8, Conv9 và Conv10: kích thước bộ lọc là (3x3x512) với số tham số lần lượt ở lớp Conv8 là 1.179.648, lớp Conv9 và Conv10 bằng nhau là đều có 2.359.296 tham số.

- Lớp Pooling 4: kích thước 2x2, stride = 2, padding = 0 Tạo ra feature map có kích thước giảm còn (14x14x3), chiều sâu giữ nguyên.

- Lớp Conv11, Conv12 và Conv13: kích thước bộ lọc (3x3x512), số tham số ở 3 lớp đều giống nhau là 2.359.296.

- Lớp Pooling 5: kích thước 2x2, stride = 2, padding = 0 Tạo ra feature map có kích thước giảm còn (7x7x3), chiều sâu giữ nguyên.

- Lớp Fully connected 1, 2, 3: số nơ-ron ở mỗi lớp đều bằng 4096 nơ-ron Số tham số ở lớp FC1 là 102.760.448, ở lớp FC2 là 16.777.216 và ở lớp FC3 là 4.096.000.

- Cuối cùng là ngõ ra hàm Softmax với 10.000 nơ-ron.

Nhìn chung, các lớp Conv có kích thước kernel là 3x3 với các độ sâu khác nhau.Càng về các lớp Conv sau thì kích thước của chiều dài, chiều rộng càng giảm nhưng depth (độ sâu) lại càng tăng, điều này giúp mô hình mạng học sâu hơn (phù hợp với bài toán nhận dạng và phân loại), giảm tham số tính toán cho mô hình Bên cạnh đó còn dùng hàm ReLU ngay sau mỗi Conv Sau khá nhiều lớp tích chập và lớp Pooling, dữ liệu được làm phẳng (flatten) và đưa vào lớp kết nối đầy đủ (fully connected layer).

BỘ CƠ SỞ DỮ LIỆU (DATASET)

Trong đề tài này, nhóm thực hiện thu thập một bộ cơ sở dữ liệu hình ảnh mới bao gồm 18000 ảnh có kích thước bằng nhau là 224x224 pixel Trong hầu hết các bộ dữ liệu được công bố hiện nay, tỷ lệ hình ảnh người phương Tây thường chiếm đa số, một số bộ dữ liệu khác cần phải có bản quyền để truy cập và sử dụng Vì các đặc trưng trên khuôn mặt người châu Á sẽ có nhiều điểm khác biệt so với người châu Âu, châu Mỹ… nên khi ứng dụng vào việc nhận dạng độ tuổi, giới tính trong môi trường có nhiều người châu Á sẽ không đạt hiệu quả tối ưu Bên cạnh đó, đặc điểm chung của các tập dữ liệu công khai này là tỷ lệ giới tính (nam, nữ) và độ tuổi không cân bằng Với mục tiêu tạo ra sự đồng đều về tỷ lệ giới tính ở mọi độ tuổi cũng như cải thiện tỷ lệ phần trăm khuôn mặt của nhóm người châu Á, nhóm đã xây dựng một bộ dữ liệu mới bằng cách thu thập hình ảnh từ nhiều nguồn khác nhau Một số nguồn chính bao gồm tập dữ liệu UTKFace chiếm khoảng 40% trên toàn bộ dữ liệu, bộ VN-celeb (Tập dữ liệu khuôn mặt người nổi tiếng Việt Nam) chiếm khoảng 30% và 30% còn lại đến từ các trang web như Google Image, Getty Images, Dreamstime.

UTKFace là bộ cơ sở dữ liệu chứa đựng hơn 20.000 hình ảnh khuôn mặt đa dạng với tên ảnh được đặt để phân loại về dân tộc, giới tính và độ tuổi trải dài từ 0 đến 116 tuổi Các ảnh có nhiều sự thay đổi so với nhau từ biểu cảm, góc chụp, cho đến độ chiếu sáng Bộ dữ liệu này còn có thể được dùng cho nhiều mục đích như phát hiện khuôn mặt, ước tính tuổi, nhận diện giới tính, dân tộc… Một số hình ảnh trong tập UTKFace được thể hiện như Hình 2.11 bên dưới.

Hình 2.11 Một vài hình ảnh trích từ tập UTKFace Đặc điểm nổi bật của tập UTKFace này được thể hiện qua sự đa dạng của hình ảnh các khuôn mặt trong tự nhiên và mỗi ảnh là một khuôn mặt khác nhau Tuổi, giới tính, chủng tộc được ước tính thông qua thuật toán DEX [12] và được kiểm tra lại bởi con người Các ảnh được căn chỉnh chủ yếu là hình ảnh trực diện, được cắt thành một kích thước chung là 200x200 pixel Tuy nhiên, bộ dữ liệu này chứa khá ít khuôn mặt người châu Á, chủ yếu chỉ tập trung vào hình ảnh khuôn mặt của các chủng tộc khác như người Da đen, Mỹ La Tinh, Trung Đông.

Nguồn dữ liệu thứ hai đến từ tập VN-celeb chứa hơn 23000 ảnh khuôn mặt của 1000 người nổi tiếng ở Việt Nam, kích thước ảnh là 128x128 pixel Trung bình mỗi một người sẽ có gần 20 ảnh ở các độ tuổi khác nhau trong cuộc đời họ (từ lúc trẻ đến khi già) và đa số các hình ảnh tập trung vào độ tuổi từ 20 đến 50 tuổi Vì tậpVN-celeb được tạo ra với mục đích chỉ nhận dạng khuôn mặt nên các hình ảnh trong tập dữ liệu này không được xác định độ tuổi Một vài hình ảnh lấy từ tập dữ liệu này được thể hiện ở Hình 2.12.

Hình 2.12 Một vài hình ảnh trích từ tập dữ liệu VN-celeb

Phần còn lại của tập dữ liệu nhóm thu thập từ các nguồn internet được minh họa ở Hình 2.13 Các nguồn gồm Google Image, Getty Images và Dreamstime Google Image là một kho dữ liệu ảnh khổng lồ nhưng chất lượng ảnh thường không được cao, bị lẫn nhiều hình ảnh không liên quan đến từ khóa tìm kiếm nên nhóm chỉ thu thập một số ít hình ảnh trên nền tảng này Getty Images là một kho ảnh trực tuyến cung cấp lượng hình ảnh lớn nhất thế giới, chứa đa dạng hình ảnh ở mọi chủ đề với chất lượng ảnh cao. Dreamstime bao gồm nhiều ảnh miễn phí hoặc có bản quyền, ảnh chất lượng tốt và được xếp theo chủ đề rất dễ dàng để tìm kiếm.

Hình 2.13 Minh họa một vài hình ảnh thu thập từ Google Image, Getty

Tuy nhiên, hình ảnh lấy từ những nguồn trên đa số là ảnh bán thân trong khi mục tiêu của tập dữ liệu là chỉ lấy các đặc trưng của khuôn mặt, do đó trước khi được dùng để huấn luyện, các ảnh này được cắt để lấy đúng vùng khuôn mặt và bỏ những phần dư thừa như phần vai, ngoại cảnh… Bên cạnh đó, mặc dù số lượng ảnh trong các tập dữ liệu rất lớn nhưng lượng ảnh không đạt chất lượng, bị trùng lặp và không nằm trong độ tuổi cần thiết rất nhiều, vì vậy nhóm sẽ loại bỏ những ảnh không phù hợp như Hình 2.14 bên dưới.

Hình 2.14 Những hình ảnh bị loại bỏ khỏi tập dữ liệu

Những hình ảnh bị nhiễu như ảnh có độ mờ cao, không xác định được rõ đường nét như mắt, mũi, miệng, khuôn mặt nghiên hẳn sang một bên và hình không xác định rõ được giới tính sẽ bị loại bỏ khỏi tập dữ liệu Các khuôn mặt có nét đặc trưng rõ cho từng độ tuổi sẽ được thu thập.

THIẾT KẾ MÔ HÌNH PHÂN LOẠI ĐỘ TUỔI VÀ GIỚI TÍNH

XỬ LÝ BỘ CƠ SỞ DỮ LIỆU (DATASET)

3.1.1 Sắp xếp và phân chia tập dữ liệu

Sau khi thu thập ảnh, nhóm tiến hành sắp xếp dữ liệu và đặt tên cho ảnh theo một dạng nhất định để dễ dàng phân loại Các hình ảnh được đặt tên như sau:

[Tuổi]_[Giới tính]_[Chủng tộc]_[STT].jpg

Trong đó: [Tuổi]: biểu thị độ tuổi từ 1 đến hơn 70 tuổi (70+).

[Giới tính]: biểu thị giới tính bao gồm 2 số, với số 0 là nam và số 1 là nữ.

[Chủng tộc]: là chú thích cho chủng tộc Số 1 biểu thị cho các khuôn mặt đến từ khu vực châu Á mà cụ thể là Đông Á, Đông Nam Á Số

1 đại diện cho các khuôn mặt đến từ những khu vực còn lại trên thế giới.

[STT]: đánh dấu số thứ tự cho từng ảnh.

Như được trình bày ở trên, các thành phần trong tên ảnh được phân cách với nhau bởi dấu “_” và những hình ảnh được chuyển về một dạng là ảnh JPG với kích thước 224x244 được minh họa ở Hình 3.1.

Hình 3.1 Ảnh minh họa cho cách đặt tên ảnh trong tập dữ liệu.

Với mục tiêu tăng số lượng người châu Á trong tập dữ liệu, nhóm đã thu thập thêm ảnh của người đến từ các khu vực Đông Á (Nhật Bản, Trung Quốc…) và Đông Nam Á (Việt Nam, Thái Lan ) vì khuôn mặt của những người ở các quốc gia này thể hiện rõ đặc trưng của người châu Á Bảng 3.1 bên dưới thể hiện phần trăm tỷ lệ khuôn mặt châu Á và các nước thuộc châu lục khác trong toàn bộ tập dữ liệu.

Bảng 3.1 Tỷ lệ phần trăm khuôn mặt nhóm người châu Á và các châu lục khác của bộ dữ liệu.

Chủng tộc Tổng ảnh Tỷ lệ

Các châu lục khác 7.920 (ảnh) 44%

Toàn bộ tập dữ liệu là 18000 ảnh và dùng Google Colaboratory (gọi tắt là

Google Colab) để huấn luyện mô hình Google Colab cung cấp một môi trường cho phép người dùng thực thi các dòng lệnh Python thông qua trình duyệt, phát triển các ứng dụng và tiết kiệm chi phí đầu tư phần cứng nếu máy không đủ cấu hình Nhóm dùng phiên bản Google Colab miễn phí cho phép sử dụng GPU K80 thông số 2.20

GHz và giới hạn dung lượng 13GB RAM cũng như thời gian lưu trữ.

3.2.1 Phân tích tập dữ liệu

Bảng 3.2 bên dưới phân tích chi tiết số lượng ảnh dùng để huấn luyện độ tuổi.

Trong đó mỗi độ tuổi sẽ được chọn lọc để lấy 240 ảnh, bao gồm 120 ảnh cho giới tính nam và 120 ảnh cho giới tính nữ Lấy ví dụ trong nhóm (1 – 9), các khuôn mặt

1 tuổi sẽ gồm 120 ảnh nam và 120 ảnh nữ, các độ tuổi 2, 3, 4, 5… còn lại cũng được phân chia tương tự như vậy. Độ tuổi được chia thành 8 lớp tương ứng với 8 nhóm tuổi được nhận dạng bao gồm (1 – 9), (10 – 19), (20 – 29), (30 – 39), (40 – 49), (50 – 59), (60 – 69) và nhóm

Bảng 3.2 Sự phân chia số lượng hình ảnh trong tập dữ liệu độ tuổi

Tập dữ liệu Số lớp Nhóm tuổi Tổng ảnh mỗi nhóm tuổi Độ tuổi 1 (1–9) 2160

Tổng ảnh 18000 Đối với giới tính sẽ được phân thành 2 lớp là nam (male) và nữ (female) như Bảng 3.3 bên dưới.

Bảng 3.3 Sự phân chia số lượng ảnh trong tập dữ liệu giới tính

Tập dữ liệu Số lớp Giới tính Số lượng ảnh của mỗi giới tính

Như vậy tỷ lệ ảnh giữa các độ tuổi sẽ bằng nhau, tỷ lệ giới tính cũng sẽ như nhau, từ đó giúp cho việc huấn luyện trở nên “công bằng” và mô hình được huấn luyện đồng nhất ở mọi giới tính và tuổi.

Tập dữ liệu sau khi được sắp xếp, trong quá trình huấn luyện sẽ được chia thành hai tập là: tập huấn luyện (training set) và tập kiểm thử (validation set) như được thể hiện ở Bảng 3.4 bên dưới.

Bảng 3.4 Bảng phân chia tỷ lệ trong quá trình huấn luyện

Tập dữ liệu Tỷ lệ (%) Số dữ liệu (ảnh)

Tập huấn luyện (training set) 80 14400

Tập kiểm thử (validation set) 20 3600

Tập huấn luyện (training set) là dữ liệu mà mô hình sẽ học và rút trích những điểm quan trọng để ghi nhớ Training set bao gồm các cặp Input-Output (hay còn gọi là Data-Label), trong đó Input chính là dữ liệu ngõ vào (hình ảnh) còn Output là kết quả tương ứng với Input (ví dụ Input là ảnh quả táo thì Output sẽ gán nhãn “quả táo” cho dữ liệu) Tập kiểm chứng (validation set) là một tập nhỏ được trích từ tập Training set, nó dùng để kiểm tra độ chính xác của mô hình trong quá trình huấn luyện Những số liệu được tính toán ở Validation set dùng để điều chỉnh các tham số của mô hình và nó được thực hiện trong khi chạy từng epoch.

TỔNG QUAN QUY TRÌNH THỰC HIỆN

3.2.1 Sơ lược về quy trình thực hiện.

Trong đề tài này Hình 3.2 bên dưới thể hiện các bước chính của quá trình phân loại độ tuổi và giới tính dựa trên khuôn mặt Ba yếu tố cơ bản để tạo nên một mô hình bao gồm: hình ảnh đầu vào từ webcam, mô hình xử lý và kết quả hiển thị Để phân tích rõ hơn, ta đi vào mô hình chi tiết để hình dung được những khối chính của quá trình phân loại.

Hình 3.2 Sơ đồ khối mô hình nhận dạng độ tuổi, giới tính

Dữ liệu ngõ vào : dữ liệu được đưa vào thông qua webcam máy tính, có thể là video, hình ảnh hoặc khuôn mặt trực tiếp.

Phát hiện khuôn mặt : dữ liệu sau khi đã nhận được sẽ thông qua một mô hình giúp phát hiện và xác định khuôn mặt bằng cách vẽ một khung (bounding box) có kích thước 224x224 pixel khi phát hiện có khuôn mặt.

Mô hình xử lý : chức năng của mô hình thể hiện qua một số bước chính như:

- Trích chọn đặc trưng: dữ liệu vào sẽ đi qua kiến trúc mạng, ở đây những đặc điểm nổi bật và đặc trưng nhất của dữ liệu sẽ được giữ lại để làm dữ liệu cho quá trình phân loại.

- Phân loại và gán nhãn: đối với độ tuổi, nhóm dùng bài toán phân lớp đa lớp

(multiclass classification) Do có 8 nhóm tuổi cần nhận dạng nên sẽ được chia thành 8 lớp Khối phân loại giới tính được thực hiện phân lớp nhị phân (binary classification) với

2 lớp, trong đó lớp thứ nhất là “nam” (male) và lớp thứ hai là “nữ” (female).

- Nhận dạng: từ những dữ liệu đã được “học”, mô hình sẽ so sánh dữ liệu vào với các nhãn đã được “học” từ đó đưa ra kết quả dự đoán.

Kết quả hiển thị: kết quả hiển thị bao gồm một khung phát hiện khuôn mặt.

Thông tin giới tính, nhóm độ tuổi của người cần nhận diện được hiển thị trên giao diện web bằng cách sử dụng Streamlit (đây là một framework giúp xây dựng nhanh một giao diện hay trình bày kết quả sau khi huấn luyện thành công mô hình Machine learning).

Trong đề tài này nhóm dùng phương pháp Transfer learning (học chuyển tiếp) cho mô hình phân loại tuổi, giới tính Đây là một phương pháp thuộc về Học máy, cụ thể hơn là sẽ dùng một mô hình đã được nghiên cứu trước đó (Pretrained Model) để làm cơ sở phát triển cho mô hình thứ hai.

Phương pháp Fine tuning được nhóm lựa chọn sử dụng cho bài toán phân loại độ tuổi và giới tính trong để tài Tổng quan của phương pháp này ta sẽ chỉ giữ lại phần ConvNet của Pretrained Model rồi bỏ đi các lớp Fully connected của nó, đây chính là đầu vào cho một mô hình mới Từ đó xây dựng lên mô hình mới bằng cách thêm các lớp Fully connected khác và một số lớp (layers) phù hợp.

Hình 3.3 Sự thay đổi cấu trúc mô hình huấn luyện

Hình 3.3 bên trên thể hiện sự thay đổi các lớp ở mô hình mới Nhóm thực hiện đề tài sử dụng trọng số từ imagenet để dùng cho mô hình phân loại độ tuổi và giới tính(đây là tập trọng số có sẵn được huấn luyện trên tập dữ liệu ImageNet) Đầu tiên, do đầu ra của mô hình mới sẽ có số lớp khác so với đầu ra của Pretrained Model nên để phù hợp cho mục đích nhận dạng nhóm thực hiện thay đổi các lớp kết nối đầy đủ (Fully connected) cuối của mạng VGG16 Tiếp theo, nhóm thực hiện huấn luyện trên toàn bộ mô hình dựa trên những trọng số đã được huấn luyện sẵn từ tập ImageNet và huấn luyện trên những trọng số mới.

PHÂN TÍCH KIẾN TRÚC MÔ HÌNH XỬ LÝ

Để thiết kế mô hình phát hiện khuôn mặt kết hợp với việc phân loại độ tuổi và giới tính, ngoài việc xây dựng kiến trúc mạng phù hợp để đạt hiệu quả cao trong quá trình nhận diện thì việc lựa chọn các yếu tố trong kiến trúc mạng như hàm chuẩn hóa, hàm lỗi, thuật toán tối ưu… cũng rất quan trọng Ngoài ra cũng cần xác định các lớp, các biến dữ liệu, điều chỉnh tham số để phù hợp với tập dữ liệu được dùng. Trong mô hình nhận diện này, nhóm sử dụng kiến trúc mạng VGG16 để giải quyết bài toán phân loại giới tính và độ tuổi.

3.3.1 Mô hình phát hiện khuôn mặt (Face detection)

Mô hình này nhóm dùng tập trọng số có sẵn là yunet.onnx để làm tập trọng số cho quá trình phát hiện khuôn mặt YuNet Face Detection được nghiên cứu và thực thi trên nền tảng DepthAI, YuNet là một mô hình phát hiện khuôn mặt có trọng số nhẹ (light-weight), nhanh và đạt độ chính xác cao trên bộ dữ liệu WIDER Face validation set Nguồn của yunet.onnx đến từ thư viện OpenCv zoo (thư viện này dành cho những mô hình được chỉnh sửa cho OpenCv DNN với các điểm chuẩn – benchmarks trên các nền tảng khác nhau). Ưu điểm của YuNet Face Dectection là dễ áp dụng vào mô hình, nó sẽ nhận hình ảnh thu được và trả về một khung hình chữ nhật, mỗi hình tương ứng với một khuôn mặt được phát hiện Vì Face detection không nhận dạng danh tính cụ thể của từng người nên nó không cần lưu trữ dữ liệu sinh trắc học hay so sánh hình ảnh đầu vào với hình ảnh trong bộ cơ sở dữ liệu Như thể hiện ở Hình 3.4 bên dưới, một khuôn mặt được phát hiện dựa trên 5 mốc trên khuôn mặt (facial landmarks coordinates) bao gồm 2 điểm ở mắt, 1 điểm ở mũi và 2 điểm ở 2 khóe miệng.

Hình 3.4 Xác định các điểm mốc để phát hiện khuôn mặt

Việc phát hiện khuôn mặt là tiền đề quan trọng cho các ứng dụng liên quan như nhận dạng độ tuổi và giới tính Để có thể phát hiện khuôn mặt của một người, nhóm sử dụng hàm của thư viện OpenCv là cv2.FaceDetectorYN.create() để tải tệp trọng số yunet.onnx vào mô hình Các thông số của hàm này cũng được thêm vào như input_size (xác định kích thước ảnh đầu vào), score_threshold=0.9 (đây là ngưỡng để lọc ra các bounding boxes of score nhỏ hơn giá trị 0.9), nms_threshold=0.3 (ngưỡng loại bỏ các bounding boxes bị chồng lặp có giá trị lớn hơn 0.4) và một số thông số khác như top_K, config.

3.3.2 Kiến trúc mô hình xử lý dùng mạng VGG16

Mô hình chủ yếu được xây dựng dựa trên kiến trúc mạng VGG16, nhóm thực hiện đề tài sẽ thay đổi lớp kết nối đầy đủ để phù hợp với bài toán Nhìn chung, mô hình phân loại độ tuổi và giới tính đều có các lớp (layers) giống nhau, sự khác biệt nằm ở số lượng hình ảnh ngõ vào và hàm ngõ ra Hình 3.5 dưới đây sẽ mô tả chi tiết mô hình được thiết kế.

Hình 3.5 Kiến trúc mô hình phân loại độ tuổi, giới tính

Ngõ vào: hình ảnh được định dạng về kích thước (224x224x3).

Khối VGG1 và VGG2: gồm có 2 lớp tích chập nối liền nhau Tuy nhiên số filters ở khối VGG1 là 64, khối VGG2 là 128 Kích thước cửa sổ trượt (kernel) bằng 3x3, cả 2 khối đều dùng hàm kích hoạt là hàm ReLU Cuối cùng là lớp MaxPooling có kích thước ma trận là 2x2, bước trượt bằng 2 Hình 3.6 bên dưới mô tả chi tiết khối VGG1 và VGG2.

Hình 3.6 Sơ đồ khối VGG1 và khối VGG2

Khối VGG3: bao gồm có 3 lớp tích chập nối liền nhau (tăng thêm 1 lớp tích chập so với khối VGG1 và VGG2) Số filters trong khối này bằng 256, kích thước cửa sổ trượt (kernel) bằng 3x3, sử dụng hàm kích hoạt ReLU và cuối cùng là lớp MaxPooling có kích thước ma trận là 2x2, bước trượt bằng 2.

Khối VGG4 (trong mô hình có 2 khối VGG4): mỗi khối VGG4 có 3 lớp tích chập nối liền nhau, số filters bằng 512 Kích thước cửa sổ trượt (kernel), hàm kích hoạt, lớp MaxPooling tương tự như khối VGG1, VGG2 và VGG3 Hình 3.7 bên dưới mô tả chi tiết khối VGG3, VGG4.

Hình 3.7 Sơ đồ khối VGG3 và khối VGG4

Lớp làm phẳng: lớp này chịu trách nhiệm chuyển đổi kết quả đầu ra từ lớp tích chập là mảng nhiều chiều thành vector một chiều trước khi được vào tầng kết nối đầy đủ để thực hiện quá trình phân loại.

Lớp kết nối đầy đủ: lớp này cũng giống như các lớp kết nối trong mạng nơ- ron thông thường, có nghĩa là nó sẽ liên kết đầy đủ các nơ-ron lại với nhau Trong mô hình này, nhóm thực hiện đề tài sẽ sử dụng hàm ReLU với số nơ-ron ở mỗi lớp là 128 và dùng thêm kỹ thuật dropout Tiếp theo là lớp ngõ ra tuỳ vào từng nhiệm vụ mà mô hình sẽ có output_shape khác nhau Cụ thể đối với bài toán nhận dạng độ tuổi được chia thành 8 lớp sử dụng hàm Softmax cho ngõ ra Còn đối với bài toán phân loại giới tính có 1 lớp ngõ ra với Sigmoid là hàm kích hoạt Hình 3.8 bên dưới mô tả chi tiết lớp kết nối đầy đủ như sau.

Hình 3.8 Mô tả chi tiết lớp kết nối đầy đủ (FC)

Kết quả ngõ ra: đưa ra dự đoán về độ tuổi, giới tính sau khi được huấn luyện.

3.3.3 Phương pháp cho từng nhiệm vụ phân loại

Trước khi tiến hành xây dựng mô hình, nhóm thực hiện đề tài sẽ đi tìm hiểu về những phương pháp phù hợp cho từng nhiệm vụ phân loại cũng như kiến trúc cho từng mô hình Bước này khá quan trọng vì việc lựa chọn các thông số, các hàm kích hoạt, hàm tối ưu và hàm mất mát cũng như xây dựng mô hình sẽ ảnh hưởng trực tiếp đến kết quả cuối cùng.

Về cơ bản trong quá trình huấn luyện, các thuật toán sẽ cố gắng thay đổi các tham số của mô hình, với mục đích làm cho kết quả dự đoán chính xác hoặc tương đương với dữ liệu ngõ vào nhất, bằng cách sử dụng các thuật toán Gradient descent Trong khi đó, hàm mất mát sẽ đảm nhận công việc đánh giá mức độ học của mô hình với bộ trọng số tương ứng Qua nhiều lần đánh giá và huấn luyện, mô hình sẽ xác nhận bộ số làm cho độ lớn hàm mất mát là thấp nhất Chính vì vậy, trước tiên nhóm sẽ tìm hiểu và xác định hàm mất mát nào phù hợp với bài toán nhận dạng giới tính.

Có nhiều hàm mất mát đã được nghiên cứu và công bố, tuy nhiên tùy vào từng nhiệm vụ mà bài toán đặt ra sẽ lựa chọn các hàm mất mát phù hợp Nhiệm vụ nhận diện giới tính được xem như một bài toán phân loại nhiều lớp, cụ thể ở trong bài toán này sẽ được chia thành 2 lớp là nam và nữ Cross-entropy được biết đến là hàm mất mát được sử dụng phổ biến nhất trong quá trình huấn luyện dùng để loại trừ các nhãn với nhau.Bởi vì trong nhiệm vụ phân lớp lần này chỉ có hai nhãn, vì thế hàm mất mát Binary cross-entropy rất phù hợp với bài toán này bởi những đặc trưng riêng của nó Cụ thểBinary cross-entropy chỉ có hai giá trị {0,1}, thường được sử dụng trong các yêu cầu cần phải lựa chọn, ví dụ như: đúng hoặc sai, 0 hoặc 1, hay trong mô hình này sẽ là nam hoặc nữ Công thức số (3) bên dưới là biểu diễn toán học của hàm Binary cross-entropy [13]:

Trong đó: C là số lớp có trong mô hình, ở bài toán này C=2. là nhãn thật thứ i. ̂ là nhãn dự đoán thứ i.

Cùng với đó hàm kích hoạt được sử dụng trên khối cuối cùng của lớp Dense là hàm Sigmoid Bởi vì giá trị thay đổi của hàm này nằm trong khoảng từ 0 đến 1, để đảm bảo được việc tính toán logarit của (1 - ̂) không âm thì ̂ phải nằm trong khoảng nhỏ hơn 1 Chính vì điều này, hàm Sigmoid rất phù hợp để làm chức năng kích hoạt cho hàm mất mát Binary cross-entropy.

3.3.3.2 Phân loại độ tuổi Đối với nhiệm vụ phân loại độ tuổi có thể xác định được dựa theo hai phương pháp là phân loại đa lớp và phương pháp hồi quy Mỗi phương pháp đều sử dụng những hàm mất mát riêng Trong nhiệm vụ này nhóm thực hiện đề tài đã chia các tuổi thành 8 nhóm vì vậy nhiệm vụ này phù hợp với bài toán phân loại nhiều lớp hơn.

Trong mô hình này nhóm vẫn sử dùng hàm mất mát Cross-entropy, tuy nhiên Binary cross-entropy chỉ phù hợp với các bài toán có hai lớp nên không thể sử dụng được trong trường hợp này Chính vì thế, nhóm sẽ dùng hàm mất mát Categorical cross-entropy để thay thế Để sử dụng được hàm mất mát này, trước đó nhóm sẽ sử dụng kỹ thuật One-hot encoding để chuyển các nhãn chứa đang mang các giá trị số thành dạng vector có kích thước bằng với ngõ ra của mô hình One-hot encoding giữ lại giá trị đúng của dữ liệu theo nhóm thật sẽ có giá trị là 1 còn các nhóm khác sẽ bằng 0.

KẾT QUẢ VÀ ĐÁNH GIÁ

KẾT QUẢ XÂY DỰNG MÔ HÌNH

Nhóm thực hiện đề tài tiến hành xây dựng mô hình nhận dạng độ tuổi và giới tính áp dụng những kiến thức cũng như lý thuyết đã kể trên Với mô hình nhận dạng giới tính, nhóm áp dụng kiến trúc mạng VGG16 với kích thước ngõ vào trong mạng là (224,224,3) Mô hình có trọng số kết nối như Bảng 4.1 bên dưới:

Bảng 4.1 Trọng số kết nối của mô hình mạng VGG16 cho giới tính

Layer (type) Output shape Param input_1 (InputLayer) [(None, 224, 224, 3)] 0 block1_conv1 (Conv2D) (None, 224, 224, 64) 1792 block1_conv2 (Conv2D) (None, 224, 224, 64) 36928 block1_pool(MaxPooling2D) (None, 112, 112, 128) 0 block2_conv1 (Conv2D) (None, 112, 112, 128) 73856 block2_conv2 (Conv2D) (None, 112, 112, 128) 147584 block2_pool(MaxPooling2D) (None, 56, 56, 256) 0 block3_conv1 (Conv2D) (None, 56, 56, 256) 295168 block3_conv2 (Conv2D) (None, 56, 56, 256) 590080 block3_conv3 (Conv2D) (None, 56, 56, 256) 590080 block3_pool(MaxPooling2D) (None, 28, 28, 512) 0 block4_conv1 (Conv2D) (None, 28, 28, 512) 1180160 block4_conv2 (Conv2D) (None, 28, 28, 512) 2359808 block4_conv3 (Conv2D) (None, 28, 28, 512) 2359808 block4_pool(MaxPooling2D) (None, 14, 14, 512) 0 block5_conv1 (Conv2D) (None, 14, 14, 512) 2359808 block5_conv2 (Conv2D) (None, 14, 14, 512) 2359808 block5_conv3 (Conv2D) (None, 14, 14, 512) 2359808 block5_pool(MaxPooling2D) (None, 7, 7, 512) 0 flatten (Flatten) (None, 25088) 0 dense (Dense) (None, 128) 3211392 dropout (Dropout) (None, 128) 0 dense_1 (Dense) (None, 1) 129

Như đã thấy, dữ liệu đầu vào với kích thước là (224,224,3), khi qua các lớp tích chập (5 khối tích chập) và lớp gộp thì kích thước đầu ra của dữ liệu đã được giảm đi đáng kể Chiều cao và chiều rộng của feature map giảm đi rất nhiều, cuối cùng kích thước chỉ còn (7,7,512) Song song đó, các trọng số của mô hình cũng liên tục được cập nhật sau khi qua những lớp tích chập trong mô hình Cuối cùng những trọng số này sẽ được qua các lớp làm phẳng (flatten) và lớp kết nối đầy đủ (dense) để đưa các giá trị ngõ ra của mô hình nhận dạng giới tính.

Tương tự như vậy, mô hình nhận dạng độ tuổi cũng được thể hiện qua Bảng 4.2. Nhưng điểm khác biệt nằm ở tham số của lớp Dense cuối cùng.

Bảng 4.2 Trọng số kết nối của mô hình mạng VGG16 cho độ tuổi.

Layer (type) Output shape Param input_1 (InputLayer) [(None, 224, 224, 3)] 0 block1_conv1 (Conv2D) (None, 224, 224, 64) 1792 block1_conv2 (Conv2D) (None, 224, 224, 64) 36928 block1_pool(MaxPooling2D) (None, 112, 112, 128) 0 block2_conv1 (Conv2D) (None, 112, 112, 128) 73856 block2_conv2 (Conv2D) (None, 112, 112, 128) 147584 block2_pool(MaxPooling2D) (None, 56, 56, 256) 0 block3_conv1 (Conv2D) (None, 56, 56, 256) 295168 block3_conv2 (Conv2D) (None, 56, 56, 256) 590080 block3_conv3 (Conv2D) (None, 56, 56, 256) 590080 block3_pool(MaxPooling2D) (None, 28, 28, 512) 0 block4_conv1 (Conv2D) (None, 28, 28, 512) 1180160 block4_conv2 (Conv2D) (None, 28, 28, 512) 2359808 block4_conv3 (Conv2D) (None, 28, 28, 512) 2359808 block4_pool(MaxPooling2D) (None, 14, 14, 512) 0 block5_conv1 (Conv2D) (None, 14, 14, 512) 2359808 block5_conv2 (Conv2D) (None, 14, 14, 512) 2359808 block5_conv3 (Conv2D) (None, 14, 14, 512) 2359808 block5_pool(MaxPooling2D) (None, 7, 7, 512) 0 flatten (Flatten) (None, 25088) 0 dense (Dense) (None, 128) 3211392 dropout (Dropout) (None, 128) 0 dense_1 (Dense) (None, 8) 1032

Khi đã xây dựng xong cả hai mô hình về giới tính và độ tuổi, nhóm thực hiện đề tài tiến hành lựa chọn thông số cần thiết cho mô hình để xem xét sự ảnh hưởng đến kết quả học của mô hình, từ đó lựa chọn được thông số phù hợp để mô hình học tập Nhóm chọn tỷ lệ học là 0.0001 cho thuật toán tối ưu Adam Số epoch là 100,batch-size được sử dụng trong mỗi lần huấn luyện là 8 Sau khi việc huấn luyện trênGoogle Colab hoàn tất, các trọng số của mô hình sẽ được dưới dạng file h5 để đưa vào sử dụng cho quá trình nhận dạng thông qua camera và hiển thị kết quả lên web.

KẾT QUẢ HUẤN LUYỆN MÔ HÌNH

Thông qua kết quả huấn luyện mô hình giới tính ở Hình 4.1, ở đây đường màu xanh dương đại diện cho quá trình huấn luyện mô hình (train), còn đường màu cam đại diện cho kết quả thử nghiệm (validation) Nhóm dựa vào biểu đồ thấy được rằng kết quả huấn luyện của mô hình đạt được độ chính xác trên tập huấn luyện là trên95% (xấp xỉ 98%) và trên tập validation trên 90% (xấp xỉ 94%), điều này cho thấy được kết quả huấn luyện của mô hình nhận dạng giới tính hoạt động khá tốt trên tập huấn luyện cũng như thử nghiệm Bên cạnh đó, giá trị mất mát trên tập dữ liệu huấn luyện đạt được dưới 10% (xấp xỉ 5%), đối với dữ liệu thử nghiệm giá trị mất mát nhỏ nhất là 20% sau đó tăng dần qua các epoch.

Hình 4.1 Kết quả của huấn luyện mô hình giới tính.

Qua kết quả đó nhóm thấy được rằng mô hình nhận dạng giới tính đạt được độ chính xác khá cao trên tập huấn luyện và giá trị mất mát (training loss) thấp.

4.2.1.2 Ma trận nhầm lẫn (confusion matrix)

Trong bài toán phân loại giới tính chỉ có 2 nhãn là “nam” và “nữ” sẽ tạo ra được một ma trận nhầm lẫn như Bảng 4.3 bên dưới Ma trận này sẽ dựa trên số mẫu của tập kiểm thử (validation set) để đánh giá, nhóm chọn tỷ lệ của tập kiểm thử là

20% (tương đương với 3600 mẫu) so với toàn bộ mẫu là 18000.

Bảng 4.3 Ma trận nhầm lẫn cho bài toán giới tính.

Một mẫu được nhận dạng chính xác chỉ khi cả nhãn thật và nhãn dự đoán của chúng nằm trong hai nhãn là “nam” hoặc “nữ” còn những trường hợp khác là không

Nam/nam: nhãn thật và nhãn dự đoán đều là giới tính nam, vì vậy đây là nhãn chính xác.

Nam/nữ: nhãn thật là nam nhưng nhãn dự đoán là nữ, điều này có nghĩa là quá trình học đã nhầm lẫn mẫu nam thành nữ.

Nữ/nữ: nhãn thật và dự đoán đều cho kết quả giới tính là nữ cho nên mẫu này là chính xác.

Nữ/nam: nhãn thật là giới tính nữ nhưng nhãn dự đoán lại nhầm lẫn mẫu thành giới tính nam.

Trong ma trận này đường chéo chính giữa biểu diễn cho các dự đoán chính xác Chính vì vậy có thể thấy số lượng các mẫu được nhận dạng trên đường chéo này cũng cao hơn rất nhiều so với các trường hợp xung quanh.

Accuracy (độ chính xác): một trong những cách đơn giản và được dùng phổ biến nhất để tính toán độ chính xác là sử dụng ma trận nhầm lẫn Bằng cách lấy tổng mẫu dự đoán đúng chia cho số mẫu có trong tập dữ liệu, công thức (8) bên dưới tính toán accuracy như sau [15]:

Trong đó: TM: là số mẫu dự đoán đúng của nhãn “nam”.

TF: số mẫu dự đoán đúng của nhãn “nữ”.

FM: số mẫu dự đoán nhầm lẫn nhãn “nữ” thành “nam”

FF: số mẫu dự đoán của nhãn “nam” nhầm thành nhãn “nữ”.

Từ công thức nhóm thực hiện đề tài tính kết quả độ chính xác dự đoán của mô hình phân loại giới tính xấp xỉ 94%, về cơ bản thì mô hình này nhận dạng khá ổn định khi phần trăm nhận dạng của nam hay nữ đều ở mức cao Có nghĩa là cứ một

100 mẫu thì sẽ có khoảng 94 mẫu được dự đoán chính xác Tuy nhiên, tập dữ liệu kiểm thử là được lấy ngẫu nhiên chính vì vậy dẫn đến việc số lượng mẫu của hai nhãn “nam” và “nữ” không cân bằng Để nâng cao thêm độ tin cậy của mô hình nhận dạng nhóm thực hiện tiếp tục tiến hành tính toán các giá trị precision và recall.

Precision: được hiểu là phần trăm dự đúng Ví dụ áp dụng cho mẫu “nam” trong đó lượng mẫu đoán đúng nhãn thật (TM) tỷ lệ với tổng số lượng mẫu được phân loại là “nam” (TM+FM) Công thức (9) được dùng để tính precision [16]:

Recall: chính là số lượng mẫu dự đoán đúng nhãn thật là “nam” (TM) tỷ lệ với tổng số lượng mẫu thật sự là “nam” (TM+FF), được tính toán như công thức (10) bên dưới [16]:

+ Để mô hình đạt được hiệu quả cao khi nhận dạng thì đồng nghĩa với việc dự đoán nhãn đúng giá trị precision phải cao và số lượng mẫu bị nhầm lẫn phải thấp (giá trị recall phải cao).

Từ công thức tính được precision của nhãn “nam” xấp xỉ 94% thì được hiểu là có 94 mẫu là đúng trong 100 mẫu được dự đoán và recall cũng xấp xỉ 93% đồng nghĩa với việc dự đoán đúng 93/100 mẫu nam thật.

Precision của nhãn “nữ” với xấp xỉ 93% tương đương mẫu dự đoán chính xác 93/100 mẫu dự đoán và recall xấp xỉ 85% tương đương là với 100 mẫu nữ là thật thì chỉ có 6 mẫu bị dự đoán sai Hình 4.2 bên dưới thể hiện phần trăm nhận dạng được tính toán sẵn trong mô hình.

Hình 4.2 Ma trận nhầm lẫn trong mô hình phân loại giới tính

F-1 Score: đùng để đánh giá mức độ phân loại của mô hình, giá trị càng cao thì mức độ phân loại càng chính xác Được tìm ra dựa trên giá trị của precision và

+ Áp dụng công thức tìm ra được F1 Score trong bài toán phân loại giới tính là xấp xỉ 94% Về cơ bản mô hình giới tính hoạt động khá tốt.

4.2.2.1 Kết quả huấn luyện Đối với kết quả của việc huấn luyện mô hình nhóm tuổi ở trong Hình 4.3, độ chính xác (accuracy) của mô hình trong tập huấn luyện đạt được kết quả trên 90% (xấp xỉ 92%) nhưng đối với kết quả trên tập thử nghiệm thì độ chính xác nằm trong khoảng 55% đến 60% Về độ mất mát (loss) với tập dữ liệu huấn luyện thì hệ thống đạt được khoảng 2% nhưng khi so với trên tập dữ liệu thử nghiệm thì độ mất mát rất cao (lớn hơn 100%).

Hình 4.3 Kết quả huấn luyện độ tuổi

KẾT QUẢ THỰC NGHIỆM

Nhóm thực hiện nhận dạng trực tiếp khuôn mặt ở nhiều điều kiện khác nhau (ánh sáng bình thường, ánh sáng chói…) với các khoảng cách từ khuôn mặt đến webcam khác nhau để có được kết quả khách quan nhất.

4.3.1 Kết quả nhận dạng khuôn mặt ở điều kiện bình thường

Dưới đây là kết quả nhận dạng khuôn mặt ở điều kiện bình thường (ánh sáng tốt, không bị chói), khuôn mặt cách webcam một khoảng từ 30 – 50 cm.

Hình 4.5 Kết quả nhận dạng nữ nhóm tuổi (1 – 9) Ở Hình 4.5 là khuôn mặt bé gái 9 tuổi cách webcam khoảng 50cm Mô hình đã dự đoán chính xác nhóm tuổi cũng như giới tính của bé gái với phần trăm dự đoán đáng tin cậy.

Hình 4.6 Kết quả nhận dạng nam nhóm tuổi (10 – 19)

Hình 4.6 thể hiện kết quả chính xác về nhóm tuổi cũng như giới tính của bạn nam 19 tuổi với phần trăm dự đoán khá cao.

Hình 4.7 Kết quả nhận dạng nữ ở nhóm tuổi (20 – 29)

Người trong Hình 4.7 bên trên là nữ 21 tuổi, mô hình đã nhận dạng đúng và đưa ra kết quả thuộc nhóm tuổi (20 – 29), giới tính nữ với phần trăm dự đoán cao và chính xác.

Hình 4.8 Kết quả nhận dạng nam ở nhóm tuổi (20 – 29)

Khuôn mặt được nhận dạng cách webcam một khoảng 30cm, người trongHình 4.8 trên là 22 tuổi, mô hình đã nhận dạng đúng và đưa ra kết quả thuộc giới tính nam nhóm tuổi (20 – 29).

Hình 4.9 Kết quả nhận dạng nữ ở nhóm tuổi (50 – 59) Đối với kết quả ở Hình 4.9 trên, khuôn mặt cách webcam một khoảng 50cm và mô hình đã dự đoán đúng vì người trong hình thuộc 59 tuổi.

Hình 4.10 Kết quả nhận dạng nam ở nhóm tuổi (40 – 49) Ở Hình 4.10 là kết quả nhận dạng của người nam 47 tuổi Phần trăm dự đoán độ tuổi nhận dạng không cao nhưng mô hình vẫn cho kết quả đúng trong khoảng tuổi (40– 49), giới tính nam.

4.3.2 Kết quả nhận dạng khuôn mặt ở điều kiện không tốt

Bên cạnh các kết quả đúng, mô hình vẫn còn nhận dạng sai khi điều kiện ánh sáng không tốt (chói hoặc không đủ ánh sáng), hay khoảng cách xa (trên 50 cm) như được biểu diễn ở những hình bên dưới.

Hình 4.11 Kết quả nhận dạng nam ở nhóm tuổi (20 – 29)

Người trong hình là nam 22 tuổi, kết quả giới tính sai đối với Hình 4.11 (a) khi khuôn mặt trong điều kiện ánh sáng chói từ đèn ở phía sau Hình 4.8 (b) cho kết quả độ tuổi sai khi khuôn mặt ở cách xa webcam và không rõ các đường nét trên mặt.

Hình 4.12 Kết quả nhận dạng đối với nữ ở nhóm tuổi (50 – 59)

Hình 4.12 (a) cho kết quả dự đoán (50 – 59) tuổi là đúng vì người trong hình là nữ 53 tuổi và khuôn mặt được nhận dạng trong điều kiện ánh sáng tốt Đối với Hình 4.12 (b), người được nhận dạng đứng ở khoảng cách xa và ánh sáng không tốt nên mô hình đã đưa ra dự đoán sai cả về độ tuổi và giới tính.

Hình 4.13 Kết quả nhận dạng nữ nhóm tuổi (60 – 69)

Người trong Hình 4.13 là nữ 61 tuổi, tuy nhiên kết quả độ tuổi và giới tính sai.

Do khuôn mặt có nét đặc trưng với nhóm tuổi (50 – 59) nên mô hình có thể không phân biệt được chính xác.

4.3.3 Kết quả tổng quan Để đánh giá tổng quan mô hình, kết quả nhận dạng thực nghiệm ở các nhóm tuổi được xem xét trong những điều kiện khác nhau với số mẫu kiểm tra là 10 mẫu (trừ nhóm tuổi 70+ là 5 mẫu) thể hiện trong Bảng 4.6 bên dưới.

Bảng 4.6 Kết quả nhận dạng độ tuổi, giới tính ở một số điều kiện khác nhau

Nhóm Khoảng cách từ Khoảng Điều kiện ánh Điều kiện ánh cách trên sáng bình sáng bị thiếu, tuổi 20cm – 50cm

Thông qua các kết quả thu được, mô hình vẫn nhận dạng đúng trong điều kiện ánh sáng đầy đủ, và trong phạm vi khoảng cách cho phép (20cm - 50cm) Tuy nhiên vẫn còn một số trường hợp nhận dạng với phần trăm dự đoán độ tuổi đạt độ chính xác khá cao nhưng sai về giới tính hoặc ngược lại Bên cạnh đó cũng cho thấy tác động từ điều kiện môi trường bên ngoài ảnh hưởng rất nhiều đến kết quả nhận dạng của mô hình Trong trường hợp khoảng cách trên 50cm hoặc ánh sáng bị chói, bị thiếu đã trực tiếp làm cho mô hình dự đoán sai về độ tuổi cũng như về giới tính của đối tượng được nhận diện.

Ngày đăng: 15/11/2023, 06:06

HÌNH ẢNH LIÊN QUAN

Hình 2.1 Cấu trúc mạng nơ-ron tích chập [9] - (Đồ án hcmute) thiết kế mô hình mạng cnn ứng dụng trong nhận dạng độ tuổi và giới tính
Hình 2.1 Cấu trúc mạng nơ-ron tích chập [9] (Trang 21)
Hình 2.2 Ví dụ về phép tích chập với hình ảnh đầu vào (6x6x3) và bộ - (Đồ án hcmute) thiết kế mô hình mạng cnn ứng dụng trong nhận dạng độ tuổi và giới tính
Hình 2.2 Ví dụ về phép tích chập với hình ảnh đầu vào (6x6x3) và bộ (Trang 22)
Hình 2.3 Ví dụ khi bước trượt (stride) bằng 1 - (Đồ án hcmute) thiết kế mô hình mạng cnn ứng dụng trong nhận dạng độ tuổi và giới tính
Hình 2.3 Ví dụ khi bước trượt (stride) bằng 1 (Trang 22)
Hình 2.5 Các dạng hàm kích hoạt phổ biến - (Đồ án hcmute) thiết kế mô hình mạng cnn ứng dụng trong nhận dạng độ tuổi và giới tính
Hình 2.5 Các dạng hàm kích hoạt phổ biến (Trang 23)
Hình 2.10 Kiến trúc mạng VGG16 [9] - (Đồ án hcmute) thiết kế mô hình mạng cnn ứng dụng trong nhận dạng độ tuổi và giới tính
Hình 2.10 Kiến trúc mạng VGG16 [9] (Trang 28)
Hình 2.11 Một vài hình ảnh trích từ tập UTKFace - (Đồ án hcmute) thiết kế mô hình mạng cnn ứng dụng trong nhận dạng độ tuổi và giới tính
Hình 2.11 Một vài hình ảnh trích từ tập UTKFace (Trang 30)
Hình 2.12 Một vài hình ảnh trích từ tập dữ liệu VN-celeb - (Đồ án hcmute) thiết kế mô hình mạng cnn ứng dụng trong nhận dạng độ tuổi và giới tính
Hình 2.12 Một vài hình ảnh trích từ tập dữ liệu VN-celeb (Trang 31)
Hình 2.13 Minh họa một vài hình ảnh thu thập từ Google Image, Getty - (Đồ án hcmute) thiết kế mô hình mạng cnn ứng dụng trong nhận dạng độ tuổi và giới tính
Hình 2.13 Minh họa một vài hình ảnh thu thập từ Google Image, Getty (Trang 31)
Hình 2.14 Những hình ảnh bị loại bỏ khỏi tập dữ liệu - (Đồ án hcmute) thiết kế mô hình mạng cnn ứng dụng trong nhận dạng độ tuổi và giới tính
Hình 2.14 Những hình ảnh bị loại bỏ khỏi tập dữ liệu (Trang 32)
Hình 3.1 Ảnh minh họa cho cách đặt tên ảnh trong tập dữ liệu. - (Đồ án hcmute) thiết kế mô hình mạng cnn ứng dụng trong nhận dạng độ tuổi và giới tính
Hình 3.1 Ảnh minh họa cho cách đặt tên ảnh trong tập dữ liệu (Trang 33)
Bảng 3.3 Sự phân chia số lượng ảnh trong tập dữ liệu giới tính - (Đồ án hcmute) thiết kế mô hình mạng cnn ứng dụng trong nhận dạng độ tuổi và giới tính
Bảng 3.3 Sự phân chia số lượng ảnh trong tập dữ liệu giới tính (Trang 35)
Hình 3.2 Sơ đồ khối mô hình nhận dạng độ tuổi, giới tính - (Đồ án hcmute) thiết kế mô hình mạng cnn ứng dụng trong nhận dạng độ tuổi và giới tính
Hình 3.2 Sơ đồ khối mô hình nhận dạng độ tuổi, giới tính (Trang 36)
Hình 3.5 Kiến trúc mô hình phân loại độ tuổi, giới tính - (Đồ án hcmute) thiết kế mô hình mạng cnn ứng dụng trong nhận dạng độ tuổi và giới tính
Hình 3.5 Kiến trúc mô hình phân loại độ tuổi, giới tính (Trang 40)
Hình 3.7 Sơ đồ khối VGG3 và khối VGG4 - (Đồ án hcmute) thiết kế mô hình mạng cnn ứng dụng trong nhận dạng độ tuổi và giới tính
Hình 3.7 Sơ đồ khối VGG3 và khối VGG4 (Trang 41)
Bảng 4.1 Trọng số kết nối của mô hình mạng VGG16 cho giới tính - (Đồ án hcmute) thiết kế mô hình mạng cnn ứng dụng trong nhận dạng độ tuổi và giới tính
Bảng 4.1 Trọng số kết nối của mô hình mạng VGG16 cho giới tính (Trang 46)
Hình 4.1 Kết quả của huấn luyện mô hình giới tính. - (Đồ án hcmute) thiết kế mô hình mạng cnn ứng dụng trong nhận dạng độ tuổi và giới tính
Hình 4.1 Kết quả của huấn luyện mô hình giới tính (Trang 49)
Bảng 4.3 Ma trận nhầm lẫn cho bài toán giới tính. - (Đồ án hcmute) thiết kế mô hình mạng cnn ứng dụng trong nhận dạng độ tuổi và giới tính
Bảng 4.3 Ma trận nhầm lẫn cho bài toán giới tính (Trang 49)
Hình 4.2 Ma trận nhầm lẫn trong mô hình phân loại giới tính - (Đồ án hcmute) thiết kế mô hình mạng cnn ứng dụng trong nhận dạng độ tuổi và giới tính
Hình 4.2 Ma trận nhầm lẫn trong mô hình phân loại giới tính (Trang 52)
Bảng 4.5 Giá trị Precision, Recall, F1 của độ tuổi - (Đồ án hcmute) thiết kế mô hình mạng cnn ứng dụng trong nhận dạng độ tuổi và giới tính
Bảng 4.5 Giá trị Precision, Recall, F1 của độ tuổi (Trang 57)
Hình 4.6 Kết quả nhận dạng nam nhóm tuổi (10 – 19) - (Đồ án hcmute) thiết kế mô hình mạng cnn ứng dụng trong nhận dạng độ tuổi và giới tính
Hình 4.6 Kết quả nhận dạng nam nhóm tuổi (10 – 19) (Trang 58)
Hình 4.5 Kết quả nhận dạng nữ nhóm tuổi (1 – 9) - (Đồ án hcmute) thiết kế mô hình mạng cnn ứng dụng trong nhận dạng độ tuổi và giới tính
Hình 4.5 Kết quả nhận dạng nữ nhóm tuổi (1 – 9) (Trang 58)
Hình 4.8 Kết quả nhận dạng nam ở nhóm tuổi (20 – 29) - (Đồ án hcmute) thiết kế mô hình mạng cnn ứng dụng trong nhận dạng độ tuổi và giới tính
Hình 4.8 Kết quả nhận dạng nam ở nhóm tuổi (20 – 29) (Trang 59)
Hình 4.7 Kết quả nhận dạng nữ ở nhóm tuổi (20 – 29) - (Đồ án hcmute) thiết kế mô hình mạng cnn ứng dụng trong nhận dạng độ tuổi và giới tính
Hình 4.7 Kết quả nhận dạng nữ ở nhóm tuổi (20 – 29) (Trang 59)
Hình 4.9 Kết quả nhận dạng nữ ở nhóm tuổi (50 – 59) - (Đồ án hcmute) thiết kế mô hình mạng cnn ứng dụng trong nhận dạng độ tuổi và giới tính
Hình 4.9 Kết quả nhận dạng nữ ở nhóm tuổi (50 – 59) (Trang 60)
Hình 4.10 Kết quả nhận dạng nam ở nhóm tuổi (40 – 49) - (Đồ án hcmute) thiết kế mô hình mạng cnn ứng dụng trong nhận dạng độ tuổi và giới tính
Hình 4.10 Kết quả nhận dạng nam ở nhóm tuổi (40 – 49) (Trang 60)
Hình 4.11 Kết quả nhận dạng nam ở nhóm tuổi (20 – 29) - (Đồ án hcmute) thiết kế mô hình mạng cnn ứng dụng trong nhận dạng độ tuổi và giới tính
Hình 4.11 Kết quả nhận dạng nam ở nhóm tuổi (20 – 29) (Trang 61)
Hình 4.12 Kết quả nhận dạng đối với nữ ở nhóm tuổi (50 – 59) - (Đồ án hcmute) thiết kế mô hình mạng cnn ứng dụng trong nhận dạng độ tuổi và giới tính
Hình 4.12 Kết quả nhận dạng đối với nữ ở nhóm tuổi (50 – 59) (Trang 61)
Hình 4.13 Kết quả nhận dạng nữ nhóm tuổi (60 – 69) - (Đồ án hcmute) thiết kế mô hình mạng cnn ứng dụng trong nhận dạng độ tuổi và giới tính
Hình 4.13 Kết quả nhận dạng nữ nhóm tuổi (60 – 69) (Trang 62)

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

TÀI LIỆU LIÊN QUAN

w