34
ĐẠI HỌC ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG BÁO CÁO ĐỒ ÁN CƠ SỞ 5 ĐỀ TÀI: ỨNG DỤNG TRÍ TUỆ NHÂN TẠO TRONG NHẬN DẠNG MẶT NGƯỜI VÀ SỬ DỤNG CHATBOT ĐỂ GIAO TIẾP Giảng viên hướng dẫn : ThS. Hà Thị Minh Phương Sinh viên thực hiện : Đỗ Văn Huy 17IT062 Đặng Công Hưng 17IT014 Lớp : 17IT1

daotao.sict.udn.vndaotao.sict.udn.vn/.../2020/08/1596336142-baocaodoan5.docx · Web view4.1.2 Tiến hành cài đặt Python và Anaconda Anaconda là một trình quản lý gói

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: daotao.sict.udn.vndaotao.sict.udn.vn/.../2020/08/1596336142-baocaodoan5.docx · Web view4.1.2 Tiến hành cài đặt Python và Anaconda Anaconda là một trình quản lý gói

ĐẠI HỌC ĐÀ NẴNGKHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

BÁO CÁO ĐỒ ÁN CƠ SỞ 5

ĐỀ TÀI: ỨNG DỤNG TRÍ TUỆ NHÂN TẠO TRONG NHẬN DẠNG MẶT NGƯỜI VÀ SỬ DỤNG CHATBOT ĐỂ GIAO TIẾP

Giảng viên hướng dẫn : ThS. Hà Thị Minh Phương Sinh viên thực hiện : Đỗ Văn Huy 17IT062 Đặng Công Hưng 17IT014 Lớp : 17IT1

Đà nẵng, tháng 7 năm 2020

Page 2: daotao.sict.udn.vndaotao.sict.udn.vn/.../2020/08/1596336142-baocaodoan5.docx · Web view4.1.2 Tiến hành cài đặt Python và Anaconda Anaconda là một trình quản lý gói

ĐẠI HỌC ĐÀ NẴNGKHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

ĐỒ ÁN CƠ SỞ 5

ỨNG DỤNG TRÍ TUỆ NHÂN TẠO TRONG NHẬN DẠNG MẶT NGƯỜI VÀ SỬ DỤNG CHATBOT ĐỂ GIAO TIẾP

Đà Nẵng, tháng 7 năm 2020

Page 3: daotao.sict.udn.vndaotao.sict.udn.vn/.../2020/08/1596336142-baocaodoan5.docx · Web view4.1.2 Tiến hành cài đặt Python và Anaconda Anaconda là một trình quản lý gói

MỞ ĐẦU

Một trong những lĩnh vực quan trọng của Trí tuệ nhân tạo (Artificial Intelligence) là thị giác máy (Computer Vision). Computer Vision là một lĩnh vực bao gồm các phương pháp thu nhận, xử lí ảnh kỹ thuật số, phân tích và nhận dạng các hình ảnh, phát hiện các đối tượng, tạo ảnh, siêu phân giải hình ảnh và nhiều hơn vậy. Object Detection là một khía cạnh của thị giác máy đề cập đến khả năng của hệ thống máy tính và phần mềm để định vị các đối tượng trong một hình ảnh và xác định từng đối tượng.

Với mong muốn tìm hiểu và học tập thông qua bài toán nhận dạng. Nhóm em đã chọn đề tài: “Ứng dụng trí tuệ nhân tạo trong nhận dạng mặt người và sử dụng chatbot để giao tiếp” là đề tài cho đồ án cơ sở 5

Trong quá trình làm đồ án, nhóm em đã có nhận được sự hướng dẫn tận tình của cô Hà Thị Minh Phương cùng các bạn trong lớp 17IT1 để hoàn thành tốt đồ án này.

Trong quá trình thực hiện đồ án không thể tránh khỏi những sai xót, vì vậy nhóm em rất mong nhận được sự quan tâm chỉ bảo của cô

Nhóm xin chân thành cảm ơn!

3

Page 4: daotao.sict.udn.vndaotao.sict.udn.vn/.../2020/08/1596336142-baocaodoan5.docx · Web view4.1.2 Tiến hành cài đặt Python và Anaconda Anaconda là một trình quản lý gói

NHẬN XÉT (Của giảng viên hướng dẫn)

...………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………...………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………....………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………...………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………...………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………...……………………..…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

4

Page 5: daotao.sict.udn.vndaotao.sict.udn.vn/.../2020/08/1596336142-baocaodoan5.docx · Web view4.1.2 Tiến hành cài đặt Python và Anaconda Anaconda là một trình quản lý gói

Chữ kí xác nhận của giảng viên

MỤC LỤC

Chương I: Tổng quan đề tài1.1 Giới thiệu…………………………………………………………………...61.2 Phương pháp, kết quả………………………………………………………6

1.2.1 Phương pháp triển khai thực hiện đề tài…………………………61.3 Cấu trúc đồ án………………………………………………………………7

Chương II: Nghiên cứu tổng quan2.1 Đối tượng và phạm vi nghiên cứu…………………………………………7

2.1.1 Đối tượng nghiên cứu………………………………………….....72.1.2 Phạm vi nghiên cứu………………………………………………7

2.2 Cơ sở lí thuyết và thực tiền………………………………………………...72.2.1 Cơ sở lí thuyết………………………………………………….....72.2.2 Thực tiễn………………………………………………………….7

Chương III: Cơ sở lí thuyết3.1 Ngôn ngữ lập trình Python…………………………………………………83.2 Thư viện OpenCV………………………………………………………….83.3 Bài toán nhận dạng khuôn mặt……………………………………………..8

3.3.1 Bài toán nhận dạng khuôn mặt……………………………………83.3.1.1 Tìm kiếm khuôn mặt…………………………………….93.3.1.2 Trích rút đặc trưng……………………………………….93.3.1.3 Nhận dạng khuôn mặt………………………………….10

Chương IV: Xây dựng ứng dụng và triển khai cài đặt4.1 Cài đặt OpenCV và các công cụ phát triển……………………………….10

4.1.1 Cài đặt Visual Studio Code……………………………………...104.1.2 Tiến hành cài đặt Python và Anaconda………………………….124.1.3 Cài đặt thư viện OpenCV………………………………………..124.1.4 Cài đặt Sqlite…………………………………………………….14

4.2 Xây dựng ứng dụng……………………………………………………….154.2.1 Mô hình tổng quan……………………………………………….154.2.2 Xây dựng chi tiết ứng dụng……………………………………...15

4.2.2.1 Kết nối sqlite để tạo và cập nhật dữ liệu………………..154.2.2.2 Tạo lớp training dữ liệu………………………………...174.2.2.3 Lớp nhandien.py nhận diện khuôn mặt đã training…….184.2.2.4 Lớp training.py để training ngôn ngữ cho chatbot……..194.2.2.5 File app.py gộp việc nhận dạng khuôn mặt và trả lời…..20

4.3 Chạy ứng dụng và kiểm tra kết quả……………………………………….20

5

Page 6: daotao.sict.udn.vndaotao.sict.udn.vn/.../2020/08/1596336142-baocaodoan5.docx · Web view4.1.2 Tiến hành cài đặt Python và Anaconda Anaconda là một trình quản lý gói

4.3.1 Chạy ứng dụng…………………………………………………...204.3.2 Kiểm tra kết quả…………………………………………………22

Chương V: Kết luận và định hướng phát triển5.1 Kết luận……………………………………………………………………245.2 Định hướng phát triển……………………………………………………..24

Danh mục tài liệu tham khảo………….……………………………………………25

DANH MỤC HÌNH

Hình 1. 68 điểm trong thuật toán face landmark estimationHình 2. .NET Framework 4.5.2Hình 3. Cài đặt Visual Studio CodeHình 4. Kiểm tra version PythonHình 5. Pip search “opencv”Hình 6. Install opencv-pythonHình 7. Kiểm tra cài đặt opencvHình 8. Cài đặt sqliteHình 9. Tạo bảng People trong cơ sở dữ liệuHình 10. Kết nối sqliteHình 11. Mở camera lấy dữ liệuHình 12. Dữ liệu các khuôn mặtHình 13. Dữ liệu được lưu trong SqliteHình 14. Kết quả nhận diệnHình 15. Giao tiếp với chatbot

6

Page 7: daotao.sict.udn.vndaotao.sict.udn.vn/.../2020/08/1596336142-baocaodoan5.docx · Web view4.1.2 Tiến hành cài đặt Python và Anaconda Anaconda là một trình quản lý gói

DANH MỤC CỤM TỪ VIẾT TẮT

STT Cụm từ Viết tắt1 Open Computer Vision OpenCV2 Cơ sở dữ liệu CSDL

7

Page 8: daotao.sict.udn.vndaotao.sict.udn.vn/.../2020/08/1596336142-baocaodoan5.docx · Web view4.1.2 Tiến hành cài đặt Python và Anaconda Anaconda là một trình quản lý gói

Chương 1 Tổng quan đề tài

1.1 Giới thiệu

Một trong những lĩnh vực quan trọng của Trí tuệ nhân tạo (Artificial Intelligence) là thị giác máy (Computer Vision). Computer Vision là một lĩnh vực bao gồm các phương pháp thu nhận, xử lý ảnh kỹ thuật số, phân tích và nhận dạng các hình ảnh, phát hiện các đối tượng, tạo ảnh, siêu phân giải hình ảnh và nhiều hơn vậy. Object Detection có lẽ là khía cạnh sâu sắc nhất của thị giác máy do số lần sử dụng trong thực tế. Object Detection đề cập đến khả năng của hệ thống máy tính và phần mềm để định vị các đối tượng trong một hình ảnh và xác định từng đối tượng. Object Detection đã được sử dụng rộng rãi để phát hiện khuôn mặt, phát hiện xe, đếm số người đi bộ, hệ thống bảo mật và xe không người lái. Có nhiều cách để nhận diện đối tượng có thể được sử dụng cũng như trong nhiều lĩnh vực thực hành. Trong giới hạn kiến thức cũng như theo yêu cầu của đồ án cơ sở 5 thì chúng em chọn đề tài “Ứng dụng trí tuệ nhân tạo trong nhận dạng mặt người và sử dụng chatbot để giao tiếp” nhằm giải quyết bài toán yêu cầu đồ án đặt ra

1.2 Phương pháp, kết quả1.2.1 Phương pháp triển khai thực hiện đề tài:Đồ án sử dụng OpenCV với ngôn ngữ mô tả là Python cùng với tệp tin XML Haarcascade để nhận diện khuôn mặt realtime khi dùng webcam: -Python là ngôn ngữ thông dụng và phổ biến trong trí tuệ nhân tạo cũng như công nghệ học máy. Python là một ngôn ngữ có tính đơn giản, nhất quán và cho phép truy cập vào các thư viện và frameword hỗ trợ cho AI và học máy -Thư viện OpenCV (Open Computer Vision) là một thư viện mã nguồn mở hàng đầu cho xử lý về thị giác máy tính, machine learning, xử lý ảnh. OpenCV đươc viết bằng C/C++, vì vậy có tốc độ tính toán rất nhanh, có thể sử dụng với các ứng dụng liên quan đến thời gian thực. Opencv có các interface cho C/C++, Python Java vì vậy hỗ trợ được cho Window, Linux, MacOs lẫn Android, iOS OpenCV có cộng đồng hơn 47 nghìn người dùng và số lượng download vượt quá 6 triệu lầnOpenCV có rất nhiều ứng dụng:

Nhận dạng ảnh Xử lí hình ảnh

8

Page 9: daotao.sict.udn.vndaotao.sict.udn.vn/.../2020/08/1596336142-baocaodoan5.docx · Web view4.1.2 Tiến hành cài đặt Python và Anaconda Anaconda là một trình quản lý gói

Phục hồi ảnh, video Thực tế ảo Các ứng dụng khác

- Haar Cascade là dữ liệu được sử dụng phổ biến nhất, tôi chỉ sử dụng riêng một tệp tin trong bộ Haar Cascade là haarcascade_frontalface_default.xml và ngoài ra còn có các tệp tin về phát hiện mắt, miệng, hình dáng cơ thể trong bộ Haar Cascade.

Kết quả đạt được:Hoàn thành được một chương trình với chức năng:-Nhận diện được các khuôn mặt bằng cách sử dụng camera máy tính-Tích hợp chatbot vào việc giao tiếp với người sau khi được nhận dạng

Hiểu cơ bản về bài toán nhận dạng trong học máy, cơ bản về ngôn ngữ python cũng như thư viện Opencv

1.3 Cấu trúc đồ ánQuá trình xây dựng và hoàn thành đồ án tiến hành qua các quy trình sau:-Nghiên cứu tổng quan-Phân tích thiết kế hệ thống và triển khai-Kết luận và hướng phát triển

Chương 2 Nghiên cứu tổng quan

2.1 Đối tượng và phạm vi nghiên cứu2.1.1 Đối tượng nghiên cứuBài toán đặt ra là bài toán nhận dạng khuôn mặt có trong một bức ảnh hoặc khi sử dụng webcam realtime bằng cách sử dụng phương pháp nhận diện khuôn mặt Haar-cascade Detection

2.1.2 Phạm vi nghiên cứuPhạm vi nghiên cứu của đề tài “Ứng dụng trí tuệ nhân tạo trong nhận dạng mặt người và sử dụng chatbot để giao tiếp”:

Tìm hiểu về các thuật toán nhận diện Tìm hiểu, nghiên cứu về thư viện Opencv và ngôn ngữ python Tìm hiểu về phương pháp nhận diện khuôn mặt Haar-cascade Detection

2.2 Cơ sở lí thuyết và thực tiễn2.2.1 Cơ sở lý thuyếtNhằm xây dựng một ứng dụng phù hợp với vấn đề đặt ra, về mặt lý thuyết đề tài sẽ tìm hiểu và nghiên cứu các lĩnh vực sau:-Tìm hiểu ngôn ngữ lập trình Python, -Tìm hiểu các thuật toán nhận dạng trong học máy-Tìm hiểu các kỹ thuật xử lý ảnh, trích chọn đặc trưng

9

Page 10: daotao.sict.udn.vndaotao.sict.udn.vn/.../2020/08/1596336142-baocaodoan5.docx · Web view4.1.2 Tiến hành cài đặt Python và Anaconda Anaconda là một trình quản lý gói

-Nghiên cứu về thư viện Opencv trong việc hỗ trợ nhận dạng khuôn mặt

2.2.2 Thực tiễnTừ cơ sở lí thuyết đề tài sẽ xây dựng ứng dụng nhận dạng khuôn mặt người và chatbot để giao tiếp với các tính năng:-Nhận diện được khuôn mặt khi chúng ta sử dụng webcam -Hiển thị tên người sau khi được nhận diện-Dùng chatbot để chat với người được nhận diện

Chương 3: CƠ SỞ LÍ THUYẾT

Trong chương này sẽ tập trung nghiên cứu tìm hiểu về ngôn ngữ lập trình Python, các kĩ thuật nhận diện cùng với sự hỗ trợ của thư viện Opencv

3.1 Ngôn ngữ lập trình Python Python là ngôn ngữ lập trình hướng đối tượng bậc cao, dùng để phát triển website và nhiều ứng dụng khác nhau. Hiện nay, python đang được sử dụng rất rộng rãi trong các ứng dụng về trí tuệ nhân tạo, học máy, học sâu. Python được tạo ra bởi Guido và Rossum và được phát triển trong một dự án mã nguồn mở Với cú pháp cực kì đơn giản và dễ hiểu, dễ sử dụng, Python là sự lựa chọn hoàn hảo cho những ai lần đầu tiên học lập trình. Tuy nhiên, đây cũng là ngôn ngữ nổi tiếng về sự chặt chẽ, nhanh, mạnh và có mặt ở mọi hệ điều hành Python có 100 thư viện xây dựng sẵn để thực hiện các thuật toán Machine Learning và Deep Learning khác nhau. Vì vậy, mỗi khi bạn muốn chạy một thuật toán trên một tập dữ liệu, tất cả những gì bạn phải làm là cài đặt và tải các gói cần thiết bằng một lệnh duy nhất. Ví dụ về các thư viện được xây dựng trước bao gồm numPy, Keras, Tensolflow, Pytorch, ... Python có thể chạy trên nhiều nền tảng bao gồm Windows, MacOS, Linux, ... Trong khi chuyển mã từ nền tảng này sang nền tảng khác, bạn có thể sử dụng các gói như Pylnstaller sẽ xử lý mọi vấn đề phụ thuộc. Python có một cộng đồng người dùng khổng lồ luôn hữu ích khi chùng ta gặp phải vấn đề mã hóa. Ngoài lượng người hâm mộ đông đảo, Python có nhiều cộng đồng, nhóm và diễn đàn nơi các lập trình viên đăng các lỗi của họ và giúp đỡ lẫn nhau.Triển khai các ứng dụng trí tuệ nhân tạo liên quan đến hàng tấn thuật toán. Nhờ hỗ trợ của Pythons cho các gói được xác định trước, chúng ta không cần phải code các thuật toán. Và để làm cho mọi thứ dễ dàng hơn, học Python cung cấp phương pháp “kiểm tra khi code” giúp làm giảm số lượng code bạn phải gõ.

3.2 Thư viện OpenCVThư viện OpenCV:

OpenCV viết tắt của Open Source Computer Vision được xem là một trong những thư viện mã nguồn mở hàng đầu cho việc xử lý ảnh theo thời gian thực.

OpenCV chính thức được ra mắt đầu tiên vào năm 1999, OpenCV là thư viện mã nguồn mở miễn phí cho cả học thuật và thương mại.

10

Page 11: daotao.sict.udn.vndaotao.sict.udn.vn/.../2020/08/1596336142-baocaodoan5.docx · Web view4.1.2 Tiến hành cài đặt Python và Anaconda Anaconda là một trình quản lý gói

OpenCV hỗ trợ đa nền tảng gồm Windows, Linux, Mac OS, iOS và Android. OpenCV hỗ trợ ngôn ngữ lập trình C/C++, Python và Java. OpenCV được viết bằng C / C ++ và tích hợp OpenCL. Thư viện có hơn 2500 thuật toán được tối ưu hóa.

3.3 Bài toán nhận dạng khuôn mặt3.3.1 Bài toán nhận dạng khuôn mặtNhận dạng là một bài toán quan trọng trong lĩnh vực Computer Vision, thuật toán nhận dạng khuôn mặt là một bài toán khá phức tạp, nó đòi hỏi một loạt các vấn đề cần thực hiện:

Việc làm đầu tiên đó là cần phải tìm kiếm tất cả những khuôn mặt có trong bức hình

Tập trung vào từng khuôn mặt chắc chắn rằng bạn có thể nhận ra cùng một người từ các góc nhìn hoặc điều kiện sáng tối khác nhau.

Lựa chọn những đặc trưng đặc trưng trên từng khuôn mặt -VD như đôi mắt to, khuôn mặt dài...

So sánh những đặc trưng này với những người khác để chúng ta có thể biết được tên của họ.

Giải quyết bài toán từng bước, ở mỗi bước sẽ có các thuật toán học máy khác nhau:

3.3.1.1 Tìm kiếm khuôn mặt (Face Detection):Có thể thấy rõ đầu tiên chúng ta cần xác định vị trí của khuôn mặt có trong bức hình trước khi xác định người đó là ai.Để tìm kiếm khuôn mặt trong một bức hình, ta cần làm cho bức hình trở thành ảnh đen trắng. Về cơ bản thì một bức ảnh màu không có tác dụng gì lắm cho việc xác định khuôn mặtSau đó, vẽ các vector chỉ hướng tối dần đi của các điểm ảnh của bức ảnh đen trắng đó. Tạo ra các khung tỉ lệ để xác định các đặc điểm cơ bản của khuôn mặt thông qua các vecto này

3.3.1.2 Trích rút đặc trưng (Feature Extraction): Sau khi phát hiện ra khuôn mặt trong bức ảnh, chúng ta tiến hành trích rút những đặc trưng của khuôn mặt. Bước này trích xuất ra một vector đặc trưng đại diện cho một khuôn mặt. Nó phải đảm bảo được tính duy nhất của một khuôn mặt. Có những khuôn mặt thì nghiêng sang trái, nghiêng sang phải, khiến bạn chỉ nhìn thấy một phần khuôn mặt của họ, hay có những bức hình thì lại hơi nghiêng đầu, khiến cho bức ảnh bị lệch khỏi khung nhìn. Do đó, chúng ta chúng ta cần phải cố gắng làm cong bức hình để đôi mắt, bờ môi luôn ở vị trí mẫu trong ảnh. Điều này sẽ làm cho việc so sánh khuôn mặt ở các bước tiếp theo dễ dàng hơn nhiều. Để làm điều này, chúng ta sẽ sử dụng một thuật toán được gọi là face landmark estimation. Ý tưởng cơ bản của thuật toán là tìm ra 68 điểm cụ thể (được gọi là mốc) tồn tại trên mỗi khuôn mặt - đầu cằm, cạnh bên ngoài của mỗi mắt, cạnh bên trong của mỗi lông mày ... Sau đó, chúng ta sẽ dùng một thuật toán machine learning để training để có thể tìm thấy 68 điểm cụ thể trên từng khuôn mặt.

11

Page 12: daotao.sict.udn.vndaotao.sict.udn.vn/.../2020/08/1596336142-baocaodoan5.docx · Web view4.1.2 Tiến hành cài đặt Python và Anaconda Anaconda là một trình quản lý gói

Sau đó, chỉ cần xoay và cắt ảnh để mắt và miệng được căn giữa là xong

Hình 1. 68 điểm trong thuật toán face landmark estimation

3.3.1.3 Nhận dạng khuôn mặt (Face Recognition): Với hình ảnh đầu vào sau khi phát hiện ra khuôn mặt, trích rút các đặc trưng của khuôn mặt và đem so sánh các đặc trưng này với cơ sở dữ liệu khuôn mặt Phương pháp tiếp cận đơn giản nhất để nhận biết khuôn mặt là so sánh trực tiếp khuôn mặt mà chúng ta đã tìm được ở bước 2 với tất cả các hình ảnh của những người đã được training trước đó trong cơ sở dữ liệu. Kiểm tra các đặc điểm trên khuôn mặt rồi từ đó nhận diện được khuôn mặt người trong webcam là ai.

Chương 4 Xây dựng ứng dụng và triển khai cài đặt

4.1 Cài đặt OpenCV và các công cụ phát triển4.1.1 Cài đặt công cụ Visual Studio Code: Visual Studio Code là một trình biên soạn mã nguồn nhẹ nhưng mạnh mẽ, tích hợp các tính năng của một môi trường phát triển chuyên nghiệp như tự gợi ý, trình gỡ

12

Page 13: daotao.sict.udn.vndaotao.sict.udn.vn/.../2020/08/1596336142-baocaodoan5.docx · Web view4.1.2 Tiến hành cài đặt Python và Anaconda Anaconda là một trình quản lý gói

lỗi ... cùng với một hệ sinh thái các extensions cho phép mở rộng hơn các tính năng có sẵn. Hiện Visual Studio Code hỗ trợ cho cả Windows, macOS và Linux Visual Studio Code yêu cầu máy tính phải được cài đặt sẵn .NET Framework 4.5.2. Ta có thể kiểm tra bằng cách vào Control Panel > Programs and Features.

Hình 2. .NET Framework 4.5.2

Tải Visual Studio Code 1.12 theo đường dẫn: https://code.visualstudio.com

13

Page 14: daotao.sict.udn.vndaotao.sict.udn.vn/.../2020/08/1596336142-baocaodoan5.docx · Web view4.1.2 Tiến hành cài đặt Python và Anaconda Anaconda là một trình quản lý gói

Hình 3. Cài đặt Visual Studio Code

Sau khi tải xong và tiến hành cài đặt, ta sẽ dùng Visual Code Studio để xây dựng ứng dụng

4.1.2 Tiến hành cài đặt Python và Anaconda Anaconda là một trình quản lý gói nguồn mở, trình quản lý môi trường và phân phối các ngôn ngữ lập trình Python và R. Nó đã tích hợp Python trong này kèm theo chương trình quản lý các thư viện của Python. Bạn cũng có thể cài các phần mềm IDE dành cho Python/R thông qua đây Các bạn truy cập trang web chính thức của anaconda để download bộ cài đặt:https://www.anaconda.com/download/Sau khi cài đặt xong Anaconda, tiến hành cài đặt python và đưa đường dẫn python trong Anaconda vào trong $PATH của Windows

4.1.3 Cài đặt thư viện OpenCv Tiến hành cài đặt OpenCV với ngôn ngữ lập trình Python Trước khi cài đặt thì mình kiểm cần phải kiểm tra version của Python hiện tại của PC của mình bằng câu lệnh: python –version

Hình 4. Kiểm tra version Python

14

Page 15: daotao.sict.udn.vndaotao.sict.udn.vn/.../2020/08/1596336142-baocaodoan5.docx · Web view4.1.2 Tiến hành cài đặt Python và Anaconda Anaconda là một trình quản lý gói

Pip là hệ thống quản lý các package của Python. Mình có thể tìm kiếm các package mà pip hỗ trợ thông qua lệnh pip search.pip search ”opencv”

Hình 5. pip search “opencv”

Như hình trên mình thấy, pip hiện tại hỗ trợ package opencv-python (phiên bản 3.4.2.16), nên mình có thể cài đặt OpenCV cho Python thông qua pip. Sử dụng lệnh pip install để cài đặt OpenCV.pip install opencv-python==3.4.2.16

Hình 6. install opencv-python

Kiểm tra lại, nếu có thể import được OpenCV mà không báo lỗi thì việc cài đặt thành công.

cv2

Hình 7. Kiểm tra cài đặt opencv

15

Import

Page 16: daotao.sict.udn.vndaotao.sict.udn.vn/.../2020/08/1596336142-baocaodoan5.docx · Web view4.1.2 Tiến hành cài đặt Python và Anaconda Anaconda là một trình quản lý gói

4.1.4 Cài đặt sqlite:

Hình 8. Cài đặt sqlite

Tạo CSDL FaceBase với bảng People

16

Page 17: daotao.sict.udn.vndaotao.sict.udn.vn/.../2020/08/1596336142-baocaodoan5.docx · Web view4.1.2 Tiến hành cài đặt Python và Anaconda Anaconda là một trình quản lý gói

Hình 9. Tạo bảng People trong cơ sở dữ liệu

4.2 Xây dựng ứng dụng4.2.1 Mô hình tổng quanMô hình tổng thể của hệ thống bao gồm:-Tạo laydulieu.py dùng để nhận diện-Tạo huanluyen.py sử dụng để training dữ liệu-Tạo lớp nhandien.py để nhận diện-Tạo lớp training.py để training ngôn ngữ trong việc giao tiếp

4.2.2 Xây dựng chi tiết ứng dụng4.2.2.1 Kết nối sqlite để tạo và cập nhật dữ liệu các khuôn mặt:

17

Page 18: daotao.sict.udn.vndaotao.sict.udn.vn/.../2020/08/1596336142-baocaodoan5.docx · Web view4.1.2 Tiến hành cài đặt Python và Anaconda Anaconda là một trình quản lý gói

Hình 10. Kết nối sqlite

Code dùng camera để chụp hình dữ liệu các khuôn mặt:

Hình 11. Mở camera lấy dữ liệu

Dữ liệu càng nhiều thì độ chính xác sẽ càng cao:

18

Page 19: daotao.sict.udn.vndaotao.sict.udn.vn/.../2020/08/1596336142-baocaodoan5.docx · Web view4.1.2 Tiến hành cài đặt Python và Anaconda Anaconda là một trình quản lý gói

Hình 12. Dữ liệu các khuôn mặt

Dữ liệu lưu vào sqlite

Hình 13. Dữ liệu được lưu trong Sqlite

4.2.2.2 Tạo lớp training dữ liệu:Load đường dẫn và file trong thư mục data_face

Tách ID từ tên file ảnh:

19

Page 20: daotao.sict.udn.vndaotao.sict.udn.vn/.../2020/08/1596336142-baocaodoan5.docx · Web view4.1.2 Tiến hành cài đặt Python và Anaconda Anaconda là một trình quản lý gói

Convert ảnh và add vào mảng faces cùng với IDđối với bàn toán classfication ở đây thì Feature là ảnh còn Label chính là id người dùng

Training và lưu vào file huanluyen.yml trong thư mục trainer

Toàn bộ code file huanluyen.py

20

Page 21: daotao.sict.udn.vndaotao.sict.udn.vn/.../2020/08/1596336142-baocaodoan5.docx · Web view4.1.2 Tiến hành cài đặt Python và Anaconda Anaconda là một trình quản lý gói

4.2.2.3 Lớp nhandien.py nhận diện khuôn mặt đã trainingLấy thông tin user từ Database

Sử dụng camera để nhận diện:

Hiển thị thông tin của người đã được nhận diện:

21

Page 22: daotao.sict.udn.vndaotao.sict.udn.vn/.../2020/08/1596336142-baocaodoan5.docx · Web view4.1.2 Tiến hành cài đặt Python và Anaconda Anaconda là một trình quản lý gói

4.2.2.4 Lớp training.py để training ngôn ngữ cho chatbot:Chèn file intent.json vào. File này chứa các câu hỏi và câu trả lời đơn giản phục vụ cho việc training dữ liệu chatbot

Training và lưu model vào thư mục model sử dung dụng mạng neuron DNN.

4.2.2.5 File app.py gộp việc nhận diện khuôn mặt và trả lời chatbot

22

Page 23: daotao.sict.udn.vndaotao.sict.udn.vn/.../2020/08/1596336142-baocaodoan5.docx · Web view4.1.2 Tiến hành cài đặt Python và Anaconda Anaconda là một trình quản lý gói

4.3 Chạy ứng dụng và kiểm tra kết quả:4.3.1 Chạy ứng dụng:Đầu tiên, ta chạy file laydulieu.py

Sau khi lấy dữ liệu xong thì dữ liệu tập hợp các bức ảnh chụp khuôn mặt người nhận diện sẽ ở trong thư mục data_face:

23

Page 24: daotao.sict.udn.vndaotao.sict.udn.vn/.../2020/08/1596336142-baocaodoan5.docx · Web view4.1.2 Tiến hành cài đặt Python và Anaconda Anaconda là một trình quản lý gói

Tiếp đến, chạy file huanluyen.py để training dữ liệu các khuôn mặt đã được lấy ở trên:

24

Page 25: daotao.sict.udn.vndaotao.sict.udn.vn/.../2020/08/1596336142-baocaodoan5.docx · Web view4.1.2 Tiến hành cài đặt Python và Anaconda Anaconda là một trình quản lý gói

Chạy file app.py để xem kết quả nhận diện và thực hiện giao tiếp với chatbot

Sau khi chạy file app.py, chúng ta sẽ nhấn Q để tạo server localhost cho việc giao tiếp với chatbot. Tiếp đến gõ vào trình duyệt localhost:1234 để mở chatbot lên

4.3.2 Kết quả thu được:

Nhận diện khuôn mặt:

Hình 14. Kết quả nhận diện

Giao tiếp với chatbot:

25

Page 26: daotao.sict.udn.vndaotao.sict.udn.vn/.../2020/08/1596336142-baocaodoan5.docx · Web view4.1.2 Tiến hành cài đặt Python và Anaconda Anaconda là một trình quản lý gói

Hình 15. Giao tiếp với chatbot

Chương 5 Kết luận và định hướng phát triển

5.1 Kết luận: Sau quá trình tìm hiểu môi trường Anaconda, python và thư viện Opencv cũng một số kĩ thuật có liên quan, đề tài đã đạt được mục tiêu đề ra là xây dựng ứng dụng trí tuệ nhân tạo trong việc nhận dạng khuôn mặt người và giao tiếp với chatbot Vì kiến thức học được còn ít nên ứng dụng chỉ mới ở giai đoạn ban đầu. Còn rất nhiều hạn chế và thứ cần phát triển.Một số hạn chế:

Tỉ lệ nhận diện đúng chưa quá cao Quá trình training dữ liệu còn lâu Giao tiếp với chatbot chưa thật sự quá tốt. Đôi khi còn trả lời sai

5.2 Định hướng phát triển: Để chương trình có thể được ứng dụng vào thực tế thì cần giải quyết các khuyết điểm của ứng dụng như xây dựng bộ dữ liệu cho chatbot nhiều hơn nữa Nghiên cứu các kĩ thuật sử lí ảnh, cải thiện hiệu suất cũng như tỉ lệ chính xác của việc nhận dạng khuôn mặt Nghiên cứu phát triển mạng neuron để việc giao tiếp với chatbot trở nên tốt hơn. Cải thiện tối đa mức nhận dạng và phân biệt các mẫu câu hỏi.

26

Page 27: daotao.sict.udn.vndaotao.sict.udn.vn/.../2020/08/1596336142-baocaodoan5.docx · Web view4.1.2 Tiến hành cài đặt Python và Anaconda Anaconda là một trình quản lý gói

DANH MỤC TÀI LIỆU THAM KHẢO:

Xây dựng hệ thống kiểm soát nhận dạng khuôn mặt với OpenCV Dlib và Deep Learning, https://viblo.asia/p/xay-dung-he-thong-kiem-soat-nhan-dang-khuon-mat-voi-opencv-dlib-va-deep-learning-4P8566ma5Y3

Python cv2.VideoCapture() Example, https://www.programcreek.com/python/example/85663/cv2.VideoCapture

Xây dựng hệ thống kiểm soát nhận dạng khuôn mặt với OpenCV, https://techtalk.vn/xay-dung-he-thong-kiem-soat-nhan-dang-khuon-mat-voi-opencv-dlib-va-deep-learning.html

27