Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 46 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
46
Dung lượng
1,58 MB
Nội dung
TRƯỜNG ĐẠI HỌC LẠC HỒNG KHOA CÔNG NGHỆ THÔNG TIN - BÁO CÁO NGHIÊN CỨU KHOA HỌC ĐỀ TÀI: ỨNG DỤNG TENSORFLOW XÂY DỰNG HỆ THỐNG NHẬN DIỆN KHUÔN MẶT VÀ PHÁT HIỆN ĐỐI TƯỢNG TRÊN ROBOT NAO CAO MINH TIÊN BIÊN HÒA, THÁNG 11/2017 TRƯỜNG ĐẠI HỌC LẠC HỒNG KHOA CÔNG NGHỆ THÔNG TIN - - BÁO CÁO NGHIÊN CỨU KHOA HỌC ĐỀ TÀI: ỨNG DỤNG TENSORFLOW XÂY DỰNG HỆ THỐNG NHẬN DIỆN KHUÔN MẶT VÀ PHÁT HIỆN ĐỐI TƯỢNG TRÊN ROBOT NAO Sinh viên thực hiện: CAO MINH TIÊN Giáo viên hướng dẫn: Th.S Nguyễn Minh Sơn BIÊN HÒA, THÁNG 11/2017 I LỜI CẢM ƠN Em xin chân thành cám ơn tất giảng viên trường Đại Học Lạc Hồng, thầy cô khoa Công Nghệ Thông Tin giảng dạy hướng dẫn chúng em suốt thời gian chúng em theo học trường Em xin gởi lời cảm ơn đến Th.S Nguyễn Minh Sơn, giáo viên tận tình hướng dẫn chúng em hoàn thành đề tài nghiên cứu khoa học Em xin gửi lời cảm ơn đến giáo viên phản biện, KS Phan Thiện Phước, người tận tình giúp em hồn thành báo cáo cách tốt Em xin cám ơn thầy, cô khoa Công Nghệ Thông Tin có ý kiến đóng góp buổi báo cáo tiến độ Ngoài em xin cám ơn thầy Nguyễn Minh Phúc, giáo viên chủ nhiệm lớp 13SE111 bạn lớp tồn thể gia đình người thân giúp đỡ, động viên chúng em trình thực đề tài Với vốn kiến thức hạn chế điều kiện khách quan khơng cho phép, đề tài em khó tránh khỏi thiếu sót chưa đáp ứng đầy đủ yêu cầu Do em hy vọng tiếp tục nhận ý kiến đóng góp hướng dẫn quý thầy cô để đề tài em hoàn thiện Em xin chân thành cảm ơn Biên Hòa, tháng 11 năm 2017 Sinh viên thực Cao Minh Tiên II MỤC LỤC LỜI CẢM ƠN I MỤC LỤC II DANH MỤC BẢNG V DANH MỤC HÌNH V PHẦN MỞ ĐẦU 1 Lý chọn đề tài Tình hình nghiên cứu 2.1 Ngoài nước 2.2 Trong nước Mục tiêu nghiên cứu Đối tượng phạm vi nghiên cứu 4.1 Đối tượng nghiên cứu 4.2 Phạm vi nghiên cứu Phương pháp nghiên cứu Những đóng góp đề tài vấn đề mà đề tài chưa thực 6.1 Những đóng góp 6.2 Những vấn đề chưa thực Kết cấu đề tài Chương : Tổng quan lý thuyết 1.1 Tổng quan Robot NAO 1.1.1 Giới thiệu tổng quan Robot NAO 1.1.2 Cấu tạo Robot NAO 1.1.3 NAOqi Framework 1.1.3.1 NAOqi Framework gì? 1.1.3.2 Định nghĩa thuật ngữ NAOqi 1.1.3.3 Tổng quan cấu trúc Robot NAO 10 1.2 Tổng quan học máy 11 1.2.1 Machine learning gì? 11 1.2.2 Các phương pháp học máy 12 1.2.3 Giới thiệu phương pháp học máy Supervised Learning 12 1.2.3.1 Supervised Learning gì? 12 1.2.3.2 Phân loại Supervised Learning 12 1.3 Tensorflow 12 1.3.1 Tensorflow gì? 12 1.3.2 Một số khái niệm Tensorflow 13 III 1.3.2.1 Tensor 13 1.3.2.2 Rank 13 1.3.2.3 Shape 13 1.3.2.4 TYPE 14 1.3.3 Giới thiệu số liệu mẫu 14 1.4 Giới thiệu số phần mềm thư viện sử dụng đề tài 15 1.4.1 Phần mềm Anaconda 15 1.4.2 Thư viện scikit-learn 15 1.4.3 Thư viện OpenCV 15 1.4.4 Thư viện Matplotlib 15 1.4.5 Thư viện Pillow hay PIL 16 1.4.6 Thư viện Paramiko 16 1.4.7 Module SCP 16 1.4.8 API Googe Text To Speech 16 1.5 Tiểu kết 16 Chương : Xây dựng hệ thống học máy sử dụng thư viện Tensorflow 17 2.1 Cài đặt môi trường lập trình số thư viện cần thiết 17 2.1.1 Cài đặt phần mềm Anaconda 17 2.1.2 Cài đặt thư viện Tensorflow 17 2.1.3 Cài đặt thư viện Google Text To Speech 18 2.1.4 Cài đặt thư viện OpenCV 18 2.1.5 Cài thư viện hỗ trợ khác 18 2.2 Xây dựng chương trình thu thập liệu hình ảnh khn mặt 18 2.2.1 Sử dụng hệ thống camera phòng B304 18 2.2.2 Sử dụng camera raspberry pi camera laptop 20 2.3 Tổ chức liệu trước cho học máy 21 2.3.1 Tổ chức thư mục hình ảnh 22 2.3.2 Tiến hành xử lý hình ảnh trước cho máy học 23 2.4 Tiến hành cho học máy 24 2.5 Thử nghiệm nhận diện camera 25 2.6 Tiểu kết 27 Chương : Xây dựng ứng dụng nhận diện khuôn mặt Robot NAO 28 3.1 Sử dụng NAOqi API để điều khiển Robot chào 28 3.1.1 Xây dựng module truyền hình ảnh từ Robot NAO lên server 28 3.1.2 Xây dựng module chụp hình lưu phát có khuôn mặt 30 3.1.3 Xác định khuôn mặt từ video thu từ Robot NAO 31 IV 3.1.4 Xây dựng module cho Robot NAO chào 33 3.2 Kết hợp thư viện NAOqi API Google Text To Speech để giúp Robot chào tiếng Việt 34 3.2.1 Xác định khuôn mặt từ video thu từ Robot NAO 34 3.2.2 Xây dựng module tạo file âm chào tiếng Việt 34 3.2.3 Xây dựng module gửi file âm từ Robot NAO lên server 35 3.2.4 Xây dựng module đọc file âm cho Robot NAO 35 3.3 Tiểu kết 36 KẾT LUẬN 37 TÀI LIỆU THAM KHẢO 38 V DANH MỤC BẢNG Bảng 1-1: Một số thông tin Robot NAO Bảng 1-2: Thông tin chi tiết số lượng khớp Robot NAO Bảng 1-3: Thông tin chi tiết số lượng số cảm biến Robot NAO Bảng 1-4: Các định nghĩa NAOqi Bảng 1-5: Rank, đơn vị số học ví dụ 13 Bảng 1-6: Shap Tensorflow 13 Bảng 1-7: Các kiểu liệu Tensorflow 14 Bảng 2-1: Thông tin tập liệu học máy đề tài 21 Bảng 2-2: Kết kiểm tra độ xác tập liệu tác giả hai dataset khuôn mặt 22 Bảng 2-3: Kết so sánh độ xác tập học có số lượng ảnh khác 26 DANH MỤC HÌNH Hình 1-1: Robot NAO Hình 1-2: Cấu tạo Robot NAO Hình 1-3: Ví trí camera Robot NAO Hình 1-4: Cấu trúc tổng quan Robot NAO 10 Hình 1-5: Phân loại học máy 12 Hình 1-6: Phân loại thuật toán Supervised Learning 12 Hình 2-1: Code thu thập hình ảnh từ video camera phịng B304 19 Hình 2-2: Code thu thập liệu theo người 21 Hình 2-3: Quy trình học máy 22 Hình 2-4: Cấu trúc thư mục hình ảnh trước thực xử lý học máy 22 Hình 2-5: Kết Face Detection Data Set and Benchmark năm 2016 23 Hình 2-6: Lệnh chạy chương trình tiền xử lý hình ảnh 23 Hình 2-7: Kết thu sau tiền xử lý 23 Hình 2-8: Quy trình nhận diện khuôn mặt 25 Hình 2-9: Kết sau chạy chương trình nhận diện khn mặt sau học máy 26 Hình 2-10: Kết thử nghiệm tập học 48 hình ảnh với tập test 12 hình 26 Hình 2-11: Kết sau chạy chương trình nhận diện khn mặt sau học máy 26 VI Hình 3-1: Code xử lý kết nối camera Robot NAO vơi server 30 Hình 3-2: Kết chạy chương trình kết nối camera với server 30 Hình 3-3: Xác định giải mã khởi tạo đối tượng VideoWriter để ghi video 30 Hình 3-4: Kiểm tra điều kiện tiến hành lưu video 31 Hình 3-5: Code kiểm tra tạo file lưu trữ danh sách tên Robot NAO gặp ngày 31 Hình 3-6: Code xử lý để đưa lời chào cho Robot NAO 33 Hình 3-7: Code xử lý module cho Robot NAO chào 34 Hình 3-8: Code thực chức chuyển văn thành âm tiếng Việt 34 Hình 3-9: Code gửi file âm từ server Robot NAO 35 Hình 3-10: Code thực chức phát file âm Robot NAO 36 PHẦN MỞ ĐẦU Lý chọn đề tài Trong xã hội đại ngày nay, Robot ngày phát triển, Robot thay người thực công việc mà trước người phải tự làm Ví dụ (Nguồn [6]) như: Nhà hàng It's More Teatime Than Terminator Cơn Sơn, Trung Quốc có hàng chục Robot bé nhỏ dễ thương nấu nướng phục vụ Công ty Moley Robotics London, Anh chế tạo Robot nấu ăn Aiko Chihira, Robot giống hệt người Toshiba công bố Triển lãm điện tử CEATEC ngày 7/10/2014 Aiko khơng nhìn, di chuyển, nói tiếng Nhật cách trơi chảy, mà cịn sử dụng thành thạo ngôn ngữ ký hiệu Pepper nhân viên lễ tân bệnh viện CHR Citadel Bỉ, với nhiệm vụ hướng dẫn cho khách Chú Robot nhỏ mang hình dáng người hai tập đồn Aldebaran Robotics Pháp SoftBank Group phát minh Khi làm việc Robot học hỏi khơng phải làm việc lập trình ban đầu Để Robot có khả công nghệ nhiều công ty lớn nghiên cứu áp dụng lên Robot để xây dựng não cho Robot Đó học máy, tiếng Anh (Machine Learning, viết tắt MC) Học máy mảng khó người khơng chun Nhưng có nhiều thư viện hỗ trợ cho việc học máy, giúp cho việc xây dựng hệ thống học máy trở nên đơn giản như: TensorFlow, Spark MLlib, Scikit-learn, MXNet, Microsoft Cognitive Toolkit, and Caffe Trong thư viện học máy này, có thư viện TensorFlow, thư viện học máy mã nguồn mỡ Google phát triển, với ưu điểm như: Có thể triển khai máy tính hỗ trợ CPU lẫn GPU, thiết bị di động với API Hỗ trợ Deep Learning tốt Cộng đồng hỗ trợ đông, đặc biệt github.com Robot học máy lĩnh vực nằm xu cách mạng cơng nghiệp 4.0 Để bắt kịp với xu với mong muốn lập trình Robot có khả hỗ trợ người việc tiếp tân đồng thời giúp tác giả tiếp cận với thư viện hỗ trơ, tác giả mong muốn thực đề tài với tên là: “Ứng dụng Tensorflow xây dựng hệ thống nhận diện khuôn mặt phát đối tượng Robot NAO” Robot NAO thư viện Tensorflow gì? Sẽ trình bày mục sau Tình hình nghiên cứu Trước phát triển mạnh mẽ cơng nghệ với trí tuệ nhân tạo, thuật tốn nhận diện khn mặt ngày xác áp dụng rộng rãi vào đời sống Các nhà nghiên cứu bắt đầu dành nhiều thời gian cho việc nghiên cứu nhận diện khn mặt Trong phần này, tác giả trình bày qua số nghiên cứu nhận diện khuôn mặt diễn ta nước 2.1 Ngoài nước Trên giới nay, nghiên cứu nhận diện khn đạt kết cao áp dụng vào thực tế nhiều Trong báo [1], nhóm tác giả thực đề tài tiến hành thực việc học dựa mạng lưới xoắn sâu Để kiểm tra kết quả, họ tính độ xác cách tính trung bình đọ xác trăm khung hình video mà máy dị khn mặt thu lại Độ xác phân loại họ thu 95,12% ± 0,39 Nếu sử dụng ngàn khung hình kết thu 95,18% Trong báo [5], báo Deep Face Facebook Nhóm nghiên cứu tiến hành cho huấn luyện tập liệu lớn với số lượng ảnh gắn nhãn 4.000 hình Kết báo thu với kết xác lên đến 97,35% 2.2 Trong nước So với giới, việc nghiên cứu ứng dụng nhận diện khuôn mặt vào đời sống chậm hàng chục năm Nhưng nay, nước ta dần bắt kịp với công nghệ Trong báo “Một phương pháp phân cụm ảnh khuôn mặt hiệu mạng xã hội” tác giả: Cù Việt Dũng, Nguyễn Hữu Quỳnh, Nguyễn Thị Thanh Tân trích “Tóm tắt báo cáo Hội nghị khoa học Quốc gia lần thứ VIII” Các tác giả đề xuất phương pháp phận cụm hình ảnh khn mặt mạng xã hội dựa đặc trưng PCA kết hợp với ý tưởng phân cụm phân cấp Để kiểm tra độ xác thuật tốn này, tác giả nghiên cứu sử dụng bốn tập liệu là: faces94, face95, face96 grimace Với tổng cộng 7000 hình ảnh chụp từ 395 người với trạng thái biểu cảm khác Trong trường hợp tốt nhất, kết phương pháp có độ xác lên đến 95% Mục tiêu nghiên cứu Đề tài thực với mục tiêu: Tìm hiểu Robot NAO Nghiên cứu thư viện Tensorflow Sử dụng OpenCV nghiên cứu phương pháp truy tìm khn mặt như: PCA, Haar-like, LDA, … để nhận diện khuôn mặt Xây dựng hệ thống phát nhận diện khuôn mặt dựa Robot NAO thư viện Tensorflow Xây dựng chương trình cho Robot NAO nói tiếng Việt 24 2.4 Tiến hành cho học máy Khi học máy, chương trình thực cơng việc: Tiến hành training thơng qua tập hình ảnh training Kiểm tra độ xác thơng qua tập hình ảnh test Chương trình học máy tác giả nghiên cứu [7] áp dụng vào nghiên cứu máy học Để tiến hành học máy, thực câu lệnh sau: python /home/serverb304/NCKHK13/MinhTien/facenet/src/classifier.py TRAIN /home/serverb304/NCKHK13/MinhTien/facenet/CASIA/Output_train /home/serverb304/NCKHK13/MinhTien/facenet/CASIA/model/201705 11-185253.pb /home/serverb304/NCKHK13/MinhTien/facenet/CASIA/result/my_clas sifier.pkl - Cấu trúc câu lệnh sau: python path_python_file path_save_result mode path_to_image path_to_model python: lệnh để thực thi chương trình python path_python: đường dẫn tới file python thực thi mode: Có chế độ: TRAIN chế độ học CLASSIFY chế độ kiểm tra path_to_image: Đường dẫn tới thư mục hình ảnh chơ máy học path_to_model: đường dẫn tới file model cần sử dụng path_save_result: đường dẫn tới thư mục lưu kết Để kiểm tra tra độ xác tập liệu ngẫu nhiên thực thi lệnh sau: python /home/serverb304/NCKHK13/MinhTien/facenet/src/classifier.py CLASSIFY /home/serverb304/NCKHK13/MinhTien/facenet/CASIA/Output_test /home/serverb304/NCKHK13/MinhTien/facenet/CASIA/model/201705 11-185253.pb /home/serverb304/NCKHK13/MinhTien/facenet/CASIA/result/my_clas sifier.pkl - Cấu trúc câu lệnh sau: python path_python_file path_save_result mode path_to_image path_to_model python: lệnh để thực thi chương trình python path_python: đường dẫn tới file python thực thi 25 mode: Có chế độ: TRAIN chế độ học CLASSIFY chế độ kiểm tra path_to_image: Đường dẫn tới thư mục hình kiểm tra path_to_model: đường dẫn tới file model sử dụng path_save_result: đường dẫn tới file kết sau cho máy học 2.5 Thử nghiệm nhận diện camera Quy trình nhận diện khn mặt: Rút trích đặc trưng Input Detect Face Crop Face Phân loại Dataset Output (Tên) Hình 2-8: Quy trình nhận diện khn mặt Để kiểm tra trực tiếp kết thông qua camera, tiến hành chạy lệnh sau: (Tensorflow) serverb304@serverb304:~/NCKHK13/MinhTien/facerecognition$ pyth on facerecognition.py Câu lệnh có chức thực thi chương trình có chức kiểm tra video hình ảnh truyền từ camera có khn mặt máy học được, đồng thời chụp lưu lại khn mặt có video hình ảnh lấy từ camera Kết Hình 2-9: Kết sau chạy chương trình nhận diện khn mặt sau học máy 26 Hình 2-9: Kết sau chạy chương trình nhận diện khn mặt sau học máy Ngồi tác giả cịn chia tập học tập học với số lượng hình ảnh 16, 32 48 hình ảnh Sau kiểm tra so với tập test đạt kết sau: Bảng 2-3: Kết so sánh độ xác tập học có số lượng ảnh khác Số lượng hình Độ xác 16 32 48 89,2% 89,7% 89,7% Từ Bảng 2-3: Kết so sánh độ xác tập học có số lượng ảnh khác nhau, tác giả nhận thấy rằng, với tập liệu học thu thập phòng B304 với điều kiện ánh sáng tương tự nên độ tương đồng ảnh nhau, với số lượng ảnh học 32 ảnh 48 ảnh phần trăm khơng thay đổi Vì để nâng cao độ xác phương pháp học này, cần phải thu thập ảnh nhiều môi trường thời gian khác Dưới hình ảnh kết lúc thử kết tập test với số lượng ảnh học 48 ảnh (Hình 2-10: Kết thử nghiệm tập học 48 hình ảnh với tập test 12 hình) … Hình 2-10: Kết thử nghiệm tập học 48 hình ảnh với tập test 12 hình 27 2.6 Tiểu kết Qua chương 2, tác giả xây dựng hệ thống học máy nhận diện khuôn mặt, từ thu thập liệu, cho học máy cuối tiến hành kiểm tra thực nghiệm Sang chương 3, tác giả tiến hành ứng dụng việc nhận diện khn mặt vào Robot NAO Robot NAO trở thành người máy thông minh 28 Chương : Xây dựng ứng dụng nhận diện khuôn mặt Robot NAO Từ kết nhận diện khn mặt sau thực q trình học máy, tác giả đến việc kết hợp kết trả với Robot NAO để giúp Robot NAO thông minh Ý tưởng tác giả cho Robot NAO chào người mà hệ thống học trước Mỗi ngày Robot chào người lần Để thực việc xây dựng hệ thống này, tác giả có hai giải pháp: Sử dụng NAOqi API để điều khiển Robot chào Ưu điểm giải pháp tốc độ nhanh Nhưng điểm yếu cách xử lý Robot NAO chưa thể thực việc chào người tiếng Việt phần mềm Robot chưa hỗ trợ Lựa chọn hai, tác giả kết hợp thư viện NAOqi API Google Text To Speech để giúp Robot chào tiếng Việt Ưu điểm giải pháp Robot nói tiếng Việt nhược điểm chậm phương pháp phụ thuộc nhiều vào tốc độ đường truyền Internet Trước vào xây dựng chương trình, có lưu ý NAOqi API hỗ trợ lập trình Python 2.7.x, cịn cơng cụ học máy lại tác giả xây dựng nên tảng Python 3.6.3 Vì vậy, để xây dựng chương trình này, tác giả kết hợp hai phiên Python 2.7.x Python 3.6.3 Bây tác giả xin trình bày trình xây dựng hai giải pháp 3.1 Sử dụng NAOqi API để điều khiển Robot chào 3.1.1 Xây dựng module truyền hình ảnh từ Robot NAO lên server Để xây dựng hương trình thực chức này, tác giả sử dụng ALProxy để kết nối tới Robot NAO, sau dùng module ALVideoDevice để sử dụng camera Robot NAO Dưới code chương trình: # vim: set fileencoding=utf-8 : import sys import numpy as np import cv2 from naoqi import ALProxy # Kiểm tra tham số đầu vào chạy chương trình command # Lệnh chạy chương trình là: python tenfile.py ip_address_nao port_nao if(len(sys.argv)