Việc phân loại tin tức đã đem lại nhiều thành tựu nhất định, cụ thể như: Xác định được xu thế của cộng đồng mạng khí mà cộng đồng này chiếmngày càng đông trong xã hội, qua đó xác định
Trang 1BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CNTT -♣♣♣ -
BÁO CÁO MÔN : ĐỒ ÁN CHUYÊN NGHÀNH
ĐỀ TÀI:
NHẬN DIỆN KHUÔN MẶT QUA ẢNH BẰNG THUẬT TOÁN SVM
GVHD: TS.Nguyễn Mạnh Cường Lớp: LT_KHMT1-K15
Nhóm:11 Sinh viên thực hiện:
Nguyễn Minh Phong 2019608304 Nguyễn Nhật Quang 2020608641
Trang 2Mục Lục
Danh mục các thuật ngữ, kí hiệu, từ viết tắt 3
Danh mục hình ảnh 4
Lời cảm ơn 5
Lời nói đầu 6
Chương I: Giới thiệu về đề tài 7
1 Lý do chọn đề tài 7
2 Vai trò và ý nghĩa của đề tài 8
3 Mục tiêu và nhiệm vụ 8
Chương II: Mô hình SVM(Support vector machine) 9
1 Khái niệm 9
2 Lý thuyết 9
2.1 Bài toán tối ưu cho SVM 9
2.2 Margin trong SVM 13
Chương III: Kết quả thực nghiệm 14
1 Dữ Liệu 14
2 Chương trình 16
3 Kết quả 18
4 Nhận xét 19
Kết luận 20
Tài liệu tham khảo 21
Trang 3Danh mục các thuật ngữ, kí hiệu, từ viết tắt
(Mạng nơ ron tích chập)
Trang 4Danh mục hình ảnh
Danh mục ảnh chương 1: Error! Bookmark not defined Danh mục ảnh chương 2: Error! Bookmark not defined.
Hình 2.1.1 : Mô tả khái niệm SVM 9
Hình 2.2.1:Minh họa SVM với cặp dữ liệu training 10
Hình 2.2.2: Minh họa SVM những điểm gần mặt phân chia nhất 12
Hình 2.2.3 Margin trong SVM 13
Hình 2.3.1: Minh họa tính toán gradient Error! Bookmark not defined Hình 2.3.2: Biểu đồ feature vector cuối cùng Error! Bookmark not defined Hình 2.4.1: Convolutional(Sliding Windows) Error! Bookmark not defined Hình 2.4.2: Cấu trúc mạng CNN Error! Bookmark not defined Hình 2.4.3: Ví dụ Trường tiếp nhận cục bộ (local receptive field) Error! Bookmark not defined Hình 2.4.4: Minh họa neuron ẩn đầu tiên Error! Bookmark not defined Hình 2.4.5: Minh họa dịch chuyển filter Error! Bookmark not defined Hình 2.4.6: feature map Error! Bookmark not defined Hình 2.4.7: Cấu trúc lớp tổng hợp(pooling layer) Error! Bookmark not defined Hình 2.4.8: Max poolling 2x2 Error! Bookmark not defined Hình 2.4.9: CNN đầu ra sau khi Max Pooling Error! Bookmark not defined Danh mục anh chương 3: Error! Bookmark not defined. Hình 3.1.1: Nguyên lý hoạt động của chương trinh 14
Hình 3.1.2: Dữ liệu ảnh nhị phân 15
Hình 3.1.3: Dữ liệu ảnh xám 15
Hình 3.1.4: Dữ liệu ảnh màu RGB 16
Hình 3.2.1: Mã code thêm thư viện, đọc dữ liệu(ảnh) đầu vào 17
Hình 3.2.2: Mã code xác định khuôn mặt với SVM + HOG 17
Trang 5Nguyễn Mạnh Cường, người trực tiếp hướng dẫn, chỉ bảo chúng em trong suốt
quá trình học tập và nghiên cứu để hoàn thành đề tài này Sau nữa, chúng em xingửi tình cảm sâu sắc tới gia đình và bạn bè vì đã luôn bên cạnh khuyến khích,động viên, giúp đỡ cả về vật chất linh tinh thần cho chúng em trong suốt qui trìnhhọc tập để chúng em hoàn thành tốt việc học tập của bản thân Trong quá trìnhnghiên cứu và làm đề tài, do năng lực, kiến thức, trình độ bản thân chúng em cònhạn hẹp nên không tránh khỏi những thiếu sót và chúng em mong mỏi nhận được
sự thông cảm và những góp ý từ quý thầy cô cũng như các bạn trong lớp
Chúng em xin chân thành cảm ơn!
Sinh Viên:
Nguyễn Minh PhongNguyễn Nhật Quang
Trang 6Lời nói đầu
Những năm gần đây, AI nổi lên như một bằng chứng của cuộc cách mạng côngnghiệp lần thứ tư Trí tuệ nhân tạo có thể được định nghĩa như một ngành củakhoa học máy tính liên quan đến việc tự động hóa các hành vi thông minh Trí tuệnhân tạo là một bộ phận của khoa học máy tính và do đó nó phải được đặt trênnhững nguyên lý lý thuyết vững chắc, có khả năng ứng dụng được ca lĩnh vựcnày Ở thời điểm hiện tại, thuật ngữ này thường dùng để nói đến các máy tính cómục đích không nhất định và ngành khoa học nghiên cứu về các lý thuyết và cácứng dụng của trí tuệ nhân tạo
Theo đà phát triển của công nghệ, ứng dụng trí tuệ nhân tạo luôn là xu hướngcông nghệ tương lai mà các hãng công nghệ trên toàn thế giới đua nhau sáng tạo,
nó là nền tảng cốt lõi của cuộc cách mạng công nghệ 4.0
ML (Machine Learning) là một lĩnh vực của trí tuệ nhân tạo, được sinh ra từkhả năng nhận diện mẫu vả từ lý thuyết các máy tính có thể học mà không cầnphải lập trình để xử lý các nhiệm vụ cụ thể nào đó
Hầu hết mọi nghành công nghiệp đang làm việc với hàm lượng lớn đã liệu đềunhận ra tâm quan trọng của công nghệ AI Những cái nhìn sáng suôt từ nguồn dữliệu này chủ yếu dong thời gian thực sẽ giúp các tổ chức vận hành hiệu quả hơnhoặc tạo lợi thế cạnh tranh với các đối thủ Các ứng dụng của AI đã quá quenthuộc với con người: xe tự hành của Google và Tesla, hệ thống tự tag khuôn mặttrên Facebook , hệ thống gợi ý sản phẩm của Amazon, hệ thống gợi ý phim trênứng dụng Netflix… chỉ là một vài ứng dụng trong muôn vàn những ứng dụng củatrí tuệ nhân tạo và cụ thể là ML - Machine Learning
Trang 7Chương I: Giới thiệu về đề tài
1 Lý do chọn đề tài
Như ta đã biết, thời đại hiện nay là thời đại internet, là thời đại của sự bùng nổthông tin, khi mà tất cả mọi người trên thế giới đều sống trên một thế giới phẳng,đặc biệt là hiện nay khi đang diễn ra cuộc cách mạng công nghiệp 4.0 thì lượngthông tin ngày càng nhiều, việc phân loại chúng trở nên khó khăn Ở bất kỳ một tổchức nào, với bất kỳ một mô hình hay quy mô nào cũng đều có nhữn nhu cầu vềlưu trữ và khai thác thông tin Đã có nhiều hệ thống phân loại tin tức để ra quếtđịnh
Việc phân loại tin tức đã đem lại nhiều thành tựu nhất định, cụ thể như:
Xác định được xu thế của cộng đồng mạng khí mà cộng đồng này chiếmngày càng đông trong xã hội, qua đó xác định được xu thế về mặt ngắnhạn của xã hội, hỗ trợ cho người sử dụng đưa ra các quyết định phù hợp
Việc phân loại tin tức cũng được ứng dụng trên các website thương mạinhằm nắm bắt được xu thế tiêu dùng của người sử dụng
Một trong những thuật toán để ứng dụng công việc ứng dụng trong nhận diệnkhuôn mặt là xác định khuôn mặt đó là thuật toán SVM – Support VectorMachine
Thuật toán này có ưu điểm : Xử lý trên không gian số chiều cao: SVM là mộtcông cụ tính toán hiệu quả trong không gian chiều cao, trong đó đặc biệt áp dụngcho các bài toán phân loại văn bản và phân tích quan điểm nơi chiều có thể cực kỳlớn.Tiết kiệm bộ nhớ
Trang 82 Vai trò và ý nghĩa của đề tài
Mục đích nghiên cứu của đề tài :
Nghiên cứu và đề xuất các phương pháp phân loại văn bản theo chủ đề dựa trênthuật toán SVM – Support Vector Machine
- Tích hợp các giải pháp ứng dụng vào một hệ thống và đánh giá hiệu quả
Ý nghĩa khoa học thực tiễn của đề tài.
- Đóng góp về mặt phương pháp luận và thực nghiệm vào lĩnh vực phân loại văn bản, một nhánh nghiên cứu của xử lý ngôn ngữ tự nhiên
Cải tiến chất lượng hệ thống phân loại văn bản hiện có để nâng cao quản lý xu thế của tin tức
3 Mục tiêu và nhiệm vụ
Mục tiêu:
- Mục tiêu chính của đề tài là Ứng dụng thuật toán SVM – Support Vector
Machine vào hệ thống để xác định khuôn mặt
- Nghiên cứu và cải thiện thuật toán SVM trong hệ thống phân loại tin tức Nhiệm vụ:
- Thu thập dữ liệu mẫu.
- Nghiên cứu các phương pháp xác định khuône mặt
- Phát biểu, phân tích và cài đặt giải thuật cho bài toán.
- Đánh giá so sánh kết quả.
Trang 9Chương II: Mô hình SVM(Support vector machine)
1 Khái niệm
SVM là một thuật toán giám sát, nó có thể sử dụng cho cả việc phân loại hoặc
đệ quy Tuy nhiên nó được sử dụng chủ yếu cho việc phân loại Trong thuật toán này, chúng ta vẽ đồi thị dữ liệu là các điểm trong n chiều ( ở đây n là số lượng cáctính năng bạn có) với giá trị của mỗi tính năng sẽ là một phần liên kết Sau đó chúng ta thực hiện tìm "đường bay" (hyper-plane) phân chia các lớp Hyper-plane
nó chỉ hiểu đơn giản là 1 đường thẳng có thể phân chia các lớp ra thành hai phần riêng biệt
Hình 2.1.1 : Mô tả khái niệm SVM
Support Vectors hiểu một cách đơn giản là các đối tượng trên đồ thị tọa độ quansát, Support Vector Machine là một biên giới để chia hai lớp tốt nhất
2 Lý thuyết
2.1 Bài toán tối ưu cho SVM
Giả sử rằng các cặp dữ liệu của training set là (x1,y1),(x2,y2),…,(xN,yN)
(x1,y1),(x2,y2),…,(xN,yN) với vector xi ∈Rd
Trang 10thể hiện đầu vào của một điểm dữ liệu và yiyi là nhãn của điểm dữ liệu
đó dd là số chiều của dữ liệu và NN là số điểm dữ liệu Giả sử rằng nhãn của mỗi
điểm dữ liệu được xác định bởi yi=1 (class 1) hoặc yi=−1 (class 2) giống như
trong PLA
Hình 2.2.1:Minh họa SVM với cặp dữ liệu training
Giả sử rằng các điểm vuông xanh thuộc class 1, các điểm tròn đỏ thuộc class -1
và mặt wTx+b=w1x1+w2x2+b= 0 là mặt phân chia giữa hai classes Hơn nữa,
class 1 nằm về phía dương, class -1 nằm về phía âm của mặt phân chia Nếu
ngược lại, ta chỉ cần đổi dấu của w và b Chú ý rằng chúng ta cần đi tìm các hệ
số w và b.
Ta quan sát thấy một điểm quan trọng sau đây: với cặp dữ liệu (xn,yn) bất kỳ,
khoảng cách từ điểm đó tới mặt phân chia là:
Trang 11Điều này có thể dễ nhận thấy vì theo giả sử ở trên, yn luôn cùng dấu
với phía của xnxn Từ đó suy ra ynyn cùng dấu với (wTxn+b), và tử số luôn là 1
số không âm
Với mặt phần chia như trên, margin được tính là khoảng cách gần nhất từ 1
điểm tới mặt đó (bất kể điểm nào trong hai classes):
Margin = minn
Bài toán tối ưu trong SVM chính là bài toán tìm w và b sao cho margin này đạtgiá trị lớn nhất :
(w,b) = arg maxw,b {minn } = arg maxw,b {minnYn (wTxn+b)}(1)
Việc giải trực tiếp bài toán này sẽ rất phức tạp, nhưng các bạn sẽ thấy có cách
để đưa nó về bài toán đơn giản hơn
Nhận xét quan trọng nhất là nếu ta thay vector hệ
số w bởi kw và b bởi kb trong đó k là một hằng số dương thì mặt phân chia không
thay đổi, tức khoảng cách từ từng điểm đến mặt phân chia không đổi,
tức margin không đổi Dựa trên tính chất này, ta có thể giả sử:
Yn(wTxn+b)=1 Với những điểm nằm gần mặt phân chia nhất như hình dưới đây :
Trang 12Hình 2.2.2: Minh họa SVM những điểm gần mặt phân chia nhất
Như vậy, với mọi n, ta có :
Yn (wTxn + b)>=1
Vậy bài toán tối ưu (1) có thể đưa về bài toán tối ưu có rằng buộc sau đây :
(w,b) = arg maxw,b subject to :Yn(wTxn+b)≥1, ∀n=1,2,…,N(2)
Bằng 1 biến đổi đơn giản ,ta có thể đưa bài toán này về bài toán dưới đây :
(w,b) = arg minw,b ||w||2 2 subject to: 1-yn(w Txn + b)≤0, ∀n=1,2,…,N (3)
Ở đây, chúng ta đã lấy nghịch đảo hàm mục tiêu, bình phương nó để được mộthàm khả vi, và nhân với 1212 để biểu thức đạo hàm đẹp hơn
Xác định class cho một điểm dữ liệu mới: Sau khi tìm được mặt phân
Trang 13Trong đó hàm sgn là hàm xác định dấu ,nhận giá trị 1 nếu đối số không âm và-1 nếu ngược lại
2.2 Margin trong SVM
Hình 2.2.3 Margin trong SVM
Margin là khoảng cách giữa siêu phẳng đến 2 điểm dữ liệu gần nhất tương ứngvới các phân lớp Trong ví dụ quả táo quả lê đặt trên mặt bán, margin chính làkhoảng cách giữa cây que và hai quả táo và lê gần nó nhất Điều quan trọng ở đây
đó là phương pháp SVM luôn cố gắng cực đại hóa margin này, từ đó thu đượcmột siêu phẳng tạo khoảng cách xa nhất so với 2 quả táo và lê Nhờ vậy, SVM cóthể giảm thiểu việc phân lớp sai (misclassification) đối với điểm dữ liệu mới đưavào
Chương III: Kết quả thực nghiệm
Trang 14Nguyễn lý hoạt động của thuật toán:
Hình 3.1.1: Nguyên lý hoạt động của chương trinh
Chú thích:
- SVM + HOG: Đường bao màu xanh
- CNN: Đường bao màu đỏ
Ta có bộ dữ liệu: gồm 3 ảnh giống nhau về nội dung, có cùng kích cỡ (825x550):
Ảnh nhị phân:
Excute
Trang 15Hình 3.1.2: Dữ liệu ảnh nhị phân
Ảnh xám:
Hình 3.1.3: Dữ liệu ảnh xám
Trang 16Hình 3.1.4: Dữ liệu ảnh màu RGB
2 Chương trình
Chương trình được viết bằng ngôn ngữ python sử dụng thư viện Dlib
Dlib là thư viện mã nguồn mở về Machine learning, trong đó nổi tiếng nhất làDeep learning Dlib là 1 chương trình của thư viện OpenCV, hỗ trợ người dùngtrong việc xác định khuôn mặt Trong chương trình, thuật toán mà Dlib sử dụng
đó là HOG(Histogram of Oriented Gradients) và SVM(Support Vector Machine),đây chính là lý do Dilb có thời gian chạy rất nhỏ và có thể sử dụng trong các hệthống thời gian thực Tuy nhiên gần đây, Dlib cũng đã cung cấp thêm các hàm xácđịnh khuôn mặt dựa trên mạng CNN
Chúng ta sẽ sử dụng các 2 phương pháp trên để có những nhận định chính xáccách hoạt động và ưu điểm và nhược điểm Sau cùng là nên chọn phương phápnào cho phù hợp với cấu hình máy, cở sở vật chất
Trang 17Chương trình:
Import thư viện, đọc ảnh đầu vào và khai báo thư viện Dlib:
Hình 3.2.1: Mã code thêm thư viện, đọc dữ liệu(ảnh) đầu vào
Xác định khuôn mặt với SVM + HOG:
Hình 3.2.2: Mã code xác định khuôn mặt với SVM + HOG
Xác định khuôn mặt với CNN:
Trang 183 Kết quả
Thuật toán Thời
gian(giây)
Trang 194 Nhận xét
Nhận xét chung:
Từ bảng dữ liệu ta thấy rằng cả 2 thuật toán SVM+HOG và CNN đã nhận diện được khuôn mặt Với một bức ảnh khoảng 800x600 pixel như thế này, phương pháp sử dụng HOG kết hợp SVM mất khoảng 0.22 giây để xác định được toàn bộ khuôn mặt, còn phương pháp CNN lại phải mất tới 26.94 giây (gấp khoảng 120 lần) Sự chênh lệch này sẽ lớn hơn rất nhiều nếu chúng ta thử trên một bức ảnh chất lượng cao hơn Vậy tùy thuộc vào cấu hình máy móc, cơ sở vật chất có thể đưa ra sự lựa chọn thích hợp, nên chọn phương pháp nào
Bảng so sánh:
+ Chỉ nhận diện được những khuôn
mặt chính diện, bỏ qua các khuôn
mặt quay nghiêng hoặc bị che mất 1
phần
+ Nhận diện được hầu hết các khuôn mặt, kết quả gần như tuyệt đối
+ Thời gian thực thi nhanh hơn + Thời gian thực thi chậm
+ Phù hợp với cơ sở vật chất vừa và
nhỏ
+ Phù hợp với cơ sở vật chất vừa và lớn
Trang 20Kết luận
Kết quả đạt được của đề tài Sau một thời gian tập trung triển khai đề tài, nhómchúng em đã hoàn thành xong phần tìm hiểu về các thuật toán có thể áp dụngtrong nhận diện và đặc biệt là thuật toán SVM trong ứng dụng nhận diện mặtngười Sau khi hoàn thành xong Bên cạnh đó, chúng em cũng được mở rộng thêmcác kiến thức chuyên ngành mới nhờ việc tìm hiểu một số kiến thức lập trình để
áp dụng vào việc phát triển ứng dụng này Nhờ vậy, kỹ năng tự học và vận dụngcác kỹ năng mới của em được nâng cao hơn Khi thực hiện và hoàn thành dự án,cảnhóm cũng đã biết thêm được nhiều kinh nghiệm quý giá khi xây dựng và áp dụngcác thuật toán vào ứng dụng nhận diện mặt người Những kỹ năng này sẽ nềntảng để giúp em nâng cao trình độ bản thân, kinh nghiệm trong thực tế để có thểlàm việc ngoài các doanh nghiệp sau này Hạn chế của đề tài Bên cạnh những kếtquả khả quan đã đạt được, em nhận thấy còn tồn tại một số hạn chế:thuật toánSVM vẫn chưa phải là lựa chọn tốt nhất cho việc áp dụng vào nhận diện mặtngười, các nguồn tài liệu tham khảo để áp dụng vẫn còn rất hạn chế
Trang 21Tài liệu tham khảo
[1] Bishop, Christopher M – 2006 - Pattern recognition and Machine Learning - Springer
[2] Duda, Richard O., Peter E Hart, and David G Stork – 2012 - Pattern
classification - John Wiley & Sons
[3] Dalal - 2005 - Navneet, and Bill Triggs - Histograms of oriented gradients for human detection - Computer Vision and Pattern Recognition (CVPR)
[4] Pedro F Felzenszwalb, and Daniel P Huttenlocher - 2004 - Efficient graph-based image segmentation - Intl journal of computer vision 59.2
=====*****=====
TRÂN TRỌNG CẢM ƠN !