Ngoài ra, người dùng có thé tự thêm thông tin bao gồm tên và hình ảnh khuôn mặt mới vào Database trên thiết bị Smart Canera để tăng số lượng đối tượng có thể nhận dạng.. Từ đó, khi nhận
Trang 1ĐẠI HỌC QUOC GIA TP HO CHÍ MINH
TRUONG DAI HOC CONG NGHE THONG TIN
KHOA KY THUAT MAY TÍNH
TRAN TAN TÀI - 19522158
KHÓA LUẬN TÓT NGHIỆP
TÍCH HỢP THUẬT TOÁN TRAO DOI DU LIEU TREN
CÔNG NGHE TÍNH TOÁN BIEN CHO
SMART CAMERA
INTEGRATING DATA EXCHANGE ALGORITHM ON EDGE
COMPUTING TECHNOLOGY FOR SMART CAMERA
KỸ SƯ NGÀNH KỸ THUẬT MÁY TÍNH
GIẢNG VIÊN HƯỚNG DAN
TIEN SĨ NGUYEN MINH SƠN
TP HO CHi MINH, 2023
Trang 2LỜI CẢM ƠN
Lời đầu tiên chúng em xin gửi lời cảm ơn chân thành và sự tri ân sâu sắc với quý thầy cô đang công tác tại trường Đại học Công Nghệ Thông Tin — Dai Học Quốc Gia TP Hồ Chí Minh, đặc biệt là quý thầy cô trong khoa Kỹ Thuật Máy Tính
đã tận tình giảng dạy, truyền đạt những kiến thức quý giá cho chúng em trong thời
gian qua.
Đặc biệt, chúng em xin chân thành cảm ơn thầy Tiến sĩ Nguyễn Minh Sơn đã hướng dẫn nhóm rất tận tình trong suốt quá trình thực hiện đề tài, hỗ trợ và cung cấp cho chúng em nhiều kiến thức chuyên môn quý báu để chúng em có thể hoàn
thành khoá luận Đồng thời, chúng em cũng xin chân thành gửi lời cảm ơn đến các
anh chị, bạn bè trong khoa, những người đã luôn quan tâm, giúp đỡ cho nhóm trong
suốt quá trình thực hiện nghiên cứu này.
Chúng con cũng xin cảm ơn gia đình đã luôn tin tưởng, tạo điều kiện và ủng
hộ chúng con về rất nhiều về mặt tinh than cũng như thé chất trong suốt khoảng thời
gian chúng con thực hiện đề tài khoá luận này.
Với điều kiện thời gian cũng như kinh nghiệm còn hạn chế của sinh viên nên
trong báo cáo nay chúng em không thé tránh khỏi những thiếu sót Chúng em rất
mong nhận được sự đóng góp ý kiến của quý thay cô dé chúng em được bé sung, nâng cao kiến thức của mình hơn.
Một lần nữa, chúng em xin chân thành cảm ơn!
Thành phố Hồ Chí Minh, ngày 8 tháng 8 năm 2023
Sinh viên thực hiện
Trần Tan Tài
Trang 3MỤC LỤC
Chương 1 GIỚI THIỆU DE TÀI -. -c¿-+£222EE222+++t22222EESvrvrerrrrrrreecee
1.1 Giới thiệu đề tài.
1.2 Một số nghiên cứu liên quan -¿¿-©2+++222++++22vS++rtrrvsrretrrrecree
143 Mục tiêu dé tài
1.4 Giới han đề tài
Chương 2 CƠ SỞ LÝ THUYET
QA Hệ thống nhúng -22-+2++22EE++2EEEEE22221122271112227111 222112 cv.
2.2 Smart Camera
2.3 OpenCV Me narra snes Merssssnenenee Mh secssesesessscscesesssssesessseseaceee 2.4 Streaming Vide€O - 1h HH HH HH 2.5 Se đ5À /
2.5.1 Các công cụ xử lý của FFmpeg ¿+ + + ccxsxsxsvrererererexex 2.5.2 Các gói thư viện của FFmpeg + c+secsce+x+xseersr+ 2.6 Socket Programing :- + + St 2tr 1g re 2.6.1 Giới thiệu ec Set 2.6.2 Các hàm thường sử dụng -¿- 5S serey
2.6.3 Socket Programing với giao thức TCP ‹ -+-+<+++ 2.7 Giao thức MQTTT và thư viện MOSQuItWO - - 55+ 5+ 5£+c+xzccecer
2.7.1 Giao thức MQÏTT ằccecererrrrrrrrrrrrrrrrrrrrrrser 2.7.2 MQTT MOSQUIIVO cty
2.8 Ứng dụng di động Flutter -++++222EE2vv+++rtttrvrvvrrrrrrrrrrr
2.8.1 Giới thiệu về Flutter cccccerrrrrrrrrrrrrrrrrree
Trang 42.8.2 Ưu điểm của Flutter -222ccc22cvvrrrecrvvrrrrrrrrrrrrrrrvee 19 2.8.3 Nhược điểm
2.8.4 Ngôn ngữ DarL 222222 19
Chương 3 SƠ DO HOAT ĐỘNG CUA HE THÓNG
3.1 Chế độ tìm kiếm người theo yêu cầu 2¿22+z+v2cvxzererrrseerrrr 21
4.2 Chương trình ở Cloud SeTVer .-¿- 5-5555 S++c+ccssczrxerererreree 34
4.2.1 Ludng gửi danh sách tên đối tượng về ứng dụng di động 35
4.2.2 _ Tiến trình kết nối với Smart Camera cc-ccccccccc -+38 4.2.3 Tiến trình kết nối với Scam Camera -ccccccccccccccccccezze2 46
4.3 Chương trình ở thiết bị Scan Camera -:c©v+z+222vvvvvcvvvrrerrxee 49
4.4 Xây dựng thuật toán gửi và nhận ảnh sử dung Socket - 52
4.4.1 _ Thuật toán gửi anh thông qua Socket ‹ :-«5-s- 52 4.4.2 _ Thuật toán nhận anh thông qua Socket -+ 5 + +++<++ 54
4.5 Chương trình ứng dụng di động FÏut(er ¿- <5 5+ 5+s*c+c+ceeexseex 56
4.5.1 Nhận tên các đối tượng có thé tìm kiếm ¿+2 56
4.5.2 Gửi lệnh tìm kiếm đối tượng từ danh sách tên các đối tượng 57 4.5.3 Hiển thị và cập nhật lại ảnh khi tìm được đối tượng 58 4.5.4 Chuyên màn hình chế độ tìm kiếm sang phát trực tiếp và ngược lại 59
Trang 54.5.5 Hiển thị phát trực tiếp và chuyên đổi độ phân giải 61
Chương 5 KET QUA THUC HIỆN 5.1 Nhận yêu cầu tìm kiếm va gửi hình ảnh tim kiếm lên Cloud Server 62
5.2 Nhận yêu cầu phát trực tiếp và xây dựng luồng stream
5.3 Thêm thông tin đối tượng mới vào Database sec 63 5.4 Gửi danh sách tên các đối tượng và màn hình hiền thị chế độ tìm kiếm trên ứng dụng di động 64
5.5 Màn hình hiền thị phát trực tiếp trên ứng dụng di động - 65
5.6 Màn hình hiển thị đồng thời phát trực tiếp va phát hiện đối tượng
5.7 Lưu lại những yêu cầu và cập nhật cho người dùng - 67
5.8 Tạo service để chạy ngầm chương trình ở Server
5.9 Tạo Service chạy ngầm chương trình ở Smart Camera - 69
5.10 Đóng gói sản phẩm :-:-222:222222++ttEEEEvrttEEEvrrerrrrrrrerrrrrrrrer 70 5.10.1 Thiết bị Smart Camera -2c¿2222++++222++ztzevrverrrrrrseee 70 5.10.2 Thiết bị Scam Camera -2:2222++222++++t2E2E+rttrrrrerrrrrrrree 71 Chương 6 THUC NGHIỆM VÀ DANH GIÁ HE THÓNG 72
6.1 Đánh giá thuật toán gửi ảnh trên ba thiết bị khác nhau - 72
6.1.1 Kịch bản đánh giá thuật toán gửi ảnh trên ba thiết bị khác nhau 72
6.1.2 Kết quả đánh giá thuật toán gửi ảnh trên ba thiết bị khác nhau 72
6.2 Đánh giá tốc độ gửi ảnh của Smart Camera khi kết nói Wifi hoặc 4G 75
6.2.1 Kịch bản đánh giá tốc độ gửi ảnh trên Smart Camera 75
6.2.2 Kết quả đánh giá tốc độ gửi ảnh trên Smart Camera - 75
6.3 Đánh giá tốc độ và độ trễ ở chế độ phát trực tiếp trên Smart Camera 78
6.3.1 Kịch bản đánh giá chế độ phát trực tiếp trên Smart Cămera 78
Trang 66.3.2 Kết quả đánh giá chế độ phat trực tiếp trên Smart Camera 78 6.4 Đánh giá thiết bị Smart Camera hoạt động trong thời gian dài
6.4.1 Kịch bản đánh giá Smart Camera sử dụng trong thời gian dài
6.4.2 Kết quả Smart Camera ở chế độ phát trực tiếp trong thời gian dai 81
6.4.3 Kết quả Smart Camera ở chế độ tìm kiếm trong thời gian dài 82
6.5 Đánh giá độ chính xác của hệ théng
6.5.1 I.419080:0001) 4001.0107 85
6.5.2 Kết quả khi đo độ chính xác
6.6 Đánh giá hệ thống : 222222222++22222EtEEEEEEtEEEEErrtrrrrrrrerrrrrrrre 88
Chuong 7 KET LUẬN VA HƯỚNG PHAT TRIỄN -+ 90
7.1 Kết qua dat dQ cecccccccscsssscssssssesscssssecssnsseescssssesesssssseesssssscesssueseessseeseessseeees 90
7.2 Hướng phát triển của đề tài ¿-2222++s222ExerrErrtrrrrrrkrrerrrrecrre 91
Trang 7DANH MỤC HÌNH
Hình 1 Sơ đồ tổng quát của đề tài - 2222222 t2 cv 4
Hình 2 Mô hình cơ bản của một hệ thống nhúng -22- ©2225 6 Hình 3 Sơ đồ khối của một smart CaIm€Ta - 2-55 S2 E2EE2EE2EEEEEEEEerExrrrrerr 7
Hình 4 Smart camera HANET AI CAMERRA SH iey 8
Hình 5 Một số cong kết nối trên smart camera ssccscsssssessssssesesssseessesssecscssssecsessseess 9 Hình 6 Kiến trúc cơ bản của streaming video .-::-++22v+ztzecvvrerrrrsscee 11
Hình 7 Quy trình xử lý video bang FFmpeg sssscsssssssscsssseesssssseeesssseeessssseeesessees 12
Hình 8 Ludng hoạt động của TCP Socket 2¿:©22z++222v+zrrerrxeersrrrscee 16 Hình 9 Mô hình giao tiếp MQTT -:222222222222222222212112111112222 2 17 Hình 10 Ngôn ngữ Dart và nền tảng Flutter - -: c¿2©2252c++22vsvcsccvscez 20 Hình 11 Mô hình hoạt động chế độ tìm kiếm theo yêu cầu - -: 21 Hình 12 Mô hình hoạt động chế độ phát trực tiẾp - -¿ cz+c5sc+2 22
Hình 13 Mô hình hoạt động thêm đối tượng mới có thê nhận diện 23
Hình 14 Lưu dé tổng chương trình Smart Camera 2+2szz222scez 24
Hình 15 Lưu đồ luồng xử lý dữ liệu hình ảnh -: 222cc++2222vvvvecccez 25 Hình 16 Lưu đồ luồng nhận và thêm đối tượng -¿©z+22s+zz++ 30 Hình 17 Lưu đồ tổng chương trình Cloud Server -¿©2cz2225ssczzz 34
Hình 18 Lưu đồ luồng gửi danh sách tên đối tượng và trạng thái Camera 35
Hình 19 Tiến trình quản lý kết nối với Smart Camera -++222cvcv+ 38 Hình 20 Lưu đồ luồng thêm đối tượng mới về Smart Camera và App - 40
Hình 21 Lưu đồ luồng nhận hình ảnh Smart Camera tìm kiếm được - 43
Hình 22 Lưu đồ tiến trình kết nối với Scam Camera -::+-222ccvscccce2 46 Hình 23 Lưu đồ thuật toán tiến trình nhận thông tin từ Scan Camera 47 Hình 24 Lưu đồ thuật toán chương trình thiết bị Scan Camera cscce¿ 49 Hình 25 Lưu đồ thuật toán gửi ảnh thông qua Socket -: -+ 52 Hình 26 Lưu đồ thuật toán nhận ảnh thông qua Socket - 54 Hình 27 Nhận yêu cầu tìm kiếm và gửi hình ảnh lên Cloud Server 62 Hình 28 Hình ảnh kết quả thực hiện phát trực tiế
Trang 8Hình 29 Thêm thông tin đối tượng mới vào Database -:-cscc - 63
Hình 30 Màn hình hiển thị chế độ tìm kiếm trên ứng dụng di động 64
Hình 31 Màn hình hiền thị chế độ phát trực tiếp trên ứng dụng di động 65
Hình 32 Màn hình hiền thị phát trực tiếp toàn màn hình -. 65
Hình 33 Màn hình hiển thị đồng thời hai chế độ 2 2¿++222zccczsscee 66 Hình 34 Các thông báo được lưu lại và hiền thị -. -©cc++ccc+zcrccrsscee 67 Hình 35 Tao service và chạy chương trình thành công - - «+ << 68 Hình 36 Script dé khởi động chương trình Smart Camera -. - 69
Hình 37 Service ở Smart Camera khởi chạy thành công - 69
Hình 38 Hộp Smart Camera có bố trí thêm quạt tản nhiỆt -: - 70
Hình 39 Các thiết bị đi kèm với Smart Camera 22 5z+2s2+EE£+EE£2EEc2EEesrxerre 70 Hình 40 Smart Camera được đóng gói hoàn chỉnh - 5s -«s++++e<ecexse+ 71 Hinh 41 Hộp Scan Camera và các thiết bị kết nói Hình 42 Tốc độ gửi ảnh trên Smart Camera 72 Hình 43 Tốc độ gửi ảnh trên Scan Camera 73
Hình 44 Tốc độ gửi anh trên Cloud Server 74
Hình 45 Tốc độ gửi anh với độ phân giải SD và kết nói mạng 4G 75
Hình 46 Tốc độ gửi anh với độ phân giải HD và kết nối mang 4G 76
Hình 47 Tốc độ gửi ảnh với độ phân giải HD và kết nối mang Wifi 76
Hình 48 Tốc độ gửi ảnh với độ phân giải SD và kết nối mang Wifi 71
Hình 49 Kết qua phát trực tiếp ở chế độ SD và kết nối với mang Wifi 78
Hình 50 Kết quả phát trực tiếp ở chế độ HD và kết nối với mang Wifi 79
Hình 51 Kết quả phát trực tiếp ở chế độ HD và kết nối với mạng 4G 79
Hình 52 Kết quả phát trực tiếp ở chế độ SD và kết nối với mạng 4G 80
Hình 53 Camera phát trực tiếp thời gian dài ở độ phân giải HD 81
Hình 54 Tốc độ gửi ảnh khi đã hoạt động 6 giờ -czz+cccsse+ 83 Hình 55 Tốc độ gửi ảnh khi đã hoạt động 12 giờ -.cccccccccccccceceeee 83
Hình 56 Tốc độ gửi ảnh khi đã hoạt động 19 giờ .-cccc+cccccveeeccee 84 Hình 57 Tốc độ gửi ảnh khi đã hoạt động 24 giờ ¿-cc+cc5sccerz 84
Trang 9Hình 58 Góc bên trái so với hướng đối tượng -: -:©225+c++2cvsccesrz
Hình 59 Góc bên phải so với hướng đối tượng :©2z++22+zzvvzvscez
Hình 60 Góc thang so với hướng đối tượng
Trang 10DANH MỤC BANG
Bang 1 Các thư viện của Ffmpeg ‹- + cà té HH rrc 13
Bang 2 Đánh giá thuật toán gửi ảnh bang Socket với ba thiết bị - 74 Bảng 3 Đánh giá tốc độ gửi ảnh của Smart Camera với hai loại mạng T7 Bang 4 Đánh giá phát trực tiếp của Smart Camera với hai loại mạng 80 Bang 5 Đánh giá chế độ phát trực tiếp trong thời gian dài . - 82 Bảng 6 Thời gian gửi ảnh ở chế độ tìm kiếm trong thời gian dài - 85
Bang7 Đánh giá độ chính Xác ¿+ tt ng Hư 88
Trang 11DANH MỤC TU VIET TAT
AI Artificial Intelligence
CCTV Closed-circuit television
CPU Central Processing Unit
DSP Digital Signal Processor
FPGA Field-Programmable Gate Array
FPS Frame Per Second
GPU Graphics Processing Unit
HD High Definition
HTTP Hyper Text Transfer Protocol
loT Internet of Things
IP Internet Protocol
OpenCV Open source Computer Vision library
MQTT Message Queuing Telemetry Transport
RAM Random Access Memory
RTSP Real Time Streaming Protocol
SD Standard Definition
SoC System on Chip
TCP Transmission Control Protocol
URL Uniform Resource Locator
Trang 12TÓM TÁT KHÓA LUẬN
Ngày nay, những tiễn bộ trong công nghệ đã giúp con người có thể tích hợp được nhiều hệ thống phức tạp trong một thiết bị duy nhất Smart camera cũng là một phần của quá trình phát triển này và có thể được định nghĩa là một hệ thống được tích hợp thêm nhiều chức năng: truyền tải hình ảnh qua kết nối không dây, tích hợp thuật toán xử lý ảnh Việc xây dựng smart camera có thé dựa trên nhiều nền tảng như: FPGA, Embedded system, SoC, Edge Computing, Cloud Server Mỗi
công nghệ đều có ưu nhược điểm đặc trưng của chúng, đã và đang được nhiều
nhóm tác giả, trường học, các công ty lớn cả trong và ngoài nước nghiên cứu, phát
triển Các yếu tố cần lưu ý khi thiết kế smart camera đó là độ chính xác, tốc độ thu nhận và truyền dữ liệu, năng lượng tiêu tốn và giá thành sản phẩm.
Trong dé tài này, nhóm sẽ tập trung pháp trién giải pháp giao tiếp giữa thiết
bị Smart Camera đã tích hợp sẵn công nghệ tính toán biên nhận dạng khuôn mặt, Cloud Server và phần mềm di động Nhờ đó người dùng có thể yêu cầu Smart Camera thực hiện tìm kiếm và gửi hình ảnh có chứa khuôn mặt theo ý muốn hoặc bật tắt chế độ streaming Ngoài ra, người dùng có thé tự thêm thông tin bao gồm tên
và hình ảnh khuôn mặt mới vào Database trên thiết bị Smart Canera để tăng số lượng đối tượng có thể nhận dạng.
Nhóm sẽ thiết kế chương trình kết nối giữa thiết bị Smart Camera Jetson
Nano đã tích hợp sẵn công nghệ tính toán biên nhận dạng khuôn mặt và Cloud
Server sử dụng thư viện lập trình Socket Từ đó, khi nhận dạng được khuôn mặt mà
người dùng muốn tìm, Smart Camera sẽ gửi hình ảnh đó thông qua Socket đã kết
nối và lưu lại trên Server Ngoài ra, nhóm sẽ sử dụng thêm một thiết bị Camera khác là Raspberry Pi 3b kết nối với Smart Camera thông qua Cloud Server dé gửi hình ảnh khuôn mặt và tên người mới vào Database Sau đó, nhóm sẽ thiết kế phần
mềm Flutter dé hiển thị hình ảnh và video streaming Ngoài ra, ứng dụng di động có thể gửi yêu cầu thực hiện công việc về Smart Camera thông qua MQTT.
Trang 13Chương 1 GIỚI THIỆU DE TÀI
1.1 Giới thiệu đề tài
Trong xã hội hiện đại, hệ thống giám sát và bảo vệ an toàn ngày càng đóng vai trò quan trọng đối với tính mạng con người cũng như sự an toàn của cá nhân và
tài sản Thu thập và lưu trữ hình ảnh là phương pháp trực tiếp, hiệu quả và đáng tin cậy nhất của hệ thống giám sát và bảo vệ an ninh hiện đại Như câu nói "thấy là
tin", có lượng thông tin trong hình ảnh lớn hơn nhiều so với ngôn ngữ và văn bản và
chúng rất đễ hiểu Vì vậy, hệ thống giám sát và bảo vệ an ninh dựa trên hình ảnh
đang là xu hướng của hệ thống giám sát và bảo vệ an ninh hiện đại và sẽ được ứng
dụng rộng rãi trong đời sống xã hội của chúng ta.
Tuy nhiên, với có sự gia tăng đáng kẻ về số lượng IP camera sẽ gây ra nhiều vấn đề Da số các loại IP Camera cũ sẽ đưa lên toàn bộ dữ liệu hình ảnh mà nó thu được hiển trị trên Server và lưu lại nhằm cho phép người dùng theo dõi bat cứ thời
điểm nào Tình trạng này khiến cho máy chủ có thể bị quá tải hoặc tốn kém nhiều
tài nguyên do nhận được số lượng dữ liệu vô cùng lớn và không cần thiết.
Ngày nay, với sự phát triển ngày càng nhanh của công nghệ, các ứng dụng thông minh hỗ trợ con người trong công việc ngày càng được quan tâm nghiên cứu Các hệ thống này mô phỏng dựa trên các giác quan của con người để tạo ra các hệ
thống thông minh Trong đó kênh thông tin thị giác của con người được sử dụng nhiều nhất để xây dựng những hệ thống nhận dạng và tìm kiếm các đối tượng Do
đó smart camera đã trở thành đề tài thu hút được nhiều sự quan tâm từ các nhóm
nghiên cứu, trường đại học và nhiều ngành công nghiệp Khác với máy ảnh thông thường, nó không chỉ thực hiện việc chụp ảnh mà còn phân tích hình ảnh để nhận
dạng và đưa ra thông tin về đối tượng nào đó trong ảnh hoặc có thé chỉnh sửa ảnh trực tiếp mà không cần sự can thiệp của con người tat cả đều được tích hợp trong một hệ thống nhỏ gon Sự phổ biến ngày càng tăng của smart camera được xây
dựng dựa trên những tiến bộ đạt được trong công nghệ bán dẫn, kỹ thuật thị giác
Trang 14máy tính và được thúc đây bởi các yếu tố kinh tế - xã hội như độ an toàn, bảo mật giúp tăng năng suất và tiết kiệm chỉ phí.
1.2 Một số nghiên cứu liên quan
Hiện nay, bằng cách sử dụng các thiết bị Smart Camera có tích hợp các thuật
toán AI nhận dạng đặc tính, hệ thống có thể giảm được lượng lớn tài nguyên và băng thông mà vẫn đảm bảo đầy đủ thông tin mà người dùng muốn Do đó, đã có
nhiều trường đại học, công ty, tập đoàn lớn ưu tiên nghiên cứu và phát triển:
© Camera an ninh thông minh trong nhà như Nest IQ [1] cung cấp khả năng
nhận diện khuôn mặt Khi camera ghi lại một khuôn mặt không quen
thuộc, phần mềm sẽ tự động thông báo cho chủ sở hữu Tuy nhiên, những
tính năng này không được cung cấp miễn phí Sử dụng dịch vụ lưu trữ
đám mây để giữ lại các hình ảnh liên tục là một lựa chọn tốn kém Nest yêu cầu người dùng trả 300 đô la mỗi năm dé có thể lưu trữ video trong
vòng 30 ngày cho mỗi camera và sử dụng tính năng nhận diện khuôn mặt.
© Nam 2018, nhóm tác giả gồm năm thành viên đã phát trién hệ thống giám
sát theo dõi con người [3] Trong nghiên cứu này, nhóm đã đề xuất một
hệ thống camera IP dựa trên hệ thống CCTV có khả năng phát hiện va theo đõi một người Nhóm sử dụng năm camera dé ghi lại góc nhìn mặt
trước va hai bên của người đó Những camera này cũng được sử dụng dé xác định hướng di chuyển Đề tài này chỉ dừng lại ở mức phát hiện con
người và chưa thể nhận diện người đó là ai.
¢ Đến năm 2019, tác giả H C Kaskavalci và S Gören đã phát triễn hệ
thống giám sát dựa trên Deep Learning sử dụng Edge và Cloud
Computing [2] Đề tài sử dụng các thiết bị Camera tìm kiếm khuôn mặt người, sau đó gửi những tấm ảnh chứa khuôn mặt đó lên Edge
Computing Edge Computing chỉ gửi những hình ảnh mà nó nhận dạng
được lên Server và bỏ qua những hình ảnh không cần thiết Tuy nhiên, hệ
Trang 15thống chỉ có thê gửi lên những hình ảnh sau khi tìm kiếm và người dùng không thé xem phát trực tiếp những sự kiện đang diễn ra.
e Trường đại học Công nghệ thông tin cũng đã có những dé tài thiết kế
Smart Camera Điền hình là luận ăn tốt nghiệp [4] ““Tối ưu streaming cho
bộ tăng tốc AI tích hợp trên Ultra96-V2 cho Smart Camera” của nhóm
sinh viên Võ Phúc Vinh Khang và Lê Hoài vào năm 2023 Nhóm tác giả
trên đã có thể sử dụng cả hai chế độ Streaming và nhận dạng vật thể trên
cùng một thiết bị Tuy nhiên, hai chế độ này hoạt động riêng biệt và sử
dụng mỗi USB Camera cho mỗi chế độ.
1.3 Mục tiêu đề tài
Ở đề tài này, nhóm phát triển giải pháp giao tiếp giữa thiết bị Smart Camera
đã tích hợp sẵn công nghệ tính toán biên nhận dạng khuôn mặt, Cloud Server và phần mềm di động Nhờ đó, Smart Camera có thé nhận yêu cầu tìm kiếm hoặc phát
trực tiếp từ phía người dùng trên phần mềm di động và gửi những hình ảnh chứa
khuôn mặt mà người dùng mong muốn lên Cloud Server Ngoài ra, hệ thống hỗ trợ người dùng có thé tự thêm thông tin dé tăng só lượng đói tượng có thể nhận dạng.
Cloud Server / Scan Camera
Mobile App
Hình 1 Sơ đồ tổng quát của đề tài
Trang 16Dé có thể đáp ứng các yêu cầu trên, nhóm đã dé ra những mục tiêu cụ thé
¢ Nghién cứu kỹ thuật giao tiếp sử dụng socket và xây dựng chương trình
để kết nối Smart Camera và Cloud Server Từ đó Cloud Server có thể
nhận và lưu lại hình ảnh khi Smart Camera gửi hình ảnh người dùng tìm.
© Ung dụng bộ công cụ Ffmpeg gửi luồng video trực tiếp trong trường hợp
người dùng yêu cau.
e Xây dựng chương trình ở thiết bị Camera khác có thể thêm hình ảnh
khuôn mặt và tên người mới Sau đó, thiết bị Camera này sẽ gửi những thông tin đó và lưu vào Database của Smart Camera thông qua giao tiếp
với Cloud Server.
e Xây dựng ứng dụng di động Flutter với giao diện hiển thị video
streaming, hình ảnh Smart Camera đã gửi lên và danh sách tên các đối
tượng có thể tìm kiếm.
e_ Thiết lập kết nối giữa thiết bị Smart Camera, Cloud Server và ứng dụng
di động sử dụng giao thức truyền thông MQTT Nhờ đó, Phần mềm
Flutter có thể gửi yêu cầu đến thiết bị Smart Camera thực hiện công việc Ngoài ra, khi có những cập nhật về Database cũng như khi có hình ảnh
Smart Camera vừa gửi lên, Cloud Server cũng sẽ gửi thông báo MQTT
đến cho người dùng.
1.4 Giới hạn đề tài
Do thời gian hạn chế trong quá trình làm luận văn nên nhóm chỉ thiết kế mô
720p (HD) và một thiết bị Scan Camera Raspberry Pi 3b có phân giải 480p (SD).
Ngoài ra, Smart Camera trong một lúc chỉ thực hiện được một công việc Do đó,
phần mềm di động tuy cho phép nhiều người sử dụng theo dõi nhưng chỉ gửi một yêu cầu và hiển thị một chức năng Hệ thống cũng cần phải kết nối với mạng tối thiếu 18 Mbps mới có thé hoạt động ồn định.
Trang 17Chương 2 CƠ SỞ LÝ THUYET
2.1 Hệ thống nhúng
Hệ thống nhúng là một loại hệ thông máy tính được thiết kế dé thực hiện một
số tác vụ như truy cập, xử lý, lưu trữ và kiểm soát dit liệu trong các hệ thống thiết bị
điện tử khác nhau Các hệ thống nhúng là sự kết hợp giữa phần cứng và phần mềm,
ở đây phần mềm được nhúng vào phần cứng Một trong những đặc điểm quan trọng
nhất của các hệ thống này là nó chỉ cung cấp input/output trong một khoảng thời
gian giới hạn Sự hỗ trợ của các hệ thống nhúng giúp cho công việc trở nên hoàn
thiện và thuận tiện hơn Vì thế, các hệ thống nhúng thường được tích hợp trong rất nhiều thiết bị từ đơn giản đến phức tạp Hình 2 mô tả mô hình cơ bản của một hệ thống nhúng.
Link to Other Systems
Hình 2 Mô hình cơ ban của một hệ thống nhúng
2.2 Smart Camera
Smart camera đã được ứng dụng trong công nghiệp được hơn hai thập kỷ,
nhưng những tiến bộ trong công nghệ vi xử lý đã làm cho thiết bị này trở nên dễ tiếp cận và phô biến hơn, đặc biệt là trong các lĩnh vực như giám sát và thị giác máy
tính Thuật ngữ smart camera có nhiều định nghĩa khác nhau, tuy nhiên mọi người đều thống nhất rằng một smart camera không chỉ bao gồm các cảm biến hình ảnh
Trang 18mà còn có thêm một số loại chip xử lý như CPU, DSP, FPGA hoặc các thiết bị xử
lý khác Sơ đồ khối của một smart camera cơ bản được biểu diễn ở Hình 3
On-board
Processor
Encoder Input Digital I/O Display Out
Hình 3 So đồ khối của một smart camera
Tuy nhiên, ngay cả máy ảnh kỹ thuật số thông thường cũng có sẵn một số bộ
xử lý hình ảnh để chỉnh sửa các hiệu ứng, loại bỏ các phần thừa, nhận diện khuôn
mặt, sử dụng bộ lọc hình ảnh hoặc thực hiện các tính năng xử lý ảnh khác Vì thế,
một máy ảnh bao gồm bộ xử lý cùng với cảm biến hình ảnh không được gọi là
smart camera.
Không giống với hau hết các máy ảnh thông thường, output của smart
camera không phải là hình ảnh mà là một thông tin hoặc một lựa chọn Vì thuật toán
xử lý ảnh hoặc máy học được thực hiện trực tiếp trên smart camera nên hình ảnh
không cần phải truyền sang máy tính hoặc các thiết bị khác Thay vào đó, kết quả
của quá trình xử lý ảnh có thể được chuyên trực tiếp đến người điều khiển hoặc các
thiết bị khác trong hệ thống
Một smart camera giống như một người đưa ra quyết định Nó thường có cácđặc điêm cơ bản sau:
Trang 19e Hiệu suất bộ xử lý: Một số loại smart camera có hiệu suất xử lý ngang
băng với khả năng xử lý của một hệ thống dựa trên máy tính cá nhân.Smart camera bao gồm các bộ xử lý có san như DSP, PowerPC, Atom.Ngoài ra còn có các tùy chọn kết hợp như CPU va bộ đồng xử lý DSPcho một số thuật toán nhất định
e Kích thước: Nhiều thành phan trong smart camera được tích hợp vào một
bộ phận duy nhất, giúp giảm kích thước giá thành sản phẩm
e© Cảm biến hình ảnh: Bản chất của smart camera vẫn là một máy ảnh,
nhưng nó không chỉ dừng lại ở việc thu nhận ảnh mà còn quét ảnh với tần
số lên đến 10 kHz
e Phần mềm: Hau hết các smart camera ngày nay đều được cai đặt các phần
mềm giúp người dùng dễ đàng thao tác hơn trong việc xử lý ảnh
e Độ bền: Độ bền của smart camera phụ thuộc rất nhiều vào môi trường mà
nó được triển khai Nhưng các nhà sản xuất luôn trang bị một số tínhnăng cơ bản giúp hạn chế hư hỏng của smart camera như chống nước,chống va đập, chong bụi Hình 4 giới thiệu smart camera HANET AI
CAMERA của Việt Nam có tính năng nhận diện khuôn mặt, nhận diện
hình đáng người vào ban đêm, thích hợp sử dụng dé cham công nhân viên
trong công ty hoặc sử dụng làm camera an ninh.
Hình 4 Smart camera HANET AI CAMERA
e Khả năng kêt nôi: Moi smart camera đêu được trang bi các công giao tiép
giúp kết nối hoặc điều khiển các thiết bị khác trong hệ thống, truyền nhận
Trang 20dữ liệu một cách dé dàng hơn Hình 5 giới thiệu một vài cổng kết nối I/O,
công Ethernet, công USB, đèn tín hiệu
Hình 5 Một số cổng kết nối trên smart camera
2.3 OpenCV
Open Source Computer Vision Library là một tập các thư viện mã nguồn mở
dành cho thị giác máy tính, máy học và xử lý anh OpenCV được thiết kế dé hỗ trợ
hiệu quả về tính toán và chuyên dùng cho các ứng dụng real-time (thời gian thực).Nếu được viết trên C/C++ tối ưu, thư viện này có thể tận dụng được bộ xử lý đa lõi(multi-core processing) OpenCV có một cộng đồng người dùng khá hùng hậu hoạt
động trên khắp thế giới bởi nhu cầu cần đến nó ngày càng tăng theo xu hướng chạy
đua về sử dụng computer vision của các công ty công nghệ
OpenCV có cấu trúc module, nghĩa là gói bao gồm một số thư viện liên kết
tĩnh (static libraries) hoặc thư viện liên kết động (shared libraries) Một số module
phô biên có săn như:
Trang 21e Core functionality (core) — module nhỏ gọn dé xác định cấu trúc dir liệu
cơ bản, bao gồm mảng đa chiều dày đặc và nhiều chức năng cơ bản được
sử dụng bởi tất cả các module khác
e© Image Processing (imgproc) — module xử lý hình ảnh gồm cả lọc hình
ảnh tuyến tính và phi tuyến (linear and non-linear image filtering), phép
biến đổi hình học (chỉnh size, afin va warp phối cảnh, ánh xạ lại dựa trênbảng chung), chuyển đổi không gian màu, biéu đồ, và nhiều cái khác
e_ Video Analysis (video) — module phân tích video bao gồm các tính năng
ước tính chuyển động, tách nền, và các thuật toán theo dõi vật thể.
e Camera Calibration and 3D Reconstruction (calib3d) — thuật toán hình
học đa chiều cơ bản, hiệu chuẩn máy ảnh single và stereo (single andstereo camera calibration), dự đoán kiêu dáng của đối tượng (object poseestimation), thuật toán thư tín âm thanh nổi (stereo correspondencealgorithms) va cac yếu t6 tái tạo 3D
e 2D Features Framework (features2d) — phát hiện các đặc tính nổi bật của
bộ nhận diện, bộ truy xuất thông só, thông số đối choi
e Object Detection (objdetect) — phát hiện các đối tượng và mô phỏng của
các hàm được định nghĩa sẵn — predefined classes (vd: khuôn mặt, mắt,
cốc, con người, xe hoi, )
e_ High-level GUI (highgui) — giao diện dé dùng để thực hiện việc giao tiếp
UI đơn giản.
e Video I/O (videoio) — giao diện dé dùng đề thu và mã hóa video
e GPU - Các thuật toán tăng tốc GPU từ các module OpenCV khác
2.4 Streaming Video
Thuật ngữ Streaming video lần đầu tiên được sử dụng vao năm 1990 được
mô ta là một kỹ thuật giúp thu thập dữ liệu từ camera sau đó truyền dit liệu video đósang một hoặc nhiều thiết bị nhận thông qua mạng Internet, được ứng dụng rộng rãi
10
Trang 22trong thực tế như: các phần mềm (media player, web browser, ) trên các máy
khách truy cập và cho phép xem video từ các máy chủ theo mô hình server/client.
Ngay từ khi ra đời, kỹ thuật streaming video đã được áp dụng vào các phần
mềm phục vụ nhu cầu giải trí, những ứng dụng hỗ trợ cho việc hội họp trực tuyến,
giám sát an ninh, thị giác máy trong công nghiệp, robot, hệ thống nhà thông minh,
quan lý và điều khiển trong các doanh nghiệp, cơ quan, tô chức trở nên dé dàng va
hiệu quả hơn Đặc biệt là các ứng dụng được xây dựng dựa trên các hệ thống nhúngtrên phần cứng
Đây là kỹ thuật cho phép bat kỳ nội dung video nào được vận chuyền thôngqua mạng Internet Các nội dung này có thể là chương trình TV, phim ảnh, videongắn, Các nền tảng giải trí như Youtube, Netflix, media player, web browser
cũng sử dụng kỹ thuật streaming video trên máy người dùng truy cập và phát video
Streaming Server Client / Receiver
Hình 6 Kiến trúc cơ bản của streaming video
Hình 6 mô tả kiến trúc cơ bản của streaming video Về bản chất, streamingvideo trực tiếp qua Internet bao gồm một camera ghi lại nội dung, sự kiện cần phát
sau đó sử dụng các bộ mã hóa dé số hóa các nội dung này, một streamer server sẽ
đóng vai trò là nơi truyền đữ liệu qua mạng Internet đến một mạng lưới phân phối
nội dung đê phân phôi và cung câp nội dung đên với người xem.
11
Trang 232.5 FFmpeg
FFmpeg là một framework hàng đầu về đa phương tiện (xử lý audio, video)
Nó có thé decode (giải mã), encode (mã hóa), transcode (chuyển ma), mux (ghép
kênh), demux (phân kênh, tách kênh), stream (ví dụ như livestream trên youtube,
facebook, ), filter (lọc) và play (chạy, phát video) rất nhiều thứ mà con người hay
máy móc tạo ra.
FFmpeg hỗ trợ hầu hết các định dạng Và nó khá là linh hoạt, có thể compile,run va chay trén nhiéu nén tang nhu Linux, Mac OS, Microsoft Windows, BSD,Solaris, va ở trên nhiều môi trường, kiến trúc khác nhau
Hình 7 mô tả quy trình xử lý video bằng FFmpeg Video đầu vào sẽ được
phân tách thành dữ liệu hình ảnh và dữ liệu âm thanh, trải qua các quá trình decode,
encode sau đó được gộp lại thành video hoàn chỉnh ở đầu ra
FFmpeg
Hình 7 Quy trình xử lý video bang FFmpeg
2.5.1 Cac công cụ xử lý của FFmpeg
FFmpeg cung cấp sẵn cho người dùng những tiện ích là: ffmpeg, ffserver,
ffplay và ffprobe.
« ffmpeg: Tiện ích dựa trên command line giúp người sử dụng chuyền đổi định
dang tệp tin (hỗ trợ rất nhiều định dạng khác nhau)
« ffserver: Server cho việc streaming.
12
Trang 24e ffplay: Một chương trình đơn giản giúp chạy, phat video dựa trên thư viện
SDL và ffmpeg.
e ffprobe: Một chương trình đơn giản giúp phân tích việc stream các tệp tin đa
phương tiện.
2.5.2 Các gói thư viện của FFmpeg
FFmpeg có chứa các thư viện libavcodec, libavutil, libavformat, libavfilter,
libavdevice, libswscale và libswresample có thé sử dụng bởi các ứng dụng Bang 1
mô tả chỉ tiết các thư viện mà FFmpeg hỗ tro
Thư viện Mô tả
libavutil Một thư viện chứa các hàm cho việc đơn giản chương trình, bao
gồm việc sinh ra số ngẫu nhiên, cau trúc dữ liệu, chương trình
toán học, tiện ích đa phương tiện cơ bản
libavcodec Một thư viện chứa bộ encoder (mã hóa) va decoder (giải mã)
cho audio/video.
libavformat Thư viện chứa bộ demuxer (phân kênh) và muxer (ghép kênh)
cho những định dạng đa phương tiện.
libavdevice | Thư viện chứa những thiết bị đầu vào và đầu ra cho việc lây vào
hay xuất ra nội dung đa phương tiện với những phần mềm phổ
biến như Video4Linux, Video4Linux2, VfW, and ALSA
libavfilter Thu vién cho viéc loc video
libswscale Thư viện cho việc tôi ưu hóa ảnh về co dan, mau săc,
libswresample | Thư viện cho việc tôi ưu hóa vệ việc lay mâu lại audio,
Bảng 1 Các thư viện của Ffmpeg
Trang 25tại một IP, trong khi Client socket sẽ yêu cầu kết nối với Server socket Server vàClient sẽ tạo thành đường dẫn socket trong khi Client giao tiếp với Server.
Đối với một lập trình viên, socket trông giống như một bộ mô tả tệp cấp
thấp Điều này là do các lệnh như read() và write() hoạt động với socket giống như
cách chúng thực hiện với tệp và đường dẫn.
Socket Unix được sử dung trong khung ứng dung Client-Server Server làmột quá trình thực hiện một số chức năng theo yêu cầu từ Client hoặc ngược lại
2.6.2 Các hàm thường sử dụng
socket(): Hàm socket() được sử dụng dé tạo một socket mới Nó có ba đối số:
địa chỉ IP, kiểu socket và giao thức Dia chỉ thường được đặt là AF_INET, cho biết
sử dụng địa chỉ IPv4 và kiểu socket sẽ có hai kiểu là TCP va UDP
bind(): Hàm bind() được sử dụng dé liên kết một socket với một địa chỉ IP vàport cụ thể Nó có ba đối số: mô tả tập tin socket, một con trỏ đến cấu trúc sockaddrchứa địa chỉ cân liên kêt và kích thước của câu trúc sockaddr
listen(): Hàm listen() được sử dung dé lang nghe các kết nối đến trên mộtsocket Nó có hai đối số: mô tả tập tin socket và độ dài tối đa của hàng đợi các kếtnối đang chờ xử lý
acceptQ: Hàm accept() được sử dụng dé chấp nhận các kết nối đến trên mộtsocket Nó có ba đối số: mô tả tap tin socket, một con trỏ đến cau trúc sockaddr sẽ
chứa địa chi của khách hàng kêt nôi và kích thước của câu trúc sockaddr."
connect(): Hàm connect() được sử dụng dé thiết lập kết nối đến một máychủ Nó có ba đối số: mô tả tập tin socket, một con trỏ đến cấu trúc sockaddr chứadia chỉ của máy chủ và kích thước của câu trúc sockaddr.
send(): Hàm send() được sử dụng để gửi dữ liệu qua một socket Nó có bốn
đối số: mô tả tập tin socket, một con trỏ đến dữ liệu cần gửi, kích thước cua dtr liệucân gửi và các cờ điêu khiên.
14
Trang 26recv(): Hàm recv() được sử dung dé nhận dữ liệu qua một socket Nó có bốn
đối số: mô tả tập tin socket, một con trỏ đến bộ đệm đề nhận dữ liệu, kích thước tốiđa.
close(): Hàm close() được sử dụng dé đóng một socket Nó có một đối sé, là
mô tả tập tin socket của bộ đệm và các cờ điều khiển
2.6.3 Socket Programing với giao thức TCP
Stream Socket, hay con được là TCP (Transmission Control Protocol) Socketcung cap kha năng phân phối dữ liệu đáng tin cậy, có thứ tự va được kiểm tra lỗigiữa các ứng dụng Stream Socket được định hướng kết nối, có nghĩa là kết nối phảiđược thiết lập giữa hai điểm đầu cuối trước khi quá trình truyền dữ liệu diễn ra
TCP phù hợp với các ứng dụng yêu cầu độ tin cậy cao và thời gian truyền
tương đối ít quan trọng hơn TCP cung cấp khả năng truyền dữ liệu đáng tin cậybăng cách đảm bảo rằng các gói sẽ được truyền lại nếu chúng bị mất trong quá trìnhtruyền Nó cũng đảm bảo răng các gói được gửi theo thứ tự, do đó, đầu nhận có thê
tái tạo lại dữ liệu gốc TCP sử dụng quy trình bắt tay ba bước dé thiết lập kết nối
giữa hai điểm cuối.
Giao thức TCP sẽ thực hiện các hành động sau:
e Xác định cách chia dữ liệu ứng dụng thành các gói mà mạng có thé phân
phối.
e Gửi gói đến và chấp nhận gói từ lớp mạng
© Quản lý điều khiến luồng
e Xử lý việc truyền lại các gói bị rơi hoặc bi cắt xén, vì nó nhằm cung cấp
khả năng truyền dữ liệu không có lỗi
e Xác nhận tat cả các gói đên.
15
Trang 27Luéng hoạt động của chương trình TCP Socket được mô tả ở hình 8.
blocks until connection
socket () from client
Hình 8 Luồng hoạt động của TCP Socket
2.7 Giao thức MQTT và thư viện Mosquitto
2.71 Giao thức MỌ TT
MQ telemetry transport (MQTT) là giao thức nhan tin nhe, don giản được sử
dụng dé thiết lập liên lạc giữa nhiều thiết bị Đó là giao thức dựa trên TCP dựa trên
mô hình đăng ký xuất bản Giao thức truyền thông này phù hợp dé truyền dữ liệugiữa các thiết bị bị hạn chế về tài nguyên có băng thông thấp và yêu cầu năng lượng
thấp Do đó, giao thức nhắn tin này được sử dụng rộng rãi để liên lạc trong IoT
Trang 28biến, MQTT cung cấp giao thức publish/subcribe có khả năng mở rộng cao với khả
năng phân phối được đảm bao Dé gửi và nhận tin nhắn MQTT, bạn thêm thư viện
máy khách MỢ TT vào ứng dụng của mình.
Trong MQTT có một vài khái niệm cơ bản cần hiểu:
e Publish/Subscribe: Trong hệ thống publish và subcribe, một thiết bị có
thé publish messages về một topic hoặc có thé subcribe một topic cụ thé
để nhận messages
e© Messages: là thông tin mà bạn muốn trao đổi giữa các thiết bị của mình
Đây có thể là một lệnh hoặc dữ liệu
e Topic: là nơi địa điểm mà người dùng muốn publish hoặc subcribe dé gửi
hoặc theo dõi nhận messages
e Broker: đây là thành phần chịu trách nhiệm chính trong việc nhận tất cả
các tin nhắn, lọc các tin nhắn, quyết định ai quan tâm đến chúng và sau
đó xuất bản tin nhắn cho tất cả các khách hàng đã đăng ký
Trang 292.7.2 MQ TT Mosquitto
Mosquitto là một MQTT Broker mã nguồn mở cho phép thiết bị truyền nhận
dữ liệu theo giao thức MQTT version 5.0, 3.1.1 và 3.1 Mosquitto cung cấp một thưviện viết băng ngôn ngữ C để triển khai các MQTT Client và có thé dé dàng sửdụng bằng dòng lệnh trên command line : “mosquitto_pub” và “mosquitto_ sub”
Uu điểm:
se Tốc độ truyền nhận và xử lí dữ liệu nhanh, độ 6n định cao, được sử dụng
rộng rãi và phù hợp với những ứng dụng embedded.
© Mosquitto rất nhẹ và phù hợp dé sử dụng trên tất cả các thiết bị
e Hỗ trợ các giao thức TLS/SSL (các giao thức nhằm xác thực server va
client, mã hóa các message dé bảo mật di liệu)
Nhược điểm:
e Khó thiết kế khi làm những ứng dụng lớn.
e Ít phương thức xác thực thiết bị nên khả năng bảo mật chưa tối ưu
2.8 Ứng dụng di động Flutter
2.8.1 Giới thiệu về Flutter
Flutter là một bộ công cụ phát triển phần mềm giao diện người dùng với mãnguồn mở do Google tạo ra Flutter được sử dụng dé phát triển các ứng dụng đa nền
tảng cho nhiều hệ điều hành như: iOS, Android, Linux, từ một cơ sở mã nguồnduy nhất
Flutter có hai thành phần chính:
e Software Development Kit (SDK): Ở đây tích hợp các công cụ có khả
năng phát triển các ứng dụng của bạn, trong đó có các công cụ giúp bạnbiên dịch mã của mình thành mã máy sốc (cho Android và iOS)
18
Trang 30e UI Library based on widgets (Framework): Tổng hợp các thành phan giao
diện người dùng (UD) có thé tái sử dụng như: text input, button, slider,
hỗ trợ bạn có thé cá nhân hóa theo nhu cầu sử dụng
2.8.2 Ưu điểm của Flutter
Flutter được đánh giá là có khả năng phát triển ứng dụng cực kỳ nhanhchóng với tính năng Hot Reload Về cơ bản thì tính năng này sẽ hiển thị gần như làrealtime (thời gian thực) cho những thay đổi trong thiết kế, hay những tùy chỉnh của
bạn trên cùng một nên tảng.
Flutter hỗ trợ tạo ra các ứng dụng đa nén tảng, chỉ với một số tùy chỉnh nhỏthôi là bạn đã có thé tạo ra một ứng dụng chạy trên cả Android và iOS, với một lầncode duy nhất
Cộng đồng sử dụng là rất lớn Do đó, có thé dé dàng tìm tài liệu, cách sửdụng, cũng như các lỗi trong quá trình sử dụng trên những trang cộng đồng
Flutter sử dụng ngôn ngữ lập trình Dart, một ngôn ngữ rất nhanh với nhiều
tính năng hữu ích như mixin, generic, isolate, va static type.
Dart là ngôn ngữ lập trình cho Flutter- bộ công cụ giao diện người dùng của
Google để xây dựng các ứng dụng Mobile, Web và Desktop app đẹp, được biêndịch nguyên bản từ một cơ sở mã code duy nhất
Dart là ngôn ngữ lập trình hướng đối tượng, được Google phát hành có mụcđích chung với mã nguồn mở và được ECMA chấp thuận làm tiêu chuẩn Dart là
19
Trang 31ngôn ngữ lập trình hướng đối tượng, được Google phát hành có mục đích chung với
mã nguồn mở và được ECMA chấp thuận làm tiêu chuẩn
Ưu điểm của ngôn ngữ Dart:
Là ngôn ngữ mở rộng, linh hoạt, tạo điêu kiện tích cực cho việc biên dịch
trở nên nhanh chóng hơn
Hỗ trợ cả biên dịch Vừa đúng lúc (JIT) và biên dịch Trước thời hạn
(AOT).
Có thể thích ứng nhanh chóng với quy trình công việc có sự thay đôi
Có tính 6n định tốt, được sử dụng dé xây dựng các ứng dụng về thời gianthực với hiệu suất cao
Nhược điểm của ngôn ngữ Dart:
Là ngôn ngữ lập trình mới nên hiện tại cộng đồng người sử dụng, hỗ trợ
Trang 32Chương 3 SƠ ĐỎ HOẠT ĐỘNG CỦA HỆ THÓNG
3.1 Chế độ tìm kiếm người theo yêu cầu
Dựa theo các cơ sở lý thuyết đã tìm hiểu ở phần trên, nhóm đề xuất mô hìnhhoạt động của hệ thống khi ở chế độ tìm kiếm đối tượng theo yêu cầu của người
dùng sẽ thực hiện trong luận văn này (Hình 11) Đầu tiên, người dùng sẽ yêu cầuthực hiện yêu cầu tìm kiếm đối tượng bằng cách nhắn chọn tên đối tượng trên danhsách ở ứng dụng di động Sau đó, ứng dụng di động sẽ gửi (publish) tên đối tượng
vừa được chọn lên MQTT Broker ở Cloud Server.
Ở phía thiết bị Smart Camera sẽ thiết kế chương trình nhận (Subcribe) vào
topic ma ứng dụng di động publish ở MQTT Broker trên Server Sau khi nhận được
tên người dùng yêu cau, thiết bi Smart Camera sẽ chạy thuật toán nhận diện khuôn
mặt dé tìm kiếm Nếu như tìm thấy được đối tượng, thiết bị sẽ gửi hình ảnh chứa
khuôn mặt đối tượng tìm kiếm lên Cloud Server thông qua thuật toán Socket mà
nhóm xây dựng và tích hợp.
Cloud Server sau khi nhận được hình ảnh Smart Camera gửi lên thì sẽ lưu lạihình ảnh đó và hiên thị lên ứng dụng di động thông HTTP URL
- - - ¬ : Gửi (Publish) tên người dùng muốn
Nhận (Subcribe) tên người dung muon tìm lên MQTT Broker
Nhận dang khuôn mat va lưu hình ảnh
chứa khuôn mặt muôn tìm Người dùng
`
Tìm kiếm người theo tên
Hình 11 Mô hình hoạt động chế độ tìm kiếm theo yêu cầu
21
Trang 333.2 Chế độ phát trực tiếp
Mô hình hoạt động ở chế độ này (Hình 12) bên phía ứng dụng di động cóphần tương tự với chế độ trước Đầu tiên, người dùng sẽ yêu cầu thực hiện yêu cầuchuyên đổi màn hình từ tìm kiếm đối tượng sang màn hình phát trực tiếp Ngoài ra,
người dùng cũng có thé gửi yêu cầu thay đổi độ phân giải tại màn hình nay Sau đó,
ứng dụng di động sẽ gửi (publish) yêu cầu phát trực tiếp Video lên MQTT Broker ở
Cloud Server.
Ở phía thiết bị Smart Camera sẽ thiết kế chương trình nhận (Subcribe) vào
topic mà ứng dụng di động publish ở MQTT Broker trên Server Sau khi nhận yêu
cầu chuyển sang chế độ phát trực tiếp, Smart sẽ xây dựng luồng streaming videobang cách sử dụng bộ công cụ FFmpeg dé đưa toàn bộ hình anh mà nó thu được gửi
lên RTSP Cloud Server.
Ứng dụng di động sẽ lấy luồng Video Streaming theo đường link RTSP URL
dé hiển thị lên màn hình cho người dùng theo dõi
Nhận (Subcribe) yêu cau phát trực tiếp hoặc Gửi (Publish) yêu cau phát trực tiếp hoặc
thay đôi độ phân giải tử MQTT Broker thay đôi độ phân giải lên MQTT Broker
Hiễn thị Video phát trực tiếp
oe!
@ Thiết bị biên
Ee (Smart Camera) @
XZ, Xây dựng luồng Video phát trực tiếp va
đưa toàn bộ dữ liệu hình ảnh vao Người dùng
Y‹ c êu cầu thực hiện phát trực tiếp hod
thay đôi độ phân giải
Hình 12 Mô hình hoạt động chế độ phát trực tiếp
22
Trang 343.3 Thêm đối tượng nhận diện để tăng khả năng tìm kiếm
Mô hình hoạt động này sử dụng thêm một thiết bị Scan Camera kết nối vàthêm thông tin đối tượng mới vào Database của Smart Camera (Hình 13) Đầu tiên,khi người dùng muốn thêm đối tượng có thể tìm kiếm, người dùng sẽ nhập tên đối
tượng mới và quay video ở phía Scan Camera Sau khi Scan Camera phát hiện
khuôn mặt, thiết bị sẽ cắt hình ảnh có chứa khuôn mặt và gửi hình ảnh đó lên Cloud
Server.
Cloud Server sau khi nhận được tên va hình ảnh khuôn mặt đối tượng mới sẽgửi lại những thông tin đó về lại Smart Camera Đồng thời sẽ gửi (Publish) tên đối
tượng mới dé ứng dụng di động nhận được tin nhắn Ứng dụng di động nhận được
tin nhắn có chứa tên đối tượng mới sẽ lưu vào danh sách chứa tên các đối tượng
Tên mới đã được đưa vào danh
sách de người dung có the tim
kiem
Ll «ø
| Gửi tên mới vào danh sách tên người có thể
tim kiếm trên thiết bị di động
Gửi hình ảnh khuôn mặt và et Gửi hinh ảnh khuôn mặt và
tên lên Server ae @ tên về Smart Camera Œ®
Lưu tên vả hình ảnh khuôn
mặt vào Database dé tăng
đôi tượng nhận diện được
>>
Hình 13 Mô hình hoạt động thêm đối tượng mới có thể nhận diện
23
Trang 35Chương 4 THIẾT KE HE THONG
4.1 Chương trình ở thiết bị Smart Camera
x.
nol
Lay tén trong
Database Thread 1
Xử ly dữ liệu hinh anh Nhận vả thêm thông tin đối trong
Hình 14 Lưu đồ tổng chương trình Smart Camera
Đầu tiên, chương trình sử dụng các thư viện Socket dé kết nối với CloudServer cho việc giao tiếp và trao đồi dit liệu Tiếp theo, lấy tên những đối tượng cóthé nhận diện và lưu vào một vector là một biến toàn cục Sau đó, chương trình sẽchia thành hai luồng hoạt động Một luồng thực hiện công việc tim kiếm đối tượngkhi quay Video và gửi hình ảnh lên Server Một luồng sẽ chờ để nhận thông tinthông tin đối tượng mới và thêm vào Database
24
Trang 364.1.1 Luong xử lý dữ liệu hình anh
Đọc Database, load
Cascade va tao model Bat dau
Socket van dang
Đưa toan bộ dữ liệu hình
ảnh vảo Pipeline
han dang ra người
theo yêu cầu
Chay lại Video
Capture theo độ phân
giải mới
Hình 15 Lưu đồ luồng xử lý dữ liệu hình ảnh
25
Trang 37Với luồng hoạt động xử lý dữ liệu hình ảnh, chương trình cần phải đọc
Database bao gồm tên các đối tượng và khuôn mặt của họ dé có thé tạo model nhận
diện.
Sau đó, chỉ cần còn kết nối với Cloud Server thông qua Socket, chương trình
sẽ liên tục hoạt động các công việc theo yêu câu người dùng.
Nếu chương trình hoạt động ở chế độ phát trực tiếp, chương trình sẽ tiến
hành xây dựng luồng Stream bằng cách tạo ra một Pipeline và một lệnh commandline FFmpeg để gửi luồng Stream lên Server thông qua giao thức RTSP Pipeline
này sẽ nối giữa chương trình và lệnh FFmpeg
FILE *pipeout;
string ffmpeg_cmd = std::string("ffmpeg -y -f rawvideo -r ") + std::to_string(20) + ” -video size ” + std::to_string(width) + "x" + std::to_string(height) + " -pixel_format bgr24 -i pipe: -crf 24 -pix_fmt yuv420p -f rtsp -rtsp_transport tcp rtsp://119.17.253.45:8556/mystream720";
pipeout = popen(ffmpeg_cmd.c_str(), "w"
Chương trình sẽ liên tục thu thập các dữ liệu hình ảnh va đưa toàn bộ vào
Pipeline Pipeline này sẽ đưa toàn bộ dữ liệu đó vào Input của luồng Stream là
FFmpeg va FFmpeg sé đưa toàn bộ dữ liệu lên RTSP Server.
while (strcmp(fnd_ name, "Stream") == 0 && socket_ desc > 0){
cap >> frame;
flip(frame, frame, 1);
fwrite(frame.data, 1, width*height*3, pipeout);
Trong quá trình hoạt động, nếu như nhận yêu cau thay đổi độ phân giải củangười dùng, chương trình sẽ tiến hành giải phóng tài nguyên đang sử dụng USBCamera Đồng thời, chương trình cũng sẽ dừng việc phát trực tiếp và hủy bỏ luồng
26
Trang 38FFmpeg Sau đó, khởi tạo lại tài nguyên sử dụng Camera va đặt theo độ phân giảingười dùng mong muốn rồi sẽ tạo lại luồng phát trực tiếp theo độ phân giải mới.
Trang 39hiện đối tượng đang tìm kiếm, chương trình sẽ lưu lại hình ảnh, sau đó gửi tên đốitượng và hình ảnh đó lên Cloud Server.
while (strcmp(fnd_ name, "Stream”) != 0 && socket_desc > 0){
ffmpeg_cmd = std::string("ffmpeg -y -f rawvideo -r ") + std::to_string(20) + " -video size " + std::to_string(width) + "x" + std::to_string(height) + " -pixel_format bgr24 -i pipe: -crf 24 -pix_fmt yuv420p -f
28