Tải bản đầy đủ (.pdf) (57 trang)

Luận văn Thạc sĩ Khoa học máy tính: 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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (49.66 MB, 57 trang )





ĐẠ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ỐC LONG

Hà Nội - 2020



VIETNAM NATIONAL UNIVERSITY, HANOI
UNIVERSITY OF ENGINEERING AND TECHNOLOGY




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 khun bổ ích để giúp tơi có thể hồ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, ln ln 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 Tn, Phan Hồ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 tồ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 tố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 tốn
Facenet với độ chính xác 97% giúp cho Fuso có khả năng ghi nhớ khn 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 khn 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 tố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 tố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 tốn với OpenPose ............................................................................ 16
Hình 2-6-Sơ đồ tổng qt thuật tố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 tố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 tố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 hồnh Ox .............................................................................. 31
Hình 3-10-Sơ đồ tổng qt nhận dạng khn 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 tố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 tố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 đồ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 tố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 tố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 ngồ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 tốn OpenPose tìm khung xương người từ đó tính tốn để phát hiện ra dấu
hiệu cử chỉ vẫy tay; mơ-đun nhận dạng khn mặt dựa trên thuật tố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 tố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 q 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 tố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 tốn khác nhau để so sánh và tìm thuật tốn phù hợp nhất, đồng nhất với
mơi trường với các thuật tố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 tố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 tố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. Ngồ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

tố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 tố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]


Ngồ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 khn 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 tốn xây dựng phát triển robot, cụ thể hơn là bài tố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 tố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 tố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 tồ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 tố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) hay kiểu người dùng đã định nghĩa trước giống
như kiểu struct trong C/C++. Message được chia ra làm hai dạng chính. Thứ nhất là message
trao đổi qua topic sẽ được định nghĩa trong một tệp riêng có đi mở rộng là .msg. Thứ hai
là message được sử dụng qua service cũng được định nghĩa trong một tệp riêng có đi mở
rộng là .srv. Điều khác biệt trong message có đi .srv là định nghĩa cả cấu dữ liệu trả về








10

của service. Hình 2-1 và Hình 2-2 có hình ảnh mơ tả message với hình hộp chữ nhật màu
cam khơng viền.
Topics: Các message có đi mở rộng là .msg được trao đổi giữa các node thơng qua
topic. Mỗi topic có một tên để định danh và cấu trúc định dạng message tương ứng. Bất kì
node nào trong mạng muốn nhận thơng tin thì có thể đăng kí nhận thơng tin từ topic. Hay
node nào cần đẩy thông tin lên topic thì cũng có thể đăng kí đẩy thơng tin cho topic. Vậy
trong một mạng, một node có thể đăng kí nhận thơng tin từ nhiều topic và cũng có thể đăng
kí đẩy thơng tin cho nhiều topic. Điều này giúp cho ROS có thể tách biệt nguồn tạo ra thơng
tin với bộ phận sử dụng thơng tin đó. Topic được xem như là một kênh truyền thông tin
định kiểu mà mỗi kênh truyền có được định danh bởi một tên riêng. Node nào cũng có thể
kết nối để gửi/nhận thơng tin qua kênh này, miễn là thông tin cùng kiểu với topic đã định
nghĩa từ trước.
Services: Mơ hình truyền thơng tin theo qua topic như ở trên trình bày là mơ hình rất
linh hoạt tuy nhiên trong một số trường hợp các node cần tương tác theo kiểu yêu cầu/đáp
ứng (request/response) thì mơ hình qua topic lại khơng cịn phù hợp nữa. Do vậy, kiểu
truyền dữ liệu service được sinh ra nhằm thực hiện kiểu tương tác yêu cầu/đáp ứng
(request/response). Một node trong mạng sẽ đóng vai trị là service để thực hiện các yêu
cầu từ các node khác gửi lên. Ví dụ, một node A có cung cấp service tính tổng 2 số. Một
node khác là B có thể gửi yêu cầu cho node A với dữ liệu để cho node A tính tổng 2 số và
trả về cho node B. Trong thực tế những yêu cầu thường phức tạp hơn rất nhiều.
Bags: Là một định dạng dùng để lưu và phát lại dữ liệu. Đây là một cơ chế quan trọng
trong việc lưu trữ dữ liệu. Ví dụ như trong phịng lab thiếu thiết bị camera, ta có thể lưu dữ
liệu camera thu được thành tệp .bag và tệp này có thể sử dụng bởi nhiều người mà không
cần đến thiết bị thật trong việc phát triển và kiểm thử robot.


2.1.2. Trao đổi thông tin giữa các node trong ROS
2.1.2.1. Trao đổi thông tin giữa các node qua topics
Để các nodes có thể trao đổi thơng tin với nhau qua topics thì các node phải khai báo
với ROS master. Thơng thường, một node có vai trị đẩy thơng tin lên topic và nhiều node
sẽ đăng kí nhận thơng tin từ topic đó. Để một node có thể đẩy thơng tin lên thì node đó cần
phải đăng kí thơng tin tên topic cần đẩy lên và định dạng dữ liệu đẩy lên (Ví dụ trong
Python: “pub = rospy.Publisher(‘chatter’, String, queue_size=10)”). Trong ví dụ trên, node



11



muốn đẩy thơng tin lên topic có tên là chatter và kiểu định dạng message gửi lên là String.
Còn để một node có thể đăng kí thơng tin thì node đó cần đăng kí tên topic nào mà muốn
nhận thơng tin, định dạng kiểu dữ liệu nhận về và quan trọng nhất là một hàm trả về dữ liệu
khi có thơng tin mới trên topic được đưa lên. (Ví dụ trong Python:
“rospy.Subscriber(‘chatter’, String, callback)”). ở đây callback là một hàm với một tham
số là dữ liệu mà topic trả về. Hình 2-1 mơ tả tồn bộ q trình trao đổi thơng tin giữa các
node qua topics.

Hình 2-1-Trao đổi thơng tin giữa các node qua Topic

2.1.2.2. Trao đổi thông tin giữa các node với services
Để có thể trao đổi được thơng tin giữa các node với services thì cần một node đóng
vai trị là service để tính tốn xử lý các yêu cầu từ các node khác. Cũng giống như topic,
node đóng vai trị là service cũng cần phải đăng kí với master tên service, kiểu dữ liệu
service sẽ nhận và hàm xử lý tính tốn để trả về u cầu (Ví dụ: “serv =
rospy.Service(‘add_two_ints’, AddTwoInts, handle_add_two_ints)”). Trong đó tên

service là ‘add_two_ints’, kiểu dữ liệu nhận là AddTwoInts và hàm handle_add_two_ints
là hàm xử lý yêu cầu và trả về dữ liệu cho các node yêu cầu. Node yêu cầu cũng phải đăng
kí với master (Ví dụ: “add_two_ints = rospy.ServiceProxy(‘add_two_ints’, AddTwoInts)”)
và gửi lên yêu cầu như resp = add_two_ints(1, 2). Hình 2-2 mơ tả q trình trao đổi thơng
tin với services.






12



Hình 2-2-Trao đổi thơng tin giữa các node qua Service

2.2. Vectơ hỗ trợ hồi qui (Support Vector Machine - SVM)
2.2.1. Máy vectơ hỗ trợ hồi quy
Trong bài toán phân lớp nhị phân với dữ liệu gồm có hai lớp và hai lớp này được phân
tách hồn tồn. Nghĩa là, có một đường thẳng (trong không gian 2 chiều), một mặt phẳng
(trong không gian 3 chiều) hay một siêu phẳng (trong không gian 𝑛 ≥ 3) phân tách tách
dữ liệu của 2 lớp sao cho các điểm dữ liệu nằm cùng một phía so với mặt phân tách thuộc
cùng một lớp. Tuy nhiên, sẽ có vơ số đường thẳng, mặt phẳng, siêu phẳng có thể phân tách
được dữ liệu thành 2 lớp thỏa mãn điều kiện như Hình 2-3 mơ tả. Vậy câu hỏi đặt ra rằng:
Đâu là mặt phân tách tốt nhất theo một tiêu chuẩn nào đó? Từ trực quan ta thấy rằng, khoảng
cách từ điểm gần nhất của hai lớp tới mặt phân tách càng xa càng tốt. Và đó cũng chính là
tư tưởng chính của thuật tốn SVM [8, 18], tìm mặt phân tách sao cho lề là lớn nhất. Với
lề được định nghĩa là khoảng cách từ điểm dữ liệu gần mặt phân tách nhất tới mặt phân
tách.





13



Hình 2-3-Các đường phân chia hai lớp

Để xây dựng và giải bài toán phân lớp nhị phân qua thuật toán SVM, chúng ta giả sử
rằng có tập dữ liệu (𝑋,y) = 2(x% , 𝑦% ), (x5 , 𝑦5 ), … (x7 , 𝑦7 )8 với vectơ x9 ∈ 𝑅 < là điểm dữ
liệu đầu vào và 𝑦9 ∈ {−1, 1} là nhãn với 𝑦9 = 1 nếu điểm x9 thuộc lớp thứ nhất và 𝑦9 =
−1 nếu điểm x9 thuộc lớp thứ hai. Gọi 𝑊 A x + 𝑏 = 𝑤% 𝑥% + 𝑤5 𝑥5 + ⋯ + 𝑤7 𝑥7 + 𝑏 = 0 là
mặt phẳng phân chia 2 lớp. Vậy khoảng cách từ một điểm đến mặt phẳng phân tách là 𝑑 =


|I J xK LM|

. Hơn nữa, lớp thứ nhất thuộc lớp dương, và lớp thứ 2 thuộc lớp âm nên chúng ta

‖I‖O

có thể viết lại cơng thức khoảng cách từ một điểm đến mặt phẳng 𝑑 =

PK (I J xK LM)
‖I‖O

. Nếu lớp


thứ nhất mà là lớp âm, lớp thứ 2 là lớp dương ta chỉ cần đổi dấu 𝑊 và 𝑏. Vậy khoảng cách
lề của một lớp được tính bởi 𝑚𝑎𝑟𝑔𝑖𝑛 = min

PK (I J xK LM)

. Như vậy bài toán tối ưu trong

‖I‖O

SVM chính là tìm 𝑊 và 𝑏 sao cho:
(𝑊, 𝑏) = 𝑎𝑟𝑔𝑚𝑎𝑥 min

PK (I J xK LM)
‖I‖O

I,M

(2.1)

Vì thay 𝑊 = 𝑘 × 𝑊 và 𝑏 = 𝑘 × 𝑏 với 𝑘 > 0 với thì mặt phân chia khơng đổi vậy
nên chúng ta có thể giả sử 𝑦9 (𝑊 A x9 + 𝑏) = 1 với những điểm gần mặt phân chia nhất thì
từ cơng thức (2.1) bài tốn trở thành tìm:
%

(𝑊, 𝑏) = 𝑎𝑟𝑔𝑚𝑎𝑥
‖I‖

O

I,M


(2.2)

Với điều kiện 𝑦9 (𝑊 A x9 + 𝑏) ≥ 1
Hay viết lại công thức (2.2) có:







14
%

5

(𝑊, 𝑏) = 𝑎𝑟𝑔𝑚𝑖𝑛 \|𝑊|\ (2.3)
5
5
I,M

Với điều kiện 1 − 𝑦9 (𝑊 A x9 + 𝑏) ≤ 0
Bài toán này có thể giải được bằng các phương pháp tối ưu hóa. Sau khi giải được bài
tốn ta sẽ thu được mặt phân tách để phân tách hai lớp dữ liệu rõ ràng nhất với khoảng cách
từ điểm dữ liệu gần nhất của hai lớp đến mặt phân tách là lớn nhất. Tuy nhiên trên thực tế
có dữ liệu thường có nhiễu ảnh hưởng đến kết quả tìm mặt phân tách sao cho lề đạt cực đại
vậy nên thuật toán lề mềm SVM được sinh ra để khắc phục những nhược điểm đó.

2.2.2. Lề mềm SVM (Soft margin SVM)

Trên thực tế, các điểm dữ liệu ở 2 lớp phân tách nhau hồn tồn là rất ít mà các lớp sẽ
có các điểm dữ liệu nhiễu như trong Hình 2-4. Những điểm dữ liệu nhiễu này có thể nằm ở
gần mặt phân tách (như Hình 2-4 bên trái) hoặc tệ hơn là có thể nằm ở nửa mặt phẳng của
lớp cịn lại (như Hình 2-4 bên phải) dẫn đến việc tìm ra nghiệm tối ưu của bài toán SVM bị
ảnh hưởng hoặc khơng có nghiệm nếu hai lớp khơng phân tách tuyến tính. Chính vì vậy, có
thể hi sinh một số điểm nhiễu gần mặt phân tách hoặc nằm ở mặt phẳng của lớp cịn lại để
có thể có được lề rộng hơn. Tuy nhiên, không thể hi sinh phần lớn các điểm để có thể có
một lề cực lớn được. Vậy mục tiêu của lề mềm SVM chính là tìm mặt phân cách tối ưu sao
cho có lề cực đại và sự hi sinh tối thiểu.

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)

Gọi 𝛿9 đo độ hi sinh tương ứng với mỗi điểm x9 trong tập toàn bộ dữ liệu. Nếu điểm
dữ liệu x9 nằm trong vùng an toàn (bên ngồi lề) thì 𝛿9 = 0. Nếu điểm dữ liệu x9 nằm trên



15



lề nhưng khơng vượt qua mặt phân cách thì 0 < 𝛿9 ≤ 1. Nếu điểm dữ liệu x9 nằm khác
phía so với mặt phân cách thì 𝛿 > 1. Như vậy, với 𝑦9 = ±1 thì 𝛿9 = |𝑊 A x9 + 𝑏 − 𝑦9 |.
Hàm mục tiêu bây giờ ngồi việc tối thiểu hóa như cơng thức (2.3) chúng ta còn phải
tối thiểu các 𝛿9 để giảm thiểu sự hi sinh. Vậy hàm mục tiêu trở thành
5

%


(𝑊, 𝑏, 𝛿 ) = 𝑎𝑟𝑔𝑚𝑖𝑛 \|𝑊|\ + 𝐶 ∑c
9d% 𝛿9 (2.4)
5
5
I,M

Với điều kiện 1 + 𝛿9 − 𝑦9 (𝑊 A x9 + 𝑏) ≤ 0 và −𝛿9 ≤ 0
Trong đó, 𝐶 là một hằng số dương để điều chỉnh điều chỉnh tầm quan trọng giữa
khoảng cách lề cực đại với sự hi sinh. Khi 𝐶 lớn, thì hàm mục tiêu tập trung giảm ∑c
9d% 𝛿9
dẫn đến 𝛿9 nhỏ có nghĩa là khơng có điểm nào phải hi sinh. Ngược lại 𝐶 nhỏ dẫn đến 𝛿9 lớn
nghĩa là sự hi sinh lớn. Để tìm được 𝐶 tối ưu, người ta thường sử dụng phương pháp kiểm
định chéo (cross-validation). Cũng giống như bên trên người ta có thể giải được bằng
phương pháp tối ưu để tìm ra nghiệm thỏa mãn cơng thức (2.4).

2.3. Thuật toán xác định khung xương người - OpenPose
2.3.1. Giới thiệu OpenPose
OpenPose [9] là một thuật toán xác định khung xương của nhiều người trong một bức
ảnh. Khác với các thuật tốn xác định khung xương người trước đó [21, 22], tiếp cận theo
hướng từ trên xuống, nghĩa là để tìm khung xương của nhiều người trong một bức ảnh thì
thuật tốn sẽ tìm khung xương từng người trong bức ảnh đó. Với phương pháp tiếp cận theo
hướng từ trên xuống có hai nhược điểm rất lớn. Thứ nhất, phải biết trước số lượng người
trong một bức ảnh. Thứ hai, độ phức tạp thời gian chạy để xác định ra tất cả khung xương
người trong một bức ảnh sẽ tăng tuyến tính theo số lượng người có trong bức ảnh. Do đó,
OpenPose đã tiếp cận theo hướng từ dưới lên bằng cách tách được độ phức tạp thời gian
chạy không cịn phụ thuộc với số lượng người có trong ảnh. OpenPose xây dựng kiến trúc
để có thể học được mức độ liên kết giữa các khớp trong cơ thể qua các vectơ 2 chiều mà
mã hóa thơng tin vị trí và hướng của các khớp cơ thể trên miền ảnh. Sau đó, sử dụng thuật
tốn tham lam để xác định cơ thể người mà các khớp đó thuộc về. Với những cải tiến trên,
OpenPose đã có độ chính xác và thời gian vượt xa với các thuật toán xác định khung xương

người đứng đầu trước đó.






×