1. Trang chủ
  2. » Thể loại khác

ĐẠI HỌC CNTT VÀ TRUYỀN THÔNG VIỆT-HÀNBÁO CÁO ĐỒ ÁN CƠ SỞ 4ĐỀ TÀI: XÂY DỰNG PHƯƠNG PHÁP NHẬN DIỆN KHUÔN MẶT BẰNG PYTHON VÀ OPENCV

30 68 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

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG VIỆT-HÀN BÁO CÁO ĐỒ ÁN CƠ SỞ ĐỀ TÀI: XÂY DỰNG PHƯƠNG PHÁP NHẬN DIỆN KHUÔN MẶT BẰNG PYTHON VÀ OPENCV Giảng viên hướng dẫn : THS.LÊ SONG TOÀN Sinh viên thực Lớp : NGUYỄN THỊ NHẬT LỆ : 18IT4 Đà Nẵng, ngày 25 tháng 12 năm 2020 ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG VIỆT-HÀN ĐỒ ÁN CƠ SỞ ĐỀ TÀI: XÂY DỰNG PHƯƠNG PHÁP NHẬN DIỆN KHUÔN MẶT BẰNG PYTHON VÀ OPENCV Đà Nẵng, ngày 25 tháng 12 năm 2020 MỞ ĐẦU Trong xã hội đại ngày nay, khuôn mặt người đóng vai trị quan trọng đời sống Nhờ đường nét, góc cạnh gương mặt mà họ đốn tuổi tác, thái độ, cảm xúc người Nhờ biểu cảm khn mặt, biết họ vui hay buồn, bực tức hay dễ chịu Và nhờ người có gương mặt khác nhau, biết họ Khn mặt đóng vai trị quan trọng vậy, cộng nghệ nhận diện khn mặt phát triển lên phổ biến nhiều Nhờ có cơng nghệ nhận diện khn mặt mà lĩnh vực đời sống cải thiện đáng kể Cụm từ “công nghệ nhận diện khuôn mặt ” ngày trở nên phổ biến nhắc tới nhiều Đây từ khóa “hot” nhãn hàng công nghệ lớn giới như: Apple, Facebook hay Microsoft theo đuổi nghiên cứu ứng dụng Hệ thống nhận diện khuôn mặt ứng dụng máy tính nhận dạng người từ hình ảnh từ đoạn video Việc nhận diện khuôn mặt kết hợp với biện pháp sinh trắc học khác như: kiểm tra vân tay hay tròng mắt, tạo thành hệ thống an ninh đa tầng lớp nhiều quốc gia giới sử dụng để bảo vệ kiện hay địa điểm nhạy cảm Trên giới, công nghệ nhận diện khn mặt hay cơng nghệ nhận diện hình ảnh nghiên cứu cách hàng chục năm Tuy nhiên, Việt Nam, lĩnh vực mẻ Hiện kỹ sư nước bắt kịp nhanh với xu hướng công nghệ này, từ cho đời ứng dụng thiết thực đời sống như: đảm bảo an ninh, quản lý nhân sự, hạn chế gian lận thi cử, tăng cường bảo mật giao dịch Trong phạm vi báo cáo này, chúng em xin trình bày trình thực “Xây dựng phương pháp nhận diện khuôn mặt Python OpenCv” Cuối cùng, cố gắng nhiều thời gian có hạn, khả dịch hiểu tài liệu chưa tốt nên nội dung đồ án tránh khỏi thiếu sót, mong bảo, góp ý thầy cô bạn LỜI CẢM ƠN Trước tiên chúng em xin gửi lời cảm ơn chân thành sâu sắc đến thầy giáo THS.Lê Song Toàn hướng dẫn, định hướng, giúp đỡ chúng em nhiều để chúng em hồn thành tốt đồ án Chúng em xin gửi lời cảm ơn chân thành tới quý thầy cô giáo đồn trường Đại học Cơng nghệ Thơng tin Truyền thơng Việt – Hàn giảng dạy tận tình trình học tập, thực hành, làm tập, giúp chúng em hiểu rõ nội dung học tập Vì thời gian có hạn kinh nghiệm cịn hạn chế nên đồ án chưa tránh khỏi thiếu sót Em mong q thầy thơng cảm để chúng em khắc phục việc học tập, nghiên cứu, thực đồ án Chúng em xin chân thành cảm ơn ! Đà Nẵng, ngày 25 tháng 12 năm 2020 NHẬN XÉT (của giảng viên hướng dẫn) …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… Chữ ký giảng viên hướng dẫn MỤC LỤC DANH MỤC HÌNH VẼ CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN 1.1 Tổng quan nhận diện khuôn mặt Hơn thấp kỉ qua có nhiều cơng trình nghiên cứu tốn xác định khn mặt người từ ảnh đen trắng, xám đến ảnh màu ngày hôm Các nhà nghiên cứu từ toán đơn giản, ảnh có mặt người nhìn thẳng vào thiết bị thu hình đầu tư thẳng đứng ảnh đen trắng Cho đến ngày hôm tốn mở rộng cho ảnh màu, có nhiều khn mặt ảnh, có nhiều tư thay đổi ảnh Khơng mà cịn mở rộng phạm vi từ môi trường xung quanh đơn giản môi trường xung quanh phức tạp nhằm đáp ứng nhu cầu người Nhận dạng dựa đặc trưng khuôn mặt phương pháp nhận dạng khuôn mặt dựa việc xác định đặc trưng hình học chi tiết khn mặt (như vị trí, diện tích, hình dạng mắt, mũi, miệng,…), mối quan hệ chúng (như khoảng cách hai mắt, khoảng cách hai lông mày,…) Ưu điểm phương pháp gần với cách mà người sử dụng để nhận biết khn mặt Hơn với việc xác định đặc tính mối quan hệ, phương pháp cho kết tốt trường hợp ảnh có nhiều nhiễu bị nghiêng, bị xoay ánh sáng thay đổi Nhược điểm phương pháp cài đặt thuật toán phức tạp việc xác định mối quan hệ đặc tính địi hỏi thuật tốn phức tạp Mặt khác, với ảnh kích thước bé đặc tính khó phân biệt khó tính tốn đặc trưng khn mặt Trong năm gần ứng dụng trí tuệ nhân tạo ngày phát triển đánh giá cao Một lĩnh vực quan tâm trí tuệ nhân tạo nhằm tạo ứng dụng thơng minh, có tính người nhận dạng Trong đề tài em chọn đối tượng khuôn mặt 1.2 Phương pháp kết 1.2.1 Phương pháp triển khai thực đề tài CHƯƠNG 2: NGHIÊN CỨU TỔNG QUAN 2.1 Cơ sở lý thuyết 2.1.1 Ngôn ngữ lập trình Python Python biết đến loại ngơn ngữ lập trình hướng đối tượng, bậc cao mạnh mẽ với mục đích lập trình đa Ngôn ngữ đời vào năm 1991 Guido Van Rossum Với ưu điểm dễ đọc, dễ học dễ nhớ, Python dần trở thành ngôn ngữ phổ biến, áp dụng nhiều ngành công nghệ thông tin nay, đặc biệt phù hợp với tiếp xúc theo đuổi ngành công nghệ thông tin Và nay, Python sử dụng nhiều mảng khác ngành cơng nghệ thơng tin là: • Sử dụng lĩnh vực lập trình website: Đây ứng dụng phổ biến Python người dùng dễ dàng tạo web app với khả mở rộng thông qua framework hệ thống quản trị nội dung (CMS) tích hợp sẵn Python Một số tảng phổ biến viết ngôn ngữ lập trình Python để tạo web app Flask, Django, Plone • Sử dụng lĩnh vực khoa học tính tốn: Hiện nay, có nhiều thư viện Python áp dụng cho khoa học, tính tốn số liệu NumPy hay SciPy Ngồi ra, cịn có số thư viện khác EarthPy để áp dụng cho khoa học trái đất, AstroPy áp dụng cho thiên văn học, • Python sử dụng việc tạo nguyên mẫu cho phần mềm: Mặc dù chậm so với số ngôn ngữ khác Java hay C++ bị giới hạn với yêu cầu bắt buộc Tuy nhiên, Python lựa chọn hồn hảo cho lập trình viên tạo nguyên mẫu phần mềm dùng thử Ví dụ bạn sử dụng thư viện viết game Pygame tạo nguyên mẫu trước sau cảm thấy phù hợp sử dụng ngơn ngữ khác để tạo dùng thật Ngồi ra, ngơn ngữ lập trình Python tạo với kiểu động, sử dụng chế cấp phát nhớ tự động, cấu trúc cấp liệu vô mạnh mẽ, cách tiếp cận đơn giản lại mang đến hiệu tốt việc lập trình đối tượng Hình Chọn thư mục cần lưu Hình Nhấn close để đóng 2.1.5.3 Khởi chạy Python Hình Chọn thư mục IDLE(Python) Hình Hình 10 Hình 11 2.1.6 Phần mềm Pycharm 2.1.6.1 Phần mềm Pycharm Phần mềm PyCharm cung cấp cơng cụ hồn chỉnh cho nhà phát triển Python chuyên nghiệp PyCharm xây dựng xung quanh trình soạn thảo hiểu mã sâu sắc, trình sửa lỗi cho nhìn rõ ràng hoạt động mã PyCharm cung cấp khả tích hợp với công cụ cộng tác hệ thống kiểm sốt phiên tracker Trình biên tập chuyên nghiệp mở rộng yếu tố cần thiết cách tích hợp liền mạch với khn khổ web, cơng cụ JavaScript, ảo hóa hỗ trợ containerization 2.1.6.2 Lợi ích phần mềm Pycharm Một khía cạnh quan trọng chương trình hiểu tảng mã mà bạn đưa vào PyCharm đảm bảo bạn khám phá dự án bạn với vài thao tác phím, cung cấp cho bạn nhìn tổng quan cấu trúc dự án cho phép bạn truy cập vào tài liệu có liên quan từ trình soạn thảo Hiểu tảng code nhanh có nghĩa thúc đẩy nhanh trình phát triển bạn 2.1.6.3 Các tính Pycharm • Hỗ trợ Windows, macOS Linux • Hỗ trợ mã hồn thiện thông minh, điều hướng cú nhấp chuột kiểm tra kiểu PEP8 • Tái cấu trúc an tồn tự động dự án bạn • Tự động phát vấn đề mã: ví dụ: phân tích mã khơng sử dụng • Trình gỡ lỗi hiệu suất cao • Chế độ mơ Vim 2.1.6.4 Cài đặt Pycharm sử dụng Pycharm Truy cập đường link: https://www.jetbrains.com/pycharm/ để tải Pycharm Đối với dự án cá nhân Community hồn tồn đầy đủ tính Hãy tải Hình 12 Download PyCharm trang chủ JetBrains Sau download thành công, PyCharm lưu thư mục Download máy tính Ta click đúp lên file cài, để tiến hành cài đặt PyCharm Hình 13 Bắt đầu cài đặt PyCharm lên máy Màn hình chào mừng hiển thị, ta nhấn Next để tiếp tục Hình 14 Giao diện cài Đặt PyCharm - Chọn Next Sau đó, ta chọn đường dẫn thư mục chứa cài nói Hình 15 Chọn đường dẫn lưu PyCharm - Để mặc định Tiếp theo, ta chọn tùy chọn cho việc cài đặt Nếu máy chưa cài đặt Java ta tích vào tất tùy chọn hình Hình 16 Chọn cài Tùy chọn Cài Đặt - Lựa chọn Như Hình chưa cài Java, OS 64 Bit Sau ta chọn Install hình tiếp theo, để bắt đầu tiến hành cài đặt PyCharm Hình 17 Lựa chọn Install để cài đặt PyCharm Sau cài đặt xong, PyCharm hỏi ta có muốn khởi động lại máy ln hay khơng Ta chọn RebootNow để khởi động lại máy tính nhằm hồn tất trình cài đặt Hình 18 Chọn Reboot Now để khởi động lại hoàn tất cài đặt PyCharm Như cài đặt xong Pycharm Nhưng để biết bạn cài chưa cần phải thử xem chương trình python bạn có chạy với Pycharm vừa cài không Sau cài xong, mở Pycharm, ta hỏi "Có muốn Import thiết lập có từ trước hay khơng?" Nếu cài hồn tồn, ta chọn mục Do not import settings, nhấn OK Hình 19 Chọn Có hay Khơng Import cài đặt trước Trong phần sách bảo mật, ta nhấn xác nhận nhấn Continue để tiếp tục Hình 20 Đồng ý với điều khoản sử dụng PyCharm Trong hình Tùy biến PyCharm, ta chọn Skip Remaining and Set Defaults để lựa chọn thiết lập mặc định Hình 21 Sử dụng thiết lập mặc định PyCharm Sau hình chào hỏi PyCharm, ta chọn mục Create New Project để tạo Project Hình 22 Tạo Project PyCharm Ta chọn thư mục chứa Project tạo Sau nhấn Create HÌnh 23 Chọn thư mục chứa Project Create Sau q trình hồn tất, Project tạo Hình 24 Project Python tạo PyCharm hình bên 2.1.6.5 Tạo file viết mã Python Pycharm Sau tạo xong Project, ta click phải chuột lên Project, tạo Python File, để tạo file mã nguồn Python HÌnh 25 Tạo File Python PyCharm Ta đặt tên cho file tạo Hình 26 Đặt tên cho File Python vừa tạo Sau ta viết mã cho file Ta gọi hàm input() để đợi người dùng nhập chuỗi vào từ bàn phím Hình 27 Viết mã Python đơn giản để chạy thử nghiệm 2.1.6.6 Thực thi file Python Pycharm xem kết Sau viết mã xong, ta click phải chuột lên cửa sổ soạn thảo, chọn mục Run để thực thi file Ta sử dụng tổ hợp phím tắt Ctrl + Shift + F10 để thực thi file Hình 28 Click Run để chạy File Python Ta thấy kết chương trình hiển thị hình bên 2.1.7 Thư Viện OpenCv 2.1.7.1 Thuật ngữ OpenCv Opencv hiểu cách đơn giản thư viện nguồn mở sử dụng phổ biến hàng đầu cho Computer Vision, Machine Learning đến có thêm tính làm tăng tốc GPU cho hoạt động dựa theo real time Dự án opencv bắt đầu thực vào năm 1999 Intel Gary Bradsky Thư viện nguồn mở opencv phát hành theo giấy phép BSD, mà miễn phí hồn tồn cho hoạt động học tập, đồng thời sử dụng với mục đích thương mại khác Hiện nay, opencv có giao diện lập trình khác Python, C, C++, Java,… hỗ trợ cho hệ điều hành bao gồm Linux, Windows, iOS, OS, Android Ứng dụng opencv thiết kế nhằm mục đích hỗ trợ cho q trình tính toán, chuyên dùng cho ứng dụng thời gian thực hiệu Riêng C/C++ tối ưu opencv tận dụng xử lý đa lõi mang đến kết đáng bất ngờ Cũng tiện ích mà opencv có cộng đồng người dùng vơ lớn, hoạt động hùng hậu toàn giới, nhu cầu sử dụng opencv ngày có xu hướng tăng lên mạnh mẽ người chạy đua việc sử dụng Computer Vision, đặc biệt cơng ty chun cơng nghệ 2.1.7.2 Tính bật OpenCv Opencv thu hút đông đảo người dùng tin tưởng, sử dụng tính vơ đặc biệt, phân chia nhóm tính module riêng sau: - Opencv có khả giúp xử lý hiển thị lên hình ảnh, video, I hay O (highgui, corem imgproc) - Có thể phát vật thể nonfee, objdetect, features2d,…) - Opencv giúp geometry – based monocular stereo computer vision calib3d, videostab, stitching,…) - Tính computational photography superres, video hay photo,… - Có tính machine learning clustering flann, ml,… 2.1.7.3 Ứng dụng OpenCv Hiện nay, opencv ứng dụng rộng rãi với nhiều mục đích khác cơng nghệ lĩnh vực đời sống khác bao gồm: - Ứng dụng vào hình ảnh street view - Có thể kiểm tra, giám sát tự động - Ứng dụng robot xe tự lái - Phân tích hình ảnh y học - Tìm kiếm phục hồi hình ảnh, video - Ứng dụng vào phim cấu trúc 3D chuyển động - Ứng dụng vào nghệ thuật đặt tương tác 2.1.7.4 Các module phổ biến OpenCv Trong opencv có cấu trúc module khác bao gồm số thư viện liên kết tĩnh liên kết động Dưới số module phổ biến opencv, tham khảo nhé! - Core (core functionality) – biết đến module nhỏ gọn, giúp xác định cấu trúc liệu bao gồm mảng đa chiều dày đặc, chức Core sử dụng nhiều module khác opencv - Imgproc (Image Processing) – module có chức xử lý hình ảnh gồm có lọc hình ảnh tuyến tính, phi tuyến tính, cho phép biến đổi hình học chỉnh size, warp phối cảnh, ánh xạ lại sở bảng chung, afin,…), đồng thời module có khả chuyển đổi không gian màu, biểu đồ,… - Video (video analysis) – module cho phép phân tích video có tính ước tính chuyển động, tách thuật toán theo dõi vật thể opencv - Cali 3d (Camera Calibration and 3D Reconstruction) – thuật tốn hình học đa chiều nhất, hiệu chuẩn máy ảnh single stereo dự đoán đối tượng, thuật tốn thư tín âm nổi, yếu tố giúp tái tạo 3D - Features2d (2D features framework) – module phát đặc tính bật nhận diện, thơng số đối chọi hay truy xuất thông số,… - Objdetect (object detection) – module giúp phát đối tượng, đồng thời mô cho hàm định sẵn predefined classes Ví dụ người, khuôn mặt, mắt, xe hơi,… - Highgui (high – level GUI) – giao diện dễ sử dụng nhằm thực trình giao tiếp UI đơn giản opencv - Videoio (video I/O) – giao diện dễ sử dụng nhằm thu, mã hóa video opencv - GPU – thuật tốn giúp tăng tốc GPU từ module opencv khác - Ngồi cịn số module hỗ trợ Google test wrapper, Flann, Python binding 2.1.7.5 Hướng dẫn cài đặt OpenCv Trước cài đặt opencv, cần phải xác định loại ngơn ngữ lựa chọn để lập trình cho phù hợp Hiện nay, opencv hỗ trợ nhiều ngơn ngữ khác nhau, loại có đặc điểm mạnh riêng Do đó, người dùng cần lưu ý, cân nhắc cẩn thận để đưa định đắn, phù hợp - Ngơn ngữ lập trình C++: loại ngơn ngữ phổ biến nay, nhiều người áp dụng nhanh, nhiều option Và bạn có IDE, visual studio C++ lựa chọn tốt Các thiết lập ngơn ngữ lập trình vơ hữu ích cho sản phẩm opencv sau ban đầu có phần phức tạp, nhiên, sau quen dần dễ sử dụng - Ngơn ngữ lập trình Python: loại ngôn ngữ sử dụng nhiều nhằm mục đích demo hay test opencv Ưu điểm ngơn ngữ có tính ngắn gọn, phải thiết lập phức tạp Ngồi ra, bạn sử dụng ngơn ngữ Python code nhiều hệ điều hành khác - Android: loại ngơn ngữ có tích hợp sẵn camera tiện lợi, sớm trở thành xu hướng opencv thời gian tới - Ngơn ngữ lập trình Java: loại ngơn ngữ đánh giá nhanh, đa tảng sử dụng tương tự ngơn ngữ C++ - Ngơn ngữ C# mang đến tính code đại, tiện lợi dễ dàng sử dụng Bên cạnh đó, ngơn ngữ cịn có thư viện đa tảng EmguCV có chức hỗ trợ trình sử dụng Tuy nhiên, tảng lại có điểm trừ yêu cầu người dùng phải copy toàn file*.dll lib đính kèm với ứng dụng Do đó, ứng dụng nặng số hệ điều hành Như vậy, tùy thuộc vào nhu cầu sử dụng tính chất cơng việc, dự án mà bạn phụ trách mà đưa định lựa chọn ngôn ngữ phù hợp nhất, mang đến hiệu cao cơng việc Ví dụ bạn muốn xử lý hình ảnh nên chọn ngơn ngữ C++, cịn muốn thiết kế UX/UI chọn ngơn ngữ C# Đặc biệt, với chương trình cần demo nên chọn ngơn ngữ lập trình Python Android,…

Ngày đăng: 20/04/2021, 22:28

Xem thêm:

TỪ KHÓA LIÊN QUAN

Mục lục

    CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN

    1.1 Tổng quan về nhận diện khuôn mặt

    1.2 Phương pháp và kết quả

    1.2.1 Phương pháp triển khai thực hiện đề tài

    CHƯƠNG 2: NGHIÊN CỨU TỔNG QUAN

    2.1 Cơ sở lý thuyết

    2.1.1 Ngôn ngữ lập trình Python

    2.1.2 Tại sao nên lựa chọn ngôn ngữ lập trình Python

    2.1.3 Những tính năng nổi bật của ngôn ngữ lập trình Python

    2.1.4 Python được sử dụng ở đâu

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w