Vì thế, trong đề tài này, nhóm quyết định tìm hiểu về vần để nhận điện biên báo đề hiểu được các lý thuyết cơ bản nền tảng cho bài toán nhận điện và tiễn hành thực hiện thuật toán trên
Trang 1
KHOA ĐIỆN - ĐIỆN TỬ
BỘ MÔN VIỄN THÔNG
-›2Eœø -
BAO CAO DO AN
DE TAI: NHAN DIEN BIEN BAO GIAO
THONG TREN KIT RASPERRY PI
Giáo viên hướng dẫn : PGS.TS Hà Hoàng Kha
Danh sách thành viên: Nguyễn Thị Gia Gia
Trang 3
MUC LUC
MUC LUC 2
1 Tính cấp thiết cla dé tai ccc ccccccecesseseesesseessessseeseeseesestestesseseeteseeseesesesess 8
“0019:6101: 03 8n 9
3 Đối tượng và phạm vi nghiên cứu - ¿2 222 +52++2x2EE2E22EE 2E x2EEErkrrrrrrrree 9 Ni vì 0i 6i) i5 na ea 9
5 Bố cục đỗ án 2+2 tt HH HH2 10 CHUONG 1: CO SO LY THUYET II 1.1 Tổng quan về deep learning -¿ ¿- ¿S22 + +2x+E2 2x23 3111221221221 2.cxee 11 IiNNB 0 in .a 11
1.1.2 Convolutional Neural Network (CNN) :::ccccccceeeeeeceeeeeeeeseceeeeeeeesennaees 12 1.2 Tim hiéu cdc m6 hinh yolo .cccccccccscscsssssessessessssssseesseseesestesesseasssssseeseseesnesess 14 ID YOLOV 14
20009 / 16
2009 18
009.5 19
55909 20
1.3 GiGi thigu vé raspberry 8 d 22
IENB.G0+ 0 an 22
1.3.2 Phần cứng của kit Raspberry pi 5-52-5252 222 SE 22xvE2EzxeEkrrrrrrrrrrree 23 1.4 Giới thiệu về REALVNC - ¿5-52 Sc222222232212212212212122121121E11.11 112121 ce 25 In 9 — 25
Trang 4
1.4.2 Ưu điểm và hạn chế của VNC 2 cc+ttEkrrrrrtrrrrrrierriierieeo 26
I0 0i 5i 1ä 0n 27
6c nh šš :-" -.-dẦ 27
IV ¡há nan e 28
II ao 29
In ác ao 30
1.7.2 Ulu diém 1a, 0n 4 30
CHUONG 2: NHAN DIEN BIEN BAO GIAO THONG BANG YOLOV5 32
2.1 X@y dung gidi thuat nh ố ố 32
2.1.1 Xay dung tap dit LGU cố ố 32
2.1.2 Huan luyện mô hình (train model) .- - - «5 S< sxss*ss se 36 2.2 Kết quả huần luyện mô hình -2- 2 2 2 ©++x+E++EE2E+2EEEEEESEErEerxerrerrrrres 40 CHƯƠNG 3: NHAN DIEN BIEN BAO GIAO THONG TREN KIT RASPBERRY PI 46 3.1 Cài đặt trén kit raspberry Di cee ceceeeeeeeseeeeeeeaececeeceecaaeeaeseeeeeeeeaaeees 46 3.1.1 Cài đặt hệ điều hành cho Raspberry pi ¿5-55-5252 S52 sxszxsrsrzed 46 3.1.2 Thiết lập chia sẻ màn hình làm việc bằng VNC 2 2-c2-ccss2 51 3.1.3 Cai đặt hệ thống để streaming bằng Webcam USB - 52
3.2 Nhận diện (detect) dữ liệu từ video sfreaming . - cà Sa 59 3.2.1 Thiếp lập môi trường chạy .-.- 2-2 52 522S2E+SE2EESEEEEeExerxerrrkerrered 59 3.2.2 Nhận điện đữ liệu trên video streaming bằng yolov5 -: ¿ 62
3.3 Kết quả thu được sau đef€Ct ¿2-52-2252 2x22 2E22221221211211 2111121211122 63 BBL KGt Qua a5 63
ky b1 70
CHƯƠNG 4: KÉT LUẬN 71
Trang 6
DANH MUC HINH ANH Hình I 1 Mối quan hệ AI, ML va DL eeeccccccccsecsessessesssssesestsssessesseescesessestesteseeseenees 11
lại) 820000 00 ——— 12
Hình 1 3 Thực hiện max pOoÏing - 5< S5 1S 1H TH TY HH HH Hư 13 Hình I 4 Câu trúc mơ hình YOILOV[ -¿- ¿52522 S++2E+E+2E+EE+EE+EEEEErxsrxsrszrszed 14
Hình 1 6 Dự đốn bounding box trong YOLOV2 QẶẶ Sư, 17
Hình 1 7 Cấu trúc Darknet- 19 -2-©5+22+++2E+++EEE2EEEEEEErtErrrtrrrrireieied 17 Hình 1 8 Cấu trúc Darkne(-53 -©2+-++++2E+++EEk2EEErEEErttrrrrrrrrrreieried 18
Hình I 9 So sánh YOLOv4 với những kiến trúc mạng khác -. -2- 252 19
Hình 1 10 Cấu trúc YOLOV4 -. -+2++c2 x22 t2 ree 20
Hình 1 11 Các phiên bản của YOLLOVS LH HH HH HH HH kg 21
00 008V 2n 04909 22 Hinh 8.490 0 ao 23 Hình I 14 Phần cứng Raspberry pi 2-2-2 5+2SSE+EE2EE2EE E2 E2EESEEErEkrrrrrrrrrree 24 Hinh 1 15 Webcam USB 26
Hinh 2 1 Lưu đồ giải thuật của quá trình xử lý đữ liệu -.:-.2-2 +-z5-+=s2 32
Hình 2 3 Ví dụ về một tệp TXT chứa nhãn và tọa độ ẶcScsssseeere 34
Hình 2 6 Hình anh sau tăng cường đữ liệu .- -.- 22-555 + re, 36
Hinh 2 7 Lưu đồ giải thuật của quá trình huấn luyện mơ hình .- - 36
Hình 2 8 Chọn google drive là nơi lưu kết quả 2-52 2+ 2522 S2 Ss+S2se+S2sx+szsx+2 37
Hình 2 9 Tải YOLOv§ từ GitHub và các cài đặt các thư viện liên quan 37
Hình 2 10 Tiến hành sửa tệp coco128.yaml - 2-2 ++22x+2x+E++Ee+xsrxsrssrszxeree 38
Hình 2 11 Tiến hành huấn luyện mơ hình ¿2+ 252252552 sx+£++£+>xvzxszesse2 38 Hình 2 12 Kết quả của quá trình huấn luyện mơ hình -2 +52 ++5++sz+s2 5+2 39
Hình 2 13 Vị trí lưu tệp chứa trọng số của mơ hình sau mỗi lần huấn luyện 40
Hình 2 14 Kết quả đánh giá mơ hình - 2- 2 2 S52 SE 22E+E+2E+EE+EE2EE+EEEEezvsrxsrsrs 40
Trang 7
Hinh 2 15 Precision CuUrVe ccc cece cee cece eee eee eceeee snes sega nage saeeseeesneesneengeee 41 sinh 208 ii nu Tô 42 Hình 2 17 Precision RecalÏ CUTV€ - 5 S3 1+ 2111 1H HH HH HH KH 43
Hình 2 18 Kết qua phát hiện biển báo giao thông 222 ©2-5++5+2c+2xvzxrzssse¿ 43
Hình 2 19 ConfuIsion Tra[TIX 2 5 - 5< + 31131.231.130 1210111 HH HH HH He 44
Hình 2 20 Biêu đồ thê hiện sự phân bố dữ liệu 2- 7+2 522522S2x2sxszxsrsea 45
Hình 3 1 Mô hình thiết kế phần cứng 2¿2- 52-5222 2E22E2EE2EE SE EExsrxerrxrred 46
Hình 3 2 Download phần mềm Raspberry Pi Imager 2- 222 55+5++cs+cz+xzsx2 47 Hình 3 3 Giao diện của Raspberry PI lmag€T . - 55525 <5 << xe 48 Hình 3 4 Xác định địa chỉ IP của Ethernet S< S< S25 2< <<15353311 1 keeeees 48 Hình 3 5 Tìm địa chỉ IP của Raspberry ỨĨ - s5 s+ Sàn HH net 49
Hình 3 6 Dùng Putty để kết nối với Raspberry Pi ¿-2-52-5c+cc2x2xecxrxsrxsei 49 Hình 3 7 Cửa số báo kết nối thành công ¿- ¿2-2522 22EESEE+E+Ex+E2Erxrrrrrrrree 50
Hình 3 § Nhập username và DaSSWOrd 2À G S2 HS HS 1» HH HH hư 50 Hình 3 9 Giao điện thiết đặt ban đầu của Raspberry pi ¿7+ 5+5cscccscse2 51
Hình 3 11 Màn hình desktop khi kết nối thành công -2- 25552552552 52 Hinh 3 12 Đã kết nối thành công với Webcam USB ¿-2-©2-52+2++sz+xz x2 53
Hình 3 13 Chụp ảnh sử dụng camera trên Raspberry - S5 se, 54 Hình 3 14 Hình ảnh thu được khi chụp bằng camera trên Raspberry 54 Hình 3 15 Quay video sử dụng camera trên RaspbeTry 5-5 se 55 Hinh 3 16 Video thu được khi quay bằng camera trên Raspberry - 55 Hình 3 17 Eile mofiorn.COTIÍ - 55G S2 1 1T KT KT HH HH HH HH 56 Hình 3 18 Eile Mofionn SG HT TH "TH “HH HH Hư 57 Hình 3 19 Quá trình streaming bắt đầu -¿- ¿5252252222 SE2EvEE2E2EEEEErxerxerrei 57 Hình 3 20 Tìm địa chỉ IP của Raspberry .- - - nghiệt 58 Hình 3 21 Hinh ảnh được streaming tir camera trén Raspberry .- 58 Hình 3 22 Cài đặt phiên ban Python phù hợp - Sàn nh rkt 59 Hình 3 23 Kiểm tra lại phién ban Python .0 c.cccccccccccsessessessssseesessesessestesnssteseeseesees 59 Hình 3 24 Hộp thoại Sysíem Properfles - - Sa HS HS HH HH Hư 60
Trang 8
Hình 3 25 Chon phiên bản Python phù hợp - 525 <5 S5 3+ xxx HH, 60 Hinh /2160.0i: 80a 61 Hình 3 27 Vào Command Prompt để thực thi lệnh cài đặt Pytorch 61 Hình 3 2§ Cài đặt YOLOv5 băng cmid 2-2-2252 222SE2E2SE 2E E232 E231 32x 62 Hình 3 29 Vào Command Prompt để thực thi lệnh cài đặt thư viện 5: 62
Hình 3 30 Bắt đầu detect dữ liệu - 52c 63
Hinh 3 31 Detect bién Cam ngược chiều và hiệu lệnh - 2-52 52525255255: 64
Hình 3 32 Detect biển cam xe tải, cấm đỗ xe và xe buýt . -+-ccccccccsee 64 Hình 3 33 Detect biển vòng xoay nguy hiểm -2- ¿5+ 2c22t2EE2EE SE cxsrxererree 64 Hình 3 34 Detect biển trạm xe buýt - 22-22 222x2 2E 21221 2322122122121121.11 112 xe 65
Hình 3 35 Detect biển cắm rẽ trấi -¿5+c+txectEktEErrtrirrtrierrirrieriirid 65
Hình 3 36 Detect biển cắm rẽ phải -¿- 2-52 S52 St 22t 222 2221231211211 xe 65 Hình 3 37 Detect biển người đi bộ 22-52 S22 S2SES2SE232 132151121511 21511 2111.21.16 66
Hình 3 38 Detect biển cắm ngược chiều, hiệu lệnh, cắm xe tải, cắm đỗ xe 66
Hình 3 40 Detect biển trạm xe buýt - 222222 2t 2t 21 2212322122122121121.11 112 xe 67
Hình 3 41 Detect biển cắm rẽ trấi -2¿2+c++ccectEkrtEErrtrirrtrierrirrieriirried 67
Hình 3 42 Detect biển cắm ngược chiỀu 5 2-5-5252 22E2 32x23 2E2322E32 2321222 xe 67
Hình 3 43 Detect biển người đi bộ - 25-52 S252 SES2SE212 132151121511 21511 2111121 2xC 68 Hình 3 44 Detect biển cắm ngược chiều, hiệu lệnh 5-25 22s+S22s+s225+2 68
Hình 3 45 Detect biển vòng xoay nguy hiểm -2- 2 2+222x22t2E2EErxsrxererred 68
Hình 3 46 Nhận diện biển giới hạn tốc độ 50km/h (không có trong tập đữ liệu) 69
Hình 3 47 Nhận điện biển cấm vượt (không có trong tập dữ liệu) .- 69
Hình 3 48 Nhận diện biển giao nhau với đường không ưu tiên (không có trong tập dữ I0 —— 4A 4 69
Trang 9
MO DAU
1 Tính cấp thiết của đề tài
Trong bối cảnh dân số Việt Nam đang dần chạm mốc 100 triệu người Cùng với đó là quá trình phát triển công nghiệp hóa, hiện đại hóa ngày càng hiện đại khiến cho nhu cầu giao thông di chuyển ngày cảng tăng Song có một thực tế đáng buồn là tình hình giao thông ở Việt Nam hiện nay đang còn nhiều bất cập Trong đó tai nạn giao thông
là một vân đề nội cộm
Hiện nay tai nạn giao thông đang diễn ra hằng ngày, gây thiệt hại rất lớn vẻ tính mạng
và tài sản Theo báo cáo nhanh của Văn phòng Bộ Công an và Cục Hàng hải Việt
Nam, trong quý I năm 2022 (tính từ ngày 15/12/2021 đến 14/3/2022) toàn quốc xảy ra
2.762 vụ tai nạn giao thông, làm chét 1.676 ngwoi, bi thuong 1.741 nguoi Nguyén
nhân chủ yếu của thực trạng trên là do người điều khiên phương tiện giao thông có ý
thức kém, sử dụng rượu bia khi lái xe, ít hiểu biết về pháp luật, Trong đó việc không
tuân thủ hiệu lệnh biển báo giao thông đi ngược chiều, chạy quá tốc độ, phóng nhanh vượt âu, đi không đúng phần đường quy định, cũng là một trong những nguyên nhân chủ yếu dẫn đến tai nạn giao thông Nhưng trên thực tế, đây là nguyên nhân có thể
nhận biết trước và có thể tránh được
Trên thê giới vân đề nhận dạng các loại biên báo đã được quan tâm nghiên cứu khá nhiêu Ở Việt Nam, cũng đã bắt đầu nghiên cứu về lĩnh vực này, tuy vậy nó còn khá nhiêu hạn chê và chưa được phô biên cho mọi người
Bên cạnh đó các công nghệ điều khiển phương tiện giao thông cũng đang dần có
những bước phát triển vượt bậc, tiêu biểu là công nghệ xe tự lái Và trong công nghệ
này, việc nhận dạng các loại biển báo để đưa ra các quyết định phù hợp là một điều kiện tiên quyết để đảm bảo tính an toàn cho phương tiện và người tham gia giao thông Đây là vấn đề đã được nhiều nhà nghiên cứu quan tâm và cũng đã tạo được nhiều công
trình đầy đủ và toàn diện, nhưng đó là với các loại biển báo ở nước ngoài, không thể
áp dụng một cách hoàn toàn ở Việt Nam được Do đó cần một bộ dữ liệu đầy đủ và
chính xác đề tiến hành thực hiện nhận diện biển báo giao thông đường bộ ở Việt Nam,
và một phương thức đề xử lý tập đữ liệu này
Trang 10
Nhung trong quy m6 truong hoc, viéc tim kiếm, xử lý cập nhật dữ liệu là một việc làm
khó khăn và không thể đem đến sự chính xác cao nhất được Bên cạnh đó, còn là vẫn
đề về phần cứng để triển khai quá trình nhận diện cũng khó được đảm bảo Vì thế,
trong đề tài này, nhóm quyết định tìm hiểu về vần để nhận điện biên báo đề hiểu được
các lý thuyết cơ bản nền tảng cho bài toán nhận điện và tiễn hành thực hiện thuật toán
trên một máy tinh phi hop (Raspberry Pi)
Do đó, nhóm quyết định chọn đề tài “Nhận diện biển báo giao thông trên kit Raspberry Pi”
2 Muc dich nghién cwu
Đồ án nhằm giải quyết bài toán nhận điện biển báo giao thông bằng mô hình Yolov5
Từ tập dữ liệu đã huấn luyện thực hiện nhận diện trên máy tính nhúng Rasberry P1 4 sử
dụng ngôn ngữ lập trình Python và các thư viện liên quan
Thông qua việc nghiên cứu và thực nghiệm, đô án đưa ra kêt quả nhận diện của mô hình Từ đó thu thập các dữ liệu về tính thời gian thực, độ trề, hiệu suât, của mô hình và đề ra giải pháp để khắc phục
3 Đối tượng và phạm vi nghiên cứu
- Lý thuyết tổng quan Deep learning
- Phương pháp nhận dạng.bằng Yolo
- Lý thuyết tống quan về máy tính nhúng Rasberry
- Các dùng ngôn ngữ Python vả các thư viện liên quan
- Qúa trình cài đặt và kết nỗi phần cứng
- Các tiêu chí đánh giá hiệu năng của hệ thong nhận dạng khuôn mặt
4 Phương pháp nghiên cứu
Đồ án được nghiên cứu theo phương pháp thu thập dữ liệu, nghiên cứu lý thuyết và
thực nghiệm, theo thứ tự sau:
- Thu thập tài liệu nghiên cứu, lý thuyết và các mô hình thực nghiệm
Trang 11
- Tìm hiểu, khảo sát cơ sở vật chất, linh kiện phù hợp giá thành và có mặt trên thị
trường
- Tiến hành huấn luyện nhận diện biển báo giao thông bằng Yolov5
- Xây dựng mô hình nhận dạng biển báo giao thông trên hệ thống nhúng Rasberry Pi
- Hoàn chỉnh mô hình nhận diện biển báo giáo thông
5 Bố cục đồ án
Đồ án gồm 4 chương như sau:
Chương l: Cơ sở lí thuyết
Trinh bay kién thire tong quan vé Deep learning, tình hình phát triển của lĩnh vực này cũng như sơ lược về mô hình mạng CNN, tìm hiểu các phiên bản của Yolo và các linh kiện dùng trong phần cứng
Chương 2: Nhận diện biến báo giao thông bằng Yolov5
Trình bày tiến trình nhận diện bằng Yolov5 từ thu thập dữ liệu, huấn luyện mô hình và
kết quả thu được
Chương 3: Nhận diện biển báo giao thông trên kit Raspberrry Pi
Trình bày tiến trình nhân điện biển báo giao thông trên kit Raspberry Pi từ cách cài đặt, và kết qua thu được sau detect dữ liệu
Chương 4: Kết luận
Rút ra kết luận và hướng phát triển của đề tài
10
Trang 12CHUONG 1: CO SO LY THUYET
Trong chương này nhóm xin trình bày về các khái niệm nhu Deep learning,
CNN, các phiên bản của mô hình Yolo Đồng thời nhóm cũng sẽ giới thiệu về các linh kiện, thiết bị được sử dụng ở phần cứng
1.1 Tổng quan về deep learning
1.1.1 Deep learning là gì?
AI- Artificial Intelligence (Trí Tuệ Nhân Tạo) cụ thê là Machine Learning đã đạt được thành công đáng kể trong những năm gần đây AI xuất hiện hầu như trong tất ca lĩnh vực của đời sống, để dàng nhận thấy trong các ứng dụng như lái xe tự hành, Deep Blue Machine Learning sau huấn luyện sẽ có thể đưa ra dự đoán chính xác sau khi
được cung cấp dữ liệu thay vì lập trình nó theo một sườn cứng để thực hiện nhiệm vụ
đó từng bước một Từ đó đem đến sự tiện lợi, nhanh chóng cho người dùng
Trang 13AI ngày càng được các nhà đầu tư quan tâm và vươn lên phát triển như vũ bão Nỗi bật trong các đột phá của AI phần nhiều đến Deep learning Nhờ có Deep learnng mà máy tính ngày cảng vượt qua hoặc tiền gan dén viéc két hợp hiệu suất của con người Qua hình 1.1 ta có thê thay rõ Deep Learning chỉ là một tập hợp con của Machine Learning Tuy nhiên Deep Learning có khả năng khác biệt ở một số khía cạnh quan trọng so với Machine Learning nông truyền thống, cho phép máy tính giải quyết một loạt các vấn
đề phức tạp không thê giải quyết được Trong đó có thê kê đến như khả năng khai thác các tập dữ liệu lớn (Big Data) với độ chính xác cao
1.1.2 Convolutional Neural Network (CNN) Convolufional Neural Network (CNN) là một thuật ngữ dùng dé chi mang no ron tich
chập Đây là mô hình có độ chính xác cao và được sử dụng phô biến trong Deep
learning Ý tưởng đằng sau là chúng ta sẽ cho ảnh đi qua các bộ lọc trước khi huấn luyện mạng Neural Sau khi đi qua bộ lọc các đặt trưng của ảnh được thể hiện rõ và chúng ta sẽ dùng chúng để nhận diện hình ảnh Như hình 1.2 ta có cầu trúc của mô hinh CNN
ye
oO ae)
Hình I1 2 Thuật toán CNN
Đầu vào của mô hình là hình ảnh Sau đó đến Convolutional Layer (lớp tích chập) tức
là ta cho hình ảnh đầu vào thực hiện tích chập với các Kernel (bộ lọc) bằng các trượt các Kernel từ trái qua phải từ trên xuống dưới Đồng thời chọn đối số, áp dụng các bộ
lọc với các bước nhảy, padding nếu cần, áp dụng hàm kích hoat (nonlinear activation)
12
Trang 14
cho ma trận hình ảnh Sau mỗi ham kích hoạt ta sẽ nhận được thông tin cho các lớp
tiếp theo Có các hàm kích hoạt như tanh, siemoil nhưng hàm Relu phô biến hơn cả
vì nó cho hiệu suất tốt hơn Công thức của hàm Relu là ƒ (x) = max (0, x) đảm bảo cho
dữ liệu ra không âm vì dữ liệu mà chúng ta tìm hiểu là các giá trị tuyến tính không âm Tiếp đó ta tiến hành Pooling như hình 1.3 để giảm kích thước cho hình ảnh nhưng vẫn gitr lai cac thong tin quan trong Cac loai Pooling théng dung la Max Pooling, Average Pooling, Sum Pooling Số lượng lớp tích chập có thể ít hay nhiều tùy thuộc mục đích
sử dụng mà lựa chọn phù hợp Cuối cùng ta xây dựng đầu ra và dữ liệu đầu vào thành
1 lớp được kết nối đầy đủ (Full Connected)
Pooling/Subsample layer Max pooling
Single depth slice
aa oa Average pooling
ISIIIEBNI 7 |8 and stride 2 6| 8
3I2 3|4|
1|2
y Hình 1 3 Thực hiện max pooling
So với mô hình mạng Neural truyền thông thì CNN trở nên tối ưu trong một số trường hợp Với mạng Neural truyền thống thì chúng ta phải đưa tất cả giá trị pixel trên toàn
bộ ảnh qua từng Neural Gia sử tắm ảnh có kích thức nhỏ cở 32*32 có 3 kênh màu thì
số lượng trọng số phải đi qua một Neural là 3072 trọng số Nếu tắm ảnh lớn hon thi trọng số phải di qua Neural của toàn mạng có thê lên đến vài trăm vài tỉ trọng số Từ
đó bài toán của chúng ta sẽ quá phức tạp vì có quá nhiều trọng số phải xử lí, điều chỉnh
dẫn đến tình trang over fitting Trong khi voi mang CNN có tính chất kết nối cục bộ (Local connectivity) cho phép Neural chỉ xử lí một vùng đữ liệu thay vì toàn bộ tắm ảnh Đồng thời CNN cũng có bộ trọng số dùng chung thay vì từng Neural có bộ trong
số khác nhau hoàn toàn của mạng Neural truyền thông Trong cũng lớp layer thì mỗ neural đều có bộ trọng số duy nhất giống nhau Từ đó trọng số phải điều chỉnh ít hơn, bài toán sẽ đễ dàng hơn Qua đó thấy rõ CNN làm việc tốt hơn mạng Neural thông
thường ở những tắm ảnh có kích thức lớn
13
Trang 151.2 Tìm hiểu các mô hình yolo
You Only Look Once —- YOLO là một trong những mô hình phát hiện vật thê tốt nhất
hiện nay Tính đến thời điểm hiện tại, YOLO đã có năm phiên bản với những cải tiễn
rất đáng kế sau mỗi phiên bản Trong đó bao gồm ba phiên bản của tác giả chính Joseph Redmon la YOLOv1, YOLOv?2 (con duce dat tén là YOLO9000) và YOLOv3, tiếp đó là YOLOv4 của tác giả Alexey Bochkovskiy, ngay sau đó YOLOv5 xuất hiện 1.2.1 YOLOv1
Bài toán phát hiện vật thế (object detection) nhận đầu vào là hình ảnh Nhiệm vụ của bài toán không chỉ là phân loại vật thể trong ảnh, mà còn phải định vị duoc vi tri cua
đối tượng đó Trước YOLO đã có rất nhiều mô hình làm nhiệm vụ này, có thể kê đến
họ các mô hình R-CNN Thực tế, các mô hình này đã cho kết quả rất tốt nhưng lại tốn rất nhiều tài nguyên và thời gian đê tính toán nên không khả thi khi áp dụng chạy trong thời gian thực (real-tine) Sau đó, kiến trúc YOLOvI ra đời, mô hình này coi bài toán
phát hiện vật thê như một bài toán hỏi quy (repression) để xử lý Hình 1.4 là một ví dụ
cho về cầu trúc của YOLOvI1 Gia sử ta có một ảnh màu input (đầu vào) có kích thước 448x448, ta sẽ xây dựng mô hình CNN có 6 lớp max pooling có kích thước là 2x2 sẽ giảm 64 lần kích thước ảnh xuống còn 7x7 ở output (đầu ra), sử dụng lớp full connected ở các lớp cuôi cùng
Hình 1 4 Cấu trúc mô hình YOLOv1
Y tưởng thuật toán của mô hình YOLOv1 1a chia anh đầu vào thành một lưới các ô
(grid cell) kích thước SxS Trọng tâm của các vat thé sẽ được tìm trong các ô lưới đó,
14
Trang 16thông qua việc học từ quá trình huấn luyện Nếu trọng tâm thuộc bat kỳ một ô lưới nào
thì ô lưới đó sẽ chịu trách nhiệm xác định vật thê Như trên hình 1.5 ta có thê thấy ô
lưới màu xanh chịu trách nhiệm xác định con chó, ô vàng thi xác định chiếc xe đạp, ô hông xác định xe ô tô
Class probability map
Hình 1 5 Ví dụ về cách mô hình YOLOv1 dự đoán
Sau khi thức hiện Yolovl sẽ trả về (5B+C)*S? giá trị, trong đó:
B - bounding box: hộp chứa đối tượng, đối với YOLOv1 B=2 Với mỗi bounding box
sé có năm giá trỊ gồm: (x, y, w, h, confidence) Voi (x, y) la toa d6 tam cua bounding
box so với ô lưới chứa nó, (w, h) lần lượt là chiều rộng và chiều cao của bounding box, confidence là độ tự tin — xác suất đó là vật thé
C — classes: s6 lớp, nhãn, đối với YOLOvI thì mỗi ô lưới chỉ dự đoán một class duy
nhất Đối với YOLOvI thì số classes là 20, bởi vì model YOLOv1 là một model đã
duoc train săn và chúng ta không thê đào tạo hay sửa chữa được nên chỉ có thé lấy ra dùng)
Confidence ứng với mỗi bounding box được định nghĩa như sau: Pr(Object) *
0U trong đó Pr(Object) là xác suất có vật thê trong ô lưới và !2U75” là IOU
15
Trang 17của vùng dự đoán so với ground-truth box Mỗi ô lưới sẽ dự đoán xác suất rơi vào từng
class, được ký hiệu là Pr(Class,|Øbject) Tuy nhiên, mỗi ô lưới chỉ có duy nhất một tập hợp xác suất, đồng nghĩa với việc tất cả các bounding box trong cùng một ô lưới sẽ chỉ có chung một class
Khi sử dụng YOLOVvI, sẽ xảy ra một số vấn đề Đầu tiên, YOLOvl áp đặt các ràng
buộc về không gian, các ô lưới và các bounding box, dẫn đến số lượng tối đa các đối tượng được phát hiện rất ít Thêm là, mỗi ô lưới chỉ dự đoán một class duy nhất, nêu nhiễu trọng tâm đối tượng cùng nằm trong một ô lưới, thì mô hình cũng chỉ phát hiện
được một đối tượng có độ chính xác cao nhất Ngoài ra, trong quá trình huấn luyện,
hàm mắt mát (loss function) không có sự đánh giá riêng biệt giữa các bounding box, tổng hợp lại làm ảnh hưởng đến độ chính xác toàn cục của mạng
1.2.2 YOLOv2
Đề khắc phục những nhược điểm của YOLOvI, tác gia Joseph Redmon va Ali Farhadi
đã cải tiền và cho ra đời YOLOv2, đặt tên là YOLO9000 vào cuối năm 2016
Để tránh hiện tượng các giá trị rơi vào khoảng bão hòa sau khi di qua các hàm kích hoạt phi tuyến, YOLOv2 đã được áp dụng thêm kỹ thuật Batch Normalization vào sau tat cả các lớp tích chập (convolutional layer) Diéu nay gitip cho cdc trong s6 khi khéng ding Batch Normalization sẽ không được học thì nay sẽ được học bình thường Việc áp dụng Batch Normalization da giup mAP cua m6 hinh tăng thêm 2%
YOLOv2 được áp dụng bộ phân loai phan giai cao (High Resolution Classifier) trong
qua trinh huấn luyện Cụ thể, YOLOvl sẽ đảo tạo bộ phân loại với ảnh có kích thước
224 X 224, sau do tang kích thước lên 448 x 448 để nhận dạng Còn với YOLOv2, vẫn đào tạo bộ phân loại với ảnh có kích thước 224 x 224, sau đó đảo tạo tiếp với ảnh
có kích thước 448 x 448 để mạng quen dân với ảnh có kích thước lớn, sau đó dùng
kết quả này để huấn luyện cho quá trình nhận dạng ảnh có độ phần giải 448 x 448
Việc sử dụng High Resolution Classifier giúp mAP tăng lên tối đa 4%
Đề phát hiện được nhiều đối tượng hơn trong củng một ô lưới, tác giả đã sử dụng anchor box để dự đoán các bounding box như hình 1.6 Anchor box chính là các bounding box nhưng được tạo sẵn, nhằm mục đích dự đoán dễ dàng các giá trị tham số
l6
Trang 18của vat thé Cac anchor box này sẽ dự đoán xem nó có chứa đôi tượng hay không, dựa vào kết quả tính toán IOU giữa nó và ground-truth box
Hình 1 6 Dự đoán bounding box trong YOLOv2
Một kỹ thuật khác được áp dụng là Direct location prediction YOLOv2 sử dụng hàm
sigmoid dé han ché giá trị trong khoảng (0, 1), từ đó hạn chế các dự đoán xung quanh
ô lưới, giúp mô hình ổn định hơn trong quá trình huấn luyện Nhờ áp dụng phương pháp này mà YOLOv2 đã có thêm 5% mAP
Trang 19YOLOv1 su dụng khung xương (backbone) là 24 lớp tích chập, còn YOLOv2 thì sử
dụng Darknet-19 có cấu trúc nhu hinh 1.7 voi 19 lớp tích chập cùng với 5 lớp tông
hợp (max pooling) Việc sử dụng Darknet-I9 giúp xử lý rất nhanh việc nhận dạng vật thể nên có ý nghĩa khi áp dụng xử lý trên thời gian thực (real-time)
1.2.3 YOLOv3
YOLOv3 có kiến trúc khá giống YOLOv2 Tác giả đã thêm vào những cải tiến mới
trong các nghiên cứu tại thời điểm đó vào YOLOv2 và tạo thành YOLOv3 Những cải tiên đó bao gôm:
- Logistic regression: YOLOv3 dy doan giá trị confidence của các bounding box sử dung logistic regression
- Independent logistic classifier: YOLOv3 su dung logistic classifier để phân loại đối
tượng thay vì softmax Việc này cho hiệu quả tốt hơn đối với những đối tượng thuộc hai hay nhiều class khác nhau
- Darknet-53: Khác với YOLOv2, khung xương của YOLOv3 được thiết kế với việc
thêm các Residual block, tương tự kiến trúc đã được sử dụng trong ResNet thê hiện trong hình 1.8
Softmax Hình 1 § Cấu trúc Darknet-53
Trang 20- Multi-scale prediction: YOLOv3 su dụng kién tric Feature Pyramid Networks (FPN) để đưa ra dự đoán từ nhiều tỷ lệ khác nhau của bản đồ đặc trưng (feature map) Việc này giúp tận dụng các feature map với độ tính thô khác nhau
YOLOv3 tại thời điểm ra đời là một kiến trúc làm rất tốt nhiệm vụ phát hiện vật thể
Nó nhanh chóng và chính xác Mặc dù không tuyệt vời khi đánh giá với chỉ số IOU
lớn hơn 0.5 Nhưng nó thật sự rất tốt trên chỉ số phát hiện cũ với IOU là 0.5
1.2.4 YOLOv4 Những cải tiến đặc biệt của YOLOv4 đã giúp tăng độ chính xác và tốc độ hơn so với người anh em YOLOv3 Kiến trúc của YOLOv4 đã đưa bài toán phát hiện vật thể
(object detection) đến gần hơn với những người không có tài nguyên tính toán mạnh
Trong tương lai, việc tối ưu lại các mạng hiện tại để phù hợp với tài nguyên tính toán
yếu hoặc tạo ra sự song song hóa cao ở các server chắc chắn phải được thực hiện để có
thê đưa các ứng dụng computer vision vào thực tê
MS COCO Object Detection
Trang 21Nhìn vào biểu đỗ (hình 1.9), ta dé đàng thấy được sự hiệu quả của YOLOv4 so với các
mạng tốt nhất tại thời điểm đó Cụ thể hơn YOLOv4 đạt 43.5% AP trên tập đữ liệu MS
COCO 6 téc dé 65 FPS, trén GPU Tesla V100 Dé tao ra két quả này, tác giả sử dụng
một loạt các kĩ thuật mới: Weighted-Residual-Connections (WRC), Cross-Stage-
Partial-connections (CSP), Cross mini-Batch Normalization (CmBN), Self-adversarial- traning (SAT) and Mish-activation, Mosaic data augmentation, DropBlock regularization, va CIoU loss
Cấu trúc của YOLOv4 (như hình 1.10) được tác giả chia làm bốn phan:
- Backbone —- xương sống: Sau khi thử nghiệm ba mạng tích chập (CNN) gồm CSPResNeXt50, CSPDarknet53 va EfficientNet-B3, tac gia da chon backbone cho YOLOv4 la CSPDarknet53
- Neck — phan cỗ: Có nhiệm vụ trộn và kết hợp các bản đề đặc trưng đã học được thông qua quá trình trích xuất đặc trưng và quá trình nhận dạng
- Dense Prediction — dw doan day dac: Su dung cac one-stage-detection nhu YOLO
hoac SSD
- Sparse Prediction — dw doan thwa thớt: Sur dung two-stage-detection R-CNN
nage, Patches, Imag
Neck: { FPN [44], PANet |49), Bi-FPN [77], }
Head:
Dense Prediction: | RPN 64), YOLO (61, 62, 63), SSD (50), RetinaNet |45), FCOS | 78), .}
Sparse Prediction: { Faster R-CNN |(4)|, R-FCN {9}, .}
Hình 1 10 Cấu trúc YOLOv4
1.2.5 YOLOv5
Sau khi YOLOv4 ra đời được vài ngày thì YOLOv5 xuất hiện Lúc này có hai luồng tư
tưởng về YOLOv5, một bên thì ủng hộ, một bên thì bảo không được dùng vì chưa có
bài báo nào chứng thực Tuy nhiên, kết qua ma YOLOvS mang lai rat tốt, cả về hiệu
20
Trang 22nang lan hiéu quả mà nó đạt được trên bài toán nhận dạng vật thé Đồng thời YOLOv5 được phát triển dựa trên PyTorch thay vì DarkNet Đây là một điểm cộng không nhỏ cho YOLOv5 vì PyTorch phổ biến hơn rất nhiều, điều này đồng nghĩa với việc sẽ có nhiêu tài liệu và hướng dân cho chúng ta tham khảo vê mô hình này
Khác với các phiên bản YOLO trước đó, YOLOv5 cung cấp cho người dùng bốn kiến
trúc mạng khác nhau (như hỉnh 1.11):
* YOLOv5-s: Tốc độ xử lý nhanh nhất nhưng độ chính xác thấp nhat (small)
¢ YOLOv5-m: Phién ban trung bình (medium)
¢ YOLOvS5-I: Phiên bản lớn (large)
Hình 1 11 Các phiên bản của YOLOvS
Đánh giá các phiên bản YOLOv5 được thể hiện trong hinh 1.12 dưới đây
So với các kiến trúc khác, YOLOv5 cực ky dé str dụng cho một nhà phát triển muốn
triển khai các công nghệ thị giác máy tính vào một ứng dụng:
- Cài đặt dễ dang: YOLOv5 chi yêu cầu cài đặt torch và một số thư viện Python
- Dao tạo nhanh: Các mô hình YOLOv5 đào tạo cực kỳ nhanh chóng, giúp cắt giảm chi phí thử nghiệm khi xây dựng mô hình cá nhân
- Đa đạng dữ liệu: Có thê sử dụng YOLOvấ trên các hình ảnh riêng lẻ, hình ảnh hàng
loạt, nguồn cấp đữ liệu video hoặc công webcam
- Bồ cục trực quan: Bô cục thư mục tệp trực quan và dễ điều hướng
21
Trang 23- Dé dang đưa sang thiết bị di động: Có thể dễ dàng đưa YOLOv5 từ trọng số PyTorch sang trọng số ONXX sang CoreML sang IOS
Faster ———- GPU Speed (ms/img)
Hình I1 12 Đánh giá YOLOv5
1.3 Giới thiệu về raspberry pi
1.3.1 Kit Raspberry pi Raspberry Pi (hình 1.13) là cái máy tính giá 35 USD kích cỡ như iPhone và chạy HĐH Linux Với mục tiêu chính của chương trình là giảng dạy máy tính cho trẻ em Được phát triển bởi Raspberry Pi Foundation — 1A t6 chire phi loi nhuận với tiêu chí xây dựng
hệ thống mà nhiều người có thê sử dụng được trong những công việc tùy biến khác nhau Raspberry Pi là một máy vi tính rất nhỏ gọn, kích thước hai cạnh chỉ cỡ một cái thẻ ATM, trong đó đã tích hợp mọi thứ cần thiết để bạn sử dụng như một máy vi tính
Bộ xử lý SoC Broadcom BCM2835 của nó bao gồm CPU, GPU, RAM, khe cam thé
microSD, WiFi, Bluetooth va 4 céng USB 2.0 Raspberry Pi không hoàn toàn có thể thay thế được máy tính để bàn hoặc laptop nhưng nó là một thiết bị đa năng có thê được sử dụng cho những hệ thong điện tử, thiết lập hệ thong tính toán, những dự án
DIY voi chi phí rẻ
22
Trang 24D6 an 1 GVHD:Ha Hoang Kha
_ _-
Hình 1 13 Kit Raspberry pi
Da co 4 thé hé Raspberry Pi: Pi 1, Pi 2, Pi 3 va Pi 4 (thường có một Model A và một
Model B trong hau hét các thế hệ) Model A là một biến thê rẻ hơn, có xu hướng giảm
bớt số RAM và các công, như USB va Ethernet Pi Zero là phiên bản phụ của thế hệ
đầu tiên (Pi 1), thậm chí còn nhỏ và rẻ hơn
Raspberry Pi không thay thế hoàn toàn hệ thống để bàn hoặc máy xách tay Bạn
không thể chạy Windows trên đó vì BCM2835 dựa trên cầu trúc ARM nên không hỗ
trợ mã x8§6/x64 , nhưng vẫn có thê chạy bằng Linux với các tiện ích như lướt web , môi trường Desktop và các nhiệm vụ khác Tuy nhiên Raspberry Pi là một thiết bị đa năng đáng ngạc nhiên với nhiều phần cứng có giá thành rẻ nhưng rất hoàn hảo cho
những hệ thống điện tử , những dy dn DIY , thiết lập hệ thống tính toán rẻ tiền cho
những bài học trải nghiệm lập trình
1.3.2 Phan cứng của kit Raspberry pi
Raspberry Pi có hai phiên bản, Model A có giá 258% và Model B có giá 35$ Song
Model B như hình 1.14 dudi đây là thông dụng hơn cả Model B bao gồm những phân
cứng và những công giao diện
23
Trang 25Raspberry Pi 4 Tech specs
Hình 1 14 Phan ctmg Raspberry pi
— SoC 700MHz véi 512MB RAM
— 1céng HDMI cho dau ra âm thanh / video số
— 1céng video RCA cho dau ra video Analog
— Jack Headphone Stereo 3.5mm cho dau ra 4m thanh Analog
— 02céng USB
— 01 dau đọc thẻ nhé SD dé tai hé điều hành
— 01 céng Ethernet LAN
— O1 giao diện GPIO (General Purpose Input/Output)
Model A cũng gần tương tự như Model B nhưng có sự thay đổi như sau
— I công USB
— Không có công Ethernet vì thế người dùng phải thêm Adapter USB Wi-Ei hoặc Ethernet néu cần kết nỗi mạng
— 256MB RAM
Trong phân thực tập này, chúng ta sử dụng Model B vì công Ethernet của model B dễ
sử dụng hơn và model B cũng phố biến hơn trên thị trường
24
Trang 261.4 Giới thiệu về REALVNC
1.4.1 VNC
VNC hay Virtual Network Computing là một kĩ thuật dùng để chia sé giao diện màn hình từ xa VNC sẽ giúp người dùng hiển thị được màn hình desktop của máy tính hoặc thiết bị ở xa ngay trên máy tính của người dùng đang sử dụng, nhờ vào khả năng truyền tải dữ liệu qua mạng Nhờ đó người dùng có thê truy cập được vào thiết bị mà không bị giới hạn bởi không gian vật lý Bên cạnh đó, VNC còn có thê giúp tiết kiệm
được phần cứng của thiết bị khi chỉ cần có máy tính để xử lý
Cách hoạt động của VNC
VNC hoạt động theo cơ chế client/server Nó sử dụng giao thirc Remote From Buffer
(RFB) dé điều khiển máy tính khác qua mạng Giao thức VNC khá đơn giản, giao thức này chỉ phục vụ một mục đích duy nhất đó là truy cập kênh giao diện đồ hoạ của máy tính người dùng từ xa qua mạng
May VNC chu (viewer) sẽ chia sẻ các đầu vào như bản phím, di chuyển chuột, click
chuột với VNC Server VNC Server sẽ phi lại các nội dung hiển thị framebuffer và
chia sẻ chúng lại cho máy VNC khách
Thông thường, giao thức VNC sử dụng TCP và port 5900 trở lên (mặc định là 5900) Giao thức này yêu cầu một số đặc điểm phía người dùng như: tỉ lệ màn hình, độ phân giải màn hình, độ rộng màn hình, để đáp ứng hiệu quả các được hoạt động của VNC
Do đó mô hinh client/server thong thường sẽ như sau
- Máy tính cá nhân hoặc máy chủ mà bạn muôn điều khiên sẽ cải đặt bản VNC (server clienf) và cho phép máy khách có thể truy cập nó
- Máy khách chi can chay ban VNC Viewer là có thê điều khiển được
25
Trang 271.4.2 Ưu điểm và hạn chế cia VNC
- Ưu điểm: Kết nối máy tính từ xa, quản lý, xem theo dõi, kết nỗi được từ các phương
tiện như laptop, điện thoại thông minh Có thể đồng thời điều khiển nhiều thiết bị, tiết
kiệm phần cung,
- Nhược điểm: Phụ thuộc đường truyền mạng, ứng dụng có thể nặng nẻ, hiệu suất thao tác không quá cao, có thê phát sinh độ trễ không mong muốn, mức độ bảo mật thấp
1.5 Giới thiệu về Webcam USB
Webcam viét tắt của cụm từ Website camera, day la thiét bi ki thuat ghi hinh anh cua
vat thé/ đối tượng đối diện Sau đó kết nối với máy tính để truyền tải hình ảnh đã ghi
được lên website, hoặc tải lên một máy tính khác nhờ vào mạng internet
Hình 1 15 Webcam USB
USB viet tat cua Universal Serial Bus, là thiết bị kết nỗi với máy tính USB chứa dữ
liệu đã ghi nhận, lưu trữ được truyền từ máy tính này qua máy tính khác Thông qua
dau cam USB, USB có chức năng kết nối các thiết bị
Như vậy Webcam USB có thể được hiểu là thiết bị kỹ thuật thu lại hình ảnh của đối
tượng/ vật thể và nhờ USB làm công cụ hỗ trợ giao tiếp kết nối Webcam USB có chức năng như máy ảnh, thu và lưu trữ hình ảnh nhờ USB hỗ trợ và chịu sự điều khiển của máy tính
26
Trang 28Webcam USB với những tính năng hiện đại còn có thê quay phim, chụp ảnh, hỗ trợ an ninh, bảo an rất tốt Ngoài ra, Webcam USB còn có thê truyền hình ảnh và kiểm soát
từ Xa
Trong đề tài này, ta sẽ sử dụng Webcam USB của hãng Dahua như hình I.15 Với các thông số kỹ thuật sau:
Thương hiệu Dahua Model Dahua Z2
Độ phân giải 1280x720(720P) Két noi USB 2.0
Python được hình thành vào cuối những năm L980, bởi Guido van Rossum Python 2.0
được phát hành vào ngày 16/10/2000 và có nhiều tính năng mới bao gồm bộ thu gom rác theo chu kỳ và hỗ trợ Unicode Python 3.0 được phát hành năm 2008, sau một thời
gian dài thử nghiệm Cho đến tháng 10/2020, Python đã có phiên bản 3.9
1.6.1 Tính năng
Ngôn ngữ lập trình nhập môn: Do mục đích của Guido Van Rossum hướng đến sự đơn
giản, dễ hiểu nên so với các ngôn ngữ khác như lava, C©+, Python được nhiều lập trình viên mới ưa thích hơn
Ngôn ngữ thông dịch cấp cao: Không cần quản lý bộ nhớ, dọn dẹp đữ liệu, Python tự đông chuyền đôi code thành dạng ngôn ngữ máy tính có thê hiểu
2ï
Trang 29Ngôn ngữ lập trình hướng đối tượng: Giải quyết vấn đề một cách trực quan bang phương pháp tạo ra các đối tượng Có thê được sử dụng trên nhiều nén tang
Miễn phí, mã nguồn mở: Có một số ngôn ngữ lập trình buộc lòng phải chỉ trả một mức phí nhất định dé học tập và cài đặt, nhưng với Python thì hoàn toàn miễn phí Bên cạnh đó, vì là ngôn ngữ mã nguồn mở nên những lập trình viên có thể thay đổi mã nguôn của nó Python có một cộng đồng lớn, không ngừng cải thiện mỗi lân cập nhật Khả năng mở rộng và có thê nhúng: Có thê dễ đàng kết hợp Python với một ngôn ngữ nhúng khác Điều này đảm bảo cho ứng dụng có tính năng tốt như scripting, mà các ngôn ngữ khác không làm được
Thư viện tiêu chuân lớn: Việc sở hữu sô lượng thư viện chuãn lớn giúp hỗ trợ một cách triệt đê cho vân đê công việc cũng như học tập
Khả năng di chuyển: Các chương trình ngôn ngữ Python có thế di chuyên được từ nền
tảng này sang nên tảng khác như Windows, Macos hay Linux
1.6.2 Lĩnh vực sử dụng
Python là ngôn ngữ được ứng dụng trong đa lĩnh vực vi các tính năng tiện lợi, nó đã
trở thành sự lựa chọn được ưu tiên của lập trình viên trong nhiều ứng dụng khác nhau
Một số lĩnh vực áp dụng Python như sau:
— Lap trinh tng dung Web (Web development): Tao ra các web app có khả năng
mở rộng (scalable) được bằng cách sử dụng các framework va CMS (hé thong quản trị nội dung)
— Khoa học và số liệu ứng dụng: Nhờ vào việc được thiết kế để phân tích thong
ké va phan tich số liệu mà Python luôn được các nhà khoa học dữ liệu lựa
chọn” để sử dụng
—_ Trí tuệ nhân tạo va hoc may (Artificial Intelligent and Machine Learning): Cac
dự án liên quan đến AI hoặc ML yêu cầu các công cụ có thể xử lý ngôn ngữ ôn
định, bảo mật, linh hoạt và được trang bị các công cụ có thể xử lý các yêu cầu
riêng biệt khác nhau Một số package Python tốt nhất cho AI/ML là:
+ Scipy: danh cho máy tính nâng cao
+ Pandas: phan tích dữ liệu mục đích chung
25
Trang 30+ Seaborn: truc quan héa dữ liệu
+ Keras, TensorFlow va Scikit — learning cho ML
+ NumPy: phân tích dữ liệu và tính toán khoa học hiệu suất cao
Ngoài ra còn có một số thư viện khác hỗ trợ cho dự án
— Phát triển ERP, phát triển phần mềm và hệ điều hành: Dùng trong việc phát triển phần mềm cho giải pháp cấp doanh nghiệp Một số ERP phổ biến như Odoo, Tryton
— Desktop GUI: Cé kiến trúc module và hoạt động trên nhiều hệ điều hành, kết hợp với các công cụ xử lý văn bản phong phú
—_ Xử lý ảnh và thiết kế đồ họa: thiết kế và xây dựng phần mềm hình ảnh 2D như
Inkscape, GIMP, Paint Shop Pro và Scribus Một số gói hoạt hinh 3D như
Blender, Houdini, 3ds Max, Maya, Cinema 4D va Lightwave
— Giáo dục: Ngôn ngữ lập trinh Python dang duoc dua vao chuong trinh giang dạy cho những người lần đầu tiếp cận ngôn ngữ lập trình tại nhiều quốc gia 1.7 Pytorch
PyTorch là một thư viện machine learning mã nguồn mở miễn phí cho Python, dựa
trên thư viện Torch Nó được sử dụng cho các ứng dụng như thị giác máy va xu ly
ngôn ngữ tự nhiên Pytorch được phát triển chủ yếu bởi Meta AI
Một số phan mềm học sâu dựa trên Pytorch: Testla Autopilot, Pytorch Lightning, Uber’s Pyro, Hugging Face 's Transformers,
PyTorch duoc Hugh Perkins phát trién nhu mét trinh bao boc Python cho LusJTT dựa trên khuôn khổ Torch Pytorch cung cấp tính toán Tensor với khả năng tăng tốc GPU mạnh mẽ và mạng nơ-rôn sâu (DNN) được xây dựng trên hệ thống Aufograd PyTorch thiết kế lại và triển khai thư viện Torch bằng Python trong khi chia sẻ cùng các thư viện C lõi cho code phụ trợ Các nhà phát triển PyTorch đã điều chỉnh mã back-end này để chạy Python một cách hiệu quả Họ cũng giữ nguyên khả năng tăng tốc phần cứng dựa trên GPU cũng như các tính năng mở rộng đã tạo nên Torch dựa
trên Lua-based
29
Trang 311.7.1 Tinh nang cua Pytorch
Cac tinh nang chinh cua PyTorch
- Production Ready — Véi TorchScript, Pytorch cung cap su dé dang và linh hoạt trong chế độ eager, đồng thời chuyên đổi liền mạch sang chế độ biểu đồ để tăng tốc độ, tối
ưu hóa trong môi trường chạy C++
- Torchserve - TorchServe là một công cụ dễ sử dụng để triển khai các mô hình
PyTorch trên quy mô lớn Hỗ trợ các tính năng như phân phát đa mô hỉnh, ghi nhận số liệu và tạo các điểm cuối RESTful dé tich hop wng dung
- Distributed training — Téi wu héa hiệu suất trong cả nghiên cứu và sản xuất bằng cách tận dụng hỗ trợ tự nhiên để thực thí không đồng bộ các hoạt động chung và giao tiếp peer-to-peer có thê truy cập từ Python và C ++
- Robust ecosystem — Pytorch có hệ thống phong phú các thư viện và công cụ để mở rộng và hỗ trợ phát triển trong các lĩnh vực từ thị giac may dén reinforcement learning
- C++ Front end - Giao diện người dùng C++ là một giao diện C++ thuần túy cho PyTorch tuân theo thiết kế và kiến trúc của giao điện người dùng Python đã thiết lập
Nó được thiết kế dé cho phép nghiên cứu trong các ứng dụng C++ độ trễ thấp và hiệu
suât cao
- Cloud Support - PyTorch được hỗ trợ tốt trên các nền tảng đám mây lớn, cung cấp khả năng phát triển đễ đàng và mở rộng quy mô thông qua hình ảnh dựng sẵn, đào tạo quy mô lớn về GPU, khả năng chạy mô hình trong môi trường quy mô sản xuắt,
1.7.2 Ưu điểm của Pytorch
- Dễ dàng đê gỡ lỗi và hiêu mã
- Gồm rất nhiều hàm mắt mát (loss function)
- Có thé coi đây là phần mở rộng NumPy cho GPU
- Cho phép xây dựng các mạng có cau trúc phụ thuộc vào chính tính toán
30
Trang 32Qua chương này, nhóm đã trình cơ bản về các lý thuyết Deep learning, mạng CNN,
mô hình nhận điện YOLO Đồng thời nhóm cũng đã trình bày về VNC và Python cũng như Pytorch các phương tiện để thực hiện quá trình nhận diện Và cuối cùng đó là phần cứng của mô hình bao gồm máy tính nhúng Raspberry Pi và Webcam USB Từ
đó, nhóm có được nền tảng cơ bản dé thực hiện mô hình thực tế
Trang 33CHUONG 2: NHAN DIEN BIEN BAO GIAO THONG BANG YOLOvS5
Trong chương nay nhóm xin trình bày tiến trình nhận diện bằng Yolov5, cách xây
dựng tập dữ liệu, lưu đồ giải thuật của quá trình xử lý dữ liệu đữ liệu, tiến trình huấn
luyện mô hình Đồng thời nhóm cũng thê hiện cách đánh giá trọng số tốt nhất đê dừng huấn luyện và thu kết quả
2.1 Xây dựng giải thuật
2.1.1 Xây dựng tập dữ liệu
Dữ liệu đối với mô hình cũng giống những viên gạch cho việc xây nhà, không có dữ liệu thì không xây dựng được mô hình nào cả Trước khi đi vào huấn luyện mô hình ta
cần xây dựng tập dữ liệu chứa các đối tượng mà chúng ta cần nhận diện Dữ liệu phải
có ảnh và nhãn (images & labels)Ở mô hình này, nhóm chúng đã chọn ra 9 nhãn biển báo giao thông thông dụng bao gồm: I- Cấm ngược chiều 2- Cấm xe tải 3- Cấm rẻ
trai 4- Cấm rẻ phải 5- Cắm đỗ xe 6- Hiệu lệnh 7- Người đi bộ §- Vòng xoay 9- Xe buýt Trình tự xâu dựng tập dữ liệu gồm 3 bước thẻ hiện dưới lưu đồ hình 2 I
Hình 2 1 Lưu đỗ giải thuật của quá trình xử lý dữ liệu
Collect data — thu thap dữ liệu:
Có nhiều cách để thu thập ảnh cho việc huấn luyện mô hình: Tim trén Open Images Dataset, day la tap hợp hơn 9 triệu ảnh với 6000 nhóm khác nhau, fìm với công cụ tìm kiếm (Google, Bing, .) với lưu ý cần kiểm tra kỹ về bản quyền sử dụng ảnh Chúng
ta cũng có thể trích xuất các khung hình từ Videos hoặc tự chụp ảnh, Nhóm lựa
chọn thu thập tập dữ liệu từ Kaggle vì tất cả các dữ liệu trên web là hoàn toàn miễn
phí Đồng thời tập dữ liệu sẽ được gắn nhãn sẵn đỡ mất thời gian xây dựng Tuy nhiên tập dữ liệu không phải lúc nào cũng đồng đều giữa các nhãn Nên nhóm tiến hành bổ sung thêm I số ảnh thu thập từ google cho các nhãn có số lượng ảnh quá ít Tệp dữ
32
Trang 34liệu của nhóm tông là 2600 tắm ảnh gồm dữ liệu có sẵn từ Kaggle và do nhóm thu
thập
Process data — xử lý dữ liệu: Nhóm thực hiện bài toán phat hién (object detection)
với 9 nhãn Nhóm sử dụng YOLOvS để huấn luyện mô hình Do model Yolov5 nhận
dữ liệu label dé train dudi dang file txt Nên nhóm sẽ tiến hành xử lý dữ liệu tọa độ một tệp có tên giống tệp chứa hình ảnh với phần mở rộng là TXT Nhóm tiến hành gắn
nhãn cho ảnh thông qua web makesence.Ia có giao diện như hinh 2.2 Nhóm chọn 9 nhãn lần lượt là: 1- Cấm ngược chiều 2- Cấm xe tải 3- Cam ré trai 4- Cam ré phải 5- Cam đỗ xe 6- Hiệu lệnh 7- Người đi bộ §- Vòng xoay 9- Xe buýt
Hình 2 2 Giao diện web makesence.ai
Việc gán nhãn tốn rất nhiều thời gian, nhóm mất khoảng hon 1h để gán nhãn cho khoảng 200 ảnh Sau khi tiến hành gắn nhãn trên web makesence.ai ta thu được các tệp tọa độ có tên giống với ảnh với phần mở rộng TXT như hình 2.3
33
Trang 351_JPG.rf.cf5a24c6c70eb9c49645ee0301 1 2-_jpg.rf.0b8f†5†883†a183bfdd40ffc2 1 2-_jpg.rf.70c8c863f†8ea760796cb526
Mở I file TXT sẽ thấy có 5 số mỗi dòng Mỗi một dòng là một đối tượng: số đầu tiên
(0,1,2 ) là loại đối tượng, 4 số tiếp theo là bounding box như hình 2.4
Mỗi ảnh sẽ có một nhãn (file txt) tương ứng để chứa thông tin về đường bao của đối tượng Mỗi dòng chứa thông tin của một đối tượng gồm 5 giá trị chứa thông tin về đối tượng và toạ độ đường bao như hình 2.4: số đầu tiên (0,1,2 ) là loại đối tượng, 4 số
tiếp theo là bounding box (toạ độ trung tâm x, toạ độ trung tâm y, chiều rộng, chiều
dài) Lưu ý là toạ độ đường bao đã được chuẩn hoá về khoảng (0, 1) đây là yêu cầu của mô hình YOLO)
3
9 @.38916666666666666 0.4891666666666667 0.04666666666666667 9.03333333333333333
5 9.38916666666666666 9.53 @.041666666666666664 0.041666666666666664
Hình 2 4 Giao diện khi mở tệp TXT
Trên thực tê các ảnh biên báo đê nhận diện không phải lúc nảo cũng to, rõ ràng và đây
đủ có thê bị thiếu sáng, xén, lật Cũng có thê trong trường hợp nếu bạn có ít dữ liệu,
Trang 36thì bạn vẫn có thể tạo ra được nhiều đữ liệu hơn dựa trên những dữ liệu bạn đã có.Do vậy để bài toán nhận diện thêm chính xác nhóm sẽ tiến hành một kĩ thuật gọi là data aupsmentation (tăng cường đữ liệu) qua web roboflow có giao điện như hình 2.5 bằng các hiệu ung noise, flip, blur, crop lam phong phú thêm dữ liệu hình ảnh đã thu thập được
Oo Versions oe View All images »
Hinh 2 5 Giao dién web roboflow
Sau khi tăng cường dữ liệu qua web roboflow ta thu được tập ảnh như hình 2.6 Các tắm ảnh đó thực chất là các ảnh gốc thu thập ban đầu được chèn thêm các hiệu ứng
nhằm làm phong phú đữ liệu
35
Trang 37
1 5-_Jpg.rf.d2e69ab92e68ae024b63a5 bb0cd000df
* Mot thu mục “images” chứa ảnh: trong đó có hai thư mục là “train” để chứa
ảnh dùng để huấn luyện mô hình (train set) và “val” để chứa ảnh dùng để đánh
giá và chọn ra mô hình tốt nhất (validation set)
*® Mot thư mục “labels” chứa nhãn (tức là các tệp TXT đã tạo trước đó) và cũng
có hai thư mục tương tự nhu trong thu muc “images”
Nhóm thực hiện chia dữ liệu theo tỷ lệ 8:2, tức là 80% ảnh cho quá trình huấn luyện
(train set) va 20% ảnh cho quá trình đánh g14 (validation set) Nén thu muc up lén GG Drive dé tién sử dụng sau này
2.1.2 Huấn luyện mô hình (train model) Sau quá trình xây dựng tệp đữ liệu cho mô hình nhận diện biển báo giao thông ta tiễn
hành huấn luyện mô hình với trình tự như lưu đồ hình 2.7