Không chỉ dừng lại ở việc chỉnh sửa, tăng chất lượng hình ảnh mà với công nghệ xử lý ảnh hiện nay chúng ta có thể giải quyết các bài toán nhận dạng chữ viết, nhận dạng dấu vân tay, nhận
Trang 1ĐỀ TÀI
PHÁT TRIỂN PHẦN MỀM QUA NHẬN DẠNG KHUÔN MẶT
VÀ MẮT
Trang 2TÊN THÀNH VIÊN
Hoàng Quốc Bảo Đậu Minh Huy Nguyễn Văn Toại
Lê Duy Vĩ Thái Trương Đức Nhã Nguyễn Đức Bình
Trang 3Với sự phát triển không ngừng của khoa học và công nghệ, đặc biệt là với những chiếc điện thoại thông minh (smartphone) ngày càng hiện đại và được sử dụng phổ biến
trong đời sống con người đã làm cho lượng thông tin thu được bằng hình ảnh ngày
càng tăng Theo đó, lĩnh vực xử lý ảnh cũng được chú trọng phát triển, ứng dụng rộng rãi trong đời sống xã hội hiện đại Không chỉ dừng lại ở việc chỉnh sửa, tăng chất lượng hình ảnh mà với công nghệ xử lý ảnh hiện nay chúng ta có thể giải quyết các bài toán nhận dạng chữ viết, nhận dạng dấu vân tay, nhận dạng khuôn mặt… Một trong những bài toán được nhiều người quan tâm nhất của lĩnh vực xử lý ảnh hiện nay đó là nhận dạng khuôn mặt (Face Recognition)
LÝ DO CHỌN ĐỀ TÀI NÀY
Trang 4MỤC TIÊU CỦA ĐỀ TÀI MỤC TIÊU ĐỀ TÀI
1
2
3
Xây dựng một dự án phần mềm ứng dụng nhận dạng khuôn mặt
Tìm hiểu các phương pháp xác định khuôn mặt (Face Detection).
Nghiên cứu phương pháp phân tích thành phần chính (Principal Component
AnalysisPCA).
Trang 5NHẬN DIỆN KHUÔN MẶT LÀ GÌ?
xác định hoặc xác nhận danh tính của một người qua khuôn mặt của
họ
cách xác định và đo lường các đặc điểm khuôn mặt trong hình
Trang 6Xác minh danh tính khách hàng khi thực hiện giao
dịch.
Cải thiện trải nghiệm mua sắm thông qua nhận dạng khuôn mặt của khách hàng.
Trang 7LỊCH SỬ HÌNH THÀNH VÀ PHÁT TRIỂN
Công nghệ nhận dạng khuôn mặt đã phát triển từ những năm 1960, từ các hệ
thống đơn giản đến việc ứng dụng các thuật toán học sâu hiện đại Sự phát triển này đã mở ra nhiều cơ hội mới trong việc ứng dụng công nghệ nhận dạng khuôn mặt, không chỉ trong lĩnh vực an ninh mà còn trong y tế, marketing và nhiều ngành công nghiệp khác
Trang 8quảng cáo thông minh, nơi nó có thể cung cấp thông tin cá nhân hóa cho người dùng.
Trang 9Những khó khăn và những bài toán khó giải quyết trong khi tạo nên một chương trình nhận dạng
khuôn mặt
Trang 10Bài toán nhận dạng mặt người
Hệ thống nhận dạng mặt người là một hệ thống nhận vào là một ảnh hoặc một đoạn video (một dòng các hình ảnh liên tục)
Trang 11Những khó khăn của hệ thống nhận dạng khuôn mặt.
Bài toán nhận dạng mặt người là bài toán đã được nghiên cứu từ những năm 70 Tuy nhiên, đây là một bài toán khó nên những nghiên cứu hiện tại vẫn chưa đạt được những kết quả mong muốn Chính vì thế, vấn đề này vẫn đang được nhiều nhóm trên thế giới quan tâm nghiên cứu Khó khăn của bài toán nhận dạng mặt người có thể kể đến
Trang 12Tư thế chụp, góc chụp:
Ảnh chụp khuôn mặt có thể thay đổi rất nhiều bởi vì
góc chụp giữa camera và khuôn mặt Chẳng hạn như:
Với các tư thế khác nhau, các thành phần trên khuôn mặt như mắt, mũi, miệng có thể bị khuất một phần
hoặc thậm chí khuất hết
Trang 13Các yếu tố trên khuôn mặt hay phụ kiện
Sự xuất hiện hoặc thiếu một số thành phần của khuôn
mặt: Các đặc trưng như: râu mép, râu hàm, mắt kính,
v.v… có thể xuất hiện hoặc không Vấn đề này làm cho
bài toán càng trở nên khó hơn rất nhiều
Trang 14Sự biểu cảm của khuôn
mặt:
Biểu cảm của khuôn mặt con người
có thể làm ảnh hưởng đáng kể lên các thông số của khuôn mặt Chẳng hạn, cùng một khuôn mặt một người,
nhưng có thể sẽ rất khác khi họ cười
hoặc sợ hãi, v.v…
Trang 15Sự che khuất:
Khuôn mặt có thể bị che khuất bởi các đối tượng khác hoặc các khuôn
mặt khác
Trang 16Hướng của ảnh
(pose variations): Các ảnh khuôn mặt có thể
biến đổi rất nhiều với các góc quay khác nhau của trục camera Chẳng hạn chụp với trục máy ảnh
nghiêng làm cho khuôn mặt
bị nghiêng so với trục của
ảnh
Trang 17Điều kiện của ảnh:
Ảnh được chụp trong các điều kiện khác nhau về: chiếu sáng, về tính chất camera (máy kỹ thuật số, máy hồng ngoại,
v.v…), ảnh có chất lượng thấp ảnh
hưởng rất nhiều đến chất lượng ảnh
khuôn mặt
Trang 18Aging condition:
Việc nhận dạng ảnh mặt thay
đổi theo thời gian còn là một vấn đề khó khăn, ngay cả đối với khả năng nhận dạng của con
người
Trang 19Các hệ thống cực lớn (very large scale systems):
Các CSDL ảnh mặt được test bởi các nhà
nghiên cứu còn khá nhỏ (vài trăm tới vài chục nghìn ảnh mặt), tuy nhiên trên thực tế các
CSDL có thể rất lớn, ví dụ CSDL ảnh mặt của
cảnh sát của một đất nước có thể chứa từ hàng
triệu tới hơn 1 tỉ ảnh…
Trang 201 Phát hiện khuôn mặt (Face
Detection)
2 Phân đoạn khuôn mặt (Face
Alignment hay Segmentation)
3 Trích chọn đặc trưng (Feature
Extraction)
4 Nhận dạng (Recognition) hay Phân lớp khuôn mặt (Face Clasaification)
Trang 21Quá trình XLA được xem như là quá trình thao tác ảnh đầu vào nhằm cho ra kết quả mong muốn Kết quả đầu ra của một quá trình XLA có thể là một ảnh “tốt hơn” hoặc một kết luận
Trang 22Các bước xử lí hình ảnh
-Phần thu nhận ảnh (Image Acquisition)
-Tiền xử lý (Image Processing)
-Phân đoạn (Segmentation) hay phân vùng ảnh
-Biểu diễn ảnh (Image Representation)
-Nhận dạng ảnh và nội suy ảnh (Image Recognition and Interpretation)
-Cơ sở tri thức (Knowledge Base)
-Mô tả (biểu diễn ảnh)
Trang 23Các vấn đề khi xử lí hình ảnh
1 Điểm ảnh (Picture Element)
2 Độ phân giải của ảnh
3 Mức xám của ảnh
4 Ảnh đen trắng
5 Ảnh nhị phân
6 Ảnh màu
1 Điểm ảnh (Picture Element)
2 Độ phân giải của ảnh
Trang 24Quan hệ giữa các điểm ảnh
a) Các lân cận của điểm ảnh (Image Neighbors)
b) Các mối liên kết điểm ảnh
Trang 25Cấu trúc tổng quan.
Cấu trúc tổng quan của OpenCv bao gồm 5
phần chính Hình vẽ dưới đây, mô tả 4 trong 5 thành phần đó
Trang 26Một số ngôn ngữ thường được ứng dụng vào nhận dạng khuôn
Trang 27private void btnLoadImage_Click(object sender, EventArgs e) {
OpenFileDialog OpenFile = new OpenFileDialog();
Trang 28PHÂN TÍCH
Nhiệm vụ chính của chương trình là nhận dạng một khuôn mặt người xem khuôn mặt đó có được biết đến hay chưa Ngoài ra, chương trình còn thực hiện công việc phát hiện, tách các khuôn mặt người (nếu có) từ một ảnh tĩnh, hoặc từ các frame ảnh thu được từ camera Sau đó, lưu vào CSDL làm tập mẫu
Như vậy, các chức năng của chương trình bao gồm:
Lấy một ảnh từ trong máy tính, hoặc kết nối đến webcam hiển thị lên ImageBox
Thực hiện tách các khuôn mặt trên ImageBox (nếu có)
Thực hiện lưu khuôn mặt phát hiện được vào CSDL
Thực hiện xóa, đổi tên…
Nhận dạng ảnh một khuôn mặt
Nếu “biết” người đó (có lưu thông tin trong CSDL) thì hiển thị tên và một ảnh của người đó Nếu “không biết” (không có
thông tin của người đó trong CSDL) thì hiển thị 1 màu đen lên
màn hình và tên người là: “Unknow”
SƠ ĐỒ NGỮ CẢNH HỆ THỐNG
Trang 29Sơ đồ thực hiện chương trình
Trang 30XỬ LÝ ẢNH ĐẦU VÀO Đầu vào của hệ thống là 1 ảnh chứa khuôn mặt cần xử lý, ảnh này có thể là ảnh tĩnh, lấy từ trong bộ nhớ máy tính hoặc là frame
ảnh bắt được từ dòng hình ảnh của camera Sau khi có được ảnh đầu vào thì bắt đầu ti ến hành tìm kiếm, phát hiện các khuôn mặt trong ảnh
Lưu đồ giải thuật chọn ảnh đầu vào
Trang 31PHÁT HIỆN KHUÔN MẶT TRONG ẢNH
Sau khi nhận được ảnh đầu vào, hệ thống sẽ thực hiện chức năng phát hiện khuôn mặt có trong ảnh Như đã nói trong phần Giới Thiệu, bài toán phát hiện mặt người trong ảnh là một bài toán khó, nên ta không đi sâu tìm hiểu cách giải quyết bài toán này
Ở đây, ta sử dụng phương pháp tiếp cận dựa trên diện mạo
(appearance-based) được thực hiện nhanh bằng thuật toán adaboost
thông qua hàm cvHaarObjects() của bộ thư viện OpenCV Hàm này thực hiện việc phát hiện đối tượng dựa trên các đặc trưng haar-like, cụ thể là nhờ vào một bộ Cascade được truyền vào cho hàm Bộ Cascade được xây dựng theo dạng cây (tree-node) và đã được huấn luyện từ trước
Việc huấn luyện bộ Cascade có thể thực hiện từ những dữ liệu thu thập được để phục vụ cho quá trình nhận dạng Ví dụ, muốn nhận dạng một người A, ta thu thập các ảnh khuôn mặt của người A với nhiều tư thế, góc chụp và điều kiện chụp khác nhau, sau đó cho bộ nhận dạng học theo thuật toán Cascade training Kết quả thu được là ta sẽ có một
mô hình nhận diện, được sử dụng để nhận dạng các đối tượng
Trang 32CODE THỰC HIỆN CHỨC NĂNG
private HaarCascade haarface; private CascadeClassifier haar; private int WindowSize = 25; private Double ScaleIncreaseRate
= 1.1; private int MinNeighbors = 3;
// Control Timer private void timer_getImage_Tick( object sender, EventArgs e)
{
MinNeighbors = int Parse(comboBoxMinNeigh.Text);
WindowSize = int Parse(textBoxWinSiz.Text); ScaleIncreaseRate = Double Parse(comboBoxScIncRte.Text); using ( Image < Bgr , byte > ImageFrame
= capture.QueryFrame())
{
if (ImageFrame != null )
{
//STEP1 COnvert the image to Gray scale
Image < Gray , byte > grayframe = ImageFrame.Convert< Gray , byte >();
//STEP2 Detectfaces from the gray-scale image and store into an array of type 'var', i.e 'MCvAvgComp[]' var faces =
//STEP3 Draw a green rectangle on each detected face in image
foreach ( var face in faces)
Trang 33HÀM THỰC HIỆN CHỨC NĂNG PHÁT HIỆN MẶT NGƯỜI TRONG DÒNG HÌNH ẢNH CAMERA
Trang 35XỬ LÝ ĐẦU RA
Các khuôn mặt sau khi
được phát hiện sẽ được
chuẩn hóa có thể được
kiểm tra nhận dạng hoặc
lưu vào CSDL dưới dạng
nhị phân
Các khuôn mặt trước khi được hiển thị lên
picturebox sẽ được chỉnh lại kích thước và chuẩn hóa (tăng chỉnh độ sáng, đưa về một kênh màu: Ảnh Xám) Ảnh sau khi chuẩn hóa có thể được kiểm tra nhận dạng hoặc lưu vào CSDL dưới dạng nhị phân
Trang 36 CSDL là trái tim của hệ thống, việc thiết kế, tổ chức CSDL ảnh hưởng lớn đến hoạt động của chương trình, bởi
dữ liệu cần lưu trữ ở đây là các ảnh Dù kích thước mỗi ảnh có thể không lớn, nhưng số lượng ảnh cần lưu trữ lại rất lớn Ảnh hưởng lớn đến tốc độ truy xuất dữ liệu Do đó cần thiết kế, tổ chức CSDL một cách hợp lý, ngoài ra việc lựa chọn Hệ quản trị CSDL cũng rất quan trọng Ở đây, Hệ quản trị SQL server được lựa chọn để xây dựng, quản lý CSDL Đây là một hệ quản trị CSDL mạnh, đáp ứng được nhiều yêu cầu về quản lý các CSDL lớn
Ta cần xác định các thông tin cần được lưu trữ:
1 Ảnh (FaceImage) Ảnh đầu vào
Kiểu dữ liệu: image
Is null: true
2 Tên người (FaceName)
Kiểu dữ liệu: nvarchar(200);
Trang 37THIẾT KẾ GIAO DIỆN CHƯƠNG TRÌNH
Giao diện chương trình được thiết kế đơn giản, dễ nhìn Bố cục giao diện chia làm 3 phần Phần 1, dành cho người dùng chọn đầu vào, có thể là một ảnh tĩnh từ trong máy tính, hoặc mở webcam để lấy hình ảnh Phần 2 bao gồm phần điều chỉnh các thông số phát hiện khuôn mặt, thông số nhận dạng khuôn mặt Và cuối cùng là phần nhận dạng
khuôn mặt
Phần 1:
- Button Browse Image
- Button Detect face
- Button Start.
- Button Extract face
Phần 2:
1 Điều chỉnh thông số phát hiện khuôn mặt
- Scale Increase Rate
- Min Neighbors
- Min Detection Scale (Window Size)
2 Điều chỉnh thông số nhận dạng khuôn mặt
- Eigen Distance Threshold
Phần 3:
- Picturebox pbInputFaces
- Picturebox pbTSFaceButton Prev, Next.z
- Button btnTSFirst, btnTSPArev, btnTSNxt, btnLoadTSLast
- Button btTrainforReg (Trained for Recognizer)
- Button btnCheckRecognizer (Check Recognizer)
- Button btnView (View Information Of TrainingSet)
- Button btnAddtoTS (Add to Training Set)
- Button btnUpdateFace (Update Face)
- Button btnDelFace (Delete Face)
Trang 38Tên Đối tượng Số lần
TRIỂN KHAI VÀ THỬ NGHIỆM
Với khoảng cách ngưỡng riêng β =
3000
Trang 39Tên đối tượng Số ảnh huấn luyện
của 1 đối tượng Số ảnh test Tỷ lệ Nhận dạng đúng
Trang 40Với khoảng cách ngưỡng riêng β =
Trang 41Tên đối tượng Số ảnh huấn luyện
của 1 đối tượng Số ảnh test Tỷ lệ Nhận dạng đúng
Trang 42KẾT LUẬN:
Từ bảng kết quả, ta có thể thấy rằng, kết quả nhận dạng phụ thuộc rất nhiều vào giá trị của khoảng cách ngưỡng riêng Do đó, cần điều chỉnh thông số một cách phù hợp để có thể thu được kết quả tốt nhất Ngoài ra, các ảnh bị nhận dạng sai hoặc không nhận dạng được phụ thuộc vào chất lượng ảnh đầu vào, đa số các ảnh bị nhận dạng sai hoặc không nhận dạng được đều là các bức ảnh bị chụp thiếu sáng
Trang 43KẾT LUẬN ĐỒ ÁN NHÓM
Báo cáo đồ án môn học đã trình bày các kiến thức cơ bản để giải quyết bài toán nhận dạng khuôn mặt người Riêng phương pháp nhận
dạng mặt người Eigenfaces được xây dựng dựa trên phương pháp Eigenfaces-sử dụng thuật
toán PCA đã được trình bày cụ thể, chi tiết trong chương 4 Phần mềm Face Recognition
áp dụng phương pháp Eigenfaces được thiết kế
để nhận dạng mặt người Từ kết quả thực nghiệm cho thấy, độ chính xác của chương
trình tương đối cao khoảng 80% nhận dạng
đúng Tuy nhiên, do thời hạn thời gian hạn chế nên chương trình vẫn còn nhiều nhược điểm và nhiều ý tưởng chưa được thực hiện
Để chương trình có thể được sử dụng vào trong thực tế, cần giải quyết những nhược điểm
mà phần mềm còn gặp phải, thực hiện các ý tưởng mới nhằm năng cao tốc độ, hiệu suất và
độ chính xác của chương trình