1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo Đồ án Đề tài nhận diện biển báo giao thông trên kit rasperry pi

75 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 75
Dung lượng 23,83 MB

Nội dung

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 12

CHUONG 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 13

AI 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 15

1.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 16

thô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 17

củ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 18

củ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 19

YOLOv1 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 21

Nhì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 22

nang 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 24

D6 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 25

Raspberry 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 26

1.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 27

1.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 28

Webcam 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

Trang 29

Ngô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 31

1.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 32

Qua 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 33

CHUONG 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 34

liệ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 35

1_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 36

thì 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

Ngày đăng: 19/12/2024, 15:44

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w