1. Trang chủ
  2. » Luận Văn - Báo Cáo

BAO CAO DO AN 1 copy

68 18 0

Đ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

TRƯỜNG ĐẠI HỌC TRẦN ĐẠI NGHĨA KHOA CÔNG NGHỆ THÔNG TIN TRẦN ĐÌNH SƠN NGHIÊN CỨU THUẬT TỐN LDA MỜ VÀ ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN TP.HỒ CHÍ MINH, THÁNG NĂM 2020 TRƯỜNG ĐẠI HỌC TRẦN ĐẠI NGHĨA KHOA CÔNG NGHỆ THÔNG TIN ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN ĐỀ TÀI: NGHIÊN CỨU THUẬT TOÁN LDA MỜ VÀ ỨNG DỤNG NHẬN DIỆN KHN MẶT Sinh viên thực : TRẦN ĐÌNH SƠN Lớp : 15DDS0503330 Giáo viên hƣớng dẫn : PHẠM VĂN SÁNG TP.HỒ CHÍ MINH, THÁNG NĂM 2020 Nhận xét giáo viên hƣớng dẫn TP.HCM, Ngày Tháng Năm 2020 Giáo Viên hƣớng dẫn (Ký ghi rõ họ tên) Nhận xét giáo viên chấm TP.HCM, Ngày Tháng Năm 2020 Giáo Viên hƣớng dẫn (Ký ghi rõ họ tên) MỤC LỤC Trang MỞ ĐẦU .1 Lý chọn đề tài Mục đích đề tài Đối tƣợng phạm vi nghiên cứu đề tài CHƢƠNG 1: GIỚI THIỆU .3 1.1 Bài toán nhận dạng mặt ngƣời khó khăn 1.1.1 Bài tốn nhận dạng khn mặt người .3 1.1.2 Những khó khăn hệ thống nhận dạng khn mặt 1.2 Tổng quan kiến trúc hệ thống nhận dạng mặt ngƣời 1.3 Ngơn ngữ lập trình .6 CHƢƠNG : TỔNG QUAN VỀ XỬ LÝ ẢNH 2.1 Xử lý ảnh, vấn đề xử lý ảnh 2.2 Một số khái niệm .10 2.3 Quan hệ điểm ảnh .11 TỔNG KẾT CHƢƠNG 13 CHƢƠNG 3: LÀM QUEN VỚI THƢ VIỆN OPEN CV .14 3.1 Giới thiệu OpenCV 14 3.1.1 OpenCV gì? 14 3.1.2 Cấu trúc tổng quan 14 3.2 OpenCV nhận dạng khuôn mặt 15 3.2.1 Giới thiệu 15 3.2.2 Làm để xử lý trước ảnh mặt để nhận diện khuôn mặt: 17 3.3 Hƣớng dẫn sử dụng thƣ viện OpenCV .21 TỔNG KẾT CHƢƠNG 28 CHƢƠNG 4: BÀI TOÁN PHÁT HIỆN VÀ NHẬN DẠNG MẶT NGƢỜI .29 4.1 Face Detection 29 4.1.1 Bài toán xác định mặt người .29 4.1.2 Hướng tiếp cận dựa tri thức (knowledge-based) .29 4.1.3 Hướng tiếp cận dựa đặc trưng không đổi 30 4.1.4 Hướng tiếp cận dựa phương pháp đối sánh mẫu .30 4.1.5 Hướng tiếp cận dựa diện mạo (appearance-based) 31 4.2 Total error of classification -TEC .32 4.2.1 Thuật toán LDA (Linear Discriminant Analysis) 33 4.2.1.1 Giới thiệu chung thuật toán 33 4.2.1.2 Ý tưởng 33 4.2.1.3 Xây dựng hàm mục tiêu 34 4.2.1.4 Nghiệm toán tối ưu 36 4.2.1.5 Tìm hiểu them phương sai (covariance) 36 4.2.2 Thuật toán LDA cho multi-class classification problems 37 4.2.2.1 Xây dựng hàm mát 38 4.2.2.2 Hàm mát cho multi-class LDA 40 4.2.3 Model LDA 40 4.2.3.1 LDA giảm thiểu khối lượng tính tốn 41 4.2.3.2 Làm để giảm chiều liệu 41 4.2.3.3 Lý thuyết model LDA 42 CHƢƠNG 5: XÂY DỰNG CHƢƠNG TRÌNH - MƠ PHỎNG 46 5.1 Phân Tích Thiết Kế Hệ Thống .46 5.1.1 Sơ đồ use-case 46 5.1.2 Mô Hình Sequence diagram .47 5.1.2.1 Mơ hình đăng ký đăng nhập hệ thống 47 5.1.2.2 Mơ hình chức nhận diện camera 47 5.1.2.3 Chức thông báo, chỉnh sửa danh sách điểm danh cho phận 48 5.1.3 Sơ đồ thực thể kết hợp 48 5.1.4 Cấu trúc bảng kiểu liệu thuộc tính 49 5.1.5 Thiết kế sở liệu 50 5.2 Thiết Kế Giao Diện 51 5.2.1 Giao diện đăng nhập 51 5.2.2 Giao diện phần mềm 52 5.2.3 Giao diện thêm sinh viên 52 5.2.4 Giao diện điểm danh .53 5.2.5 Giao diện tra cứu thông tin điểm danh .53 5.3 Một số thƣ viện hỗ trợ 54 5.4 Thiết kế hệ thống: 54 5.4.1 Lấy vectơ riêng tạo thành không gian riêng 54 5.4.2 Nhận đặt nhãn cho hình ảnh đào tạo tương ứng 54 5.4.3 Nhận đặt ngưỡng khoảng cách riêng 55 5.4.4 Nhận hình ảnh trung bình 55 5.4.5 Nhận giá trị đặc trưng hình ảnh đào tạo .55 5.4.6 Tạo trình nhận dạng đối tượng cách sử dụng liệu tham số truyền 55 5.4.7 Tạo trình nhận dạng đối tượng cách sử dụng liệu thông số truyền cụ thể .56 5.4.8 Tính tốn hình ảnh đặc trưng cho hình 56 5.4.9 Phân rã hình ảnh dạng giá trị riêng 57 5.4.10 Với giá trị eigen, tạo lại hình ảnh chiếu 57 5.4.11 Nhận khoảng cách eigen Euclid hình ảnh khác sở liệu 58 5.4.12 Cho đối tượng cần kiểm tra, tìm đối tượng tương tự sở liệu, trả mục khoảng cách riêng 58 5.4.13 Cố gắng nhận hình ảnh trả lại nhãn .59 CHƢƠNG 6: ĐÁNH GIÁ KẾT QUẢ VÀ HƢỚNG PHÁT TRIỂN 60 6.1 Đánh giá kết 60 6.1.1 Kết đạt .60 6.1.2 Việc chưa hoàn thành .60 6.2 Hƣớng phát triển .60 DANH MỤC TÀI LIỆU THAM KHẢO 61 LỜI CẢM ƠN Trước tiên em xin bày tỏ trân trọng lòng biết ơn thầy Phạm Văn Sáng Trong suốt thời gian học làm đồ án tốt nghiệp, thầy dành nhiều thời gian quý báu để tận tình bảo, hướng dẫn, định hướng cho em thực đồ án Em xin cảm ơn thầy cô giáo Trường Đại học Trần Đại Nghĩa giảng dạy trình học tập, thực hành, làm tập, giúp em hiểu thấu đáo nội dung học tập hạn chế cần khắc phục việc học tập, nghiên cứu thực đồ án Em xin cảm ơn bạn bè thành viên gia đình tạo điều kiện tốt nhất, động viên, cổ vũ suốt trình học tập đồ án tốt nghiệp TP.HCM, ngày……tháng……năm 2020 Sinh viên TRẦN ĐÌNH SƠN MỞ ĐẦU Lý chọn đề tài Với phát triển không ngừng khoa học công nghệ, đặc biệt với điện thoại thông minh (smartphone) ngày đại sử dụng phổ biến đời sống người làm cho lượng thông tin thu hình ảnh ngày tăng Theo đó, lĩnh vực xử lý ảnh trọng phát triển, ứng dụng rộng rãi đời sống xã hội đại Không 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 giải toán nhận dạng chữ viết, nhận dạng dấu vân tay, nhận dạng khn mặt… Một tốn nhiều người quan tâm lĩnh vực xử lý ảnh nhận dạng khn mặt (Face Recognition) Như biết, khn mặt đóng vai trị quan trọng q trình giao tiếp người với người, mang lượng thơng tin giàu có, chẳng hạn từ khn mặt xác định giới tính, tuổi tác, chủng tộc, trạng thái cảm xúc, đặc biệt xác định mối quan hệ với đối tượng (có quen biết hay khơng) Do đó, tốn nhận dạng khn mặt đóng vai trị quan trọng nhiều lĩnh vực đời sống ngày người hệ thống giám sát, quản lý vào ra, tìm kiếm thơng tin người tiếng,…đặc biệt an ninh, bảo mật Có nhiều phương pháp nhận dạng khuôn mặt để nâng cao hiệu suất nhiên dù hay nhiều phương pháp vấp phải thử thách độ sáng, hướng nghiêng, kích thước ảnh, hay ảnh hưởng tham số mơi trường Bài tốn Nhận diện khn mặt (Face Recognition) bao gồm nhiều toán khác như: phát mặt người (face detection), đánh dấu (facial landmarking), trích chọn (rút) đặc trưng (feature extration), gán nhãn, phân lớp (classification) Trong thực tế, nhận dạng khuôn mặt người (Face Recognition) hướng nghiên cứu nhiều nhà khoa học quan tâm, nghiên cứu để ứng dụng thực tiễn Ở trường đại học hàng đầu Công Nghệ Thông Tin Massachusetts Institute of Technology (MIT), Carnegie Mellon University (CMU), Standford, Berkeley công ty lớn Microsoft, Apple, Google, Facebook có trung tâm sinh trắc học (Biometrics Center) nghiên cứu nhận dạng khn mặt người trở thành lĩnh vực nghiên cứu Gần đây, công ty Hitachi Kokusai Electric Nhật cho đời camera giám sát, chụp ảnh tìm 36 triệu khn mặt khác có nét tương tự sở liệu vịng giây Có hai phương pháp nhận dạng phổ biến nhận dạng dựa đặc trưng phần tử khuôn mặt biến đổi Gabor Wavelet mạng Neural, SVM,…và nhận dạng dựa xét tổng thể tồn khn mặt phương pháp PCA, LDA, LFA Trong đó, LDA phương pháp trích rút đặc trưng nhằm giảm số chiều ảnh đơn giản mang lại hiệu tốt Hệ thống hoạt động ổn định có tính thích nghi cao liệu đầu vào thay đổi nhiều Mục đích đề tài - Xây dựng dự án phần mềm ứng dụng nhận dạng khuôn mặt - Tìm hiểu thư viện OpenCv, phần mềm EmguCv - Nghiên cứu phương pháp trích chọn đặc trưng Eigenfaces - Tìm hiểu phương pháp xác định khn mặt (Face Detection) - Nghiên cứu phương pháp phân tích phân biệt tuyến tính (Linear Discriminant Analysis - LDA) Đối tƣợng phạm vi nghiên cứu đề tài a) Đối tƣợng: - Các phương pháp, thuật toán phục vụ cho việc phát nhận dạng khuôn mặt người ảnh - Bộ thư viện xử lý ảnh OpenCv công cụ hỗ trợ EmguCv - Bộ CSDL chuẩn Yalefaces, ngồi có thêm CSDL sinh viên tự thu thập b) Phạm vi nghiên cứu: - Tập trung tìm hiểu nhận dạng khuôn mặt (Face Recognition) không trọng tìm hiểu phát khn mặt (Face Detection) - Việc xử lý ảnh, nhận dạng khuôn mặt thỏa mãn điều kiện:  Ánh sáng bình thường, ngược sáng, ánh sáng đèn điện (Với CSDL tự thu thập)  Góc ảnh: Trực diện (frontal) góc nghiêng khơng 10o  Không bị che khuất (no occulusion)  Ảnh có chất lượng cao (high quality images) CHƢƠNG 1: GIỚI THIỆU 1.1 Bài toán nhận dạng mặt ngƣời khó khăn 1.1.1 Bài tốn nhận dạng khn mặt người Hệ thống nhận dạng mặt người hệ thống nhận vào ảnh đoạn video (một dịng hình ảnh liên tục) Qua xử lý, tính tốn hệ thống xác định vị trí mặt người (nếu có) ảnh xác định người số người mà hệ thống biết (qua trình học) người lạ Hình Hệ thống nhận dạng mặt người 1.1.2 Những khó khăn hệ thống nhận dạng khn mặt Bài toán nhận dạng mặt người toán nghiên cứu từ năm 70 Tuy nhiên, tốn khó nên nghiên cứu chưa đạt kết mong muốn Chính thế, vấn đề nhiều nhóm giới quan tâm nghiên cứu Khó khăn tốn nhận dạng mặt người kể đến sau: a Tư chụp, góc chụp: Ảnh chụp khn mặt thay đổi nhiều góc chụp camera khn mặt Chẳng hạn như: chụp thẳng, chụp chéo bên trái 45o hay chụp chéo bên phải 45o, chụp từ xuống, chụp từ lên, v.v… Với tư khác nhau, thành phần khn mặt mắt, mũi, miệng bị khuất phần chí khuất hết 5.1.2 Mơ Hình Sequence diagram 5.1.2.1 Mơ hình đăng ký đăng nhập hệ thống Hình 5.1 Mơ hình đăng ký Dòng kiện: trang chủ, Admin nhấp vào “Đăng ký”, hệ thống chuyển sang trang đăng ký, hệ thống yêu cầu admin nhập đầy đủ thông tin theo yêu cầu, sau admin nhập đầy đủ thơng tin vào nhấp vào nút”Đăng ký” hệ thống gửi thông tin vào CSDL, liệu hệ thống phản hồi lại cho admin đăng ký thành công chuyển qua trang đăng nhập, ngược lại hệ thống báo lỗi vào u cầu Admin nhập lại 5.1.2.2 Mơ hình chức nhận diện camera Hình 5.2 Mơ hình chức nhận diện camera 47 Dòng kiện: Camera nhận diện hình ảnh gửi Controller xử lý , kiểm tra xem hình ảnh người cần nhận diện có CSDL chưa, có trả kết nhận diện,nếu khơng có controller nhận diện lưu hệ thống CSDL 5.1.2.3 Chức thông báo, chỉnh sửa danh sách điểm danh cho phận Hình 5.3 Chức thông báo, chỉnh sửa danh sách điểm danh cho phận Dòng kiện: Các phận thực thao tác kiểm tra thông tin điểm danh diao diện điểm danh sinh viên , sau controller thực yêu cầu kiểm tra xem thơng tin cần lấy CSDL có xuất thông tin giao diện Các phận tiếp tục từ thông tin nhận thực thao tác thêm xóa sửa , controller điều khiển nhận yêu cầu thực thao tác CSDL Sau thơng báo kết giao diện 5.1.3 Sơ đồ thực thể kết hợp 48 5.1.4 Cấu trúc bảng kiểu liệu thuộc tính Table: SinhVien (Sinh Viên) Field Name Data Type Null Key Id Int No PK MaSinhVien Varchar Yes HoTen Nvarchar Yes Imgface Image Yes Idlop int yes Description Table: Taikhoan (Tài Khoản) Field Name Data Type Null Key Id Int No PK TenDangNhap Varchar No Matkhau Varchar No Loaitk Varchar Yes Description Table: MonHoc (Môn Học) Field Name Data Type Null Key Id Int No PK MaMonHoc Varchar Yes TenMonHoc Nvarchar Yes 49 Description Table: Lop (Lớp) Field Name Data Type Null Key Id Int No PK Malop Varchar Yes Tenlop Nvarchar Yes Idkhoa Int Yes Description Table: Khoa (khoa) Field Name Data Type Null Key Id Int No PK Makhoa Varchar Yes TenKhoa Nvarchar Yes Description Table: Attendance Field Name Data Type Null Key Id Int No PK IdSinhVien Int Yes NgayDiemDanh Date Yes GhiChu Nvarchar Yes Description 5.1.5 Thiết kế sở liệu CSDL trái tim hệ thống, việc thiết kế, tổ chức CSDL ảnh hưởng lớn đến hoạt động chương trình, liệu cần lưu trữ ảnh Dù kích thước ảnh không lớn, số lượng ảnh cần lưu trữ lại lớn Ảnh hưởng lớn đến tốc độ truy xuất liệu Do cần thiết kế, tổ chức CSDL cách 50 hợp lý, việc lựa chọn Hệ quản trị CSDL quan trọng Ở đây, Hệ quản trị SQL server lựa chọn để xây dựng, quản lý CSDL Đây hệ quản trị CSDL mạnh, đáp ứng nhiều yêu cầu quản lý CSDL lớn Ta cần xác định thông tin cần lưu trữ: - Ảnh khuôn mặt - Tên người có khn mặt phát - Id xác định đối tượng Ảnh (FaceImage) Ảnh đầu vào a Kiểu liệu: image b Is null: true Tên người (FaceName) c Kiểu liệu: nvarchar(200); d Is null: true; Id (FaceID) e Kiểu liệu: Int f Khóa g Mã tự tăng h Is null: false 5.2 Thiết Kế Giao Diện 5.2.1 Giao diện đăng nhập 51 5.2.2 Giao diện phần mềm 5.2.3 Giao diện thêm sinh viên 52 5.2.4 Giao diện điểm danh 5.2.5 Giao diện tra cứu thông tin điểm danh 53 5.3 Một số thƣ viện hỗ trợ - cv110.dll - cvaux110.dll - cvextern.dll - cxcore110.dll - highgui110.dll - opencv_calib3d220.dll - opencv_contrib220.dll - opencv_core220.dll - opencv_features2d220.dll - opencv_ffmpeg220.dll - opencv_flann220.dll - opencv_gpu220.dll - opencv_highgui220.dll - opencv_imgproc220.dll - opencv_legacy220.dll - opencv_ml220.dll - opencv_objdetect220.dll - opencv_video220.dll 5.4 Thiết kế hệ thống: 5.4.1 Lấy vectơ riêng tạo thành không gian riêng public Image[] EigenImages { get { return _eigenImages; } set { _eigenImages = value; } } 5.4.2 Nhận đặt nhãn cho hình ảnh đào tạo tương ứng public String[] Labels { get { return _labels; } set { _labels = value; } } 54 5.4.3 Nhận đặt ngưỡng khoảng cách riêng public double EigenDistanceThreshold { get { return _eigenDistanceThreshold; } set { _eigenDistanceThreshold = value; } } 5.4.4 Nhận hình ảnh trung bình public Image AverageImage { get { return _avgImage; } set { _avgImage = value; } } 5.4.5 Nhận giá trị đặc trưng hình ảnh đào tạo public Matrix[] EigenValues { get { return _eigenValues; } set { _eigenValues = value; } } private EigenObjectRecognizer() { } 5.4.6 Tạo trình nhận dạng đối tượng cách sử dụng liệu tham số truyền public EigenObjectRecognizer(Image[] images, ref MCvTermCriteria termCrit) : this(images, GenerateLabels(images.Length), ref termCrit) { } private static String[] GenerateLabels(int size) { String[] labels = new string[size]; for (int i = 0; i < size; i++) labels[i] = i.ToString(); return labels; 55 5.4.7 Tạo trình nhận dạng đối tượng cách sử dụng liệu thông số truyền cụ thể public EigenObjectRecognizer(Image[] images, String[] labels, double eigenDistanceThreshold, ref MCvTermCriteria termCrit) { Debug.Assert(images.Length == labels.Length, "The number of images should equals the number of labels"); Debug.Assert(eigenDistanceThreshold >= 0.0, "Eigen-distance threshold should always >= 0.0"); CalcEigenObjects(images, ref termCrit, out _eigenImages, out _avgImage); eigenValues = Array.ConvertAll(images, delegate(Image img) { return new Matrix(EigenDecomposite(img, _eigenImages, _avgImage)); }); _labels = labels; _eigenDistanceThreshold = eigenDistanceThreshold; } 5.4.8 Tính tốn hình ảnh đặc trưng cho hình public static void CalcEigenObjects(Image[] trainingImages, ref MCvTermCriteria termCrit, out Image[] eigenImages, out Image avg) { int width = trainingImages[0].Width; int height = trainingImages[0].Height; IntPtr[] inObjs = Array.ConvertAll(trainingImages, delegate(Image img) { return img.Ptr; }); 56 if (termCrit.max_iter trainingImages.Length) termCrit.max_iter = trainingImages.Length; int maxEigenObjs = termCrit.max_iter; eigenImages = new Image[maxEigenObjs]; for (int i = 0; i < eigenImages.Length; i++) eigenImages[i] = new Image(width, height); IntPtr[] eigObjs = Array.ConvertAll(eigenImages, delegate(Image img) { return img.Ptr; }); #endregion avg = new Image(width, height); CvInvoke.cvCalcEigenObjects( inObjs, ref termCrit, eigObjs, null, avg.Ptr); } 5.4.9 Phân rã hình ảnh dạng giá trị riêng public static float[] EigenDecomposite(Image src, Image[] eigenImages, Image avg) { return CvInvoke.cvEigenDecomposite( src.Ptr, Array.ConvertAll(eigenImages, delegate(Image img) { return img.Ptr; }), avg.Ptr); } 5.4.10 Với giá trị eigen, tạo lại hình ảnh chiếu public Image EigenProjection(float[] eigenValue) { Image res = new Image(_avgImage.Width, _avgImage.Height); 57 CvInvoke.cvEigenProjection( Array.ConvertAll(_eigenImages, delegate(Image img) { return img.Ptr; }), eigenValue, _avgImage.Ptr, res.Ptr); return res; } 5.4.11 Nhận khoảng cách eigen Euclid hình ảnh khác sở liệu public float[] GetEigenDistances(Image image) { using (Matrix eigenValue = new Matrix(EigenDecomposite(image, _eigenImages, _avgImage))) return Array.ConvertAll(_eigenValues, delegate(Matrix eigenValueI) { return (float)CvInvoke.cvNorm(eigenValue.Ptr, eigenValueI.Ptr, Emgu.CV.CvEnum.NORM_TYPE.CV_L2, IntPtr.Zero); }); 5.4.12 Cho đối tượng cần kiểm tra, tìm đối tượng tương tự sở liệu, trả mục khoảng cách riêng public void FindMostSimilarObject(Image image, out int index, out float eigenDistance, out String label) { float[] dist = GetEigenDistances(image); index = 0; eigenDistance = dist[0]; for (int i = 1; i < dist.Length; i++) { if (dist[i] < eigenDistance) { index = i; 58 eigenDistance = dist[i]; } } label = Labels[index]; } 5.4.13 Cố gắng nhận hình ảnh trả lại nhãn public String Recognize(Image image) { int index; float eigenDistance; String label; FindMostSimilarObject(image, out index, out eigenDistance, out label); return (_eigenDistanceThreshold

Ngày đăng: 04/11/2020, 17:01

Xem thêm:

TỪ KHÓA LIÊN QUAN

w