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

đồ án 1 phát hiện khuôn mặt

38 1 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 đề Phát hiện khuôn mặt
Tác giả Bùi Thị Như Ý, Phù Đức Quân
Người hướng dẫn TS. Nguyễn Duy Khánh
Trường học Đại học Quốc gia TP. Hồ Chí Minh, Trường Đại học Công nghệ Thông tin, Khoa Công nghệ Phần mềm
Chuyên ngành Công nghệ Phần mềm
Thể loại Đồ án 1
Năm xuất bản 2023
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 38
Dung lượng 1,42 MB

Cấu trúc

  • Chương 1. MỞ ĐẦU (0)
    • 1.1. Động lực thực hiện (6)
    • 1.2. Phát biểu bài toán (6)
    • 1.3. Các thách thức (7)
    • 1.4. Mục tiêu và phạm vi nghiên cứu (8)
    • 1.5. Đóng góp của đồ án (9)
    • 1.6. Bố cục của báo cáo (9)
  • Chương 2. CÁC MODEL, BỘ DỮ LIỆU, CÔNG NGHỆ ĐƯỢC SỬ DỤNG (10)
    • 2.1. Các model được sử dụng (11)
      • 2.1.1. Model res10_300x300_ssd_iter_140000.caffemodel (11)
      • 2.1.2. Model age_net.caffemodel & gender_net.caffemodel (13)
    • 2.2. Bộ dữ liệu (14)
    • 2.3. Công nghệ (16)
      • 2.3.1. Flask (16)
      • 2.3.2. Render (17)
      • 2.3.3. React Native (18)
      • 2.3.4. Cloudinary (21)
  • Chương 3. QUÁ TRÌNH THỰC HIỆN (10)
    • 3.1. Thiết lập Cloudinary để lưu trữ ảnh (23)
    • 3.2. Xây dựng API cho ứng dụng bằng Flask (25)
    • 3.3. Host server miễn phí trên Render (28)
    • 3.4. Xây dựng ứng dụng phía client trên React Native (28)
  • Chương 4. HOÀN THIỆN ỨNG DỤNG (10)
    • 4.1. Giới thiệu ứng dụng (32)
    • 4.2. Chức năng phát hiện khuôn mặt trên ảnh và video (33)
    • 4.3. Chức năng tải ảnh xuống và chia sẻ ảnh (35)
  • Chương 5. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN (10)
    • 5.1 Kết luận (36)
    • 5.2 Hướng phát triển (37)
  • TÀI LIỆU THAM KHẢO (38)

Nội dung

Các ứng dụng tiềm năng có thể từ việc nâng cao biện pháp an ninh thông qua hệ thống nhận diện khuôn mặt đến việc tạo ra giao diện người dùng được cá nhân hóa dựa trên thông tin dân số..

CÁC MODEL, BỘ DỮ LIỆU, CÔNG NGHỆ ĐƯỢC SỬ DỤNG

Các model được sử dụng

2.1.1 Model res10_300x300_ssd_iter_140000.caffemodel Đây là một mô hình phát hiện khuôn mặt dạng Single Shot MultiBox Detector (SSD) cho phép phát hiện nhiều khuôn mặt trên một khung hình cùng lúc Mô hình sử dụng kiến trúc ResNet-10 (Residual Network) cho mạng CNN cơ sở, một loại kiến trúc CNN nổi tiếng và hiệu quả trong việc xây dựng mạng nơ-ron sâu Mô hình chỉ chấp nhận ảnh đầu vào có kích thước 300x300 điểm ảnh Thông qua các mạng học sâu sẽ trả về vị trí của các box chứa khuôn mặt trong ảnh

Nói chi tiết hơn, mô hình phát hiện khuôn mặt này là một hệ thống đa mục tiêu hiệu quả, cho phép đồng thời phát hiện nhiều khuôn mặt trên một khung hình Điểm độc đáo của mô hình nằm ở việc sử dụng kiến trúc ResNet-10 (Residual Network) làm mạng cơ sở cho bước phát hiện

SSD (Single Shot MultiBox Detector):

SSD, hay Single Shot MultiBox Detector, là một trong những mô hình phát hiện đối tượng hàng đầu trong lĩnh vực thị giác máy tính và trí tuệ nhân tạo Được giới thiệu bởi Wei Liu và nhóm nghiên cứu của mình vào năm 2016, SSD đặc biệt nổi bật với khả năng phát hiện đa mục tiêu trên một lưới đồng thời và là một trong những ứng dụng quan trọng của Deep Learning trong xử lý hình ảnh Mô hình SSD sử dụng một kiến trúc đa tầng với các lớp phát hiện được tích hợp tại các tầng khác nhau của mạng nơ-ron Điều này cho phép mô hình có khả năng nhận diện các đối tượng ở cả các tỷ lệ kích thước khác nhau trong ảnh SSD không chỉ dự đoán lớp của đối tượng mà còn dự đoán độ chính xác (confidence score) cùng với vị trí của đối tượng thông qua các hộp giới hạn (bounding boxes) Điều này tạo ra một phương thức phát hiện chi tiết và chính xác Mô hình SSD tạo ra một lưới của các hộp giới hạn và các trạng thái của

7 các lớp đối tượng khác nhau tại mỗi ô của lưới Điều này cho phép mô hình dự đoán các đối tượng ở các tỷ lệ và vị trí khác nhau trong ảnh

SSD đặc biệt thích hợp cho các ứng dụng yêu cầu phát hiện đa mục tiêu nhanh chóng trên ảnh hoặc video Nó đã trở thành một trong những công cụ quan trọng trong lĩnh vực nhận diện đối tượng tự động, nhận diện khuôn mặt, giám sát an ninh và nhiều lĩnh vực khác đòi hỏi khả năng phát hiện chính xác và hiệu quả

Hình 2.1 Kiến trúc mạng của SSD

ResNet-10 là một biến thể của Residual Network, một dạng mạng nơ-ron sâu đã chứng tỏ sự hiệu quả trong việc học và trích xuất đặc trưng phức tạp Với cấu trúc residual, mạng có khả năng huấn luyện tốt hơn và giúp tránh được vấn đề suy giảm độ gradient trong quá trình lan truyền ngược, đặc biệt là khi xây dựng các mô hình sâu

Kích Thước Đầu Vào và Đầu Ra:

Mô hình chỉ chấp nhận ảnh đầu vào có kích thước cố định là 300x300 điểm ảnh Điều này nhằm tối ưu hóa hiệu suất và giảm chi phí tính toán, đồng thời duy trì độ chính xác trong quá trình phát hiện

Qua quá trình lan truyền tiến, thông qua mạng CNN ResNet-10, mô hình học cách trích xuất đặc trưng từ ảnh đầu vào để dự đoán vị trí của các "box" chứa khuôn mặt Mỗi "box" này đại diện cho một khuôn mặt được phát hiện trong khung hình Quá

8 trình này được thực hiện một cách nhanh chóng và chính xác nhờ vào kiến trúc SSD, làm cho mô hình phù hợp cho các ứng dụng yêu cầu phát hiện và định vị khuôn mặt trong thời gian thực

Tóm lại, mô hình SSD sử dụng kiến trúc ResNet-10 là một kết hợp mạnh mẽ giữa khả năng học sâu và phương pháp phát hiện đa mục tiêu, mang lại khả năng định vị chính xác và hiệu suất ổn định trong việc phát hiện nhiều khuôn mặt trên một khung hình ảnh

2.1.2 Model age_net.caffemodel & gender_net.caffemodel

Model được xây dựng dựa trên bộ dữ liệu Adience Benchmark Mô hình có kiến trúc phức tạp và mạch lạc, đặc trưng bởi ba lớp tích chập (convolutional layers) với kích thước kernel khác nhau, được thiết lập để trích xuất đặc trưng từ ảnh đầu vào Mỗi lớp tích chập chứa hàng trăm nút (nodes) để học cách biểu diễn đặc trưng phức tạp của ảnh và hình ảnh khuôn mặt

Lớp Convolutional với 96 Nodes và Kernel Kích Thước 7: Đây là lớp tích chập đầu tiên của mô hình Với 96 nodes, mỗi node chịu trách nhiệm trích xuất đặc trưng cụ thể từ một phần nhỏ của ảnh thông qua việc sử dụng kernel kích thước 7x7 Kích thước lớp này giúp mô hình học cách nhận diện các đặc trưng lớn và toàn diện từ ảnh đầu vào

Lớp Convolutional với 256 Nodes và Kernel Kích Thước 5:

Lớp tiếp theo có 256 nodes và sử dụng kernel kích thước 5x5 Điều này giúp mô hình tìm ra những đặc trưng cụ thể hơn và phức tạp hơn so với lớp trước đó Việc tăng số lượng nodes giúp tăng khả năng học được sự biểu diễn đa dạng của ảnh

Lớp Convolutional với 384 Nodes và Kernel Kích Thước 3:

Lớp tích chập thứ ba của mô hình có 384 nodes và sử dụng kernel kích thước 3x3 Việc giảm kích thước kernel giúp mô hình tập trung vào những đặc trưng chi tiết và nhỏ hơn Các nodes trong lớp này chịu trách nhiệm tìm ra các biểu diễn chuyên sâu và tinh tế từ ảnh

Hai Lớp Fully Connected với 512 Nodes:

Sau các lớp tích chập là hai lớp fully connected với mỗi lớp có 512 nodes Các lớp này giúp tạo ra các đặc trưng tổng hợp từ thông tin chi tiết đã được trích xuất từ lớp tích chập Việc có hai lớp giúp mô hình học cách biểu diễn thông tin một cách phức tạp và trừu tượng hóa thông tin đầu vào

Lớp Đầu Ra với Softmax Activation:

Bộ dữ liệu

Bộ dữ liệu được sử dụng để huấn luyện mô hình là Adience Benchmark, được công bố lần đầu vào năm 2014 thông qua một bài báo quan trọng về việc ước tính độ tuổi và giới tính từ ảnh khuôn mặt Bộ dữ liệu này là một tài nguyên quan trọng trong lĩnh vực thị giác máy tính và nhận diện khuôn mặt, với mục tiêu đặt ra là cung cấp một bộ dữ liệu đa dạng và phong phú để nghiên cứu về nhận diện độ tuổi và giới tính

Adience Benchmark bao gồm tổng cộng 26.580 ảnh khuôn mặt được thu thập từ 2.284 cá nhân khác nhau, tạo nên một bộ dữ liệu đa dạng với sự đại diện từ nhiều nhóm dân số Bộ dữ liệu này được chia thành 8 nhóm tuổi, mỗi nhóm đại diện cho một khoảng độ tuổi cụ thể, từ trẻ sơ sinh (0 - 2 tuổi) đến nhóm người cao tuổi (60 - 100 tuổi), cụ thể hơn là: (1) 0 – 2, (2) 4 – 6, (3) 8 – 12, (4) 15 – 20, (5) 25 – 32, (6) 38 – 43, (7) 48 – 53, (60 – 100) Việc chia thành các nhóm tuổi như vậy giúp mô hình có khả năng

10 học và nhận diện sự biến đổi trong các đặc trưng khuôn mặt theo thời gian Mặc dù kết quả của model gender_net.caffemodel có kết quả khá tốt, tuy nhiên với age_net.caffemodel lại có kết quả không như mong đợi

Hình 2.2 Ma trận confusion ước tính tuổi trên điểm chuẩn Adience

Ta thấy được qua ma trận:

• Các nhóm tuổi 0-2, 4-6, 8-13 và 25-32 được dự đoán với độ chính xác tương đối cao ( xem các phần tử đường chéo )

• Đầu ra thiên về nhóm tuổi 25-32 (xem hàng thuộc nhóm tuổi 25-32 ) Điều này có nghĩa là mạng rất dễ bị nhầm lẫn giữa tuổi từ 15 đến 43 Vì vậy, ngay cả khi độ tuổi thực tế là từ 15-20 hoặc 38-43, vẫn có khả năng cao rằng độ tuổi dự đoán sẽ là 25-32

Ngoài ra, Adience còn đánh nhãn giới tính của mỗi cá nhân trong bộ dữ liệu, phân thành hai lớp là Male (Nam) và Female (Nữ) Điều này mở rộng khả năng ứng dụng của mô hình để có thể đồng thời dự đoán cả giới tính, làm cho nó trở thành một công cụ linh hoạt cho nhiều ứng dụng nhận diện khuôn mặt Đặc biệt, Adience Benchmark được thiết kế để phản ánh nhiều điều kiện thực tế nhất có thể Các hình ảnh trong bộ dữ liệu được chụp dưới nhiều điều kiện ánh sáng, góc độ chụp, và tư thế khác nhau Ngoài ra, sự đa dạng của biểu cảm khuôn mặt cũng được đánh giá, từ đó tạo ra một môi trường đa dạng giúp mô hình có khả năng tự động hóa quá trình học từ các biểu hiện khuôn mặt đa dạng của con người

Hình 2.3 Một số ảnh được lấy từ bộ dữ liệu Audience Benchmark

QUÁ TRÌNH THỰC HIỆN

Thiết lập Cloudinary để lưu trữ ảnh

Cloudinary là một nền tảng lưu trữ đám mây cho phép lưu trữ ảnh và video thông qua các phương thức API do trang web cung cấp Đầu tiên, chúng ta có thể thiết lập tên của của môi trường, sau đó web sẽ tự tạo và cung cấp cho ta các khóa API, khóa bí mật, và các biến môi trường API Các giá trị này sẽ được dùng trong quá trình gọi API đến môi trường Cloudniary

Hình 3.2 Các khóa của môi trường

Upload presets là một tính năng của Cloudinary, cho phép định nghĩa một tập hợp các tùy chọn tải lên ảnh hoặc video thay vì chỉ định chúng trong mỗi lần tải lên Ta có thể định nghĩa nhiều upload presets và áp dụng các presets khác nhau trong các trường hợp tải lên khác nhau Upload presets cho phép quản lý các tùy chọn tải lên

19 các asset một cách hiệu quả hơn và giúp tiết kiệm thời gian và công sức Ở đây, ta sẽ tạo một presets riêng với tùy chỉnh là unsigned và public để có thể gọi API từ ứng dụng React Native mà không cần phải sử dụng các phương thức phức tạp

Hình 3.3 Presets đã được tạo để gọi API

Sau khi đã tạo presets, ta đã thiết lập hoàn tất trong bước chuẩn bị môi trường đám mây Cloudinary để lưu trữ ảnh và video, đồng thời cũng giúp gửi và lấy ảnh và video một cách nhanh chóng

Hình 3.4 Nhóm import và sử dụng cloudinary trong mã nguồn phía backend

Xây dựng API cho ứng dụng bằng Flask

Flask là một framework cho phép ta sử dụng các route như một phương thức để gọi API Bằng cách gọi phương thức post từ ứng dụng React Native, Flask sẽ nhận dữ liệu thông qua các route /image và /video (/image để nhận ảnh và /video để nhận video) Từ ứng dụng React Native, sau khi đã chọn ảnh hoặc video, nó sẽ được gửi lên môi trường Cloudinary, sau đó sẽ nhận lại đường link dẫn đến ảnh hoặc video đó Tiếp đến, link sẽ được gửi lên trên server Flask và trên server sẽ nhận lại ảnh hoặc

21 video thông qua đường link được gửi lên Ở mỗi route tương ứng sẽ chuyển định dạng lại về ảnh hoặc video và bắt đầu tiến hành xử lý với chúng

Hình 3.5 Mã nguồn cho các route của ứng dụng sử dụng Flask

Trong Hình 3.3 nếu định dạng file gửi lên Flask là image (ảnh) thì nó sẽ được xử lý trong hàm image() ở route ‘/image’ và tương tự video sẽ được xử lý trong hàm video() ở route ‘/video’ Đối với ảnh, ảnh sẽ được tiền xử lý và chuyển vào hàm detectImage() trong Hình 3.4 để tiến hành xử lý ảnh và phát hiện khuôn mặt, phân lớp độ tuổi, giới tính Bằng các model được lưu sẵn trên Flask, ảnh sẽ được phát hiện ra vị trí các hộp chứa khuôn mặt cùng với độ tuổi và giới tính Sau đó sẽ vẽ các hộp và độ tuổi, giới tính lên trên ảnh gốc và lưu lại Sau quá trình đó, ảnh sẽ được gửi lên môi trường đám mây Cloudinary và sẽ nhận lại được đường link dẫn đến ảnh đó, và được gửi về ứng dụng React Native dưới dạng là một Response

Hình 3.6 Hàm xử lý đối với dữ liệu gửi lên là ảnh

Hình 3.7 Mã nguồn xử lý phát hiện khuôn mặt trên ảnh Đối với video, video cũng sẽ được tiền xử lý và đưa vào hàm detectVideo() như Hình 3.5 và ở hàm này, video sẽ được cắt thành nhiều khung hình (frame), và mỗi khung hình sẽ lần lượt chạy hàm detectImage() như là một ảnh Các ảnh đó sau sẽ được ghép lại thành video mới Sau khi hoàn tất, video sẽ được gửi lên môi trường đám mây Cloudinary và sẽ nhận lại được đường link dẫn đến video đó, và gửi link đó về ứng dụng React Native dưới dạng là một Response

Hình 3.8 Hàm xử lý đổi với dữ liệu gửi lên là video

Quá trình xây dựng server Flask đã hoàn tất với các route ‘/video’ và ‘/image’, cùng với các hàm dùng để detect ảnh hoặc video Ta đã có thể sử dụng server để gọi API dưới hình thức local.

Host server miễn phí trên Render

Render cho phép host server dựa trên Github repositories của người phát triển Bằng cách upload ứng dụng Flask lên Github, và sử dụng Render để triển khai server online, ta có thể gọi API từ nhiều máy khác nhau Render cho phép thiết lập cấu hình ứng dụng, thiết lập các lệnh chạy tự động như chỉnh thời gian chạy tối đa, file chạy đầu tiên,… Sau khi thiết lập, ta sẽ hoàn tất quá trình Deploy ứng dụng Flask lên server

Ta có thể theo dõi và xem quá trình chạy của server thông qua cửa sổ Log Sau khi hoàn tất, ta đã có thể sử dụng server để gọi API từ nhiều máy khác nhau.

HOÀN THIỆN ỨNG DỤNG

Giới thiệu ứng dụng

Ứng dụng được đặt tên là Face It, chức năng chính của ứng dụng là phát hiện đa khuôn mặt trên ảnh/video và phân lớp giới tính, độ tuổi của các khuôn mặt đó và trả về ảnh/video kết quả Ứng dụng có thể dễ dàng nhận dạng nhiều khuôn mặt trong cả ảnh và video Khai thác sức mạnh của các mô hình tiên tiến, được đào tạo trước được nhúng liền mạch trong ứng dụng di động, Face It mang lĩnh vực trí tuệ nhân tạo tiên tiến trực tiếp đến đầu ngón tay bạn Ngoài khả năng nhận diện khuôn mặt xuất sắc, ứng dụng còn cho phép bạn lưu trữ hình ảnh cũng như video đã xử lý trên thiết bị của mình, mang đến cho bạn nền tảng hoàn hảo để chia sẻ những khoảnh khắc đáng nhớ đó với bạn bè và những người thân yêu

Chức năng phát hiện khuôn mặt trên ảnh và video

Tại giao diện home của ứng dụng, chọn tính năng “upload” và chọn hình ảnh cần phát hiện khuôn mặt, sau đó ứng dụng sẽ chuyển sang màn hình hiển thị kết quả

Tại trang chủ của ứng dụng, người dùng có thể tận hưởng trải nghiệm đơn giản và thuận tiện bằng cách kích vào tính năng "Tải lên" (Upload) Hình 4.2 Nơi người dùng có thể chọn và tải lên những bức ảnh chứa khuôn mặt mà họ muốn phân tích và khám phá

Sau khi thực hiện bước tải lên, ứng dụng chuyển hướng người dùng đến màn hình kết quả ở Hình 4.3, nơi họ sẽ được biết kết quả sau khi ứng dụng đã xử lý xong ảnh/video mà người dùng tải lên Màn hình kết quả không chỉ là nơi hiển thị các khuôn mặt phát hiện được mà còn cung cấp thông tin chi tiết về độ tuổi và giới tính của từng khuôn mặt trong ảnh/video

Hình 4.2 Giao diện màn hình Home của ứng dụng

Hình 4.3 Màn hình hiển thị kết quả sau khi detect ảnh/video

Ngày đăng: 15/05/2024, 09:29

HÌNH ẢNH LIÊN QUAN

Hình 3.1. Sơ đồ cách hoạt động của ứng dụng - đồ án 1 phát hiện khuôn mặt
i ̀nh 3.1. Sơ đồ cách hoạt động của ứng dụng (Trang 23)

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

TÀI LIỆU LIÊN QUAN

w