Báo cáo thí nghiệm thực nghiệm tìm hiểu svm và ứng dụng cho bài toán nhận dạng khuôn mặt

41 1 0
Báo cáo thí nghiệm thực nghiệm tìm hiểu svm và ứng dụng cho bài toán nhận dạng khuôn mặt

Đ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

Với lượng thông tinlớn, những bài toán có độ phức tạp cấp hàm mũ, vấn đề đặt ra là làm thế nào đểphát hiện tri thức, đưa ra lời giải mà thời gian thực hiện có thể chấp nhận được.Một tron

lOMoARcPSD|39222806 BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI ======***====== BÁO CÁO THÍ NGHIỆM/THỰC NGHIỆM: HỌC PHẦN: HỌC MÁY Đề tài: Tìm hiểu SVM và ứng dụng cho bài toán nhận dạng khuôn mặt Giảng viên hướng dẫn: TS Trần Hùng Cường Nhóm – Lớp: 03 – 20222IT6047003 Sinh viên thực hiện: Trần Trung Kiên-2020608050 Lê Quang Đạt-2022600010 Nguyễn Quang Vinh-2021608900 Nguyễn Quang Huy-2020603048 Hà Nội-2023 Downloaded by MON HOANG (monmon3@gmail.com) lOMoARcPSD|39222806 LỜI CẢM ƠN Đầu tiên, chúng em xin gửi lời cảm ơn chân thành tới thầy TS Trần Hùng Cường – giảng viên khoa Công nghệ thông tin, trường Đại học Công nghiệp Hà Nội Thầy là người đã tận tình giảng dạy, truyền đạt cho chúng em những kiến thức cũng như kinh nghiệm quý báu trong suốt quá trình học Trong quá trình thực hiện đề tài, thầy đã tận tình theo sát giúp đỡ, chỉ bảo và hướng dẫn nhóm chúng em thực hiện nghiên cứu và hoàn thiện đề tài Trong quá trình học tập và làm việc với thầy, nhóm chúng em không những tiếp thu được nhiều kiến thức bổ ích và còn học tập được tinh thần làm việc và thái độ nghiêm túc, hiệu quả Đây là những điều cần thiết cho chúng em trong quá trình học tập và làm việc sau này Trong quá trình nghiên cứu và hoàn thiện đề tài, tuy nhóm đã cố gắng hết sức và có được sự hướng dẫn từ thầy nhưng vẫn không thể tránh khỏi những sai sót do hạn chế về mặt thời gian cũng như kiến thức chuyên sâu Chúng em rất mong nhận được những ý kiến đóng góp của quý thầy cô và bạn đọc để nhóm em có thêm kinh nghiệm tiếp tục hoàn thiện đề tài của mình Nhóm thực hiện: Nhóm 03 2 Downloaded by MON HOANG (monmon3@gmail.com) lOMoARcPSD|39222806 LỜI MỞ ĐẦU Ngày nay, công nghệ thông tin được ứng dụng trong hầu hết các lĩnh vực của đời sống Bên cạnh những cách làm truyền thống cũng đã xuất hiện những kỹ thuật mới được áp dụng và đem lại hiệu quả đáng kể Với lượng thông tin lớn, những bài toán có độ phức tạp cấp hàm mũ, vấn đề đặt ra là làm thế nào để phát hiện tri thức, đưa ra lời giải mà thời gian thực hiện có thể chấp nhận được Một trong số các kỹ thuật được sử dụng đó chính là học máy Kỹ thuật này đã được thực hiện và ứng dụng rất nhiều trong đời sống qua nhiều lĩnh vực như: kinh tế, giáo dục, y khoa, nông nghiệp, công nghiệp,…Và cũng đã có rất nhiều sản phẩm nổi bật như robot thông minh, nhà thông minh,… Và với đề tài “Tìm hiểu SVM và ứng dụng cho bài toán nhận dạng khuôn mặt” chúng ta sẽ đi tìm hiểu rõ hơn về một ứng dụng của học máy đó chính là nhận diện khuôn mặt Trong báo cáo có 3 chương, chương 1 giới thiệu nội dung trong chương chủ yếu là tổng quan học máy, chương 2 thuật toán SVM trong chương này nhóm 3 chủ yếu tìm hiểu về SVM để ứng dụng vào chương trình, chương 3 kết quả thực nghiệm với nội dung đi tìm hiểu bài toán, phân tích áp dụng thuật toán SVM ở chương 2 sau đó báo cáo kết quả đạt được Trong đề tài này nhóm em sẽ đi tìm hiểu về Support Vector Machine (SVM) và cách thức để có thể áp dụng nó vào nhận diện khuôn mặt Chúng em xin chân thành cảm ơn thầy Trần Hùng Cường đã tận tình hướng dẫn chúng em trong quá trình hoàn thiện đề tài này Trong quá trình làm bài chúng em đã cố gắng để hoàn thiện bài làm một cách tốt nhất có thể, rất mong được nhận sự góp ý từ cô và các bạn để bài làm hoàn thiện hơn nữa Chúng em xin chân thành cảm ơn! 3 Downloaded by MON HOANG (monmon3@gmail.com) lOMoARcPSD|39222806 MỤC LỤC LỜI MỞ ĐẦU .3 DANH MỤC HÌNH ẢNH 6 CHƯƠNG 1 MỞ ĐẦU .7 1.1 Khái niệm về học máy 7 1.2 Phân loại các thuật toán học máy 8 1.3 Các bước cơ bản thực hiện một thuật toán Học máy .10 1.4 Ứng dụng của Học máy 10 CHƯƠNG 2 THUẬT TOÁN SVM (SUPPORT VECTOR MACHINE) 13 2.1 Khái niệm 13 2.2 Bài toán phân chia 2 class .14 2.3 Soft Margin SVM 20 2.4 Kernel SVM 24 2.4.1 Linear 28 2.4.2 Polynomial 28 2.4.3 Radial Basic Function .29 2.4.4 Sigmoid .29 2.4.5 Bảng tóm tắt các kernel thông dụng 29 2.5 Multi-class SVM .29 CHƯƠNG 3 KẾT QUẢ NGHIÊN CỨU 34 3.1 Bài toán nhận diện khuôn mặt 34 3.2 Bộ dữ liệu .34 3.2.1 Nguồn dữ liệu 34 3.2.2 Mô tả bộ dữ liệu 34 3.3 Thư viện Sklearn .35 3.4 Chương trình 36 3.5 Đánh giá kỹ thuật 41 KẾT LUẬN .42 TÀI LIỆU THAM KHẢO 43 4 Downloaded by MON HOANG (monmon3@gmail.com) lOMoARcPSD|39222806 DANH MỤC HÌNH Ả Hình 1.1 Sự khác biệt giữa học máy và các chương trình khác 6 Hình 1.2 Mô tả một cách để phân loại và lựa chọn thuật toán cho phù hợp với bài toán quan tâm 8 YHình 2.1 Minh họa Support Vector Machine……………………………………… 11 Hình 2.2 Các mặt phân cách 2 class linearly separable 12 Hình 2.3 Margin của 2 class bằng nhau và lớn nhất có thể 12 Hình 2.4 Phân tích bài toán SVM 14 Hình 2.5 Các điểm gần mặt phân cách của 2 class được khoanh tròn 15 Hình 2.6 Soft margin SVM Khi a) có nhiễu hoặc b) dữ liệu gần linearly separable, SVM thuần sẽ không hoạt động hiệu quả 17 Hình 2.7 Soft margin SVM 18 Hình 2.8 Minh họa ảnh hưởng của C lên nghiệm 19 Hình 2.9 Khi C càng lớn thì biên càng nhỏ 20 Hình 2.10 Dữ liệu 2 class không phân biệt tuyến tính .21 Hình 2.11 Dữ liệu được biến đổi sang không gian mới 22 Hình 2.12 Minh họa multi-class SVM .26 Hình 2.13 One-to-One .27 Hình 2.14 One-to-Rest .27 6 Downloaded by MON HOANG (monmon3@gmail.com) lOMoARcPSD|39222806 CHƯƠNG 1 MỞ ĐẦU 1.1 Khái niệm về học máy Học máy (machine learning) là một lĩnh vực của trí tuệ nhân tạo liên quan đến việc nghiên cứu và xây dựng các kĩ thuật cho phép các hệ thống “học” tự động từ dữ liệu để giải quyết những vấn đề cụ thể Một cách tổng quát, trong cuốn sách Machine Learning của tác giả Tom Mitchell xuất bản năm 1997, học máy được định nghĩa như sau: “A computer program is said to learn to perform a task T from experience E, if its performance at task T, as measured by a performance metric P, improves with experience E over time” (một chương trình máy tính được cho là học để thực hiện một nhiệm vụ T từ kinh nghiệm E, nếu hiệu suất thực hiện công việc T của nó được đo bởi chỉ số hiệu suất P và được cải thiện bởi kinh nghiệm E theo thời gian) Như vậy, học máy nói đến một chương trình giúp cho máy tính có thể giải một bài toán cụ thể bằng những “kinh nghiệm” mà nó đã được “học” từ dữ liệu Chương trình này có sự khác biệt lớn so với các chương trình lập trình truyền thống Sự khác biệt này có thể được mô tả trực quan như trong hình 1 Ở các chương trình lập trình truyền thống, con người sẽ phải viết ra các qui tắc, điều kiện để máy tính thực hiện nhiệm vụ và đưa ra câu trả lời Ngược lại, đối với Học máy, nhiệm vụ của máy tính là phải dựa vào dữ liệu quan sát để tìm ra được các qui tắc này 7 Downloaded by MON HOANG (monmon3@gmail.com) lOMoARcPSD|39222806 Hình 1.1 Sự khác biệt giữa học máy và các chương trình khác Tương tự như con người, máy tính cũng tự cải thiện khả năng giải quyết vấn đề thông qua việc học Điểm khác biệt là ở chỗ, con người học được từ những quan sát thực tế, những điều mà con người được nhìn, được nghe, còn máy tính học từ dữ liệu 1.2 Phân loại các thuật toán học máy Dựa trên các tiêu chí khác nhau, người ta có thể phân loại các thuật toán Học máy theo nhiều cách khác nhau Chẳng hạn, dựa vào vấn đề, nhiệm vụ cần giải quyết của thuật toán, người ta phân loại các thuật toán Học máy thành ba loại:  Hồi quy (Regression): Giải quyết bài toán dự đoán giá trị một đại lượng nào đó dựa vào giá trị của các đại lượng liên quan Ví dụ, dựa vào các đặc điểm như diện tích, số phòng, khoảng cách tới trung tâm…để dự đoán giá trị căn nhà  Phân lớp (Classification): Giải quyết các bài toán nhận dạng xem một đối tượng thuộc lớp nào trong số các lớp cho trước Ví dụ, bài toán nhận diện chữ viết, bài toán phân loại email…thuộc các thuật toán phân lớp  Phân cụm (Clustering): Ý tưởng cơ bản giống với các thuật toán phân lớp, sự khác biệt là ở chỗ, trong các bài toán phân cụm, các cụm chưa được xác định trước và thuật toán phải tự khám phá và phân cụm dữ liệu Dựa trên cách máy tính học, người ta chia các thuật toán Học máy thành:  Học có giám sát (Supervised learning): Thuật toán sẽ học trên dữ liệu đã được dán nhãn Ví dụ, trong bài toán nhận diện hình ảnh, dữ liệu đầu vào sẽ là rất nhiều bức ảnh khác nhau về loài mèo Thuật 8 Downloaded by MON HOANG (monmon3@gmail.com) lOMoARcPSD|39222806 toán sẽ học các đặc điểm quan trọng từ các bức ảnh đó để nhận biết xem một đối tượng trong một bức ảnh có phải là mèo hay không  Học không giám sát (Unsupervised learning): Thuật toán học trên các dữ liệu chưa được gán nhãn và sẽ phải tự khám phá ra cấu trúc, phân bố của dữ liệu để tự phân cụm chúng  Học bán giám sát (Semi-supervised learning): Kết hợp cả học giám sát và học không giám sát Tức là, một số dữ liệu đầu vào sẽ được gán nhãn và một số khác thì không được gán nhãn  Học tăng cường/củng cố (Reinforced learning): Thuật toán sẽ tự học dựa trên việc tính điểm thưởng, phạt cho các kết quả thực hiện nhiệm vụ Cụ thể hơn, các thuật toán học tăng cường nghiên cứu cách thức một tác nhân (Agent) trong một môi trường (Environment) đang ở một trạng thái (State) thực hiện một hành động (Action) để tối ưu hóa một phần thưởng (Reward) chung Các chương trình máy tính như AlphaGo đã giúp máy tính đánh bại con người trong các trò chơi như cờ vua, cờ vây được xây dựng dựa trên thuật toán này Cần lưu ý là việc phân loại trên chỉ có tính chất tương đối vì cùng một thuật toán nhưng có thể phân loại thuộc các loại khác nhau Hình 1.2 Mô tả một cách để phân loại và lựa chọn thuật toán cho phù hợp với bài toán quan tâm 9 Downloaded by MON HOANG (monmon3@gmail.com) lOMoARcPSD|39222806 1.3 Các bước cơ bản thực hiện một thuật toán Học máy Nhìn chung, việc thực hiện một thuật toán Học máy thường trải qua các bước cơ bản sau: 1 Thu thập dữ liệu – Gathering data/Data collection 2 Tiền xử lý dữ liệu – Data preprocessing 1 Trích xuất dữ liệu – data extraction 2 Làm sạch dữ liệu – data cleaning 3 Chuyển đổi dữ liệu – Data transformation 4 Chuẩn hóa dữ liệu – Data normalization 5 Trích xuất đặc trưng – Feature extraction 3 Phân tích dữ liệu – Data analysis 1 Xây dựng mô hình máy học – Model building 2 Huấn luyện mô hình – Model training 3 Đánh giá mô hình – Model evaluation Trong tất cả các bước thì việc thu thập dữ liệu, tiền xử lý và xây dựng bộ dữ liệu là tốn nhiều thời gian và công sức nhất Đây là bước quan trọng, có ảnh hưởng rất nhiều đến hiệu quả của thuật toán Học máy 1.4 Ứng dụng của Học máy Các thuật toán Học máy đang được áp dụng rộng rãi trong rất nhiều lĩnh vực trong đời sống xã hội, từ sản xuất công nghiệp, nông nghiệp, tới tài chính, ngân hàng, y tế, giáo dục, dịch vụ giải trí… Một số ứng dụng phổ biến của Học máy có thể đề cập đến như: a Xử lý ảnh Bài toán xử lý ảnh(Image Processing) giải quyết các vấn đề phân tích thông tin từ hình ảnh hay thực hiện một số phép biến đổi Một số ví dụ là:  Gắn thẻ hình ảnh(Image Tagging), giống như Facebook, một thuật toán tự động phát hiện khuôn mặt của bạn và bạn bè trên những bức ảnh Về cơ bản, thuật toán này học từ những bức ảnh mà bạn tự gắn thẻ cho mình trước đó  Nhận dạng ký tự(Optical Character Recognition), là một thuật toán chuyển dữ liệu trên giấy tờ, văn bản thành dữ liệu số hóa Thuật toán phải học cách nhận biết ảnh chụp của một ký tự là ký tự nào  Ô tô tự lái(Self-driving cars), một phần cơ chế sử dụng ở đây là xử lý ảnh Một thuật toán machine learning giúp phát hiện các mép đường, biển báo hay các chướng ngại vật bằng cách xem xét từng khung hình video từ camera b Phân tích văn bản 10 Downloaded by MON HOANG (monmon3@gmail.com) lOMoARcPSD|39222806 Phân tích văn bản (Text analysis) là công việc trích xuất hoặc phân lọi thông tin từ văn bản Các văn bản ở đây có thể là các facebook posts, emails, các đoạn chats, tài liệu,… Một số ví dụ phổ biến là:  Lọc spam (Spam filtering), là một trong những ứng dụng phân loại văn bản được biết và sử dụng nhiều nhất Ở đây, phân loại văn bản là xác định chủ đề cho một văn bản Bộ lọc spam sẽ học cách phân loại một email có phải spam không dựa trên nội dung và tiêu đề của email  Phân tích ngữ nghĩa (Sentiment Analysis), học cách phân loại một ý kiến là tích cực, trung tính hay tiêu cực dựa trên nội dung văn bản của người viết  Khai thác thông tin (Information Extraction), từ một văn bản, học cách để trích xuất các thông tin hữu ích Chẳng hạn như trích xuất địa chỉ, tên người, từ khóa,… c Khai phá dữ liệu Khai phá dữ liệu (Data mining) là quá trình khám phá ra các thông tin có giá trị hoặc đưa ra các dự đoán từ dữ liệu Định nghĩa này có vẻ bao quát, nhưng bạn hãy nghĩ về việc tìm kiếm thông tin hữu ích từ một bảng dữ liệu rất lớn Mỗi bản ghi sẽ là một đối tượng cần phải học, và mỗi cột là một đặc trưng Chúng ta có thể dự đoán giá trị của một cột của bản ghi mới dựa trên các bản ghi đã học Hoặc là phân nhóm các bản ghi của bản Sau đây là những ứng dụng của khai phá dữ liệu:  Phát hiện bất thường (Anomaly detection), phát hiện các ngoại lệ, ví dụ như phát hiện gian lận thẻ tín dụng Bạn có thể phát hiện một giao dịch là khả nghi dựa trên các giao dịch thông thường của người dùng đó  Phát hiện các quy luật (Association rules), ví dụ, trong một siêu thị hay một trang thương mại điện tử Bạn có thể khám phá ra khách hàng thường mua các món hàng nào cùng nhau Dễ hiểu hơn, khách hàng của bạn khi mua món hàng A thường mua kèm món hàng nào? Các thông tin này rất hữu ích cho việc tiếp thị sản phẩm Ngoài ra, các thuật toán Học máy được sử dụng rộng rãi trong các bài toán như nận diện giọng nói (Search by text, talk to assitant like Siri hay Google Assistant), hệ thống khuyến nghị (ví dụ khi bạn tìm một sản phẩm nào đó trên Google thì sau đó trên các nền tảng xã hội mà bạn sử dụng sẽ xuất hiện một loạt các quảng cáo liên quan đến sản phẩm đó), xây dựng xe tự hành, dịch thuật, lọc email… 11 Downloaded by MON HOANG (monmon3@gmail.com)

Ngày đăng: 21/03/2024, 17:22

Tài liệu cùng người dùng

Tài liệu liên quan