Nhóm muốn sử dụng giao thức RTSP Real-time Streaming Protocal để cải thiện tốc độ stream hình ảnh của hệ thống smart camera qua kết nối không dây với độ trễ thấp và sát với thời gian thự
Trang 1ĐẠI HỌC QUOC GIA TP HO CHÍ MINH
TRUONG DAI HOC CONG NGHE THONG TIN
KHOA KY THUAT MAY TÍNH
VO PHUC VINH KHANG
LE HOAI
KHOA LUAN TOT NGHIEP
TOI UU STREAMING CHO BO TANG TOC AI TÍCH
HỢP TREN ULTRA96-V2 CHO SMART CAMERA
STREAMING OPTIMIZATION FOR AI ACCELERATION ON
FPGA ULTRA96-V2 FOR SMART CAMERA
KY SƯ NGANH KY THUAT MAY TÍNH
TP HO CHÍ MINH, 2023
Trang 2ĐẠI HỌC QUOC GIA TP HO CHÍ MINH TRUONG ĐẠI HỌC CÔNG NGHỆ THONG TIN
KHOA KỸ THUẬT MÁY TÍNH
VÕ PHÚC VINH KHANG - 17520621
LÊ HOÀI - 18520770
KHÓA LUẬN TÓT NGHIỆP
TÓI ƯU STREAMING CHO BỘ TĂNG TÓC AI TÍCH
HỢP TRÊN ULTRA96-V2 CHO SMART CAMERA
STREAMING OPTIMIZATION FOR AI ACCELERATION ON
FPGA ULTRA96-V2 FOR SMART CAMERA
KY SƯ NGANH KY THUAT MAY TÍNH
GIANG VIEN HUONG DAN TIEN Si NGUYEN MINH SON
TP HO CHi MINH, 2023
Trang 3THONG TIN HOI DONG CHAM KHÓA LUẬN TOT NGHIỆP
Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số
75/QD-ĐHCNTT ngày 15 tháng 02 năm 2023.
Trang 4LOI CAM ON
Lời đầu tiên chúng em xin gửi lời cảm ơn chân thành va 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 rat 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 dé 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 thần cũng như thé chat 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 này 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 16 tháng 02 năm 2023
Sinh viên thực hiện
Võ Phúc Vinh Khang Lê Hoài
Trang 5MỤC LỤC
)/0/9090 2 -4 5
Chương 1 GIỚI THIỆU DE TÀI ¿+¿+2222++++222++zrstrrsecree 2 1.1 Lý do chọn đề tài 22¿-22222222221222221111222211222211122111 E121 re 2 1.2 Một số nghiên cứu liên quan -¿-22++++22EE++++22EEE+rtrrxxerrrrrkecree 3
1.2.1 Nghiên cứu ngoài nưỚC + + ssEeterrksrekerkrrrreree 3 1.2.2 _ Nghiên cứu trong nước - - - + +S++t+t+keterkrkrkererrrkerke 3
1.3 Mute can ẽ 5 1.4 Giới hạn để tài 25c 22x 221122211 2221222111221 ca 6 1.5 Kết quả mong muốn -. -:+¿2222V2222++2222EE2EEErrtttEEEEEErrrrrrrrrrrkrrree 6 1.6 Bố cục luận văn -: 22+2++2222122222211122211112222112227111 2.211 E1 cce 6
Chương2 CƠ SỞ LÝ THUYẾT / -22©+2+22EE+E+tEEEEEE+tEEEESzrtrrkrcree 8
2.1 Field Programmable Gate Array (FPGA)
Trang 62.4 Smart CaITA nh t1 T011 H0 HH1 ưn 16 2.5 Thuật toán YOLOv2
2.5.1 Batch normalization
2.5.2 High resolution classifier
2.5.3 Kiến trúc Anchor Box -5222cvvvccrrrrrrrrrreererrrrer 21 2.5.4 K-means clustering
2.5.5 Direction location prediction - - ss++x+x+eeesrereresrersre 21 2.5.6 _ Fine-grained feature 2.5.7 Multi-scale training 5 che 23 2.5.8 Light-weight backbone - 5< c+S++x+cseeterrkekererrre 23 2.6 OpenCV K22 sấết À, Hee 25 2.7 Streaming videO 6c 2c St 3t 222111011121 0101011111 11 re 26 2.8 FEmpcg đ 5 „ c HN v.ợm , À LẠ HH in 27 2.8.1 Các công cụ xử lý audio, video của FFmpeg - 28
2.8.2 Các gói thư viện của FÏmpeg ¿-:- + csce+xzesrrrsrx 28 2.9 SSH Tunnel - cà St tt tt grgrưet 29 Chương 3 THIẾT KE HỆ THÓNG - -: -¿222v+++22vvvvzrscrvscee 31 3.1 Ý tưởng để xuất cho hệ thống 222++++222EEEvrvrrtrrrtrrrrrrrrrrrrer 31 3.2 Thiết kế tổng quát của hệ thống -. -:-¿¿-2vvvc+ztttcvvvvvrrrrrrrrrr 32 3.3 Hệ thống SoC tích hợp IP YOLO2_FPGA trên Vivado 2019.2 32
3.4 Cải tiến tốc độ của khối YOLOv2 và hệ thống SoC Smart Camera 33
3.5 Xây dựng luồng streaming cho Smart Camera -:-£+ 38
3.5.1 Streaming phạm vi Internet với camera hình ảnh thường 39
3.5.2 Streaming phạm vi Internet với camera hình ảnh xử lý YOLOv2 41
Trang 73.6 Xây dựng chương trình thực thi bằng công cụ Vitis 2019.2 - 41
3.7 Sử dụng ZoneMinder dé theo dõi camera Chương 4 HIỆN THỰC, THUC NGHIEM VA ĐÁNH GIA KET QUA 45
4.1 Zynq UltraScale+ MPSoC
4.2 FPGA Ultra96-V2 5c St 2tr 46 4.3 Petalinux 2019.2
4.4 Kịch ban thực nghiệm va phương pháp đánh giá -¿ -©-s++ 54 4.4.1 Kịch bản thực nghiệm 4.4.2 Phương pháp đánh giá ¿- «cư 55 4.5 Trình quản lý và theo dõi CaIm€ra - ¿5c tes +++t+E‡+eEerkrkexererrrkree 56 4.5.1 ZZOI€ImiI€T 6E S4 S11 EE SE 1H TT Hiên 56 4.5.2 Custom WebServer -.-cĂccSSeeererierereeeeed 62 4.6 Kết quả thực nghiệm -2-222222+22222222222111222211222211222E.ccrrkeg 63 4.6.1 Kết quả nhận điện cccc522cvvvvccrrerrccrvveccrrcrrre 63 4.6.2 Kết qua thực nghiệm khi streaming phạm vi Internet 63
4.6.3 Kết quả kiểm tra tính ồn định khi stream liên tục - 65
4.6.4 Kết quả thực nghiệm stream song song 2 camera trên | board 67
4.6.5 Kết quả thực nghiệm kết nối Ethernet - : 69
4.7 Đánh giá hệ thống -c2::¿-222EE+22vr22222111 22121111 ccrrrrrrree 72 4.7.1 Độ phân giải ccccccctierethherererereree 73 4.7.2 Khoảng cách kết nối :¿-+2222++ceEEEkrrrrrrkrrerrrrecrrer 73 4.8 Đóng gói sản phẩm 2+:222+2+t2222++tE22EEEtEEEEEvrttEErvrrrrrrkrrrrrrrke 74 Chương 5 | KET LUẬN VÀ HƯỚNG PHAT TRIÊN - 78
5.1 Kết quả dat được 2222ct222 22222 E221 E121 78
Trang 85.2 Hướng phát triển của dé tài
Trang 9DANH MỤC HÌNH ANH
Hình 2.1: Kiến trúc cơ bản của FPGA 22:tttrtrrrrriririrrrrrriee 9 Hình 2.2: Mô hình cơ bản của một hệ thống nhúng -:- 22252 11 Hình 2.3: Phan cứng của một hệ thống nhúng -: ¿©+++225s+++z++ 13 Hình 2.4: Kiến trúc cơ bản của một SoC -::ccccccccrrrrriirrrrrrrrrrie l6 Hình 2.5: Sơ đồ khối của MOE SMALE CAIT€T S2 5S 2E ‡‡£v£v£sEekekrkrxreree 17
Hình 2.6: Smart camera HANET AI CAMERA - 55 5+Sc+c+csrersrrkexer 19
Hình 2.7: Một số cổng kết nối trên smart camera -: 2czz+222zvsz+ 19
Hình 2.8: Dự đoán bounding box của YOLOV2 ¿5 + ssrvsvevsrrrerrrerverer 2
Hình 2.9: Kiến trúc YOILOV2 -2¿-222+++22E+++222E511222211112222112222112 2221 xe 22
Hình 2.10: Kỹ thuật Reorg trong YOLOV2 ¿+ ¿+ 5+ £++t+k+xexererrkexee 23 Hình 2.11: Darknet- [ - t1 cành HH HH HH 00H ggưên 24
Hình 2.12: WordTree trong YOlLOV2 - ¿+ c5 E22 £EEESEEkEkrkErrrrrrrkrkek 24
Hình 2.13: Kiến trúc cơ bản của streaming video c¿5scc++ccvvvcvccrvscee 27 Hình 2.14: Quy trình xử lý video bằng FEmpeg -c-ccccceseerererree 28 Hình 2.15: Tổng quan về SSH Tunneling -ccccc++cccvsscccccesrrccseec-3Ù Hình 3.1: Mô hình trực quan của hệ thống ¿+ 222222222222 +zss+ 30 Hình 3.2: Thiết kế tổng quát của hệ thống -¿¿2z++22++zt+22zvzerrrrxscee 32 Hình 3.3: Sơ đồ khối SoC tích hợp IP YOLOv2 trên FPGA - 33 Hình 3.4: Cua hình strategy mặc định cho quá trình Synthesis 35 Hình 3.5: Cấu hình strategy mặc định cho quá trình Implementation 35
Hình 3.6: Worst Negative Slack (WNS) có giá trị âm - - -ccccccrcreerrrek 36
Hình 3.7: Câu hình strategy mới cho quá trình Synthesis - + 36 Hình 3.8: Cấu hình strategy mới cho quá trình Implementation 37 Hình 3.9: Kết quả sau khi generate bitstream -2¿+22++z+2vv+zerrrrxscee 38
Hình 3.10: Năng lượng tiêu thụ - ¿525cc tt 38
Hình 3.11: Mô hình streaming lên zoneminer bằng ffmpeg . - 40
Hình 3.12: Streaming hình anh xử lý YOLOv2 phạm vi Internet Al Hình 3.13: Chương trình xử lý YOLOv2 trên EPGA -. 25-55-5255 42
Trang 10Hình 3.14: File smart_camera.elf trong thư mục sd_ card ‹- - -<+<s++ 43 Hình 3.15: Giao diện Web của ứng dụng Zoneminđer -‹-s-+<s=+sexsxe+ 43
Hình 3.16: Giao diện WebServer của nhóm tác giả -. ‹ :5+5+5+5++5<< 44
Hình 4.1: Các khối chức năng trong Zynq UltraScale+ MPSoC - 45 Hình 4.2: Các thành phan chính trên board Ultra96-V2 . :- ¿+22 4 Hình 4.3: Sơ đồ khối của board Ultra96-V2 2ccccrrereeceerrrrrrrrrrrre 48
Hình 4.4: Config hardware đ€$CTID(IOI ¿+ SE 2x ngư 49
Hình 4.5: Image packaging configuratiOI ¿- - - + + 5+++++‡xexeEerkrkeketerkrkrkvee 49 Hình 4.6: Boot image se(ting +- 5:52 S222 tt 2 9212121212 E1 rên 50
Hình 4.7: USB Gadget SuppOrI ¿S1 11221 HH HH ớt 51
Hình 4.8: Enable Debug TWweaks - «¿5+ tt H212 1g ưưn 52 Hình 4.9: Wile module bitbake - ¿5+5 cxcxtzverererxerrrrerrrrrrrrrrrrrrrrrr 52
Hình 4.10: Khai báo reserved memory 53
Hình 4.11: Giao diện dang nhập vào Zoneminder 5Ó Hình 4.12: Giao diện chính của ứng dụng Zoneminder 2Ó
Hình 4.13: Lựa chọn ngôn ngữ tiếng việt được thêm vào hệ thông
Hình 4.14: Phần mềm đã được việt hóa thành công „58
Hình 4.15: Cài đặt màn hình của Zoneminder (chung) - : + 55-5 +<+s++ 59
Hình 4.16: Cài đặt màn hình của Zoneminder (nguồn) —— 60
Hình 4.17: Giao diện màn hình của Zoneminnder -¿-¿- + s5 +s++£v+v£exexexex 61 Hình 4.18: Script streaming normal to cÏOud -. ‹- «+ s5+5++s+s+se+<+s+x+se+ 61
Hình 4.19: Giao diện WebServer mới của nhóm ¿+ +++++s+es+s>sx+ezeszesss+ 62
Hình 4.20: Kết quả nhận diện của Smart Camera Ultra96- V2 -. : 63 Hình 4.21: Ảnh chụp khi streaming hình ảnh thường -. ¿22552 64 Hình 4.22: Ảnh chụp khi streaming hình ảnh xử lý YOLOVv2 - 65 Hình 4.23: Console kiểm tra ôn định khi stream camera thường - 65 Hình 4.24: Hiền thị thời gian đã stream đơn vị giây -ccc+cccscccccrxscee 67
Hình 4.25: Thời gian stream nghiệm thu được - 5 5+ ccx+ccscccxe 67
Hình 4.26: 1 camera được lắp đặt thêm dé thực nghiệm stream song song 68
Trang 11Kết quả thực nghiệm cùng lúc stream 2 camera trên l board 68
USB to Ethernet AapI€T - tt re 69
Kết nói Ethernet với board Ultra96v2 ccccrrtttrrrtrrrrrrrre 70 Tốc độ khi stream bang wifi không ổn định -:c-5+ 71 Tốc độ khi stream bằng Ethernet khá ồn định - + 71 Đóng gói sản phẩm của nhóm tác giả -:: 7222vvcccceecrrr 75
Vỏ hộp đóng gói của nhóm tác giả - 6-5 cScsrkrkexerrrererke 75
Dé hộp Camera mới -2:+22©V++++222E++++tEES+++ettExvrrerrrrrrrrrr 76 Hộp Camera mới có thể bố trí thêm quạt tản nhiỆt - 76
Hộp Camera mới sau khi đóng gói hoàn chỉnh -«-5- «+ T7
Trang 12DANH MỤC BANG BIEU
Bảng 2.1: Các thư viện của FFmpeg - 5+5: 52222*£+2E2t+t+xexererkrkrkerrrree 29
Bang 3.1: Tan số ước lượng của IP YOLÒ_FPGA 55-22 222* +22 ** s22 33
Bảng 3.1: Tan số ước lượng của IP YOLO2_FPGA 22c2:525scceccz 34 Bảng 3.2: Tài nguyên ước lượng sau khi tổng hợp IP : -+ 34
Bang 3.3: Timing T€pOII - 5 52552222 v22 T
Bang 4.1: Ludng thiết kế petalinux 222c+222222vvvrrrrttEEEEExrrrrrrrrrrrrrrrrree 48
Bảng 4.2: Các thư viện cai đặt trên Petalinux - ¿5+ 5s+cccxsccrxrrreercee 53
Bang 4.3: Kết qua streaming phạm vi Internet ssscccsssssesccssssessssssecesssesscessseeees 73 Bang 4.4: Kết quả dựa trên khoảng cách kết nối khi streaming camera hình ảnh
thường ở phạm vi Internet
Bảng 4.5: Kết quả dựa trên khoảng cách kết nói khi streaming camera hình ảnh xử
-Ö-74 79
lý YOLOv2 ở phạm vi Internet.
Bang 5.1: Tổng kết và so sánh với một số nghiên cứu trước đó trong nước
Trang 13DANH MỤC TU VIET TAT
Tir viét tat Tên day đủ
AHB Advanced High performance Bus
Al Artificial Intelligence
ALU Arithmetic Logic Unit
APB Advanced Peripheral Bus
APU Application Processing Unit
ARM Advance RISC Machines
ASIC Application Specific Integrated Circuit
AXI Advanced eXtensible Interface
CCI Cache Coherent Interconnect
CNN Convolutional Neural Network
Core SW Core SoftWare
CPU Central Processing Unit
DDR4 Double Data Rate fourth generation
DMA Direct Memory Access
DRAM Dynamic Random Access Memory
DSP Digital Signal Processor
FPGA Field-Programmable Gate Array
FPS Frame Per Second
GPU Graphics Processing Unit
HDL Hardware Description Language
HLS High Level Synthesis
HOG Histogram of Oriented Gradients
Trang 14RAM Random Access Memory
RGB Red Green Blue
RISC-V Reduce Instruction Set Computer version 5
ROM Read Only Memory
RTL Register Transfer Level
SDIO Secure Digital Input Out
SoC System on Chip
UDP User Datagram Protocol
UART Universal Asynchronous Receiver Transmitter YOLO You Only Look Once
Trang 15TÓM TÁT KHÓA LUẬN
Ngày nay, những tiến bộ trong công nghệ vi điện tử đã 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 phan 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, System on Chip 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 gia, 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 đề tài này, nhóm đặc biệt quan tắm đến vấn dé khi stream của một hệ thống smart camera Nhóm muốn sử dụng giao thức RTSP (Real-time Streaming Protocal) để cải thiện tốc độ stream hình ảnh của hệ thống smart camera qua kết nối không dây với độ trễ thấp và sát với thời gian thực Smart camera được tích hợp thuật toán YOLOv?2 xử lý ảnh trên phan cứng FPGA, kết hợp với bộ vi xử lý core ARM và một số module khác đề điều khiển và truyền dữ liệu Người dùng có thể xem kết quả trên màn hình hiền thị thông qua một Wifi Access Point modem Ngoài
ra nhóm cũng sẽ tiến hành sử dụng mang có day thay vì không day dé đánh giá tốc
độ cũng như tính ổn định khi stream của smart camera.
Nhóm đề xuất thiết kế hệ thống smart camera trên bộ công cụ phần mềm Vivado phiên bản 2019.2 của Xilinx ( Gồm có Vivado HLS, Vivado Design Suite, Petalinux và Vitis ), sử dung board Ultra96-V2 trên nền tảng Zynq UltraScale+ MPSoC của nhà phát hành Avnet Tần số hoạt động của hệ thống là 300MHz và có thể đáp ứng được tỉ lệ khung hình full HD ở độ trễ thấp nhất.
Trang 16Chương I GIỚI THIỆU DE TÀI
1.1 Lý do chọn đề tài
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 dé 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ỏ gọn 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 máy tính và được thúc day 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í.
Việc áp dụng các thuật toán thông minh, trí tuệ nhân tạo trong xử lý ảnh vào
các hệ thống Smart camera có khả năng thu được hình ảnh với độ phân giải cao, sau
đó truyền đi thông qua một đường truyền ở khoảng cách xa mà ở thiết bị cuối nhận được hình ảnh với độ trễ không quá cao là một yếu tố khá khó khăn và thu hút nhiều
sự quan tâm đặc biệt từ các tổ chức thiết kế, nghiên cứu Do đó trong để tài này, nhóm muốn nghiên cứu và cải tiến các vấn đề ảnh hưởng đến tốc độ của một hệ thống smart camera bao gồm kỹ thuật video streaming cho smart camera để có thé truyền hình anh streaming (bao gồm hai chế độ: camera hình ảnh thường và camera
xử lý thuật toán nhận dạng vật thể) thông qua Wifi Access Point, với một độ trễ thấp và có khả năng đáp ứng khung hình Full HD.
Trang 171.2 Một số nghiên cứu liên quan
1.2.1 Nghiên cứu ngoài nước
Hiện nay, Smart Camera luôn được các 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 Vì thế, nhóm có thé dé dang tìm được các bài báo khoa học về vấn đề này trên internet Một số bài báo khoa học gần đây như:
“* Bai báo [4] “Object Tracking on FPGA-based Smart Camera using Local
Oriented Energy and Phase Feature” của nhóm tác giả Ehsan Norouznezhad, Abbas Bigdeli, Adam Postula, Brian C Lovell vào năm 2010 sử dung module camera Micron MT9POO1 trên FPGA Xilinx Virtex-5 ML506 áp
dụng thuật toán Histogram đã thu được anh với tốc độ 30 FPS và độ phân giải 640 x 480 Ưu điểm của hệ thống này là nó có thể phân loại được nhiều
đối tượng khi thực hiện hoạt động theo dõi, giám sát bao gồm màu sắc, hình
dạng, kết cau và chuyên động Nhược điểm là cần nhiều thời gian tính toán
đề có thé xác định được đối tượng đang cần theo dõi.
“ Bài báo [5] “DreamCam: A modular FPGA-based smart camera
architecture” của nhóm tác giả Merwan Birem, Francois Berry vào năm 2014
sử dụng module camera MT9M031, EV76C560 trên FPGA Altera Cyclone
TH đã thu được ảnh với tốc độ 42 FPS và độ phân giải 800 x 1024 Ưu điểm của hệ thống này là khả năng tùy biến kích thước của hình ảnh đầu vào, điều chỉnh được số điểm ảnh cần thiết và nó sẽ tự biên dịch và tổng hợp thành một hệ thống mới Nhược điểm là mat nhiều bước và nhiều thời gian để có
thể xây dựng hệ thống, thiếu các tính năng theo dõi, nhận diện.
1.2.2 Nghiên cứu trong nước
Luận văn tốt nghiệp [2] “The Research And Implementation Of CNN Algorithm On Zedboard Zynq-7000” của nhóm sinh viên Phan Tuấn Thanh, Vũ
Hoang Hy năm 2020 sử dụng thuật toán YOLOv?2 trên FPGA Zedboard Zynq-7000.
Ưu điểm của thuật toán này là độ chính xác cao, có thể nhận diện được nhiều vật thể khác nhau và tốc độ xử lý khá nhanh so với một số thuật toán xử lý ảnh khác.
Trang 18Nhược điểm của đề tài này là chưa thé xử lý hình ảnh thu được trực tiếp từ camera
mà chỉ sử dụng hình ảnh được lưu sẵn trong thẻ SD.
Luận văn tốt nghiệp [6] “Thiết kế và hiện thực IP camera trên Zynq-7000”
của sinh viên Chung Vĩnh Kiện năm 2019 sử dụng camera Raspberry Pi trên FPGA
Zynq-7000 dé thu thập hình ảnh và truyền hình ảnh đến người xem qua kết nối Ethernet Ưu điểm của hệ thống là camera hỗ trợ độ phân giải cao 1280 x 720 với tốc độ khung hình khi streaming ổn định ở mức 5.5-6 FPS Nhược điểm là đề tài này chưa thể tích hợp thuật toán xử lý AI vào để nhận dạng được người có trong
khung ảnh.
Luận văn tốt nghiệp [3] “Real-time face detection and tracking on FPGA
DE10-Nano” của nhóm sinh viên Phan Truong Khang, La Ngoc Le năm 2020 sử dụng module camera OV7670 trên FPGA DEI0-Nano với thuật toán Viola-Jones.
Ưu điểm của thuật toán này là khả năng tính toán dễ dàng, tốc độ xử lý khá nhanh (vì dữ liệu xử lý là 1 kênh mau grayscale) Nhược điêm là độ chính xác chưa cao (40-80%) Độ phân giải giảm xuống chỉ còn 320 x 420 pixel Dữ liệu màu có thể gây mắt mát (vì nhóm tác giả sử dụng ảnh màu chuyền sang ảnh xám grayscale, sau
đó chạỹ thuật toán nhận dạng trên dữ liệu ảnh xám, rồi mới lay két qua nhan dang
từ ảnh xám chuyển lại anh màu gây ra sai sót dữ liệu).
Luận văn tốt nghiệp [1] “Thiết kế và tích hợp smart camera trên SoC
Ultra96-V2” của nhóm sinh viên Bùi Nguyễn Phát, Lê Minh Huy năm 2021 sử
dụng smart camera trên SoC Ultra96-V2 áp dụng thuật toán YOLOv2 Ưu điểm của
dé tài này đã tích hợp được thuật toán YOLOv2 dé xử lý hình ảnh lấy từ smart camera Hệ thống đã nhận diện được vật thể với độ chính xác cao (64 - 96%) ở độ
phân giải 1280x960, với độ trễ trung bình khi streaming P2P là 19.26 giây Ở đây
nhóm tác giả đã sử dụng bộ YOLOv2 có sẵn để tích hợp lên kiến trúc SoC của smart camera và không quan tâm đến độ trễ của khói AI này Vì thế nhóm muốn kế thừa bộ YOLOv2 của nhóm tác giả này để phục vụ mục đích nghiên cứu va cải tiến.
Trang 191.3 Mục tiêu đề tài
Ở luận văn này, nhóm tập trung vào việc tìm hiểu các phương pháp và công
nghệ giúp nâng cao khả năng streaming video của smart camera trên SoC
Ultra96-V2 thông qua đường truyền internet theo thời gian thực giữa hai hay nhiều thiết bị nhận Đề đáp ứng được các yêu cầu như trên, nhóm dé ra những mục tiêu cụ thể
Sau:
s* Nhóm sẽ kế thừa lại bộ Tăng Tốc AI CNN YOLOv2 từ luận văn [1] “Bộ
tăng tốc AI tích hợp trên Ultra96-V2 cho Smart Camera” của nhóm tác giả Nguyễn Tiến Bảo và Nguyễn Phan Hoàng Đức đề nghiên cứu, phục vụ cho việc cải tiễn tốc độ của hệ thống smart camera.
s* Tiếp theo nhóm tìm hiểu board Ultra96-V2 của Avnet phân phối dựa trên hệ
thống Zynq UltraScale+ MPSoC do Xilinx phát hành Nhóm tìm hiểu thêm
bộ công cu Xilinx Vivado (bao gồm Vivado HLS, Vitis, Vivado Design Suite) để dùng cho việc tổng hợp IP YOLOv2 và cài đặt bộ CNN YOLOv2 vào hệ thống SoC trên board Ultra96-V2 kết nối với USB Camera và module
Wi-Fi.
4 _ * Kế tiếp nhóm tìm hiểu và xây dựng hệ điều hành Linux, sau đó nap lên board
Ultra96-V2 bằng công cụ Petalinux của Xilinx phát hành đề điều khiển hoạt động của cả hệ thống.
kẻ Tiếp theo nhóm nghiên cứu các phương pháp streaming để cải thiện tốc độ
streaming tích hợp AI so với nhóm trước.
$ Tiếp theo nhóm tìm hiểu các công nghệ hỗ trợ như FFmpeg, OpenCV và
giao thức truyền dữ liệu RTSP dé thực hiện truyền hình ảnh streaming thông
qua mạng internet đạt được độ trễ thấp nhất.
$* Cuối cùng nhóm viết các chương trình phần mềm bang Vitis và nạp lên hệ
điều hành Linux trên board Ultra96-V2 để điều khiển hoạt động hệ thống.
Nhóm sẽ thực hiện kiểm tra hệ thống, đánh giá, so sánh và đưa ra các kết
luận dựa trên các kết quả thử nghiệm.
Trang 201.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 sẽ chỉ tập trung thực hiện cải thiện tốc độ streaming hơn là tinh chỉnh về IP core Ngoài ra, nhóm cũng sẽ thực hiện các biện pháp gián tiếp bao gồm giải quyết vấn dé tản nhiệt của board dé nâng cao tính 6n định khi streaming, hạn chế xảy ra van dé quá nhiệt gây ảnh hưởng đến quá trình stream.
1.5 Kết quả mong muốn
Ở dé tài này nhóm sẽ tập trung vào việc cải tiến tốc độ của hệ thống smart
camera khi thực hiện streaming hình ảnh trong trường hợp có xử lý AI và không xử
lý AI thông qua mạng internet sau đó gửi dữ liệu hình ảnh lên một cloud server có
sẵn Người dùng có thé xem trực tiếp kết quả bằng cách nhập địa chi ip của server
trên trình duyệt web, hoặc dùng công cụ hỗ trợ xem video như VLC Media Player
để lấy luồng video streaming về coi Đối với camera hình ảnh thường, độ trễ mong muốn trên thiết bị nhận nhỏ hơn 4 giây, tốc độ hiển thị khung hình trung bình lớn hơn 3 fps đối với độ phân giải full HD 1920 x 1080 Đối với camera hình ảnh xử lý YOLOv2, nhóm mong muốn có thể giảm độ trễ khi streaming video ở độ phân giải full HD 1920 x 1080 trên thiết bị đầu cuối nhỏ hơn 25 giây và tốc độ hiền thị khung
hình trên 0.3fps.
1.6 Bố cục luận văn
Báo cáo này được chia làm năm chương, mỗi chương có nội dung được trình
bày như sau:
Chương 1: Giới thiệu đề tài
Chương đầu tiên sẽ giới thiệu tổng quan về đề tài khóa luận, lý do nhóm chọn đề tài này, mục tiêu dé ra của nhóm, những giới hạn của để tài và kết quả thực
hiện mà nhóm đạt được.
Chương 2: Cơ sở lý thuyết
Trang 21Chương này trình bày những cơ sở lý thuyết được sử dụng có liên quan đến nội dung nghiên cứu của dé tài, những thông tin này dựa vào các nguồn tài liệu nhóm tìm kiếm được trên Internet, tham khảo các tài liệu có sẵn trên website của khoa KTMT cũng như những góp ý của các thầy cô, anh chị bao gồm: kiến thức chung về FPGA, smart camera, tìm hiểu về các kỹ thuật streaming video và nghiên cứu giao thức RTSP, các phương pháp ổn định streaming, cuối cùng sẽ đưa ra các
đề xuất phù hợp nhất.
Chương 3: Thiết kế hệ thống
Dựa vào những kiến thức về cơ sở lý thuyết đã tìm hiểu được ở Chương 2 thì
ở Chương 3 này nhóm sẽ đề xuất một mô hình hệ thống một cách chỉ tiết của khóa luận Giải thích nguyên lý hoạt động của cả hệ thống.
Chương 4: Hiện thực, thực nghiệm và đánh giá kết quả
Sau khi đã xây dựng được hệ thống, nhóm tiến hành các bước chạy thử, thực
nghiệm thu được các kết quả sau đó thực hiện việc đánh giá, so sánh với mục tiêu ban đầu của đề tài cũng như so sánh với kết quả thực nghiệm của đề tài trước.
Chương 5: Kết luận và hướng phát triển
Chương cuối sẽ tổng kết lại khóa luận, tóm tắt toàn bộ những công việc mà nhóm đã hoàn thành, những kết quả và thành tích đạt được Đồng thời chương này nhóm sẽ đưa ra đề xuất cho những hướng phát triển tiếp theo của đề tài trong tương
lai.
Trang 22Chương2 CƠ SỞ LÝ THUYET
2.1 Field Programmable Gate Array (FPGA)
2.1.1 Dinh nghĩa
FPGA là một loại mạch tích hợp cỡ lớn dùng cấu trúc mảng phần tử logic mà người dùng có thể lập trình được Chữ field ở đây muốn nói đến khả năng tái lập trình "bên ngoài" của người sử dụng, không phụ thuộc vào dây chuyền sản xuất phức tạp của nhà máy bán dẫn Vi mạch FPGA được cấu thành từ các bộ phận:
© Các khối logic cơ bản lập trình được (logic block)
e - Hệ thống mạch liên kết lập trình được
¢ Khối vào ra (I/O Pads)
e Phan tử thiết kế sẵn khác như DSP slice, RAM, ROM, nhân vi xử lý
FPGA cũng được xem như một loại vi mạch bán dẫn chuyên dụng ASIC,
nhưng nếu so sánh FPGA với những ASIC đặc chế hoàn toàn hay ASIC thiết kế trên thư viện logic thì FPGA không đạt được mức độ tối ưu như những loại này và còn hạn chế trong khả năng thực hiện những tác vụ đặc biệt phức tạp Tuy vậy FPGA ưu việt hơn ở chỗ có thê tái cấu trúc lại khi đang sử dụng, công đoạn thiết kế đơn giản do vậy chỉ phí giảm, rút ngắn thời gian đưa sản phẩm vào sử dụng.
Thiết kế hay lập trình cho FPGA được thực hiện chủ yếu bằng các ngôn ngữ
mô tả phần cứng HDL như VHDL, Verilog, AHDL Các hãng sản xuất FPGA lớn như Xilinx, Altera thường cung cấp các gói phần mềm và thiết bị phụ trợ cho quá trình thiết kế Ngoài ra cũng có một số hãng thứ ba cung cấp các gói phần mềm kiểu nay như Synopsys, Synplify Các gói phần mềm này có khả năng thực hiện tat cả các bước của toàn bộ quy trình thiết kế IC chuẩn với đầu vào là mã thiết kế trên
HDL (còn gọi là mã RTL).
2.1.2 Kiến trúc tổng quát
Kiến trúc cơ bản của FPGA gồm 3 thành phần chính sau: Khối I/O (hay gọi
là các pin FPGA), khối kết nối (Interconnection), các khối logic cấu hình (Logic
Trang 23Blocks hoặc Configurable Logic Blocks - CLB) Các khối CLB được tô chức sắp xếp theo mảng với 2 hướng doc và ngang như Hình 2.1.
một Flip-Flop hoặc một chốt (latch) LUT (Look Up Table) 1a khối logic có thé thực
hiện bất kì hàm logic nào từ 4 đầu vào (số đầu vào này sẽ tùy thuộc vào từng dòng chip của mỗi hãng) Kết quả của hàm này tùy vào mục đích mà gửi ra ngoài khối logic trực tiếp hay thông qua phan tử nhớ flip-flop Ngoài khối logic cơ bản đó, nhiều chip FPGA hiện nay còn có một hỗn hợp các khối khác nhau, một số trong đó chỉ được dùng cho các chức năng cụ thể, chang hạn như các khối bộ nhớ chuyên dụng, các bộ nhân (multipliers) hoặc các bộ ghép kênh (multiplexers) Tất nhiên,
Trang 24cấu hình bộ nhớ được sử dụng trên tất cả các khối logic được dùng để điều khiển các chức năng cụ thé của mỗi phan tử bên trong khối đó.
Khối kết nói (Interconnections): dùng dé liên kết các khối logic và I/O lại với nhau đề tạo thành một thiết kế hoàn chỉnh Mạng liên kết trong FPGA được cấu thành từ các đường kết nối theo hai phương ngang và đứng Tùy theo từng loại FPGA mà các đường kết nối được chia thành các nhóm khác nhau Các đường kết nối được nối với nhau thông qua các khối chuyển mạch lập trình được (programmable switch) Trong mỗi khối chuyển mạch chứa một số lượng nút chuyền lập trình được đảm bảo cho các dạng liên kết phức tạp khác nhau.
Khối I/O: cung cấp giao tiếp giữa các khối logic và kiến trúc định tuyến đến các thành phần bên ngoài Một trong những vấn đề quan trọng nhất trong thiết kế kiến trúc I/O là việc lựa chọn các tiêu chuẩn điện ấp cung cấp và điện áp tham chiếu
sẽ được hỗ trợ Số lượng Pin (I/O) của FPGA tương đối lớn, thường được chia ra
làm 2 loại: User Pin (chân người dùng), Dedicated Pin (chân chuyên dung) User
Pin: người dùng có thé lập trình như đầu vào, dau ra hoặc cả đầu vào — ra Mỗi pin được kết nối với một “I/O Cell” bên trong FPGA, được cấp bởi các chân Vee I/O (I/O power pin) Dedicated Pin: được mã hóa cứng với một chức năng cụ thé như:
® Power Pin
¢ Configuration Pin: các pin dé cấu hình FPGA.
¢ Dedicated Input hay Clock Pin: điều khiển mạng lưới clock trong FPGA.
e Voltage IO: cấp nguồn cho các cổng logic va flip-flops bên trong FPGA
Theo thời gian, các kiến tric FPGA co bản đã được phát triển nhiều hơn thông qua việc bổ sung các khối chức năng đặc biệt có thé lập trình như bộ nhớ Block RAMs, logic số học (ALU), bộ nhân, DSP-48 và thậm chí là bộ vi xử lý nhúng được thêm vào do nhu cầu của các nguồn tài nguyên cho một ứng dụng Kết quả là nhiều FPGA ngày nay có nhiều nguồn tài nguyên hơn so với các FPGA trước
đó.
10
Trang 252.2 Hệ thống nhúng
2.2.1 Dinh nghĩa
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 dữ 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.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.2: Mô hình cơ bản của một hệ thống nhúng 2.2.2 Phần mềm của một hệ thống nhúng
Phần mềm được viết cho hệ thống nhúng được gọi là phần mềm nhúng hay firmware Phần mềm nhúng là một chương trình được viết, biên dịch trên máy tính
và nạp vào một hệ thống khác bao gồm một hoặc nhiều bộ vi xử lý đã được cài đặt sẵn một hệ điều hành, bộ nhớ ghi chép được, các công giao tiếp được với các phần cứng khác Phần mềm nhúng là phần mềm tạo nên phần hồn, phần trí tuệ của các
11
Trang 26sản phẩm nhúng Phần mềm nhúng ngày càng có giá trị cao trong các sản phâm
nhúng.
2.2.3 Phần cứng của một hệ thống nhúng
Hệ thống nhúng sử dụng nên tang phần cứng để thực thi các hoạt động Phần cứng của hệ thống nhúng được lắp ráp cùng với bộ vi xử ly/vi điều khiển Hệ thống phan cứng nay bao gồm các yếu tố như giao điện cho các dit liệu đầu vào/đầu ra, bộ nhớ, giao điện người dùng và bộ hiền thị dữ liệu Về cơ bản, một hệ thống nhúng thường bao gồm:
e _ Bộ cung cấp năng lượng
e Bộnhớ
e Bộ xủ lý
e Timers
¢ Đầu ra/ bảng mạch đầu ra
e Cổng giao tiếp nói tiếp
e SASC (System application specific circuits — Các mạch ứng dụng cho
một hệ thống cụ thể nào đó)
12
Trang 27_.——-— —— _ _—
Hình 2.3: Phần cứng của một hệ thống nhúng2.2.4 Đặc điểm của một hệ thống nhúng
Hệ thống nhúng được thiết kế dé thực hiện một chức năng chuyên biệt nào
đó Đây là điểm khác biệt so với các hệ thống máy tính khác như máy tính cá nhânhoặc các siêu máy tính có thể thực hiện nhiều chức năng khác nhau với những phép
tính phức tạp Tính chuyên dụng của hệ thống nhúng giúp nâng cao khả năng sửdụng và tiết kiệm tài nguyên cho hệ thống
Tất cả các hệ thống máy tính đều có những hạn chế về các số liệu thiết kế, tàinguyên Số liệu thiết kế là thước đo dé đánh giá việc xây dựng các tinh năng như độ
lớn, công suất, chi phí và cả hiệu năng hoạt động của hệ thống Hệ thống phải hoạtđộng nhanh ở một mức độ chấp nhận được nào đó, đồng thời vẫn phải đảm bảo tiêu
thụ it năng lượng hon dé tăng tuổi thọ của pin Một số hệ thống nhúng phải tươngtác liên tục với những thay đôi trong hệ thống và tính toán các kết quả cụ thé trong
thời gian thực với độ trễ cực thấp hoặc hầu như không có
13
Trang 28Hệ thống nhúng phải được nhúng vào một vi điều khiển hoặc bộ vi xử lý Hệthống nhúng luôn yêu cầu một bộ nhớ nên phần mềm nhúng thường được đưa trực
tiếp vào ROM Hệ thống nhúng không bắt buộc sử dụng bộ nhớ thứ cấp trên máy
tính Hệ thống nhúng phải được kết nối với các thiết bị ngoại vi để kết hợp các thiết
bị đầu vào và đầu ra Hệ thống nhúng thường được tích hợp sẵn với phan cứng déđảm bảo tính bảo mật và hiệu suất để phần mềm nhúng trên hệ thống đó đáp ứng
được nhu cầu sử dụng với độ linh hoạt cao hơn
2.3 Hệ thống SoC (System on Chip)
2.3.1 Định nghĩa hệ thống SoC
System on Chip là hệ thống mạch tích hợp bao gồm tat cả các thành phan canthiết được tích hợp trên 1 chip duy nhất Thiết kế của một hệ thống SoC thường baogồm bộ xử lý trung tâm, memory, các port cho input và output, thiết bị lưu trữ thứcấp và các ngoại vi như I2C, SPI, UART, CAN, Timers, v.v Các thiết kế SoCthường tiêu tốn ít năng lượng và có giá thành thấp hơn các hệ thống đa chip nếu so
sánh cùng một thiết kế Ngoài ra, hệ thống đơn chip cũng có tính ôn định cao hơn
Các ứng dụng xây dựng trên cơ sở sử dụng các hệ thống đơn chip cũng cho giáthành thấp hơn, không gian chiếm chỗ ít hơn Một SoC ngày nay thường có khảnăng xử lý chạy rất nhiều ứng dụng xử lý âm thanh, hình ảnh, giải mã tín hiệu,
2.3.2 Cấu trúc phần cứng của một SoC
Mỗi chip SoC có mật độ tích hợp chức năng khác nhau nhưng hầu hết cácSoC đều có các thành phần cơ bản sau đây:
¢ CPU (Central Processing Unit): Lõi vi xử lý là thành phần không thé thiếu
trong một SoC làm nhiệm vụ quản lý toàn bộ hoạt động chính của một SoC.
CPU đảm nhiệm luồng xử lý chính trong SoC, điều phối các hoạt động giữacác thành phần khác trong SoC, thực thi các tính toán chính Một SoC có thê
có một hoặc nhiều lõi CPU Một số lõi CPU:
e Lõi CPU ARM dùng tập lệnh ARM và là sản phẩm của hãng ARM.
14
Trang 29e RISC-V là các lõi CPU phát triển trên tập lệnh mở và miễn phí RISC-V.
e SH (SuperH) dùng tập lệnh RISC được triển bởi Hitachi và nay là sản
phâm của Renesas.
“ Bus hệ thống (System BUS): Bus hệ thống là có nhiệm vụ kết nối thông suốt
*
>
>
>
các thành phan chức năng khác nhau trong vi xử ly Bus hệ thống giống như
những con đường dé vận chuyền dữ liệu giữa các thành phan trong SoC Một
số cau trúc bus hệ thống:
e AMBA (AXI, AHB, APB) là chuan bus phát triển bởi ARM
e CoreConnect là chuan bus phát triển bởi IBM
e Avalon là chuẩn bus phát triển bởi Altera, hiện nay đã thuộc Intel
e STBus là chuẩn bus phát triển bởi STMicroelectronic
e Wishbone là chuẩn bus phát triển bởi Silicore Corporation, hiện nay đã
được công bố miễn phí trên OpenCores
Bộ nhớ (Memory): Bộ nhớ trong một SoC gọi là bộ nhớ nội dé phân biệt với
bộ nhớ năm ngoài SoC và giao tiếp với SoC thông qua các chân (pin) điều
khiển của SoC Bộ nhớ nội này có thé là:
e ROM: lưu cấu hình hoặc chương trình ban đầu của SoC
e RAM: được sử dụng dé lưu thông tin hoặc giá trị tính toán trong suốt quá
trình hoạt động của SoC
Thành phan điều khiển nội (Internal block): là thành phan chỉ điều khiển hoạtđộng bên trong SoC mà không điều khiển trực tiếp port nào của SoC như:
e©_ Khối tạo clock (clock generator): Cung cấp clock cho toàn bộ các khối
chức năng trong SoC, ké cả CPU
e Khối tao Reset (reset generator): Cung cap reset cho toàn bộ các khối
chức năng trong SoC, ké cả CPU
e Khối quản lý năng lượng (power management): Điều khiển cấp nguồn
(bật/tắt) cho các khối chức năng trong SoC
15
Trang 30e Các khối giám sát (Monitor) là các khối có chức năng giám sát hoạt động
của SoC, kịp thời phát hiện ra các lỗi trong quá trình hoạt động dé khởiđộng lại một phần hoặc toàn bộ hệ thống
s* Ngoại vi (Peripheral): là các khối có thê lái trực tiếp các chân (pin hoặc port)
của SoC dé thực thi một chức năng điều khiến bên ngoài SoC, ví dụ như:
e UART: truyền nhận dữ liệu nói tiếp bat đồng bộ
e SegLCD: Điều khién hiển thị trên segment LCD
e_ Video: Điều khiển camera
e Audio: Thu phát âm thanh.
e ADC: bộ chuyên đổi tín hiệu tương tự thành tín hiệu sé
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ễ
16
Trang 31tiế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
mà 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 2.5.
On-board Memory
Power |
Ethernet Image
Sensor
Serial Processor
Encoder Input Digital I/O Display Out
Hình 2.5: 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 dé chỉnh sửa các hiệu ứng, loại bỏ các phần thừa, nhận diện khuônmặ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 anh 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ả
17
Trang 32củ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 diém cơ bản sau:
*
se 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ó sẵn như DSP, PowerPC, Atom Ngoài ra
còn có các tùy chọn kết hợp như CPU và bộ đồng xử lý DSP cho một số
thuật toán nhất định
Kích thước: Nhiều thành phần 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
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
Phần mềm: Hầu hết các smart camera ngày nay đều được cài đặt các phầnmềm giúp người dùng dé dang thao tác hon trong việc xử lý ảnh
Độ 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ính nă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,chống bụi Hình 2.6 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 dáng người vào
ban đêm, thích hợp sử dung dé cham công nhân viên trong công ty hoặc sử
dụng làm camera an ninh.
18
Trang 33Hình 2.6: Smart camera HANET AI CAMERA
* Kha năng kết nối: Mỗi smart camera đều được trang bị 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 dữ
liệu một cách dé dang hơn Hình 2.7 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 2.7: Một sô công két nôi trên smart camera
19
Trang 34“+ Kha năng đưa ra quyết định: Ngày nay, các smart camera có thé có đủ mọi
hình dạng, kích thước và hiệu suất nhưng tất cả chúng đều có một thuộc tính
chung là khả năng xử lý ảnh và đưa ra quyết định Chính việc đưa ra quyếtđịnh làm cho một chiếc máy ảnh bình thường trở nên thông minh hơn Ngoài
ra, smart camera còn giúp tiết kiệm chi phí, dễ tích hợp và mang lại hiệu suấtcao nên nó luôn là một lựa chọn hàng đầu cho các ứng dụng về thị giác máy
tính.
2.5 Thuật toán YOLOv2
'YOLOV2 hay còn gọi là YOLO9000 đã được Joseph Redmon va Ali Farhadi
công bố và cuối năm 2017 và có mặt trong hội nghị về thị giác máy tính CVPR(Computer Vision and Pattern Recognition) Cải tiến chính của phiên bản này tốt
hơn, nhanh hơn, tiên tiến hơn để bắt kịp faster R-CNN (phương pháp sử dụng Region Proposal Network) và xử lý được những hạn chế của YOLOvI.
2.5.1 Batch normalization
Kỹ thuật Batch Normalization được đưa vào sau tất cả các lớp convolution
của YOLOv2 Kỹ thuật này không những giảm được thời gian huấn luyện mà còn
có tác dụng tăng tính phổ quát (generalize) cho mạng Ở YOLOv2, Batch
Normalization giúp tăng mAP lên khoảng 2% Mạng cũng không cần sử dụng thêmDropout dé tăng tính phổ quát
2.5.2 High resolution classifier
YOLOv2 được huấn luyện với hai pha Pha đầu sẽ huấn luyện một mangclassifier với ảnh đầu vào có kích thước nhỏ (224x224) và pha sau sẽ loại bỏ lớpfully connected và sử dụng mang classifier này như phần khung xương (backbone)
để huấn luyện mạng detection Ảnh đầu vào kích thước nhỏ cũng thường được sửdụng dé huấn luyện các mang classifier, sau đó sẽ được sử dụng như một pretrained
model cho phan backbone của các mang detection khác Ở pha sau, YOLOv2 sẽ
finetube mang backbone dưới anh đầu vào có kích thước lớn hơn là 448x448 trước
20
Trang 35tiên để mạng hiểu được các kích thước ảnh đầu vào lớn hơn, sau đó sử dụng kết quả này đề huấn luyện cho quá trình detection Điều này giúp tăng mAP (mean Average
Precision) của YOLOv2 lên khoảng 4%.
2.5.3 Kiến trúc Anchor Box
Trong YOLOv2, lớp fully connect ở giữa mạng đã được loại bỏ, thay vào đó
tác giả đã sử dụng kiến trúc anchor box để dự đoán các bounding box Việc dự đoán các offset so với anchor box sẽ dễ dàng hơn nhiều so với dự đoán tọa độ của bounding box Thay đổi này giúp giảm mAP đi một chút nhưng sẽ khiến cho recall
tăng lên.
2.5.4 K-means clustering
Thay vi phải chon anchor box bang tay, YOLOv2 sử dụng thuật toán means dé đưa ra các lựa chon anchor box tốt nhất cho mang Viéc nay gitip tao ra mean Intersection Over Union tốt hon.
K-2.5.5 Direction location prediction
YOLOvI không có các hạn chế trong việc dự đoán vi trí của bounding box Khi các trọng số được khởi tạo ngau nhiên, bounding box có thé được dự đoán ở bat
kì đâu trong ảnh Điều này khiến cho mô hình không hoạt động tốt trong giai đoạn đầu của quá trình huấn luyện Vị trí của bounding box có thể ở rất xa so với vị trí
của grid cell.
YOLOv2 sử dụng ham sigmoid (ø) đề hạn chế giá trị trong khoảng từ 0 đến
1, từ đó có thể hạn chế các dự đoán bounding box ở xung quanh grid cell giúp mô hình ồn định hơn trong quá trình huấn luyện YOLOv2 đã có thêm 5% mAP khi áp
dụng phương pháp này Hình 2.8 mô tả dự đoán bounding box của YOLO.
21
Trang 37Thông thường, việc concatenate hai feature map chỉ thực hiện được khi
chúng có cùng chiều rộng và chiều dai Và để có thé concatenate được với nhau thi
cần có lớp Reorg Reorg là kỹ thuật tổ chức lại bộ nhớ dé biến feature map 26x26
thành 13x13 với chiều sâu lớn hơn đề có thé thực hiện phép concatenate với featuremap 13x13 ở cuối Hình 2.10 mô tả kỹ thuật Reorg trong YOLOv2
epee fe
Hình 2.10: Kỹ thuật Reorg trong YOLOv2
Hình 2.10 là một lát cắt (channel) của feature map kích thước 4x4 Dé đưa vềkích thước 2x2 thì phải giảm chiều rộng đi 2 lần và chiều đài đi 2 lần, ta táchchannel của feature map 4x4 thành 4 ma trận ứng với 4 channel chiều sâu của
feature map 2x2 mới VỊ trí các giá trị trong mỗi channel của feature map 2x2 mới
sẽ lấy thưa thớt trên feature map 4x4 ban đầu với stride bằng 2 theo hai trục dài và
rộng.
2.5.7 Multi-scale training
Sau khi thêm kỹ thuật anchor box cho YOLOV2, input của mang được thay
đôi thành 416x416 thay vì 448x448 Tuy vậy, YOLOv2 được thiết kế chi gồm cáclớp convolution và pooling nên có thê thích ứng với nhiều kích thước ảnh đầu vào
khác nhau giúp tăng khả năng xử lý của YOLOv2 với đa dạng kích thước ảnh.
2.5.8 Light-weight backbone
Điểm cải tiến của YOLOv2 còn phải kế đến backbone mới có tên
Darknet-19 Mạng này gồm 19 lớp convolution và 5 lớp max pooling đã tạo ra tốc độ nhanh
23
Trang 38Type Filters | Size/Stride Output
Convolutional 32 3x3 224 x 224
Maxpool 2x 2/2 112 x 112 Convolutional 64 3x3 112 x 112 Maxpool 2x 2/2 56 x 56 Convolutional 128 3x3 56 x 56 Convolutional 64 1x1 56 x 56
Convolutional 128 3x3 56 x 56
Maxpool 2x 2/2 28 x 28
Convolutional 256 3x3 28 x 28
Convolutional 128 1x1 28 x 28 Convolutional 256 3x3 28x28
Maxpool 2x2/2 14 x 14
Convolutional 512 3x3 14 x 14
Convolutional 256 1x1 14 x 14 Convolutional $12 3x3 14 x 14 Convolutional 256 1x1 14x 14 Convolutional 512 3x3 14x 14
Maxpool 2x 2/2 7x7
Convolutional 1024 3x3 7x7 Convolutional 512 1x1 7x7
Convolutional 1024 3x3 7x7
Convolutional 512 1x1 7x7
Convolutional 1024 3x3 7x7 Convolutional 1000 1x1 7x7 Avgpool Global 1000
Softmax
Hinh 2.11: Darknet-19
Ngoài ra, YOLOv2 còn đưa ra cách kết hợp các dataset khác với ImageNet
dé có thé phát hiện nhiều class hơn Một directed graph hay còn gọi là WordTree đãđược tạo ra Dé có thé merge được các label từ tập ImageNet (1000 classes) vớiCOCO/PASCAL (100 classes) thì ta phải dựa vào WordNet dé xay dung quan hé
giữa các class, từ đó có thé huấn luyện mạng nhận dạng các class có quan hệ với
nhau Hình 2.12 giới thiệu WordTree trong YOLOVv2.
WordTree
physical object
animal i natural object phenomenon
tabby Persian
biplane jet airbus stealth golden potato felt sea American
fighter fern fern fern lavender twinflower
Hinh 2.12: WordTree trong YOLOv2
24
Trang 392.6 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ý ảnh 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
tinh (static libraries) hoặc thư viện liên kết động (shared libraries) Một số module
pho biến có sẵn như:
Core functionality (core) — module nhỏ gon dé xác định cấu trúc dữ 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
Image Processing (imgproc) — module xử lý hình ảnh gồm cả lọc hình ảnhtuyến tính và phi tuyến (linear and non-linear image filtering), phép biến đổihình học (chỉnh size, afin va warp phối cảnh, ánh xạ lại dựa trên bảngchung), chuyên đổi không gian màu, biéu đồ, và nhiều cái khác
Video Analysis (video) — module phân tích video bao gồm các tinh 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ê.
Camera Calibration and 3D Reconstruction (calib3d) — thuật toán hình hoc
da chiều cơ bản, hiệu chuẩn máy anh single va stereo (single and stereocamera calibration), dự đoán kiểu dáng của đối tượng (object pose
estimation), thuật toán thư tín âm thanh nổi (stereo correspondence
algorithms) và các yếu tổ tái tạo 3D
2D Features Framework (features2d) — phát hiện các đặc tinh nồi bật của bộ
nhận diện, bộ truy xuất thông SỐ, thông số đối chọi
25
Trang 40>* 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, ).
* High-level GUI (highgui) — giao diện dé dùng dé thực hiện việc giao tiếp UI
đơn giản.
# Video I/O (videoio) — giao diện dé dùng đề thu và mã hóa video
GPU — Các thuật toán tăng tốc GPU từ các module OpenCV khác
2.7 Streaming video
Thuật ngữ Streaming video lần đầu tiên được sử dụng vào năm 1990 được
mô tả là một kỹ thuật giúp thu thập dữ liệu từ camera sau đó truyền dữ 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ãitrong 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ầnmề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,quản lý và điều khiển trong các doanh nghiệp, cơ quan, tô chức trở nên dé dang và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ệ thong nhúng
trê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, video
ngắ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
từ một hệ thống máy chủ
26