1. Trang chủ
  2. » Luận Văn - Báo Cáo

Ứ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: báo cáo nghiên cứu khoa học sinh viên

46 240 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 46
Dung lượng 1,58 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

--- --- 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 3

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

Trang 4

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

Trang 5

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

Trang 6

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

Trang 7

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

Trang 8

Hì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 9

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

Trang 10

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

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 11

4 Đố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 12

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

Trang 13

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

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 14

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

Trang 15

Bả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 16

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

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 17

CMake

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 18

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

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 20

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

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 22

n [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 23

Tậ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

Ngày đăng: 16/08/2020, 10:43

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[2] Kaipeng Zhang Zhanpeng Zhang Zhifeng Li Yu Qiao (2016), Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks, IEEE Signal Processing Letters (SPL), số 10, tr. 1499-1503 Sách, tạp chí
Tiêu đề: IEEE Signal Processing Letters (SPL)
Tác giả: Kaipeng Zhang Zhanpeng Zhang Zhifeng Li Yu Qiao
Năm: 2016
[6] Robot đang dần thay thế con người trong cuộc sống thường ngày, truy cập ngày 16/8/2017, https://www.baomoi.com/Robot-dang-dan-thay-the-con-nguoi-trong-cuoc-song-thuong-ngay/c/20701425.epi Link
[7] David Sandberg (Face Recognition using Tensorflow), ngày truy cập 10/08/2017, https://github.com/davidsandberg/facenet Link
[8] Tiệp Vũ, Machine Learning cơ bản, ngày truy cập 10/07/2017, https://machinelearningcoban.com Link
[1] Florian Schroff, Dmitry Kalenichenko, James Philbin (2015), FaceNet: A Unified Embedding for Face Recognition and Clustering, In Proceedings of the IEEE Computer Society Conference on Computer Vision and Pattern Recognition 2015 Khác
[3] Nick McClure (2017), TensorFlow Machine Learning Cookbook, Packt Publishing - ebooks Account Khác
[4] Giancarlo Zaccone (2016), Getting Started with TensorFlow, Packt Publishing; 1 edition Khác
[5] Yaniv Taigman, Ming Yang, Marc’Aurelio Ranzato, Lior Wolf (2014), DeepFace: Closing the Gap to Human-Level Performance in Face Verification.Tài liệu internet Khác
[9] Lisa Tagliaferri, How To Install the Anaconda Python Distribution on Ubuntu 16.04, ngày truy cập 10/10/2017 Khác

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w