Để hoàn thành được đề tài này, nhóm chúng em đã cùng nhau nghiên cứu, thảo luận, áp dụng những kiến thức được học trên lớp cùng với các nguồn tài liệu trên Internet với đề tài lần này..
lOMoARcPSD|39222638 TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO THỰC NGHIỆM HỌC PHẦN: MỘT SỐ CÔNG NGHỆ PHÁT TRIỂN PHẦN MỀM ĐỀ TÀI : XÂY DỰNG ỨNG DỤNG NHẬN DIỆN ĐEO KHẨU TRANG BẰNG MOBILE.NET GVHD : Nguyễn Thái Cường Nhóm : 14 Mã lớp : 20231IT6030003 Sinh viên thực hiện : Lê Minh Khôi_2021607554 Trần Sinh Cung_2019604386 Trần Quang Huy_2020604542 Bùi Thanh Tùng_2020604792 Hà Nội, 2023 Downloaded by MON MON (monmon2@gmail.com) lOMoARcPSD|39222638 2 LỜI CẢM ƠN Lời đầu tiên, nhóm 14 xin gửi lời cảm ơn chân thành tới thầy Nguyễn Thái Cường Trong quá trình học tập và thực hiện đề tài này, chúng em đã nhận được sự quan tâm giúp đỡ, hướng dẫn tận tình, tâm huyết của thầy Những gì chúng em nhận được không chỉ dừng lại ở kiến thức môn học mà nhiều hơn thế đó là những lời khuyên, chia sẻ thực tế từ thầy Chính nhờ phương pháp dạy học của thầy mà chúng em có cơ hội khám phá và phát huy khả năng của bản thân Những buổi học chính là cơ hội tuyệt vời giúp chúng em rèn luyện kiến thức giúp chúng em có được sự tự tin, kỹ năng giao tiếp, làm việc nhóm Đây cũng chính là hành trang quan trọng giúp chúng em tự tin bước chân vào môi trường làm việc thực tế Để hoàn thành được đề tài này, nhóm chúng em đã cùng nhau nghiên cứu, thảo luận, áp dụng những kiến thức được học trên lớp cùng với các nguồn tài liệu trên Internet với đề tài lần này Chúng em rất mong sẽ nhận được những lời nhận xét, góp ý từ thầy cô và bạn đọc về đề tài của chúng em Một lần nữa, chúng em xin chân thành cảm ơn thầy! Nhóm thực hiện Nhóm 14 Downloaded by MON MON (monmon2@gmail.com) lOMoARcPSD|39222638 3 MỤC LỤC LỜI CẢM ƠN 2 MỞ ĐẦU .5 1 Lý do chọn đề tài 5 2 Mục đích, mục tiêu đề tài 5 3 Nội dung thực hiện 6 CHƯƠNG I: KIẾN THỨC CƠ SỞ .7 1.1 Giới thiệu về mạng CNN 7 1.2 Cấu trúc mạng CNN 8 1.3 Các mạng CNN phổ biến 13 1.4 Thuật học truyền ngược 18 1.5 Ứng dụng 20 CHƯƠNG II: TỔNG QUAN VỀ MOBILENET 23 2.1 Cấu trúc và đặc điểm mạng của MobileNet 23 2.1.1 Depthwise Separable Convolution 23 2.1.2 Kiến trúc mạng MobileNet 26 2.1.3 Làm giảm độ phức tạp của mạng MobileNet 27 2.2 Một số phiên bản khác của mạng MobileNet 30 2.2.1 MobileNet_V2 30 2.2.2 MobileNet_V3 32 2.3 Huấn luyện trước (Pre-training) 33 2.3.1 Nguyên nhân mô hình dự báo kém 33 2.3.2 Pre-trained model và vai trò của nó 34 2.4 Kỹ thuật xây dựng, huấn luyện, đánh giá với MobileNet 36 Downloaded by MON MON (monmon2@gmail.com) lOMoARcPSD|39222638 4 2.4.1 Chuẩn bị dữ liệu 36 2.4.2 Huấn luyện mô hình .39 2.5 Ứng dụng của MobileNet .41 CHƯƠNG III: XÂY DỰNG MỘT ỨNG DỤNG VỚI MOBILENET 43 3.1 Mô tả bài toán .43 3.2 Cấu trúc của tập dữ liệu 43 3.3 Cấu trúc chương trình (tệp, cấu trúc của các tệp chính) 43 3.4 Các bước thực hiện chương trình 44 3.5 Kết quả chạy chương trình 46 KẾT LUẬN VÀ BÀI HỌC KINH NGHIỆM .50 1 Nội dung đã thực hiện .50 2 Hướng phát triển 50 TÀI LIỆU THAM KHẢO 5151 Downloaded by MON MON (monmon2@gmail.com) lOMoARcPSD|39222638 5 MỞ ĐẦU 1 Lý do chọn đề tài Trí tuệ nhân tạo hay còn được gọi là trí thông minh nhân tạo (Artificial intelligence – AI) là một ngành thuộc lĩnh vực khoa học máy tính Là trí tuệ do con người lập trình tạo nên với mục tiêu giúp máy tính có thể tự động hóa các hành vi giống con người Trí tuệ nhân tạo khác với việc lập trình logic trong các ngôn ngữ lập trình là ở việc ứng dụng các hệ thống học máy (machine learning) để mô phỏng trí tuệ của con người trong các xử lý mà con người làm tốt hơn máy tính Cụ thể, trí tuệ nhân tạo giúp máy tính có được những trí tuệ của con người như: biết suy nghĩ và lập luận để giải quyết vấn đề, biết giao tiếp do hiểu ngôn ngữ, tiếng nói, biết học và tự thích nghi… Tuy rằng trí thông minh nhân tạo có nghĩa rộng như là trí thông minh trong các tác phẩm khoa học viễn tưởng, nó là một trong những ngành trọng yếu của tin học Trí thông minh nhân tạo liên quan đến cách cư xử, sự học hỏi và khả năng thích ứng thông minh của máy móc Hiện nay AI được sử dụng trong rất nhiều lĩnh vực trong đời sống như y tế, giáo dục, dịch vụ… Để ứng dụng AI vào trong học tập, dưới sự hướng dẫn của thầy Nguyễn Thái Cường, chúng em xin chọn đề tài “Xây dựng ứng dụng nhận diện đeo khẩu trang bằng MobileNet” với mong muốn áp dụng kiến thức đã học để xây dựng một chương trình AI sử dụng mạng MobileNet 2 Mục đích, mục tiêu đề tài – Mục dích: Áp dụng được các kiến thức trong học phần Trí tuệ nhân tạo và Một số công cụ phát triển phần mềm đã được học vào việc thiết kế, tạo lập một ứng dụng AI thực tế sử dụng mạng MobileNet Downloaded by MON MON (monmon2@gmail.com) lOMoARcPSD|39222638 6 – Mục tiêu: Tìm hiểu tổng quan về mạng CNN và ứng dụng của nó Tìm hiểu về mạng MobileNet: cấu trúc, đặc điểm, ứng dụng Tìm hiểu cách training model sử dụng Colab của Google Tìm hiểu cách sử dụng model, sử dụng OpenCV để nhận dạng 3 Nội dung thực hiện CHƯƠNG 1 TÌM HIỂU MẠNG CNN 1.1 Giới thiệu mạng CNN 1.2 Cấu trúc mạng CNN 1.3 Các mạng CNN phổ biến 1.4 Thuật học truyền ngược 1.5 Ứng dụng CHƯƠNG 2 TÌM HIỂU MẠNG MOBILENET 2.1 Cấu trúc và đặc điểm mạng MobileNet 2.2 Huấn luyện trước (Pre-training) 2.3 Một số phiên bản khác của mạng MobileNet 2.4 Kỹ thuật xây dựng, huấn luyện, đánh giá model với MobileNet 2.4 Ứng dụng của mạng MobileNet CHƯƠNG 3 ỨNG DỤNG THỰC TẾ SỬ DỤNG MẠNG MOBILENET 3.1 Mô tả bài toán 3.2 Cấu trúc của tập dữ liệu 3.3 Cấu trúc chương trình 3.4 Các bước chạy chương trình 3.5 Kết quả chạy chương trình Downloaded by MON MON (monmon2@gmail.com) lOMoARcPSD|39222638 7 CHƯƠNG I: KIẾN THỨC CƠ SỞ 1.1 Giới thiệu về mạng CNN Trong mạng neural, mô hình mạng neural tích chập (CNN) là 1 trong những mô hình để nhận dạng và phân loại hình ảnh Trong đó, xác định đối tượng và nhận dạng khuôn mặt là 1 trong số những lĩnh vực mà CNN được sử dụng rộng rãi CNN phân loại hình ảnh bằng cách lấy 1 hình ảnh đầu vào, xử lý và phân loại nó theo các hạng mục nhất định (Ví dụ: Chó, Mèo, Hổ, ) Máy tính coi hình ảnh đầu vào là 1 mảng pixel và nó phụ thuộc vào độ phân giải của hình ảnh Dựa trên độ phân giải hình ảnh, máy tính sẽ thấy H x W x D (H: Chiều cao, W: Chiều rộng, D: Độ dày) Ví dụ: Hình ảnh là mảng ma trận RGB 6x6x3 (3 ở đây là giá trị RGB) Về kỹ thuật, mô hình CNN để training và kiểm tra, mỗi hình ảnh đầu vào sẽ chuyển nó qua 1 loạt các lớp tích chập với các bộ lọc (Kernals), tổng hợp lại các lớp được kết nối đầy đủ (Full Connected) và áp dụng hàm Softmax để phân loại đối tượng có giá trị xác suất giữa 0 và 1 Hình dưới đây là toàn bộ luồng CNN để xử lý hình ảnh đầu vào và phân loại các đối tượng dựa trên giá trị Downloaded by MON MON (monmon2@gmail.com) lOMoARcPSD|39222638 8 1.2 Cấu trúc mạng CNN Mạng CNN là một tập hợp các lớp Convolution chồng lên nhau và sử dụng các hàm nonlinear activation như ReLU và tanh để kích hoạt các trọng số trong các node Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo ra các thông tin trừu tượng hơn cho các lớp tiếp theo Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo ra các thông tin trừu tượng hơn cho các lớp tiếp theo Trong mô hình mạng truyền ngược (feedforward neural network) thì mỗi neural đầu vào (input node) cho mỗi neural đầu ra trong các lớp tiếp theo Mô hình này gọi là mạng kết nối đầy đủ (fully connected layer) hay mạng toàn vẹn (affine layer) Còn trong mô hình CNNs thì ngược lại Các layer liên kết được với nhau thông qua cơ chế convolution Layer tiếp theo là kết quả convolution từ layer trước đó, nhờ vậy mà ta có được các kết nối cục bộ Như vậy mỗi neuron ở lớp kế tiếp sinh ra từ kết quả của filter áp đặt lên một vùng ảnh cục bộ của neuron trước đó Mỗi một lớp được sử dụng các filter khác nhau thông thường có hàng trăm hàng nghìn filter như vậy và kết hợp kết quả của chúng lại Ngoài ra có một số layer khác như pooling/subsampling layer dùng để chắt lọc lại các thông tin hữu ích hơn (loại bỏ các thông tin nhiễu) Downloaded by MON MON (monmon2@gmail.com) lOMoARcPSD|39222638 9 Trong quá trình huấn luyện mạng (traning) CNN tự động học các giá trị qua các lớp filter dựa vào cách thức mà bạn thực hiện Ví dụ trong tác vụ phân lớp ảnh, CNNs sẽ cố gắng tìm ra thông số tối ưu cho các filter tương ứng theo thứ tự raw pixel > edges > shapes > facial > high-level features Layer cuối cùng được dùng để phân lớp ảnh Trong mô hình CNN có 2 khía cạnh cần quan tâm là tính bất biến (Location Invariance) và tính kết hợp (Compositionality) Với cùng một đối tượng, nếu đối tượng này được chiếu theo các gốc độ khác nhau (translation, rotation, scaling) thì độ chính xác của thuật toán sẽ bị ảnh hưởng đáng kể Pooling layer sẽ cho bạn tính bất biến đối với phép dịch chuyển (translation), phép quay (rotation) và phép co giãn (scaling) Tính kết hợp cục bộ cho ta các cấp độ biểu diễn thông tin từ mức độ thấp đến mức độ cao và trừu tượng hơn thông qua convolution từ các filter Mạng CNN sử dụng 3 ý tưởng cơ bản: Các trường tiếp nhận cục bộ (local receptive field), trọng số chia sẻ (shared weights), lớp tổng hợp (pooling) Các trường tiếp nhận cục bộ (Local receptive field) Đầu vào của mạng CNN là một ảnh Ví dụ như ảnh có kích thước 28×28 thì tương ứng đầu vào là một ma trận có 28×28 và giá trị mỗi điểm ảnh là một ô trong ma trận Trong mô hình mạng ANN truyền thống thì chúng ta sẽ kết nối các neuron đầu vào vào tầng ảnh Tuy nhiên trong CNN chúng ta không làm như vậy mà chúng ta chỉ kết nối trong một vùng nhỏ của các neuron đầu vào như một filter có kích thước 5×5 tương ứng (28- 5 + 1) = 24 điểm ảnh đầu vào Mỗi một kết nối sẽ học một trọng số và mỗi neuron ẩn sẽ học một bias Mỗi một vùng 5×5 đấy gọi là một trường tiếp nhận cục bộ Downloaded by MON MON (monmon2@gmail.com) lOMoARcPSD|39222638 10 – Tạo neutron ẩn đầu tiên trong lớp ẩn 1 – Dịch filter sang bên phải 1 cột sẽ tạo được neutron ẩn thứ 2 Với bài toán nhận dạng ảnh người ta thường gọi ma trận lớp đầu vào là feature map, trọng số xác định các đặc trương là shared weight và độ lệch xác định một feature map là shared bias Như vậy đơn giản nhất là qua các bước trên chúng ta chỉ có 1 feature map Tuy nhiên trong nhận dạng ảnh chúng ta cần nhiều hơn một feature map Local receptive field thích hợp cho việc phân tách dữ liệu ảnh, giúp chọn ra những vùng ảnh có giá trị nhất cho việc đánh giá phân lớp Downloaded by MON MON (monmon2@gmail.com)