ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Trần Ngọc Linh
XÂY DỰNG HỆ THỐNG PHÂN TÍCH HÌNH ẢNH
TRÊN ROS CHO ROBOT HƯỚNG DẪN VIÊN
LUẬN VĂN THẠC SĨ: KHOA HỌC MÁY TÍNH
Hà Nội - 2020
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
TRẦN NGỌC LINH
XÂY DỰNG HỆ THỐNG PHÂN TÍCH HÌNH ẢNH
TRÊN ROS CHO ROBOT HƯỚNG DẪN VIÊN
Ngành: Khoa học máy tính
Chuyên ngành: Khoa học máy tính
Mã số: 8480101.01
LUẬN VĂN THẠC SĨ: KHOA HỌC MÁY TÍNH
NGƯỜI HƯỚNG DẪN KHOA HỌC: TS. TRẦN QU
57 trang |
Chia sẻ: huong20 | Ngày: 07/01/2022 | Lượt xem: 354 | Lượt tải: 0
Tóm tắt tài liệu Luận văn Xây dựng hệ thống phân tích hình ảnh trên ros cho robot hướng dẫn viên, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
UỐC LONG
Hà Nội - 2020
VIETNAM NATIONAL UNIVERSITY, HANOI
UNIVERSITY OF ENGINEERING AND TECHNOLOGY
Trần Ngọc Linh
i
LỜI CAM ĐOAN
Tôi xin cam đoan các kết quả thực nghiệm và nghiên cứu mà được trình bày trong luận văn
đều do tôi thực hiện dưới sự hướng dẫn của Tiến sĩ Trần Quốc Long.
Tất cả những tham khảo và những nghiên cứu liên quan trong luận văn đều được trích dẫn
nguồn gốc rõ ràng ở phần tài liệu tham khảo của cuối luận văn. Tôi cam đoan rằng trong
luận văn không có việc sao chép tài liệu và công trình nghiên cứu của người khác mà không
ghi rõ nguồn gốc trích dẫn.
TÁC GIẢ LUẬN VĂN
Trần Ngọc Linh
ii
LỜI CẢM ƠN
Lời đầu tiên, tôi muốn gửi lời cảm ơn chân thành và sâu sắc đến giáo viên hướng dẫn
của tôi, Tiến sĩ Trần Quốc Long đang công tác tại Khoa Công Nghệ Thông Tin của Trường
Đại học Công nghệ - Đại học Quốc Gia Hà Nội. Thầy đã tận tình hướng dẫn và cho tôi
những lời khuyên bổ ích để giúp tôi có thể hoàn thành luận văn này.
Bên cạnh đó, tôi cũng xin cám ơn Giáo sư, Tiến sĩ Chử Đức Trình và Phó giáo sư,
Tiến sĩ Bùi Thanh Tùng đang công tác tại khoa Điện Tử Viễn Thông của Trường Đại học
Công Nghệ - Đại học Quốc Gia Hà Nội, luôn luôn hỗ trợ đội nhóm phát triển Robot để có
những trang thiết bị cần thiết phục vụ cho việc nghiên cứu phát triển thành công Fuso.
Tôi cũng chân thành cảm ơn hai em Nguyễn Đình Tuân, Phan Hoàng Anh và các em
trong nhóm đề tài “QG.17.69-Nghiên cứu phát triển robot thuyết minh và hướng dẫn” đã
luôn luôn giúp đỡ và hỗ trợ tôi trong quá trình nghiên cứu.
Lời cuối cùng tôi xin cảm ơn gia đình và bạn bè đã ủng hộ, khích lệ tôi trên con đường
học vấn.
Hà Nội, Ngày 30 tháng 6 năm 2020
Trần Ngọc Linh
iii
TÓM TẮT
Những năm gần đây, với sự phát triển mạnh mẽ và đột phá từ công nghệ, đặc biệt là
trong lĩnh vực trí tuệ nhân tạo, nhiều công việc của con người mà máy tính đã làm rất tốt
như nhận dạng mặt người hay có thể nói chuyện và tương tác giống như Sophia hoặc có thể
hỗ trợ các bác sĩ trong việc chẩn đoán, dự báo và điều trị bệnh. Cùng với xu hướng phát
triển của công nghệ nói chung hay robot trên toàn thế giới nói riêng, robot Fuso đã được
nghiên cứu và phát triển để có thể thay thế con người làm hướng dẫn viên trong các phòng
trưng bày, viện bảo tàng. Robot được chia làm 4 phần khác nhau để phát triển độc lập: hệ
thống xử lý chuyển động, hệ thống xử lý giao diện tương tác, hệ thống phân tích âm thanh
và hệ thống phân tích hình ảnh. Luận văn này tập trung vào phát triển hệ thống phân tích
hình ảnh cho robot, bao gồm 3 mô-đun nhỏ hơn. Thứ nhất, xây dựng mô-đun bộ máy trạng
thái hữu hạn trên ROS để dựng lên tất các trạng thái hoạt động của robot mà ở đó có thể
giao tiếp, trao đổi dữ liệu với các phần khác trong robot cùng hoàn thành một chức năng cụ
thể. Thêm vào đó, xây dựng bộ máy trạng thái hữu hạn giúp cho việc mở rộng, nâng cấp
các chức năng và gỡ lỗi trong quá trình phát triển sẽ dễ dàng hơn. Mô-đun thứ hai là xây
dựng phát hiện hành động vẫy tay dựa trên thông tin khung xương cánh tay được trích xuất
từ kết quả của thuật toán phát hiện khung xương người Openpose. Với mô-đun này giúp
robot có thể phát hiện người cần hỗ trợ qua hành động vẫy tay để tiếp cận và phục vụ. Hiện
tại, phát hiện vẫy tay đạt độ chính xác trung bình xấp xỉ 78% với khoảng cách đến robot từ
1 đến 5 mét. Và cuối cùng là việc xây dựng mô-đun nhận diện mặt người dựa thuật toán
Facenet với độ chính xác 97% giúp cho Fuso có khả năng ghi nhớ khuôn mặt người đã từng
phục vụ để lần sau phục vụ tốt hơn. Với việc xây dựng bộ máy trạng thái hữu hạn và ứng
dụng thuật toán phát hiện vẫy tay và nhận điện khuôn mặt đã giúp Fuso có thể phát hiện
được người vẫy tay cần hỗ trợ, di chuyển đến để nhận diện đối tượng và chào người đó
bằng tên nếu đã biết trước. Hiện tại, robot đã được chạy thử nghiệm ở phòng truyền thống
của Đại Học Quốc Gia Hà Nội.
Từ khóa: Fuso, robot hướng dẫn viên, phân tích hình ảnh
iv
MỤC LỤC
Danh mục hình vẽ ......................................................................................................................... vi
Danh mục các kí hiệu, viết tắt ................................................................................................... viii
Chương 1 ......................................................................................................................................... 1
Giới thiệu vấn đề và bài toán cần giải quyết ................................................................................ 1
1.1. Lịch sử hình thành và phát triển của robot ............................................................................ 1
1.2. Giới thiệu bài toán ................................................................................................................. 2
1.3. Những đóng góp chính .......................................................................................................... 6
1.4. Cấu trúc luận văn .................................................................................................................. 7
Chương 2 ........................................................................................................................................ 8
Cơ sở lý thuyết ............................................................................................................................... 8
2.1. Hệ điều hành Robot – Robot Operating System ................................................................... 8
2.2. Vectơ hỗ trợ hồi qui (Support Vector Machine - SVM) ..................................................... 12
2.3. Thuật toán xác định khung xương người - OpenPose ........................................................ 15
2.4. Thuật toán hỗ trợ nhận diện mặt người FaceNet ................................................................ 17
Chương 3 ...................................................................................................................................... 22
Thiết kế và cài đặt hệ thống ........................................................................................................ 22
3.1. Kiến trúc tổng quan hệ thống phân tích hình ảnh ............................................................... 22
3.2. Mô-đun phát hiện vẫy tay ................................................................................................... 29
3.3. Mô-đun nhận dạng mặt người ............................................................................................. 32
3.4. Xây dựng kịch bản .............................................................................................................. 34
Chương 4 ...................................................................................................................................... 40
Kết quả thử nghiệm, ứng dụng và tổng kết ............................................................................... 40
4.1. Kết quả phát hiện vẫy tay .................................................................................................... 40
4.2. Kết quả nhận diện mặt người .............................................................................................. 41
v
4.3. Ứng dụng thực tiễn ............................................................................................................. 43
4.4. Tổng kết .............................................................................................................................. 45
Tài liệu tham khảo ....................................................................................................................... 46
vi
Danh mục hình vẽ
Hình 1-1-Camera Intel Realsense D435 [15] .................................................................................. 6
Hình 2-1-Trao đổi thông tin giữa các node qua Topic .................................................................. 11
Hình 2-2-Trao đổi thông tin giữa các node qua Service ................................................................ 12
Hình 2-3-Các đường phân chia hai lớp ......................................................................................... 13
Hình 2-4-Điểm nhiễu nằm gần mặt phân tách (trái) và điểm nhiễu nằm bên mặt phân tách lớp còn
lại (phải) ......................................................................................................................................... 14
Hình 2-5-So sánh các thuật toán với OpenPose ............................................................................ 16
Hình 2-6-Sơ đồ tổng quát thuật toán OpenPose ............................................................................ 16
Hình 2-7-Cấu trúc mô hình của FaceNet [14] ............................................................................... 17
Hình 2-8-Mạng học sâu Inception ResNet V1 [19] ....................................................................... 20
Hình 3-1-Thành phần chính của hệ thống ..................................................................................... 23
Hình 3-2-Sơ đồ chuyển trạng thái của máy trạng thái hữu hạn ..................................................... 24
Hình 3-3-Thiết kế tệp cài cho việc tự động xây dựng bộ máy trạng thái hữu hạn ........................ 25
Hình 3-4-Thiết kế các lớp cho việc tự động xây dựng bộ máy trạng thái hữu hạn ....................... 26
Hình 3-5-Mô hình kế thừa của các bài toán phân tích hình ảnh .................................................... 27
Hình 3-6-Các tác vụ đăng kí nhận dữ liệu từ Realsense D435 ...................................................... 28
Hình 3-7-Sơ đồ tổng quan thuật toán vẫy tay ................................................................................ 29
Hình 3-8-Góc tạo thành giữa cánh tay và mặt phẳng ngang khi vẫy ............................................ 30
Hình 3-9-Định danh người qua trục hoành Ox .............................................................................. 31
Hình 3-10-Sơ đồ tổng quát nhận dạng khuôn mặt người .............................................................. 32
Hình 3-11-Tìm mặt người vẫy tay ................................................................................................. 33
Hình 3-12-Sơ đồ chuyển trạng thái qua các kịch bản .................................................................... 34
vii
Hình 3-13-Sơ đồ chuyển trạng thái qua kịch bản phát hiện người vẫy tay ................................... 35
Hình 3-14-Sơ đồ chuyển trạng thái qua kịch bản nhận diện khuôn mặt người ............................. 37
Hình 4-1-Kết quả thử nghiệm phát hiện vẫy tay ........................................................................... 40
Hình 4-2-Kết quả huấn luyện nhận dạng mặt người K-Fold ......................................................... 42
Hình 4-3-Ảnh nhận diện mặt người trong thực tế ......................................................................... 42
Hình 4-4-Một số hình ảnh của robot Fuso tại triển lãm và trong phòng trưng bày của Đại học
Quốc Gia Hà Nội ........................................................................................................................... 44
viii
Danh mục các kí hiệu, viết tắt
ROS Robot Operating System – Hệ điều hành Robot
MTCNN Multi-task Cascaded Convolutional Networks
SVM Support Vector Machine
SLAM Simultaneous Localization and Mapping
LFW Labeled Faces in the Wild
1
Chương 1
Giới thiệu vấn đề và bài toán cần giải quyết
1.1. Lịch sử hình thành và phát triển của robot
Những năm gần đây, với sự phát triển mạnh mẽ của công nghệ và thời đại 4.0 được
mở ra, con người ngày càng quan tâm đặc biệt đến việc tự động hóa, làm máy móc trở nên
thông minh lên giống như con người để nâng cao hiệu quả sản xuất, phục vụ những nhu
cầu cơ bản cho con người. Và robot đã dần được đưa vào trong các xưởng, trong đời sống
thường ngày. Vậy từ “robot” xuất hiện từ bao giờ? Lịch sử hình thành, phát triển và những
thành tựu nổi bật như thế nào? Phần này sẽ giới thiệu một cách tổng quan nhất về robot. Từ
“robot” được sử dụng đầu tiên vào năm 1921 trong vở kịch “Rossum’s Universal Robots”
của Karel Čapek (1890-1938) – một nhà văn lừng danh người cộng hòa Séc đầu thế kỉ XX.
Từ này xuất phát từ từ “robota” mà theo tiếng địa phương nghĩa là “việc nặng nhọc” hay
“lao động cưỡng bức”. Ngoài ra, một từ khác cũng được sử dụng nhiều là “robotics”. Từ
này lần đầu tiên được dùng bởi nhà văn Isaac Asimov (1920-1992) trong truyện ngắn
“Runaround”. Trong chuyện nhà văn đã định nghĩa ba luật liên quan đến hành vi của robot
mà tương tác với con người mà về sau đã được đặt tên là “Luật của Robotics” (Laws of
Robotics). Dù là từ robot hay robotics thì mục đích chung của hai từ này đều chỉ đến những
công cụ, máy móc có thể thực những công việc một cách tự động để phục vụ cho con người.
Robot ngày càng đóng vai trò quan trọng công nghiệp giúp thúc đẩy sản xuất. Với sự
phát triển của robot, người ta đã chia robot thành 4 thế hệ: Robot thế hệ 1 (1950-1967),
robot thế hệ 2 (1968-1977), robot thế hệ 3 (1978-1999), robot thế hệ 4 (2000-nay) [1].
Robot thế hệ 1 có đặc điểm là được điều khiển bởi những thuật toán đơn giản lập trình sẵn
2
và không có khả năng lấy thông tin từ môi trường. Nổi bật trong robot thế hệ đầu là cánh
tay robot có tên UNIMATE. Đây là robot công nghiệp đầu tiên được công nhận do 2 nhà
sáng chế George Devol và Joe Engelberger tạo ra và được lắp ráp sử dụng trong dây chuyền
lắp ráp của hãng sản xuất ô tô General Motors năm 1969. UNIMATE đã giúp hãng cải thiện
khả năng sản xuất. Robot thế hệ thứ 2 với những cảm biến xung quanh đã có thể lấy được
thông tin từ môi trường và đáp ứng lại những thông tin đó. Shakey [2] là robot di động có
cảm biến đầu tiên được nhà nghiên cứu trong viện nghiên cứu của Stanford phát triển.
Robot thế hệ thứ 3 đã có những bộ điều khiển chuyên dụng (những chiếc máy tính) và có
những ngôn ngữ mới cho lập trình điều khiển robot. Đây là thời đại của robot với sự đầu tư
lớn từ các công ty để có thể tự động hóa các việc cơ bản trong dây chuyền lắp ráp. Các
robot phổ biến tự động hóa trong các hoạt động như sơn, di chuyển, lắp ráp. Ngoài ra, robot
được mở rộng sang các lĩnh vực khác như robot giải trí của Sony, AIBO (1999) [3]. Robot
thế hệ thứ 4 có khả năng tính toán vượt trội, không chỉ làm việc với dữ liệu mà nó còn có
khả năng suy luận logic và học hỏi hơn nữa trí tuệ nhân tạo được đưa vào để có thể giải
quyết những bài toán khó trước đây mà lập trình truyền thống khó có thể giải quyết được
với độ chính xác cao. Nổi bật trong thế hệ này có robot ASIMO của tập đoàn Honda hay
robot Roomba là robot hút bụi đầu tiên được giới thiệu hay là xe tự hành của Tesla. Trải
qua các thế hệ robot dần được nâng cấp, sự tự động hóa được nâng cao và sự thông minh
dần được đưa vào để robot có thể phục vụ cho con người trong đời sống thường ngày và
trong công nghiệp có thể nâng cao năng lực sản xuất với những sản phẩm có độ tin cậy cao.
Với tiềm năng phát triển trong tương lai của robot bài toán xây dựng robot thông minh đã
được nghiên cứu và xây dựng.
1.2. Giới thiệu bài toán
Với sự phát triển của tuệ nhân tạo như cuộc cách mạng lần thứ tư (1 – động cơ hơi
nước, 2 – năng lượng điện, 3 – công nghệ thông tin) đã dần biến những điều tưởng rằng chỉ
có trong khoa học viễn tưởng thành hiện thực. Năm 2011, Watson [4] – Một chương trình
phần mềm trí tuệ nhân tạo do IBM phát triển, đã chiến thắng cuộc thi trong chương trình
hỏi đáp trên truyền hình có tên Jeopardy. Còn trong sản phẩm thương mại có trợ lý ảo Siri
của Apple có thể hiểu các câu hỏi của người dùng và phản hồi chính xác điều người dùng
muốn tương tác trên điện thoại di động. Công nghệ xe tự hành của những công ty lớn như
Apple, Tesla, Google, Toyota cũng có những bước tiến vượt bậc nhờ vào những cảm biến
xung quanh ô tô và được huấn luyện với mạng nơ-ron giúp ô tô có khả năng tự học hỏi
3
được những kĩ năng lái xe. Ngoài ra, năm 2016, AlphaGo do Google DeepMind phát triển
đã làm chấn động thế giới khi đánh bại kỳ thủ cờ vây chuyên nghiệp người Hàn Quốc, Lee
Sedol. Khác với cờ vua là với sức mạnh máy tính hiện nay có thể tính toán được hết số
nước trong cờ vua đi để tìm ra được nước đi tối ưu nhất và dành chiến thắng thì trong cờ
vây số nước đi lớn hơn rất nhiều. Giới hạn dưới về số lượng vị trí nước đi hợp lệ trên bàn
cờ trong cờ vây được ước tính là 2 ∗ 10%&', đó là một con số rất lớn để mà máy tính có thể
tính toán được. Chính vì vậy AlphaGo đã được huấn luyện qua mạng nơ-ron học sâu có
giám sát với chuyên gia và học tăng cường. Theo như bài báo [5] thì AlphaGo đạt tỉ lệ chiến
thắng lên đến 99,8%. Đặc biệt hơn hết vào tháng 10 năm 2017, tại Ả Rập Xê Út đã cấp
quyền công dân cho robot đầu tiên trên thế giới có tên là Sophia [6]. Sophia có lớp da được
làm bằng silicon trông giống như da người. Robot có khả năng biểu hiện tổng 62 sắc thái
trên khuôn mặt (như giận, vui, buồn, v.v), hay có khả năng tương tác nói chuyện gần như
con người. Những minh chứng trên cho thấy rằng việc đưa trí tuệ nhân tạo vào robot là một
bước tiến lớn trong quá trình phát triển robot làm cho robot thông minh hơn, gần gũi với
con người hơn để có thể giúp ích cho con người trong đời sống thường ngày như để phục
vụ, tư vấn, chăm sóc sức khỏe, trong giáo dục và trong các ứng dụng dịch vụ chăm sóc
khách hàng.
Đối với nước ta việc sản xuất và ứng dụng robot thông minh vào trong các lĩnh vực
vẫn còn hạn chế. Chủ yếu là trong công nghiệp với những cánh tay robot trong dây truyền
sản xuất được chuyển giao công nghệ từ nước ngoài. Từ những tiềm năng của sự phát triển
robot trên thế giới và những hạn chế trong nước, robot Fuso đã được nghiên cứu, xây dựng
và phát triển để có thể đóng góp một phần nhỏ trong sự phát triển robot của đất nước và đó
cũng là cơ sở nền tảng quan trọng để phát triển các thế hệ robot thông minh sau này. Với
mục tiêu xây dựng robot Fuso có hình dáng giống con người có khả năng làm hướng dẫn
viên trong viện bảo tàng, khu trưng bày hoặc trong các bệnh viện hay siêu thị, trung tâm
thương mại thì robot Fuso cần nhận diện được cử chỉ vẫy tay của con người từ xa và phản
ứng lại những cử chỉ đó, nhận diện được mặt người đã từng gặp và có khả năng di chuyển
linh hoạt đến các địa điểm được yêu cầu của người dùng bằng giọng nói. Về tổng quan
robot được chia thành các phần nhỏ hơn phát triển độc lập: Phần về phân tích hình ảnh để
nhận diện các cử chỉ hành động, khuôn mặt của người dùng; phần về phân tích âm thanh sẽ
phân tích để hiểu các câu, mệnh lệnh; phần về xử lý chuyển động cơ học sẽ nhận các mệnh
lệnh để có thể di chuyển mượt và đúng đến địa điểm yêu cầu; phần xây dựng giao diện
người dùng giúp người dùng có thể tương tác qua màn hình cảm ứng. Và tất các các phần
sẽ giao tiếp với nhau thông qua kênh truyền thông tin topic và service của hệ điều hành
4
ROS – Robot Operating System [7]. Trong luận văn này, tôi xin trình bày bày hệ thống
phân tích hình ảnh cho robot. Phân tích hình ảnh được chia ra làm các 3 mô-đun nhỏ: mô-
đun xây dựng bộ máy trạng thái hữu hạn để dựng lên tất các trạng thái hoạt động của robot
mà ở đó có thể giao tiếp, trao đổi dữ liệu với các phần khác trong robot cùng hoàn thành
một chức năng cụ thể. Việc xây dựng bộ máy trạng thái hữu hạn cũng giúp cho việc mở
rộng, nâng cấp của chức năng và gỡ lỗi sẽ dễ dàng hơn; mô-đun nhận diện cử chỉ vẫy tay
sử dụng thuật toán OpenPose tìm khung xương người từ đó tính toán để phát hiện ra dấu
hiệu cử chỉ vẫy tay; mô-đun nhận dạng khuôn mặt dựa trên thuật toán Facenet để tìm vectơ
embedding, vectơ này tiếp tục được đưa vào mô hình SVM [8] đã được huấn luyện trước
để tìm ra tên người vẫy.
Trong quá trình xây dựng phát triển hệ thống thống phân tích hình ảnh cho robot có
một số vấn đề gặp phải:
• Hệ thống phân tích hình ảnh cho robot gồm có các thuật toán khác nhau để thực
hiện các chức năng khác nhau trong việc phân tích hình ảnh trích xuất và biến đổi
thông tin cần thiết để cung cấp cho các bộ phận khác cho robot (như bộ phận điều
khiển di chuyển, bộ phận phân tích âm thanh). Các chức năng trong hệ thống phân
tích hình ảnh không chỉ được thực hiện tuần tự mà còn có thể thực hiện song song
chính vì vậy cần xây dựng hệ thống tổng có thể quản lý, điều khiển các thuật toán
khi nào được thực thi, khi nào dừng lại để đồng nhất trong hành động với các bộ
phận khác của robot. Mặt khác, việc tìm ra lỗi dễ dàng và nhanh chóng cũng cần
thiết trong quá trình phát triển mà bị xảy ra lỗi. Vậy nên bộ máy trạng thái hữu hạn
cần được đưa vào trong việc xây dựng hệ thống tổng quát cho phân tích hình ảnh.
• Trong quá trình tương tác với con người, robot cần phản ứng nhanh chóng nhất để
đáp ứng mệnh lệnh của con người. Vì vậy các thuật toán vừa cần độ chính xác cao
và phản hồi nhanh. Thêm vào đó là những giới hạn phần cứng trên robot đã được
thiết lập sẵn nên trong quá trình phát triển một chức năng thì cần thử nghiệm nhiều
thuật toán khác nhau để so sánh và tìm thuật toán phù hợp nhất, đồng nhất với
môi trường với các thuật toán đã cài đặt trước đó và thiết bị phần cứng xây dựng
nên robot.
1.2.1. Bo mạch Jetson TX2
Bo mạch Jetson TX2 [16] được Nvidia cho ra mắt vào tháng 3 năm 2017. Đây là một
bo mạch có tính toán mạnh mẽ có thể thực hiện được hơn một nghìn tỷ phép tính trong một
5
giây (1,3 TFLOPS) và sức mạnh tính toán gấp đôi so với Jetson Nano (0,5 TFLOPS). Thiết
bị sinh ra nhằm mục đích chính cho việc phát triển các ứng dụng trí tuệ nhân tạo trên đó
nên phù hợp với định hướng xây dựng robot thông minh như trên đã đề ra. Ngoài ra, nhà
sản xuất Nvidia hỗ trợ bộ công cụ phát triển JetPack SDK mà tích hợp các công cụ và thư
viện cho việc xây dựng nhanh chóng các ứng dụng trí tuệ nhân tạo như:
TensorRT: Có tác dụng tối ưu hiệu năng chạy cho các mạng học sâu như phân loại
ảnh, phân vùng ảnh và nhận diện đối tượng.
cuDNN: Viết tắt của từ CUDA Deep Neural Network là một thư viện cung cấp các
thiết lập được tinh chỉnh cho các thủ tục chuẩn như forward/backward convolution, pooling,
normalization và activation layer từ đó giúp hiệu năng của các ứng dụng trí tuệ nhân tạo tốt
hơn.
CUDA: Là công cụ phát triển cung cấp môi trường phát triển thích hợp cho các nhà
phát triển C/C++ xây dựng các ứng dụng được tăng tốc bởi GPU. Nó bao gồm các thư viện
toán học, công cụ cho gỡ lỗi, tối ưu hiệu năng cho ứng dụng.
ComputerVision(CV): gồm có các gói, thư viện như VisionWorks, OpenCV. Đây là
những gói, thư viện cho thị giác máy, xử lý ảnh và học máy.
Bo mạch Jetson TX2 nhỏ gọn mạnh mẽ và tích hợp nhiều các công cụ, thư viện và
các gói giúp cho việc phát triển các ứng dụng dễ dàng hơn. Bên cạnh bo mạch nhỏ gọn,
mạnh mẽ thì camera có chất lượng hình ảnh tốt rất cần thiết cho bài toán phân tích hình ảnh
cho robot.
1.2.2. Camera RealSense D435
Camera chiều sâu RealSense D435 [15] thuộc dòng D400 của Intel được giới thiệu
vào năm 2018. So với Kinect của Microsoft thì RealSense D435 nhỏ gọn và có thể quan sát
xa hơn. Với Kinect độ sâu mà camera quan sát trong khoảng từ 0,5-4,5m còn đối với
RealSense là 0,11-10m. Với phạm vi rộng thích hợp cho robot quan sát trong môi trường
của một phòng trưng bày hay viện bảo tàng. Chất lượng hình ảnh cho ra của RealSense rất
tốt với độ phân giải 1920x1080 và tốc độ khung hình 30fps. RealseSense D435 cấu tạo gồm
3 camera với 2 camera màu ở 2 bên và 1 camera hồng ngoại. 2 camera màu giúp RealSense
sinh ra những bức ảnh độ sâu còn camera hồng ngoại giúp tinh chỉnh để tăng chất lượng
những bức ảnh độ sâu. Thành phần chính của camera được mô tả như Hình 1-1.
6
Hình 1-1-Camera Intel Realsense D435 [15]
Ngoài ra, Intel có hỗ trợ bộ công cụ RealSense SDK 2.0 để có thể dễ dàng làm việc
với RealSense, giúp tinh chỉnh để cho ra được hình ảnh có chất lượng tốt ứng với từng môi
trường, lấy các thông số và hình ảnh của camera.
1.3. Những đóng góp chính
Như ở phần giới thiệu bài toán đã đề cập để xây dựng và phát triển được Fuso thì các
phần được phát triển độc lập nhau và luận văn tập trung chủ yếu xây dựng nên hệ thống
phân tích hình ảnh trên ROS cho robot hướng dẫn viên. Trong đó có 3 mô-đun chính và đó
cũng là những đóng góp chính trong luận văn này. Thứ nhất, xây dựng mô-đun bộ máy
trạng thái hữu hạn mà định nghĩa các trạng thái hoạt động của robot. Với việc xây dựng nên
mô-đun này sẽ giúp hệ thống dễ dàng mở rộng sau này và dễ dàng kiểm soát lỗi khi hệ
thống hoạt động không như mong muốn. Thứ hai, xây dựng mô-đun phát hiện người vẫy
tay dựa trên phương pháp tìm khung xương người OpenPose. Thứ ba, xây dựng mô-đun
nhận dạng khuôn mặt sử dụng mô hình SVM đã được huấn luyện với đầu vào là các vectơ
embedding được trả về từ thuật toán FaceNet.
7
1.4. Cấu trúc luận văn
Phần còn lại của chương đầu là cấu trúc của luận văn
Chương 1: Giới thiệu vấn đề và bài toán cần giải quyết
Giới thiệu về tổng quan về robot, lịch sử hình thành và phát triển qua các thế hệ robot.
Từ đó, giới thiệu bài toán xây dựng phát triển robot, cụ thể hơn là bài toán phân tích hình
ảnh đầu vào cho robot. Bên cạnh đó, các thiết bị phần cứng và thư viện hỗ trợ để giải quyết
bài toán cũng được giới thiệu.
Chương 2: Cơ sở lý thuyết
Trong chương này tập trung vào giải thích những kiến thức nền tảng. Đầu tiên giới
thiệu về ROS – Robot Operating System gồm có các thành phần cơ bản cấu tạo nên ROS
và những phương thức trao đổi dữ liệu giữa các Node trong ROS hoạt động ra sao. Sau đó
là nêu ra ý tưởng chính và phương pháp của các thuật toán SVM – Support Vector Machine,
OpenPose và FaceNet.
Chương 3: Cài đặt thiết kế hệ thống
Trình bày về thiết kế tổng quan hệ thống với các mô-đun để xây dựng nên bộ phân
tích hình ảnh cho robot. Trình bày về thuật toán, cài đặt cho từng mô-đun. Với OpenPose
để nhận diện khung xương người và những cải tiến để nhận diện hành động vẫy tay của con
người. Với mô-đun nhận dạng mặt người, thuật toán FaceNet của Google được áp dụng để
nhận diện mặt người vẫy tay. Và cuối cùng là những kịch bản xây dựng để chạy robot.
Chương 4: Kết quả thử nghiệm, ứng dụng và tổng kết
Trình bày những kết quả đạt được trong quá trình phát triển và kết quả triển khai trong
thực tiễn. Tóm tắt lại những đóng góp chính trong luận văn, những hạn chế chưa giải quyết
được và định hướng phát triển trong tương lai.
8
Chương 2
Cơ sở lý thuyết
2.1. Hệ điều hành Robot – Robot Operating System
ROS – Robot Operating System [7] là một hệ điều hành mã nguồn mở cung cấp một
nền tảng cho việc nghiên cứu và phát triển robot được dễ dàng được tạo bởi phòng nghiên
cứu Willow Garage và đang được phát triển bởi quỹ mã nguồn mở Robotics. Mặc dù gọi là
hệ điều hành tuy nhiên ROS không quản lý các tài nguyên, tiến trình và lập lịch tiến trình
mà ROS cung cấp một lớp gửi nhận dữ liệu có cấu trúc giữa các ứng dụng với nhau, công
cụ giả lập trực quan và kết nối với cộng đồng nghiên cứu robot trên toàn thế giới. Với những
đóng góp lớn từ cộng đồng đặc biệt là từ các viện nghiên cứu và trường đại học hàng đầu
trên thế giới thì việc xây dựng ứng dụng trên robot trên nền ROS sẽ giảm đi một lượng đáng
kể công việc lập trình cơ bản và tập trung được vào công việc nghiên cứu chuyên sâu. Thêm
nữa, ROS hỗ trợ nhiều ngôn ngữ như C\C++, Python nên việc bắt đầu tiếp cận và lập trình
với ROS trở nên đơn giản hơn.
2.1.1. Cấu trúc thư mục và các thành phần trong ROS
2.1.1.1. Cấu trúc thư mục trong ROS
Trong ROS, đơn vị chính cho việc tổ chức phần mềm là các package [17]. Mỗi một
package có thể gồm các chương trình gọi là nodes, thư viện phụ thuộc ROS, các tập dữ liệu,
9
các tệp cấu hình và các dữ liệu khác cần thiết trong hệ thống. Mục đích chính của các
package là cung cấp các chức năng để các phần mềm khác có thể tái sử dụng. Trong thư
mục package thông thường gồm có các thành phần chính: tệp package manifest, các
message type, các service type. Tệp package manifest cung cấp thông tin ngắn gọn về
package như tên package, tác giả, phiên bản, mô tả và các gói phụ thuộc. Các message type
định nghĩa cấu trúc dữ liệu gửi nhận tin qua topic trong ROS. Các service type định nghĩa
cấu trúc dữ liệu gửi nhận cho service trong ROS.
2.1.1.2. Các thành phần trong ROS
Master: là thành phần quan trọng quản lý kết nối truyền tin giữa các nodes. Mọi node
đều phải đăng kí với master khi khai báo, giúp cho master cung cấp thông tin cho các node
còn lại có thể tra cứu, nó giống như một máy chủ DNS. Nếu không có master thì các node
không thể tìm thấy nhau và việc trao đổi thông tin giữa các node đều không thể thực hiện
được.
Nodes: là đơn vị tính toán, xử lý dữ liệu và thực hiện một chức năng cụ thể nào đó.
Thông thường một hệ điều khiển robot thường sẽ bao gồm nhiều nodes mà mỗi nodes lại
chuyên biệt một công việc. Ví dụ như một node điều khiển động cơ bánh xe, một node định
vị, một node lập kế hoạch định hướng đường đi. Mỗi node ROS được xây dựng nhờ sử
dụng thư viện ROS client (roscpp, rospy). Và các node trao đổi dữ liệu với nhau gửi nhận
dữ liệu qua topic hay services. Mỗi node đều có một tên duy nhất trong toàn bộ hệ thống
và tên này chính là định danh để các node khác biết mà có thể giao tiếp với nhau được.
ROS cũng cung cấp công cụ để làm việc dễ dàng với ros qua dòng lệnh rosnode. Ví dụ như
“rosnode list” để liệt kê các node đang hoạt động trong hệ thống, hay “rosnode info node”
để in những thông tin về node.
Messages: Để cho các node có thể trao đổi được dữ liệu cho nhau thì dữ liệu cần có
định dạng thống nhất và messages chính là thành phần quy định định dạng cấu trúc của dữ
liệu mà các node dùng để trao đổi. Trong một message bao gồm một hay nhiều cặp kiểu dữ
liệu và tên dữ liệu đi cùng với nhau. Kiểu dữ liệu có thể là kiểu nguyên thủy mà trong ROS
đã định nghĩa sẵn (như bool, int8, string
Các file đính kèm theo tài liệu này:
- luan_van_xay_dung_he_thong_phan_tich_hinh_anh_tren_ros_cho_r.pdf