--- --- 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á
Trang 1- -
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
Trang 2- -
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
Trang 3LỜI CẢM ƠN
Em xin chân thành cám ơn tất cả các giảng viên trường Đại Học Lạc Hồng, các thầy cô khoa Công Nghệ Thông Tin đã giảng dạy và hướng dẫn chúng em trong suốt thời gian chúng em theo học tại trường
Em xin gởi lời cảm ơn đến Th.S Nguyễn Minh Sơn, là 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 này
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 có thể hoàn thành cuốn báo cáo này một cách tốt nhất
Em xin cám ơn các thầy, các cô trong khoa Công Nghệ Thông Tin đã có những ý kiến đóng góp trong các buổi báo cáo tiến độ
Ngoài ra em xin cám ơn thầy Nguyễn Minh Phúc, giáo viên chủ nhiệm lớp 13SE111 và các bạn trong lớp cùng toàn thể gia đình và người thân đã giúp đỡ, động viên chúng em trong quá trình thực hiện đề tài này
Với vốn kiến thức còn hạn chế cùng những điều kiện khách quan không cho phép, đề tài của em khó tránh khỏi những thiếu sót cũng như chưa đáp ứng đầy đủ các yêu cầu Do đó em hy vọng tiếp tục nhận được những ý kiến đóng góp và hướng dẫn của quý thầy cô để đề tài của em được hoàn thiện hơ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 hiện
Cao Minh Tiên
Trang 4MỤ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
1 Lý do chọn đề tài 1
2 Tình hình nghiên cứu 1
2.1 Ngoài nước 2
2.2 Trong nước 2
3 Mục tiêu nghiên cứu 2
4 Đối tượng và phạm vi nghiên cứu 3
4.1 Đối tượng nghiên cứu 3
4.2 Phạm vi nghiên cứu 3
5 Phương pháp nghiên cứu 3
6 Những đóng góp mới của đề tài và những vấn đề mà đề tài chưa thực hiện được 3
6.1 Những đóng góp mới 3
6.2 Những vấn đề chưa thực hiện được 3
7 Kết cấu của đề tài 3
Chương 1 : Tổng quan lý thuyết 5
1.1 Tổng quan về Robot NAO 5
1.1.1 Giới thiệu tổng quan về Robot NAO 5
1.1.2 Cấu tạo của Robot NAO 6
1.1.3 NAOqi Framework 8
1.1.3.1 NAOqi Framework là gì? 8
1.1.3.2 Định nghĩa các thuật ngữ trong NAOqi 8
1.1.3.3 Tổng quan về cấu trúc của Robot NAO 10
1.2 Tổng quan về học máy 11
1.2.1 Machine learning là gì? 11
1.2.2 Các phương pháp học máy 12
1.2.3 Giới thiệu về phương pháp học máy Supervised Learning 12
1.2.3.1 Supervised Learning là gì? 12
1.2.3.2 Phân loại Supervised Learning 12
1.3 Tensorflow 12
1.3.1 Tensorflow là gì? 12
1.3.2 Một số khái niệm cơ bản của Tensorflow 13
Trang 51.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 một số bộ dữ liệu mẫu 14
1.4 Giới thiệu về một số phần mềm và thư viện sử dụng trong đề 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 2 : 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 và một 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 các thư viện hỗ trợ khác 18
2.2 Xây dựng chương trình thu thập dữ liệu hình ảnh khuôn mặt 18
2.2.1 Sử dụng hệ thống camera trong phòng B304 18
2.2.2 Sử dụng camera trên raspberry pi hoặc camera trên laptop 20
2.3 Tổ chức dữ liệu trước khi 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 khi 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 trên camera 25
2.6 Tiểu kết 27
Chương 3 : Xây dựng ứng dụng nhận diện khuôn mặt trên 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 và lưu khi phát hiện có một khuôn mặt 30
3.1.3 Xác định khuôn mặt từ video thu được từ Robot NAO 31
Trang 63.1.4 Xây dựng module cho Robot NAO chào 33
3.2 Kết hợp giữa thư viện NAOqi API và Google Text To Speech để giúp Robot có thể chào được tiếng Việt 34
3.2.1 Xác định khuôn mặt từ video thu được từ Robot NAO 34
3.2.2 Xây dựng module tạo ra file âm thanh chào bằng tiếng Việt 34
3.2.3 Xây dựng module gửi file âm thanh từ Robot NAO lên server 35
3.2.4 Xây dựng module đọc file âm thanh cho Robot NAO 35
3.3 Tiểu kết 36
KẾT LUẬN 37
TÀI LIỆU THAM KHẢO 38
Trang 7DANH MỤC BẢNG
Bảng 1-1: Một số thông tin cơ bản của Robot NAO 5
Bảng 1-2: Thông tin chi tiết số lượng khớp trên Robot NAO 6
Bảng 1-3: Thông tin chi tiết số lượng một số cảm biến trên Robot NAO 7
Bảng 1-4: Các định nghĩa trong NAOqi 8
Bảng 1-5: Rank, đơn vị số học và ví dụ 13
Bảng 1-6: Shap trong Tensorflow 13
Bảng 1-7: Các kiểu dữ liệu trong Tensorflow 14
Bảng 2-1: Thông tin tập dữ liệu học máy trong đề tài 21
Bảng 2-2: Kết quả kiểm tra độ chính xác của tập dữ liệu của tác giả trên hai dataset khuôn mặt 22
Bảng 2-3: Kết quả so sánh độ chính xác trên các tập học có số lượng ảnh khác nhau 26
DANH MỤC HÌNH Hình 1-1: Robot NAO 5
Hình 1-2: Cấu tạo Robot NAO 6
Hình 1-3: Ví trí các camera trên Robot NAO 7
Hình 1-4: Cấu trúc tổng quan của 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 dữ liệu theo từng 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 và hình ảnh trước khi thực hiện xử lý học máy 22
Hình 2-5: Kết quả 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 quả thu được 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 quả sau khi chạy chương trình nhận diện khuôn mặt sau khi học máy 26
Hình 2-10: Kết quả thử nghiệm trên tập học 48 hình ảnh với tập test 12 hình 26
Hình 2-11: Kết quả sau khi chạy chương trình nhận diện khuôn mặt sau khi học máy 26
Trang 8Hình 3-1: Code xử lý kết nối camera Robot NAO vơi server 30Hình 3-2: Kết quả khi chạy chương trình kết nối camera với server 30Hình 3-3: Xác định bộ giải mã khởi tạo đối tượng VideoWriter để ghi
video 30Hình 3-4: Kiểm tra điều kiện và tiến hành lưu video 31Hình 3-5: Code kiểm tra và tạo file lưu trữ danh sách tên Robot NAO gặp
trong ngày 31Hình 3-6: Code xử lý để đưa ra lời chào cho Robot NAO 33Hình 3-7: Code xử lý module cho Robot NAO chào 34Hình 3-8: Code thực hiện chức năng chuyển văn bản thành âm thanh tiếng Việt 34Hình 3-9: Code gửi file âm thanh từ server về Robot NAO 35Hình 3-10: Code thực hiện chức năng phát một file âm thanh trên Robot NAO 36
Trang 9PHẦN MỞ ĐẦU
1 Lý do chọn đề tài
Trong xã hội hiện đại ngày nay, Robot đang ngày một phát triển, Robot dần dần thay thế con người thực hiện những công việc mà trước đây con người phải tự làm Ví dụ (Nguồn [6]) như:
Nhà hàng It's More Teatime Than Terminator tại Côn Sơn, Trung Quốc có hàng chục Robot bé nhỏ dễ thương có thể nấu nướng và phục vụ
Công ty Moley Robotics tại London, Anh đã chế tạo ra Robot nấu ăn đầu tiên
Aiko Chihira, một Robot giống hệt như người được Toshiba công bố tại Triển lãm điện tử CEATEC ngày 7/10/2014 Aiko không nhỉ nhìn, di chuyển, nói tiếng Nhật một cách trôi chảy, mà còn có thể sử dụng thành thạo ngôn ngữ ký hiệu
Pepper là một nhân viên lễ tân tại bệnh viện CHR Citadel tại Bỉ, với nhiệm
vụ hướng dẫn cho khách Chú Robot nhỏ mang hình dáng con người này
do hai tập đoàn Aldebaran Robotics của Pháp và SoftBank Group cùng phát minh ra
Khi làm việc Robot sẽ luôn học hỏi chứ không phải chỉ làm những việc như
đã lập trình ban đầu Để Robot có khả năng đó thì một công nghệ đang được nhiều công ty lớn nghiên cứu được áp dụng lên Robot để xây dựng bộ não cho Robot
Đó chính là học máy, tiếng Anh là (Machine Learning, viết tắt là MC) Học máy
là một mảng rất khó đối với những người không chuyên Nhưng hiện nay có rất nhiều thư viện hỗ trợ cho việc học máy, giúp cho việc xây dựng một hệ thống học
máy trở nên đơn giản hơn như: TensorFlow, Spark MLlib, Scikit-learn, MXNet, Microsoft Cognitive Toolkit, and Caffe
Trong những thư viện học máy này, có thư viện TensorFlow, một thư viện
học máy mã nguồn mỡ do Google phát triển, với những ưu điểm của nó như:
Có thể triển khai trên máy tính hỗ trợ CPU lẫn GPU, trên các thiết bị di động chỉ với một API duy nhất
Hỗ trợ Deep Learning rất tốt
Cộng đồng hỗ trợ đông, đặc biệt là trên github.com
Robot và học máy cũng là những lĩnh vực đang nằm trong xu thế của cuộc cách mạng công nghiệp 4.0 Để bắt kịp với xu thế đó cùng với mong muốn lập trình được một Robot có khả năng hỗ trợ con người trong việc tiếp tân đồng thời giúp tác giả tiếp cận được với một thư viện hỗ trơ, tác giả mong muốn thực hiện một đề 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 và phát hiện đối tượng trên Robot NAO” Robot NAO và thư viện Tensorflow
là gì? Sẽ được trình bày ở các mục sau
2 Tình hình nghiên cứu
Trước sự phát triển mạnh mẽ công nghệ cùng với đó là trí tuệ nhân tạo, các thuật toán nhận diện khuôn mặt ngày càng chính xác hơn và được áp dụng rộng rãi
Trang 10và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 về nhận diện khuôn mặt Trong phần này, tác giả sẽ trình bày qua một số nghiên cứu về nhận diện khuôn mặt diễn ta trong và ngoài nước
là 95,12% ± 0,39 Nếu sử dụng một ngàn khung hình đầu tiên thì kết quả thu được
là 95,18%
Trong bài báo [5], đây là một bài báo về Deep Face của Facebook Nhóm nghiên cứu đã tiến hành cho huấn luyện tập dữ liệu lớn với số lượng ảnh được gắn nhãn là hơn 4.000 hình Kết quả của bài báo này thu được với kết quả chính xác lên đến 97,35%
2.2 Trong nước
So với thế 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ơn hàng chục năm Nhưng hiện nay, nước ta cũng dần bắt kịp với công nghệ này
Trong bài báo “Một phương pháp phân cụm ảnh khuôn mặt hiệu quả trên mạng xã hội” của các tác giả: Cù Việt Dũng, Nguyễn Hữu Quỳnh, Nguyễn Thị Thanh Tân trích trong cuốn “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 một phương pháp phận cụm hình ảnh khuôn mặt trên
mạng xã hội dựa trên các đặc trưng PCA kết hợp với các ý tưởng phân cụm phân cấp Để kiểm tra độ chính xác của thuật toán này, các tác giả nghiên cứu đã sử dụng bốn tập dữ liệu đó là: faces94, face95, face96 và grimace Với tổng cộng
7000 hình ảnh được chụp từ 395 người với các trạng thái biểu cảm khác nhau Trong trường hợp tốt nhất, kết quả của phương pháp này có độ chính xác lên đến 95%
3 Mục tiêu nghiên cứu
Đề tài thực hiện với các mục tiêu:
Tìm hiểu về Robot NAO
Nghiên cứu về thư viện Tensorflow
Sử dụng OpenCV nghiên cứu phương pháp truy tìm khuôn mặt như: PCA, Haar-like, LDA, … để nhận diện khuôn mặt
Xây dựng được hệ thống phát hiện và nhận diện khuôn mặt dựa trên Robot NAO và thư viện Tensorflow
Xây dựng chương trình cho Robot NAO nói được tiếng Việt
Trang 114 Đối tượng và phạm vi nghiên cứu
4.1 Đối tượng nghiên cứu
Môi trường nghiên cứu: Phòng B304, Robot NAO
Điều kiện ánh sáng: Phòng B304 được bật tất cả các đèn
Số người hệ thống nhận diện được: 50 người
Số người hệ thống nhận diện được trong một lúc: 1 người trên 1 lần
5 Phương pháp nghiên cứu
Nghiên cứu về cách thức làm việc với camera và âm thanh trên Robot NAO
Nghiên cứu báo cáo – bài báo về phương pháp nhận diện khuôn mặt: [1] [2], [3] [4]
Thực nghiệm bộ công cụ thư viện Tensorflow để nhận diện một đối tượng, nhận diện khuôn mặt
6 Những đóng góp mới của đề tài và những vấn đề mà đề tài chưa thực hiện được
6.1 Những đóng góp mới
Đưa bài toán lý thuyết vào thực tiễn Cụ thể ứng dụng chào đón khách mời
Giúp Robot NAO thông minh hơn
Có thể áp dụng sản phẩm vào việc lễ tân
Áp dụng công nghệ nhận diện khuôn mặt vào các mục đích khác nhau một cách dễ dàng
6.2 Những vấn đề chưa thực hiện được
Chưa cho Robot chào được nhiều người một lúc
Chưa thu thập được nhiều hình ảnh của nhiều người
7 Kết cấu của đề tài
Luận văn được chia làm ba phần: phần mở đầu, phần nội dung và phần kết luận
Phần mở đầu
Nêu lý do chọn đề tài, tổng quan tình hình phát triển, mục tiêu nghiên cứu đề tài, đối tượng, phạm vi, phương pháp nghiên cứu cũng như những đóng góp mới của đề tài Bên cạnh đó cũng chỉ ra mặt hạn chế mà đề tài chưa thực hiện được để giúp mọi người có cái nhìn rõ hơn
Trang 12Phần nội dung chính: gồm 3 chương
Chương 1: Tổng quan lý thuyết
Trong chương này tác giả sẽ giới thiệu về Robot NAO, trình bày tổng quan
về lý thuyết học máy, phát hiện và nhận diện khuôn mặt Đồng thời sẽ giới thiệu
cơ bản về thư viện học máy Tensorflow và một số thư viện mà tác giả đã sử dụng
trong đề tài cùng với chức năng của những thư viện đó
Chương 2: Xây dựng hệ thống học máy
Trong chương này tác giả trình bày chi tiết về phương pháp thu thập dữ liệu
hình ảnh khuôn mặt, cho máy học và nhận diện những khuôn mặt mà máy đã học
được
Chương 3: Xây dựng ứng dụng nhận diện khuôn mặt trên Robot NAO
Trong chương này tác giả nêu cách xây dựng chương trình nhận diện khuôn
mặt cho Robot NAO cùng với việc cho Robot NAO chào người mà Robot NAO
nhìn thấy bằng cả hai ngôn ngữ là tiếng Anh và tiếng Việt
Phần kết luận
Đưa ra những kết luận và kiến nghị về chương trình đã xây dựng
Trang 13Chương 1 : Tổng quan lý thuyết 1.1 Tổng quan về Robot NAO
Trong những năm gần đây, Robot đang thay thế và hỗ trợ con người trong nhiều lĩnh vực như sản xuất, công việc nặng nhọc và dịch vụ Phạm vi ứng dụng của Robot sẽ được mở rộng hơn trong tương lai gần Đặc biệt, Robot hình người đang thu hút nhiều sự chú ý nhất so với các loại Robot khác vì chúng trông giống con người nên có vẻ thân thiện hơn và được công nhận là phù hợp để giúp đỡ con người Ngày càng có nhiều Robot hình người được chế tạo, và trong số đó, Robot NAO từ công ty Aldebaran Robotics là Robot hình người nổi tiếng nhất thế giới đang được sử dụng trong giáo dục và nghiên cứu
Các tương tác đa dạng trên Robot NAO có thể được thực hiện qua mạng lưới không dây có dây kích hoạt giao tiếp, camera, cảm biến hồng ngoại, micro, loa và đèn LED Phần mềm dựa trên hệ điều hành Linux mã nguồn mở bản nhúng và hỗ trợ các ngôn ngữ lập trình như C, C++, URBI, Python và Net Framework Cụ thể hơn, ta sẽ đi sâu vào phần cứng và phần mềm của Robot
Dưới đây tác giả chỉ trình bày cấu tạo một cách tổng quan về Robot NAO, để biết thêm chi tiết có thể truy cập vào
1.1.1 Giới thiệu tổng quan về Robot NAO
Bảng 1-1: Một số thông tin cơ bản của Robot NAO
5 Hệ điều hành Gentoo (GNU/Linux)
Trang 14Hệ thống NAO sử dụng hệ điều hành Gentoo Linux Hoạt động tổng thể của NAO được quản lý bởi bộ khung NAOqi khi người dùng và hệ thống giao tiếp với nhau DCM (bộ quản lý giao tiếp thiết bị - Device Communication Manager) quản
lý giao tiếp giữa các thiết bị NAO như cơ cấu chấp hành và các cảm biến
Kiến trúc mở được thể hiện một cách đầy hào hứng trong môi trường phát triển của NAO Phần mềm và các công cụ phần mềm được cung cấp để có thể sử dụng với các hệ điều hành Windows, Mac OSX và Linux
1.1.2 Cấu tạo của Robot NAO
Cấu hình tổng thể
Hình 1-2: Cấu tạo Robot NAO
Bảng 1-2: Thông tin chi tiết số lượng khớp trên Robot NAO và Bảng 1-3: Thông tin chi tiết số lượng một số cảm biến trên Robot NAO mô tả chi tiết về các khớp và cảm biến trên robot NAO
Bảng 1-2: Thông tin chi tiết số lượng khớp trên Robot NAO
Trang 15Bảng 1-3: Thông tin chi tiết số lượng một số cảm biến trên Robot NAO
Phần đầu của NAO có một hệ thống nhúng để điều khiển toàn diện, một
vi điều khiển ARM trong ngực để điều khiển động cơ và năng lượng
Hệ thống thị giác
Robot NAO có 2 camera như:
Camera trên tập trung vào phía trước trong khi camera dưới tập trung vào phần chân
Hệ thống thị giác có thể được dùng để thực hiện nhận diện điểm mốc, nhận diện gương mặt, nhận diện vật thể, ghi hình
Âm thanh
Robot NAO có 4 micro: một ở mỗi bên tai, một ở phía trước và một ở sau đầu
Có 2 loa: mỗi loa gắn tương ứng với một bên tai
Các loa có thể được sử dụng để chơi nhạc và đọc văn bản do người dùng nhập Bốn micro có thể sử dụng để ghi âm giọng nói, chúng còn có chức năng nhận diện vị trí phát ra âm thanh
Hình 1-3: Ví trí các camera trên Robot NAO
Trang 16Phần mềm
NAO cung cấp các phần mềm phát triển là Choregraphe, NAOqi, và Monitor Choregraphe là một phần mềm đồ họa cho phép người dùng có thể lập trình với Robot NAO một cách đơn giản bằng các thao tác kéo thả NAOqi là một framework cho phép người dùng có thể lập trình cho Robot NAO thông qua một file python, địa chỉ IP và Port của Robot NAO NAOqi cũng là phương thức chính tác giả dùng để lập trình cho Robot NAO trong đề tài của tác giả Ở mục1.1.3 tác giả sẽ nói rõ hơn về NAOqi
1.1.3 NAOqi Framework
1.1.3.1 NAOqi Framework là gì?
NAOqi là tên của phần mềm chạy trên Robot NAO và điều khiển nó NAOqi Framework là một framework được sử dụng để lập trình trên Robot NAO
Framework này cho phép giao tiếp đồng nhất giữa các module khác nhau (chuyển động, âm thanh, video), lập trình đồng nhất và chia sẻ thông tin đồng nhất
1.1.3.2 Định nghĩa các thuật ngữ trong NAOqi
Bảng 1-4: Các định nghĩa trong NAOqi
Broker
Broker là một chương trình tiếp nhận và thực hiện các lệnh từ các địa chỉ IP và cổng cụ thể NAOqi($AL_DIR/bin) được gọi là «main
Audioout(TextToSpeech) là một broker độc lập kết nối tới NAOqi
Module (lớp chuyên biệt cho ALModule)
Module (mô đun) là một lớp bao gồm các hàm cho chuyển động của Robot (bao gồm motion, TextToSpeech, led, vv) Thư viện gọi
ra từ $AL_DIR/modules/lib/autoload.ini cũng được gọi là một mô đun Khi gọi ra một thư viện từ NAOqi, các đối tượng của mô đun được khởi tạo một cách có hệ thống Các mô đun luôn được kết nối với các broker
Proxy
Proxy được sử dụng để truy cập vào mô đun Để gọi ra một phương thức từ mô đun, bạn phải tạo một proxy cho mô đun
Trang 17CMake
CMake tạo ra dự án phù hợp cho hệ điều hành mong muốn (OSX, Linux, Win32) và IDE (Visual Studio,
Eclipse, vv) NAOqi yêu cầu CMake phiên bản 2.6 hoặc cao hơn
Remote
Các chức năng Remote là các hàm được thực hiện trong các mô đun có thể thực hiện khác
IPC Giao tiếp liên quá trình
IPPC Thủ tục gọi liên quá trình
Trang 18Mutex Quản lý các phần quan trọng
1.1.3.3 Tổng quan về cấu trúc của Robot NAO
Phần này sẽ giải thích lý thuyết về cấu trúc NAOqi Đầu tiên, sẽ xác định các thành phần phân phối và vai trò của mô đun và giải thích một số cách tương tác giữa chúng
Bộ khung NAOqi hoạt động bằng cách để Choregraphe, Monitor, mô đun chuyển động và mô đun âm thanh truyền thông tin cho nhau NAOqi được thực hiện bằng cách để Broker truyền thông tin và lệnh Tất cả các phần
tử trong Hình 1-4: Cấu trúc tổng quan của Robot NAO hoạt động cùng nhau
để thực hiện nhiều động tác đa dạng Các thành phần cấu hình nên bộ khung NAOqi được giải thích sau đây
Module: Module vừa là một lớp và một thư viện sử dụng hàm và API
(giao diện lập trình ứng dụng– Application Programming Interface) được định nghĩa trọng ALModule để lấy thông tin hay điều khiển theo từng mô đun
Hình 1-4: Cấu trúc tổng quan của Robot NAO
Trang 19 Giao tiếp (Communication): Giao tiếp sử dụng Thủ tục gọi hàm lân
cận (LPC) hoặc Thủ tục gọi hàm từ xa (RPC) để kết nối tới NAO và trao đổi thông tin
ALmemory: ALMemory là bộ nhớ của Robot Bất kỳ mô đun nào
cũng có thể sử dụng hay đọc dữ liệu này và có thể theo dõi các sự kiện
Nó có thể được gọi ra khi một sự kiện xảy ra ALMemory là một mảng của ALValue
Nội quan (Introspection): Nội quan là yếu tố mặc định giám sát các
hàm cho API của Robot, dung lượng bộ nhớ, giám sát và các cử động Robot nhận ra tất cả các hàm API có thể sử dụng Ngoài ra, những gì tạo ra một thư viện sẽ tự động xóa các hàm API liên quan Các hàm được định nghĩa trong mô đun có thể được thêm vào API bằng cách dùng BIND_METHOD BIND_METHOD được định nghĩa trong almodule.h
Trình thông dịch Python (Python interpreter): Là một trình thông
dịch được dùng để thông dịch và xử lý các lệnh Python trong NAOqi
Lớp bao gói Python (Python wrapper): Lớp bao gói Python cho phép
bạn sử dụng các hàm với cùng tên trong cả C++ và Python
XML: XML là một hình thức được sử dụng để lưu dữ liệu tương thích
proxy: Tất cả các mô đun của Aldebaran đều đã được mô đun hóa
Thay vì trực tiếp tham chiếu đến các tập tin mô đun khác, bạn có thể yêu cầu Proxy tìm mô đun tương ứng Nếu mô đun không tồn tại, một ngoại lệ sẽ xuất hiện Người dùng có thể gọi hàm hay mô đun tương ứng qua Proxy từ hai broker độc lập, mainBroker( gọi hàm lân cận) và myBroker( gọi hàm từ xa)
ALValue: Để tương thích, một số mô đun hoặc phương thức của
NAOqi được lưu theo một kiểu dữ liệu cụ thể trong ALValue
Trang 20Learning hay còn gọi là học có
giám sát sẽ được tác giả chọn để
thực hiện đề tài vì phương pháp
này cho phép tác giả có thể kiểm
soát được dữ liệu học một cách
chính xác Vì vậy trong luận văn
này chỉ xin phép trình bày về
phương pháp này
1.2.3 Giới thiệu về phương pháp học máy Supervised Learning
1.2.3.1 Supervised Learning là gì?
Supervised Learning là một hệ thống được cung cấp trước đầu vào và đầu ra
Dữ liệu đầu vào và đầu ra được phân loại và dán nhãn để tạo cơ sở cho quá trình xử lý dữ liệu trong tương lai
Ví dụ: Trong đề tài của tác giả, dữ liệu đầu vào là hình ảnh của 50 người, hình ảnh của người nào sẽ được bố trí ở thư mục của người đó, tên của thư mục chính
là tên của người đó
1.2.3.2 Phân loại Supervised Learning
Thuật toán Supervised Learning
Regression: Kết quả trả về là một số
thực dao động trong (−∞,∞) Ví dụ:
Các hệ thống dự đoán giá xăng, giá cổ
phiếu Mỗi ngày nó sẽ đưa ra các dự
đó về giá cho ngày hôm sau
Thuật toán Supervised Learning
Classification: Kết quả trả về của nó là
một trong tất cả các nhãn hệ thống đã
được học Ví dụ: Trong hệ thống nhận
diện khuôn mặt, sau khi hệ thống đã
học được một số khuôn mặt Khi ta
đưa vào một tấm ảnh khuôn mặt đã
được học thì kết quả trả về sẽ là nhãn của
Hình 1-6: Phân loại thuật toán Supervised Learning
Trang 21 Hiện tại Tensorflow hỗ trợ trên 3 nền tảng:
- Trên máy tính: Hộ trợ Windows, Linux, Mac OS Chạy trên CPU hoặc GPU
- Trên điện thoại: Hỗ trợ Android, iOS
- Trên hệ thống nhúng: Hỗ trợ trên Raspberry Pi
Phần hướng dẫn cài đặt sẽ được tác giả trình bày ở mục 2.1.2
1.3.2 Một số khái niệm cơ bản của Tensorflow
- Shap là số chiều của tensor
Bảng 1-6: Shap trong Tensorflow
Trang 22n [D0, D1, .,
[D(n-1)]
n-D 1 tensor n chiều có
shap [D0, D1, ., [D(n-1)]
1.3.2.4 TYPE
- Là kiểu dữ liệu số trong tensor
Bảng 1-7: Các kiểu dữ liệu trong Tensorflow
Kiểu dữ liệu Kiểu dữ liệu python
1.3.3 Giới thiệu một số bộ dữ liệu mẫu
Trong Tensorflow hiện có thể sử dụng được rất nhều bộ dữ liệu mẫu như:
- Iris: một bộ dữ liệu nhỏ về hoa;
- MNIST: một bộ dữ liệu về chữ viết tay
- CIFAR-10: tập dữ liệu CIFAR-10 bao gồm 60000 hình ảnh 32x32 màu
trong 10 lớp, với 6000 hình ảnh trên mỗi lớp Có 50000 hình ảnh đào tạo
và 10000 hình ảnh thử nghiệm Mười tập dữ liệu này gồm: máy bay, ô tô, chim, mèo, nai ,ếch, ngựa, tàu chở hàng
- CASIA-WebFace:
Hiện nay, công nghệ Big Data và mạng lưới thần kinh sâu đang được đẩy mạnh phát triển Chính vì vậy, hiệu quả nhận biết khuôn mặt cũng ngày càng chính xác hơn Sử dụng các dataset lớn nhưng không được công khai, một số nhóm nghiên cứu đã đạt được hiệu suất rất cao trên Labeled Faces in the Wild (LFW) đạt được từ 97% - 99% Mặc dù có nhiều triển khai mã nguồn
mở của CNN, nhưng không có tập dữ liệu khuôn mặt lớn nào được công khai Tình hình hiện tại, những tổ chức nghiên cứu về nhận diện khuôn mặt công nhận rằng dữ liệu khuôn mặt quan trọng hơn thuật toán Đây chính là nguyên nhân hình thành nên tập dữ liệu CASIA-WebFace
Trang 23Tập dữ liệu CASIA-WebFace được nhóm nghiên cứu bằng cách thu thập hình ảnh bán tự động trên Internet Hiện tại bộ dữ liệu chứa khoảng 10.575 đối tượng và 494.414 hình ảnh
- Bộ dữ liệu khuôn mặt MS-Celeb-1M:
Tập dữ liệu này chưa khoảng 100.000 người nổi tiếng Các hình ảnh được thu thập qua internet, mỗi người chứa khoảng 100 tấm hình
1.4 Giới thiệu về một số phần mềm và thư viện sử dụng trong đề tài
1.4.1 Phần mềm Anaconda
Anaconda là một phần mềm là một phân phối Python đặc biệt phổ biến cho phân tích dữ liệu và tính toán khoa học Nó có chứa cuda, một bộ quả lý các gói cài đặt: NumPy, SciPy, Matplotlib, Pandas, IPython, Cython, scikit-learn giúp cho cho việc cài đặt các thư viện này một cách dễ dàng Đây cũng chính là lý do tác giả dùng Anaconda để cài đặt các thư viện khác Việc cài đặt phần mềm này sẽ được trình bày ở mục 2.1.1 trong báo cáo này Dưới đây là một số thông tin về phần mềm anaconda:
- Anaconda là một dự án nguồn mở được phát triển bởi tập đoàn Continuum Analytics
- Hỗ trợ trên ba nền tảng: Windowns, Mac OS X và Linux
1.4.2 Thư viện scikit-learn
Scikit-learn (trước đây là scikits.learn) là một thư viện phần mềm học máy miễn phí cho ngôn ngữ lập trình Python Nó có các thuật toán như: phân loại, hồi
qui và phân cụm hỗ trợ các vector machines, random forests, gradient boosting, k-means and DBSCAN và được thiết kế để tương tác với các thư viện số và khoa học trên Python NumPy và SciPy Phần hướng dẫn cài đặt sẽ được tác giả trình
bày ở mục 2.1.5
Trong đề tài, tác giả sử dụng thư viện scikit-learn vào để xử lý vector machines
1.4.3 Thư viện OpenCV
OpenCV (Open Source Computer Vision Library) là một thư viện mã nguồn
mỡ về thị giác máy tính, được phát hành dưới giấy phép BSD, miễn phí cho cả việc học tập lẫn thương mại Hỗ trợ lập trình trên các ngôn ngữ: C ++, C, Python
và Java Có thể cài đặt trên các nền tảng Windows, Linux, Mac OS, iOS và Android OpenCV được thiết kế để mang lại hiệu quả trong việc tính toán và tập trung mạnh vào các ứng dụng thời gian thực
Trong đề tài này, tác giả sử dụng OpneCV chủ yếu để phát hiện khuôn mặt Hướng dẫn cài OpenCV sẽ được tác giả trình bày trong mục 2.1.4
1.4.4 Thư viện Matplotlib
Matplotlib là một thư viện vẽ đồ thị Python 2D Matplotlib có thể được sử dụng trong các mã Python, Python và Ipython shell, các máy chủ ứng dụng web Matplotlib là một lựa chọn tùy chọn để hiển thị khung hình từ video hoặc hình ảnh Đây cũng là lý mục đích của tác giả cài thư viện này Hướng dẫn cài đặt thư viện này được tác giả trình bày ở mục 2.1.5