Đăng ký Đăng nhập
Trang chủ Ứ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...

Tài liệu Ứ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

.PDF
46
107
63

Mô tả:

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 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 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 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 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 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 IV 3.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 V DANH 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 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 quả khi chạy chương trình kết nối camera với server ........... 30 Hình 3-3: Xác định bộ 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 và tiến hành lưu video .................................. 31 Hì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............................................................................... 31 Hình 3-6: Code xử lý để đưa ra 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 hiện chức năng chuyển văn bản thành âm thanh tiếng Việt ...................................................................................................... 34 Hình 3-9: Code gửi file âm thanh từ server về Robot NAO ........................ 35 Hình 3-10: Code thực hiện chức năng phát một file âm thanh trên Robot NAO ............................................................................................................. 36 1 PHẦ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 2 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 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. 2.1. Ngoài nước Trên thế giới hiện nay, những nghiên cứu về nhận diện khuôn đã đạt kết quả chính các rất cao và áp dụng vào thực tế rất nhiều. Trong bài báo [1], nhóm tác giả thực hiện đề tài đó đã tiến hành thực hiện việc học dựa trên mạng lưới xoắn sâu. Để kiểm tra kết quả, họ đã tính độ chính xác bằng cách tính trung bình đọ chính xác của một trăm khung hình đầu tiên trong mỗi video mà máy dò khuôn mặt thu lại được. Độ chính xác phân loại họ thu đượ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. 3 4. Đối tượng và phạm vi nghiên cứu 4.1. Đối tượng nghiên cứu  Phương pháp học máy.  Thư viện học máy Tensorflow.  Robot NAO.  Thư viện xử lý ảnh OpenCV về phát hiện khuôn mặt. 4.2. Phạm vi 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. 4 Phầ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. 5 Chươ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. Hình 1-1: Robot Các tương tác đa dạng trên Robot NAONAO. 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 STT 1 2 3 4 5 6 7 8 9 Thuộc tính Chiều cao Đường kính Cân nặng Pin Hệ điều hành CPU RAM Flash memory Micro SDHC Mô tả 0.573 m 0.275 m 5.4 Kg 21.6 V / 2.25 Ah Gentoo (GNU/Linux) ATOM Z530 1.6 GHz CPU 1 GB 2 GB 8 GB Robot có các cảm biến đa dạng như cảm biến gyro 2 trục, cảm biến siêu âm.., có thể hoạt động đa phương tiện được thực hiện qua camera, micro và loa. 6 Hệ 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 STT 1 2 3 4 Vị trí Đầu Cánh tay Hông Chân Số lượng 2 12 1 10 7 Bảng 1-3: Thông tin chi tiết số lượng một số cảm biến trên Robot NAO STT 1 2 3 4 5 6 7 8 Tên cảm biến Hiệu ứng Hall Tiếp xúc Hồng ngoại Siêu âm Con quay hồi chuyển 2 trục Gia tốc 3 trục Giảm áp Giảm xóc Số lượng 32 3 2 2 1 2 8 2 Ngoài ra còn có camera (2), micro (4), loa (2) cho việc xử lý hình ảnh và giọng nói. 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ư: Hình 1-3: Ví trí các camera trên Robot NAO  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. 8 Phầ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 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 Broker broker.» (broker chính) Audioout(TextToSpeech) là một broker độc lập kết nối tới NAOqi. 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 Module (lớp chuyên biệt cho ALModule) 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 được sử dụng để truy cập vào mô Proxy đ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. 9 CMake tạo ra dự án phù hợp cho hệ điều hành mong muốn (OSX, Linux, Win32) và CMake IDE (Visual Studio, Eclipse, vv). NAOqi yêu cầu CMake phiên bản 2.6 hoặc cao hơn. Các chức năng Remote là các hàm được Remote thực hiện trong các mô đun có thể thực hiện khác. Cross compile Biên dịch các mô đun được sử dụng trong Robot. Công cụ của Aldebaran tạo ra các cử Choregraphe động lớp trên. Công cụ của Aldebaran để hình dung ra Monitor Critical section các camera, bộ nhớ v...v... của NAO. Mã lệnh không thể được thực hiện trong hai tiểu trình. Chuyển đổi các giá trị cảm biến NAO Extractor thành dữ liệu có thể dùng bởi bộ nhớ của NAO. Bộ nhớ của NAO có thể được truy cập ALMemory bởi mọi mô đun, mô đun từ xa, các công cụ từ xa, và các Robot NAO khác. LPC Thủ tục gọi hàm lân cận IPC Giao tiếp liên quá trình. IPPC Thủ tục gọi liên quá trình RPC Thủ tục gọi hàm từ xa Smart pointer Trỏ tới vị trí loại bỏ và xóa bộ nhớ xảy ra tự động. 10 Mutex 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 Hình 1-4: Cấu trúc tổng quan 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. 11  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. 1.2. Tổng quan về học máy 1.2.1. Machine learning là gì?  Machine learning là một loại trí tuệ nhân tạo (AI) cho phép các ứng dụng phần mềm trở nên chính xác hơn trong dự đoán các kết quả mà không được lập trình rõ ràng.  Tiền đề cơ bản của việc học máy là xây dựng các thuật toán có thể nhận dữ liệu đầu vào và sử dụng phân tích thống kê để dự đoán một giá trị đầu ra trong phạm vi chấp nhận được.  Để hiểu rõ hơn về học máy, truy cập trang web [8]. 12 1.2.2. Các phương pháp học máy Trong bốn phương pháp học máy trong Hình 1-5, phương pháp học máy Supervised Learning 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. Hình 1-5: Phân loại học má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 đó.  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 khuôn mặt đó. Supervised Learning 1.2.3.2. Phân loại Supervised Learning Regression Classification Hình 1-6: Phân loại thuật toán Supervised Learning  Bài toán nhận diện khuôn mặt cũng là bài toán mà tác giả sẽ thực hiện trong đề tài nghiên cứu. 1.3. Tensorflow 1.3.1. Tensorflow là gì?  TensorFlow ™ là một thư viện phần mềm nguồn mở do Nhóm Google Brain phát triển để tính toán bằng số liệu sử dụng các đồ thị lưu lượng dữ liệu.
- Xem thêm -

Tài liệu liên quan