Tải bản đầy đủ (.pdf) (38 trang)

đồ án 1 dự đoán tuổi và giới tính

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.17 MB, 38 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN </b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN </b>

<b>KHOA CÔNG NGHỆ PHẦN MỀM </b>

<b>Mai Đình Khơi – 21521008 Lê Thị Thu Hiền – 21522059 </b>

<b>ĐỒ ÁN 1 </b>

<b>AGE AND GENDER PREDICT </b>

<b>GIẢNG VIÊN HƯỚNG DẪN </b>

<b>TS. NGUYỄN TẤN TRẦN MINH KHANG </b>

<b>TP. HỒ CHÍ MINH, 2023</b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

1.4. Mục tiêu và phạm vi nghiên cứu ... 3

1.5. Đóng góp của nghiên cứu ... 4

1.6. Bố cục của báo cáo ... 4

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<b>TĨM TẮT </b>

Bài tốn dự đốn tuổi và giới tính ( age and gender predict ) là một trong những bài toán phổ biến trong lĩnh vực nhận dạng khuôn mặt và thị giác máy tính. Ở bài tốn này, chúng tơi sử dụng model có sẵn được huấn luyện từ bộ dữ liệu UTKFace với hơn 20.000 hình ảnh khn mặt. Các hình ảnh bao gồm sự thay đổi lớn về tư thế, nét mặt, ánh sáng,… Mục tiêu của bài toán là xác định tuổi và giới tính của một người dựa trên hình ảnh khn mặt của họ.

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<b>1.2. Phát biểu bài toán </b>

Trong báo cáo này, chúng tôi tập trung vào phân loại tuổi và giới tính của người trong hình ảnh khn mặt bằng cách sử dụng Deep Learning. Sử dụng model có sẵn với sự phân loại thành 2 nhóm giới tính (0: nam, 1: nữ) và 4 nhóm tuổi (0 - 17 tuổi, 18 – 29 tuổi, 30 – 79 tuổi và 80 tuổi trở lên) . Mơ hình sử dụng mạng neural sâu ( Deep Nerual Network) với các lớp Convolutional ( Conv2D), MaxPooling, Dropout và Dense (Fully Connected) để học. Mô hình nhận đầu vào là hình ảnh có kích thước 64x64 pixels và có hai đầu ra là tuổi và giới tính (0-1).

Đầu vào của bài tốn là một bức ảnh đã được đưa về kích thước 64x64 pixels, đầu ra là thông tin về độ tuổi và giới tính của khn mặt trong bức ảnh đã được dự đốn.

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

<b>Male 0-17 </b>

<i>Hình 1-1: Đầu vào và đầu ra của bài toán dự đoán tuổi và giới tính </i>

o Thách thức về điều kiện ánh sáng và góc chụp: Hiệu suất của mơ hình có thể bị ảnh hưởng do góc chụp khn mặt và điều kiện ánh sáng, ánh sáng có thể quá tối hoặc có thể quá sáng để có thể nhận diện được rõ các đặc trưng trên khuôn mặt của đối tượng.

o Thách thức về độ chính xác chi tiết: việc dự đoán độ tuổi từ 0 đến 116 thông qua 4 khoảng độ tuổi làm mất đi sự chi tiết và độ chính xác và mật độ các khoảng là không đều ( 0 - 17 tuổi, 18 – 29 tuổi, 30 – 79 tuổi và 80 tuổi trở lên) có thể dẫn đến hiệu suất dự đốn khơng đồng đều cho các khoảng tuổi khác nhau.

<b>1.4. Mục tiêu và phạm vi nghiên cứu </b>

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

o Xây dựng giao diện thân thiện với người dùng để tương tác với mơ hình dự đốn tuổi và giới tính thơng qua ứng dụng di động một cách dễ dàng và thuận tiện.

o Phân tích và xử lý dữ liệu khn mặt để cân nhắc đến sự đa dạng và phong phú của dữ liệu, bao gồm nhiều độ tuổi, giới tính và đặc điểm khuôn mặt. - <b>Phạm vi: </b>

o Nghiên cứu các kiến trúc mạng nơ-ron sâu phổ biến như CNN, RNN và các kết hợp của chúng để tìm hiểu mơ hình .

o Nghiên cứu ứng dụng của mơ hình trong các lĩnh vực thực tế như nhận dạng khuôn mặt, quảng cáo, y tế, an ninh,…

o Đề xuất các cải tiến và ứng dụng thực tiễn của mơ hình để nâng cao hiệu suất và đáp ứng yêu cầu của các ứng dụng cụ thể.

o Tích hợp mơ hình dự đốn tuổi và giới tính vào ứng dụng di động có sẵn, sử dụng ngơn ngữ react-native

o Tạo giao diện người dùng (UI) trực quan và thân thiện để người dùng có thể dễ dàng tải lên hình ảnh khn mặt và nhận kết quả dự đốn tuổi và giới tính. o Nghiên cứu các cơ chế và phương pháp tiết kiệm dữ liệu và tối ưu hóa việc truyền tải dữ liệu giữa ứng dụng di động và mơ hình dự đốn tuổi và giới tính.

<b>1.5. Đóng góp của nghiên cứu </b>

Nghiên cứu về mơ hình dự đốn tuổi và giới tính và tích hợp vào trong ứng dụng di động có nhiều đóng gớp quan trọng, từ giá trị thực tiễn và ứng dụng thực tế cho đến cải thiện trải nghiệm người dùng và khả năng mở rộng của ứng dụng. Nghiên cứu mở ra tiềm năng sử dụng và ứng dụng rộng rãi trong tương lai.

<b>1.6. Bố cục của báo cáo </b>

Phần còn lại của báo cáo được trình bày theo bố cục như sau:

<b>CHƯƠNG 2 – PHƯƠNG PHÁP: trình bày phướng pháp multi-task learning trong việc tạo </b>

mơ hình dự đốn tuổi và giới tính.

<b>CHƯƠNG 3 – TRIỂN KHAI ỨNG DỤNG: trình bày các cơng cụ, thiết kế, giao diện và </b>

q trình phát triển ứng dụng dự đốn tuổi và giới tính

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

<b>CHƯƠNG 4 – KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN: trình bày kết quả đạt được và </b>

những hướng phát triển trong tương lai sau quá trình thực nghiệm mơ đồ trên ứng dụng di động.

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<b>Chương 2. PHƯƠNG PHÁP </b>

<i>Phương pháp được sử dụng là một mơ hình học máy đa nhiệm (multi-task learning) được xây dựng bằng cách sử dụng mạng nơ-ron sâu (deep neural network) để dự đoán đồng thời tuổi và giới tính từ hình ảnh khn mặt. </i>

<i>Hình 2-1 : kiến trúc một mơ hình học máy đa nhiệm ( multi-task-learning) </i>

<b>2.1. Bộ dữ liệu </b>

Bộ dữ liệu UTKFace được xây dựng cho bài tốn nhận dạng khn mặt và dự đốn các đặc điểm như tuổi, giới tính,…hình ảnh được thu thập từ nhiều nguồn khác nhau với các khoảng tuổi dài (từ 0 đến 116 tuổi). Bộ dữ liệu gồm hơn 20.000 hình ảnh khn mặt với các sự khác biệt lớn về tư thế, nét mặt, độ chiếu sáng hay độ phân giải. Bài toán chia bộ dữ liệu thành 4 nhóm tuổi và 2 nhóm giới tính.

<i>Hình 2-2: Bộ dữ liệu UTKFace </i>

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

<b>2.2. Tiền xử lý dữ liệu </b>

Dữ liệu hình ảnh khn mặt được tải, điều chỉnh kích thước về độ phân giải 64x64 pixel và chuyển đổi thành mảng 3D với một kênh (ảnh xám).

Tuổi và giới tính được trích xuất từ tên tệp hình ảnh.

<b>2.3. Chuẩn bị dữ liệu cho huấn luyện </b>

Dữ liệu tuổi được chia thành các nhóm, gán giá trị từ 1 đến 4 cho mỗi nhóm để chuẩn hóa (0-17; 18-29; 30-79; 80+).

Dữ liệu giới tính được giữ nguyên (0 hoặc 1).

<b>2.5. Biên dịch và huấn luyện mơ hình </b>

Mơ hình được biên dịch với hai hàm mất mát khác nhau cho mỗi nhánh dự đoán: hàm mất mát cho tuổi là mean squared error (MSE), và cho giới tính là binary cross-entropy.

Quá trình huấn luyện sử dụng tập dữ liệu đã được chia thành tập huấn luyện và tập kiểm tra. Mục tiêu là tối ưu hóa các tham số mơ hình để cực tiểu hóa hàm mất mát.

<b>2.6. Lưu mơ hình </b>

Mơ hình được lưu thành một tệp data.h5 sau khi q trình huấn luyện hồn tất.

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

<b>2.7. Đánh giá </b>

Phương pháp này sử dụng mạng nơ-ron đa nhiệm để tối ưu hóa đồng thời cả dự đốn tuổi và dự đốn giới tính từ hình ảnh khn mặt. Điều này giúp mơ hình học được các đặc trưng chung và cụ thể cho cả hai nhiệm vụ, tạo ra một cách tiếp cận hiệu quả cho bài toán này.

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

Chương 3.

<b>TRIỂN KHAI ỨNG DỤNG</b>

<b>3.1. Công cụ phát triển </b>

<b>3.1.1. Cơng cụ lập trình </b>

<b>3.1.1.1. Giới thiệu Android Studio </b>

<b>Android Studio là môi trường phát triển tích hợp (IDE) chính thức để phát triển ứng </b>

dụng Android, dựa trên IntelliJ IDEA. Bao gồm các chức năng giúp tăng hiệu quả phát triển ứng dụng Android như sau:

o Một hệ thống xây dựng linh hoạt dựa trên Gradle o Một trình mơ phỏng nhanh và nhiều tính năng

o Một mơi trường hợp nhất nơi bạn có thể phát triển cho mọi thiết bị Android

o Tính năng Áp dụng các thay đổi để đẩy các thay đổi về mã và tài nguyên vào ứng dụng đang chạy mà không cần khởi động lại ứng dụng

o Mã mẫu và tích hợp GitHub để giúp bạn xây dựng các tính năng ứng dụng phổ biến cũng như nhập mã mẫu

o Đa dạng khung và công cụ thử nghiệm

o Cơng cụ tìm lỗi mã nguồn (lint) để nắm bắt hiệu suất, khả năng hữu dụng, khả năng tương thích với phiên bản và các vấn đề khác

o Hỗ trợ C++ và NDK

o Tích hợp sẵn tính năng hỗ trợ Google Cloud Platform, giúp dễ dàng tích hợp Google Cloud Messaging và App Engine

<b>3.1.1.2. Giới thiệu Visual Studio Code </b>

<b>Visual Studio Code là một trình soạn thảo mã nguồn được phát triển bởi Microsoft </b>

dành cho Windows, Linux và macOS. Nó hỗ trợ chức năng debug, đi kèm với Git, có chức năng nổi bật cú pháp (syntax highlighting), tự hoàn thành mã thông minh, snippets, và cải tiến mã nguồn. Visual Studio Code hỗ trợ chức năng debug, đi kèm với Git, có syntax highlighting, tự hồn thành mã thơng minh, snippets, và cải tiến mã nguồn. Nhờ tính năng tùy chỉnh, Visual Studio Code cũng cho phép người dùng thay đổi theme, phím tắt, và các

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

<i>Hình 3-1: Visual Studio Code </i>

Đối với dự án, VSCode là công cụ tiện lợi nhất vì hỗ trợ tốt cả 2 framework là NodeJS và Flutter. Điều này giúp cho các lập trình viên của dự án không tốn quá nhiều công sức để học cách sử dụng nhiều IDE khác nhau. Gây lãng phí tài nguyên.

<b>3.1.2. Design </b>

<b>3.1.2.1. Giới thiệu Figma </b>

<b>Figma là một phần mềm dùng để thiết kế giao diện với các thông số cụ thể do người </b>

thiết kế đặt ra giúp hỗ trợ developer có thể dễ dàng hiện thực bản thiết kể trở thành UI thực. Figma chủ yếu hoạt động trên nền web, dù có một số tính năng ngoại tuyến trên các phiên bản ứng dụng desktop cho hệ điều hành macOS và Windows. Một tiện ích của Figma là Figma Mirror cho Android và iOS giúp người dùng có thể xem các prototype Figma trên thiết bị di động.

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

<i>Hình 3-2: Figma </i>

<b>Những lợi ích Figma đem lại: </b>

o Figma là một cơng cụ miễn phí

o Sử dụng được trên 2 nền tảng Windows và MacOS (thay vì như sketch chỉ dùng được trên MacOS)

o Thiết kế thời gian thực: Mọi người trong team có thể vẽ cùng một dự án cùng một lúc và thấy được những thay đổi trong bản thiết kế một cách nhanh nhất

o Data được lưu trên hệ thống máy chủ: Các file thiết kế figma sẽ được tự động lưu bất cứ lúc nào trên hệ thống máy chủ (khơng sợ qn lưu file) và có thể tải xuống để lưu lại trong local

o Có cơ chế comment trực tiếp trên file thiết kế: Việc này sẽ giúp nhận phản hồi hoặc ghi chú khi làm việc đội nhóm

<b>Nhược điểm của Figma: </b>

o Phải có internet thì Figma mới hoạt động được

<b>3.1.3. Lưu trữ source code </b>

<b>GitHub là một dịch vụ cung cấp nền tảng dựa trên web cho việc lưu trữ mã nguồn và </b>

quản lý dự án sử dụng Git. GitHub cho phép bạn lưu trữ mã nguồn của dự án trực tiếp trên các kho lưu trữ (repositories), theo dõi sự thay đổi, tạo các nhánh phát triển riêng biệt, hợp nhất các thay đổi (merge) và thực hiện các hoạt động phát triển khác. Bên cạnh đó, GitHub

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

<i>Hình 3-3: Github </i>

<b>Git là một hệ thống quản lý phiên bản phân tán được sử dụng rộng rãi để theo dõi sự </b>

thay đổi trong mã nguồn và quản lý dự án phát triển phần mềm. Nó cho phép nhiều người cùng làm việc trên cùng một dự án, theo dõi sự thay đổi, tích hợp các tính năng mới và quản lý các phiên bản khác nhau của mã nguồn. Git hoạt động theo hình thức phiên bản phân tán, tức là mỗi người dùng có bản sao đầy đủ của tồn bộ lịch sử phiên bản.

Git và GitHub đóng một vai trị quan trọng trong việc quản lý mã nguồn và phát triển phần mềm, cho phép người dùng làm việc cộng tác và theo dõi sự thay đổi trong các dự án phức tạp.

<b>3.1.4. Deploy </b>

<b>Render là một nền tảng đám mây (cloud platform) hướng tới việc triển khai (deploy) </b>

ứng dụng web và dịch vụ trực tuyến một cách dễ dàng. Render cung cấp một giải pháp cho việc triển khai ứng dụng và dịch vụ mà không đòi hỏi nhiều kiến thức về quản lý hạ tầng hoặc công cụ phức tạp. Điều này giúp các nhà phát triển tập trung vào việc xây dựng ứng dụng và cung cấp giải pháp cho người dùng cuối một cách dễ dàng.

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

<i>Hình 3-4: Render </i>

<b>3.2. Công nghệ phát triển 3.2.1. Front_end: React-native </b>

React Native là một framework phát triển ứng dụng di động được tạo bởi Facebook. Nó cho phép bạn xây dựng ứng dụng di động đa nền tảng bằng việc sử dụng JavaScript và React, một thư viện JavaScript phổ biến cho việc xây dựng giao diện người dùng (UI).React Native khơng chỉ được sử dụng bởi Facebook, mà cịn bởi nhiều công ty lớn khác để phát triển ứng dụng di động chất lượng cao. Nó đã trở thành một trong những công cụ phát triển ứng dụng di động phổ biến nhất trên thị trường.

<b>3.2.2. Back_end: Flask </b>

Flask là một framework phía máy chủ (backend) phát triển ứng dụng web, với vai trị chính là xử lý các yêu cầu HTTP từ phía client (frontend) và cung cấp dữ liệu hoặc chức năng cần thiết.Flask là một lựa chọn tốt cho các ứng dụng web nhỏ đến trung bình, cũng như cho việc xây dựng các dự án thử nghiệm và các dự án có tính linh hoạt cao. Nó cho phép bạn xây dựng các phần backend mạnh mẽ và hiệu quả sử dụng ngôn ngữ Python đơn giản và dễ đọc.

<b>3.3. Thiết kế </b>

<b>Thiết kế kiến trúc: Theo mơ hình Client – Server </b>

Mơ hình client-server là một kiến trúc cơ bản trong lĩnh vực công nghệ thông tin và mạng

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

(khách hàng) và server (máy chủ). Mô hình này cho phép các ứng dụng và dịch vụ tương tác với nhau thông qua mạng. Dưới đây là mơ tả chi tiết về mơ hình client-server:

• Client (Khách hàng):

o Client là người sử dụng hoặc ứng dụng sử dụng dịch vụ từ server. Điều này có thể là một trình duyệt web trên máy tính cá nhân, ứng dụng di động trên điện thoại thông minh hoặc các thiết bị khác.

o Client tạo yêu cầu (request) đến server. Yêu cầu này có thể là một trang web, dữ liệu, hoặc bất kỳ tài nguyên nào server có thể cung cấp.

o Client hiển thị kết quả cho người sử dụng. Khi client nhận được dữ liệu từ server, nó có thể hiển thị nó trên giao diện của mình để người dùng có thể tương tác.

• Server (Máy chủ):

o Server là máy tính hoặc hệ thống phục vụ yêu cầu từ các client. Nó có nhiệm vụ xử lý yêu cầu từ client và cung cấp dữ liệu hoặc dịch vụ tương ứng. o Server xử lý yêu cầu từ client. Điều này bao gồm việc truy xuất dữ liệu từ cơ

sở dữ liệu, tính toán, xử lý logic ứng dụng, và nhiều nhiệm vụ khác.

o Server gửi kết quả trả về cho client. Sau khi xử lý yêu cầu, server gửi dữ liệu hoặc kết quả trả về cho client.

• Giao tiếp qua Mạng:

o Mơ hình client-server u cầu một kết nối mạng giữa client và server. Dữ liệu và yêu cầu được gửi qua mạng từ client đến server và ngược lại.

o Giao tiếp có thể sử dụng các giao thức mạng như HTTP (cho web), FTP (cho truyền tệp), SMTP (cho email), và nhiều giao thức khác tùy thuộc vào ứng dụng cụ thể.

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

• Client (React Native):

o Phía client được xây dựng bằng React Native để cung cấp giao diện người dùng cho người dùng cuối.

o Ứng dụng React Native gửi yêu cầu HTTP gồm hình ảnh được người dùng chụp/lấy từ thư viện đến Flask để yêu cầu dịch vụ dự đoán tuổi và giới tính. o Nó nhận dữ liệu trả về từ server và hiển thị nó trên giao diện người dùng sử

dụng ứng dụng React Native. • Giao tiếp qua Mạng:

o Ứng dụng React Native gửi yêu cầu HTTP đến Flask server thông qua giao thức HTTP hoặc HTTPS.

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

o Cả hai phía phải cùng sử dụng các giao thức chuẩn để đảm bảo giao tiếp hiệu quả và bảo mật.

<b>Link bản thiết kế front-end figma: </b>

app?type=design&node-id=0%3A1&mode=design&t=gb9KnZ7IqL6HvE65-1

<b> diện: </b>

<i>Hình 3-6:Màn hình Home </i>

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

<i>Bảng 3-1:Mơ tả màn hình Home </i>

tuổi và giới tính

thêm hình ảnh cần dự đốn tuổi và giới tính vào trong màn hình

trong bức ảnh đã dự đoán với giá trị ? | ? là mặc định ban đầu

trong bức ảnh đã dự đoán, với hai giá trị “Male” và “Female”

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

<i>Hình 3-7: Màn hình upload image </i>

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

<i>Bảng 3-2: Bảng mơ tả màn hình Upload image </i>

1 Uploads image Button Nhấn vào “Uploads image” để chọn hình ảnh cần dự đốn tuổi và giới tính từ thư viện máy

ảnh khuôn mặt người cần dự đoán tuổi và giới tính

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

<i>Hình 3-8: Màn hình Predict </i>

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

<i>Bảng 3-3: Mơ tả màn hình Predict </i>

tuổi và giới tính

3 Predict image Button Nhấn vào “Predict image” để ứng dụng dự đốn tuổi và giới tính của người trong bức hình

thế hình ảnh khác vào vị trí ảnh cần dự đoán

trong bức ảnh đã dự đoán

trong bức ảnh đã dự đốn, nếu là nam thì chữ “Male” sẽ được tô đậm và ngược lại là nữ thì chữ “Female” sẽ được tơ đậm

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

<i>Hình 3-9:Màn hình Loading Bảng 3-4: Bảng mơ tả màn hình Loading </i>

dự đốn tuổi và giới tính đang diễn ra

</div>

×