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

Open CV+ Python + Convolutional Neural Network+ thuật toán YOLO + Rasberry Pi ỨNG DỤNG CÔNG NGHỆ XỬ LÝ ẢNH NHẬN DIỆN BIỂN BÁO VÀ ĐÈN GIAO THÔNG”

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

HỌC VIỆN NÔNG NGHIỆP VIỆT NAM

KHOA CƠ ĐIỆN
-------------

------------

ĐỒ ÁN TỐT NGHIỆP

ĐỀ TÀI : “NGHIÊN CỨU, ỨNG DỤNG CÔNG NGHỆ XỬ
LÝ ẢNH ĐỂ NHẬN DIỆN BIỂN BÁO VÀ ĐÈN GIAO
THÔNG”

Hà Nội - 2022


HỌC VIỆN NÔNG NGHIỆP VIỆT NAM

KHOA CƠ ĐIỆN
-------------

------------

ĐỒ ÁN TỐT NGHIỆP
ĐỀ TÀI : “NGHIÊN CỨU, ỨNG DỤNG CÔNG NGHỆ XỬ
LÝ ẢNH ĐỂ NHẬN DIỆN BIỂN BÁO VÀ ĐÈN GIAO
THÔNG”

Sinh viên thực hiện

LÊ QUANG NAM



Mã sinh viên

612299

Lớp

K61TDH

Ngành

KỸ THUẬT ĐIỆN, ĐIỆN TỬ

Chuyên ngành

TỰ ĐỘNG HÓA

Giảng viên hướng dẫn

ThS. ĐẶNG THỊ THÚY HUYỀN

Hà Nội - 2022


Lời cam đoan
Em – Lê Quang Nam xin cam đoan các kết quả nghiên cứu được trình bày
trong đồ án là trung thực, khách quan và chưa từng dùng để bảo vệ cho bất kỳ đồ án
môn học nào.
Em xin cam đoan rằng mọi sự giúp đỡ cho việc thực hiện đồ án đã được cảm
ơn, các thơng tin trích dẫn trong đồ án này đều được chỉ rõ nguồn gốc.


Hà Nội, ngày…. tháng ….năm 2021
Tác giả đồ án
LÊ QUANG NAM

i


Lời cảm ơn
Với tất cả tình cảm chân thành, em xin bày tỏ lòng biết ơn sâu sắc tới Ban
Giám đốc, Ban Quản lý đào tạo, Khoa cơ điện - Học viện Nông nghiệp Việt Nam,
các thầy cô, các giảng viên đã tham gia giảng dạy khoá học 2016-2021, đã tạo điều
kiện thuận lợi cho em học tập nghiên cứu, làm cơ sở của việc nghiên cứu đề tài.
Đặc biệt, em xin chân thành cảm ơn cô giáo ThS. Đặng Thị Thúy Huyền đã
dành nhiều thời gian, công sức để chỉ dẫn, hướng dẫn em hết sức tận tình và chu đáo
về mặt chun mơn để em có thể thực hiện và hoàn thành đồ án tốt nghiệp này.
Em xin bày tỏ lòng biết ơn sâu sắc đến các thầy cô phản biện, các thầy cô
trong hội đồng chấm đồ án đã đồng ý đọc duyệt và góp các ý kiến q báu để em có
thể hồn chỉnh đồ án này và định hướng nghiên cứu trong tương lai.
Mặc dù đã có nhiều cố gắng, song chắc chắn khơng tránh khỏi thiếu sót nhất
định. Rất mong được sự đóng góp ý kiến của Hội đồng chấm đồ án tốt nghiệp, và
các đọc giả quan tâm đến đề tài của đồ án.
Em xin chân thành cảm ơn!
Hà Nội, ngày tháng năm 2021
Sinh viên thực hiện

LÊ QUANG NAM

ii



MỤC LỤC
Lời cam đoan ........................................................................................................................ i
Lời cảm ơn ........................................................................................................................... ii
MỤC LỤC .......................................................................................................................... iii
Danh mục hình ảnh ............................................................................................................. vi
Danh mục bảng biểu ........................................................................................................... ix
LỜI MỞ ĐẦU ..................................................................................................................... 1
1) Đặt vấn đề .................................................................................................................... 1
2) Mục đích của đề tài ...................................................................................................... 2
3) Đối tượng và phạm vi nghiên cứu. ............................................................................ 2
4) Phương pháp nghiên cứu. ........................................................................................... 2
5) Giới hạn của đề tài. ..................................................................................................... 2
Chương 1: TỔNG QUAN ................................................................................................... 3
1.1 Khái quát về xử lý ảnh ............................................................................................... 3
1.1.1 Khái niệm xử lý ảnh............................................................................................. 3
1.1.2 Quá trình xử lý ảnh .............................................................................................. 3
1.2 Deep learning ............................................................................................................. 4
1.3 Neural Network .......................................................................................................... 4
1.4 Convolutional Neural Network .................................................................................. 7
1.4.1 Tổng quát về Convolutional Neural Network ..................................................... 7
1.4.2 Lớp tích chập( Convolutional Layer) .................................................................. 8
1.4.3 Lớp tổng hợp(Pooling layer) ............................................................................... 9
1.4.4 Lớp kết nối đầy đủ( Fully Connected Layer) ...................................................... 9
1.4.5 Softmax .............................................................................................................. 10
1.4.6 Batch Normalization .......................................................................................... 10
1.5 Thuật toán YOLO .................................................................................................... 11
1.5.1 Các phiên bản YOLO. ....................................................................................... 17
1.5.2 Phiên bản YOLO sử dụng trong đề tài. ............................................................. 17
iii



1.6 Một số phương pháp nhận diện biển báo và đèn giao thông. .................................. 21
1.6.1 Lọc màu biển báo bằng HSV ............................................................................. 21
1.6.2 Huấn luyện máy học SVM. ............................................................................... 22
Chương 2 : NỘI DUNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU ...................................... 25
2.1 Biển báo giao thơng và tín hiệu đèn giao thông ....................................................... 25
2.1.1 Một số biển báo giao thông đường bộ tại Việt Nam ......................................... 25
2.1.2. Biển báo và đèn báo sử dụng trong đề tài ......................................................... 28
2.2 Máy tính nhúng Raspberry Pi 4B. ............................................................................ 28
2.3 Module camera Pi .................................................................................................... 29
2.4 Thư viện mã nguồn OpenCV. .................................................................................. 31
2.4.1 Khái niệm ........................................................................................................... 31
2.4.2. Ứng dụng của OpenCV ................................................................................... 31
2.4.3. Tính năng và module phổ biến của OpenCV ................................................... 31
2.4.4. Ngôn ngữ dùng để lập trình OpenCV. .............................................................. 32
2.5. Ngơn ngữ Python sử dụng trong đề tài ................................................................... 33
2.5.1. Khái niệm ngôn ngữ Python ............................................................................. 33
2.5.2 Một số tính chất của Python .............................................................................. 33
2.6 Lựa chọn mơ hình CNN nhận diện biển báo và đèn giao thông. ............................. 34
2.7 Xây dựng thuật tốn nhận diện biển báo và đèn giao thơng .................................... 35
2.7.1 Huấn luyện, mô phỏng nhận diện bằng phần mềm Pycharm trên máy tính
laptop. ......................................................................................................................... 35
2.7.2 Huấn luyện trên google colab và đưa vào mơ hình nhận diện trên máy tính
nhúng Raspberry Pi. .................................................................................................... 40
Chương 3: KẾT QUẢ VÀ THẢO LUẬN......................................................................... 49
3.1 Kết quả ..................................................................................................................... 49
3.1.1 Kết quả thử nghiệm khi mô phỏng trên laptop bằng phần mềm Pycharm. ........ 49
3.1.2 Kết quả nhận diện khi chạy trong máy tính nhúng Raspberry Pi. ...................... 61
3.1.3 Khảo sát khoảng cách nhận diện. ....................................................................... 74

iv


3.1.4 Khảo sát ảnh hưởng của ánh sáng tới khả năng nhận diện đối tượng. ............... 76
3.2 Thảo luận .................................................................................................................. 78
KẾT LUẬN VÀ KIẾN NGHỊ ........................................................................................... 80
PHỤ LỤC .......................................................................................................................... 82

v


Danh mục hình ảnh
Hình 1. 1 Các giai đoạn xử lý ảnh .............................................................................3
Hình 1. 2 Cấu trúc mạng Neural ................................................................................5
Hình 1. 3 Mối quan hệ giữa ngõ vào và ngõ ra của một node ...................................5
Hình 1. 4 Đồ thị hàm sigmoid (a) và hàm Tanh (b) ..................................................6
Hình 1. 5 Đồ thị hàm ReLU .......................................................................................7
Hình 1. 6 Đồ thị hàm Mish ........................................................................................7
Hình 1. 7 Cấu trúc CNN ............................................................................................8
Hình 1. 8 Max pooling ...............................................................................................9
Hình 1. 9 Phép flatten đưa tensor về thành 1 vector ..................................................9
Hình 1. 10 Ví dụ về đầu vào và đầu ra của hàm softmax ........................................10
Hình 1. 11 Phép biến đổi batch normalization.........................................................11
Hình 1. 12 Mơ hình mạng YOLO ............................................................................11
Hình 1. 13 Kiến trúc mạng YOLO...........................................................................12
Hình 1. 14 Biểu diễn hàm tính IOU .........................................................................13
Hình 1. 15 Xác định anchor box ..............................................................................14
Hình 1. 16 Các lớp của mạng YOLO .......................................................................16
Hình 1. 17 Kết quả so sánh YOLOv4 với các SOTA(state-of-the-art) ở thời điểm
hiện tại. .....................................................................................................................18

Hình 1. 18 Cấu trúc của YOLOv4 ...........................................................................19
Hình 1. 19 Các Backbone được sử dụng trong YOLOv4 ........................................19
Hình 1. 20 Quá trình đào tạo để tinh chỉnh kích thước của anchor box sao cho
giống với vật thể nhất...............................................................................................20
Hình 1. 21 Ví dụ nhận diện biển báo đường ưu tiên................................................21
Hình 1. 22 Lọc màu biển báo ...................................................................................22
Hình 1. 23 Kết quả nhận diện ..................................................................................22
vi


Hình 1. 24 Kết quả nhận dạng bảng hiệu điều khiển giao thông: (a) Ảnh đầu vào;
(b) Ảnh ở không gian màu IHLS; (c) Ảnh kết quả phân đoạn; (d) Ảnh kết quả phát
hiện vùng ứng viên. ..................................................................................................23
Hình 1. 25 Kết quả nhận dạng tín hiệu đèn giao thơng: (a) Ảnh đầu vào; (b) Ảnh
kết quả phân đoạn; (c) Ảnh kết quả xác định Ellipse và khoanh vùng ứng viên; (d)
Ảnh kết quả nhận dạng tín hiệu đèn. .......................................................................24
Hình 2. 1 Các loại biển báo cấm ..............................................................................25
Hình 2. 2 Các loại biển báo nguy hiểm....................................................................26
Hình 2. 3 Các loại biển báo hiệu lệnh ......................................................................27
Hình 2. 4 Các loại biển phụ .....................................................................................27
Hình 2. 5 Biển báo và đèn giao thơng sử dụng trong đề tài ....................................28
Hình 2. 6 Sơ đồ tổng quát Raspberry Pi 4 ...............................................................28
Hình 2. 7 Module camera Raspberry Pi CSI 5MP 1080P .......................................29
Hình 2. 8 Sơ đồ tổng qt q trình huấn luyện và dự đốn đối tượng...................34
Hình 2. 9 Tạo tên nhãn cho đối tượng ......................................................................37
Hình 2. 10 Máy tính thống kê số lượng ảnh mẫu dùng để huấn luyện. ...................38
Hình 2. 11 Gán nhãn tự động vào ảnh mẫu. .............................................................39
Hình 2. 12 Biểu đồ thể hiện tỉ lệ huấn luyện ............................................................39
Hình 2. 13 Kẻ khung, tạo nhãn cho biển báo Stop ...................................................41
Hình 2. 14 Kẻ khung, tạo nhãn cho biển báo rẽ phải ...............................................42

Hình 2. 15 Kẻ khung, tạo nhãn cho biển báo đi thẳng .............................................42
Hình 2. 16 Kẻ khung, tạo nhãn cho biển báo rẽ trái .................................................42
Hình 2. 17 Kẻ khung, tạo nhãn cho đèn xanh ..........................................................43
Hình 2. 18 Kẻ khung, tạo nhãn cho đèn đỏ..............................................................43
Hình 2. 19 Bộ ảnh mẫu sau khi gán nhãn ................................................................43
Hình 2. 20 Cài đặt GPU trên google colab ...............................................................44
vii


Hình 2. 21 Thay đổi thơng số trong tệp Makefile....................................................45
Hình 2. 22 Thay đổi thơng số trong tệp yolov4-custom.cfg ....................................45
Hình 2. 23 Tạo file tên nhãn cho đối tượng .............................................................46
Hình 2. 24 Quá trình huấn luyện trên google colab .................................................46
Hình 2. 25 Lưu đồ quá trình nhận diện đối tượng trong Raspberry Pi ....................48
Hình 3. 1 Kết quả nhận diện trên Raspberry Pi ........................................................62

viii


Danh mục bảng biểu
Bảng 2. 1 Thống kê mẫu ảnh ...................................................................................36
Bảng 2. 2 Thống kê mẫu ảnh ...................................................................................40
Bảng 3. 1 Kết quả thử nghiệm biển rẽ phải .............................................................49
Bảng 3. 2 Kết quả thử nghiệm biển báo rẽ trái ........................................................51
Bảng 3. 3 Kết quả thử nghiệm biển báo đi thẳng ....................................................53
Bảng 3. 4 Kết quả thử nghiệm biển báo stop ...........................................................55
Bảng 3. 5 Kết quả thử nghiệm đèn xanh..................................................................57
Bảng 3. 6 Kết quả thử nghiệm đèn đỏ .....................................................................59
Bảng 3. 7 Kết quả thử nghiệm biển báo đi thẳng ....................................................62
Bảng 3. 8 Kết quả thử nghiệm biển báo rẽ trái ........................................................64

Bảng 3. 9 Kết quả thử nghiệm biển báo rẽ phải ......................................................66
Bảng 3. 10 Kết quả thử nghiệm biển báo stop .........................................................68
Bảng 3. 11 Kết quả thử nghiệm đèn đỏ ...................................................................70
Bảng 3. 12 Kết quả thử nghiệm đèn xanh................................................................72
Bảng 3.13. Khảo sát khoảng cách nhận diện ...........................................................74
Bảng 3. 14 Bảng khảo sát ảnh hưởng của ánh sáng tới khả năng nhận diện ...........76

ix


LỜI MỞ ĐẦU
1) Đặt vấn đề
Tại Việt Nam, tình trạng an tồn giao thơng đường bộ vẫn cịn diễn biến phức
tạp, số vụ tai nạn giao thông vẫn ở mức cao do tình trạng xâm phạm các cơng trình
giao thơng vẫn cịn xảy ra phổ biến, hạ tầng giao thơng kém, biển báo dày đặc nên
gây ra rất nhiều khó khăn cho người tham gia giao thông. Các vụ tai nạn dẫn đến
chết người xảy ra trên các tuyến quốc lộ có chiều hướng gia tăng. Theo đánh giá của
Bộ công an và các nhà chức năng, nguyên nhân của những vụ tai nạn giao thông trên
chủ yếu do người điều khiển phương tiện đi sai phần đường, tránh vượt sai quy định,
vi phạm tốc độ, chuyển hướng không quan sát hết biển báo giao thông.
Hiện nay, thế giới và Việt Nam đang chứng kiến những sự thay đổi vượt bậc
trong thời đại công nghệ số của cuộc cách mạng công nghiệp lần thứ tư (CMCN
4.0) và tầm ảnh hưởng sâu rộng của khoa học công nghệ đến đời sống con người.
Bản chất của CMCN 4.0 chính là sự ứng dụng cơng nghệ, khoa học dữ liệu và sử
dụng trí tuệ nhân tạo phục vụ sản xuất và cuộc sống con người.
Biển báo và đèn giao thông được nhận dạng một cách tự động và cùng một lúc
có thể nhận biết được các biển báo xuất hiện trên đường, nó sẽ hỗ trợ rất nhiều cho
người tham gia giao thông như đưa ra những cảnh báo kịp thời, chính xác để giảm
ùn tắc, an toàn hơn.
Đề tài nhận diện biển báo giao thơng và đèn báo có tính chất ứng dụng rộng rãi

và cần thiết cho cuộc sống hiện đại ngày nay. Từ đó, em lựa chọn đề tài : “Nghiên
cứu, ứng dụng công nghệ xử lý ảnh để nhận diện biển báo và đèn giao thông ”.

1


2) Mục đích của đề tài
- Nghiên cứu ứng dụng công nghệ xử lý ảnh để nhận diện biển báo và đèn
giao thông.
- Thực thi 1 hệ thống xử lý ảnh đơn giản trên vi điều khiển, ứng dụng nhận
diện biển báo và đèn giao thơng. Qua đó đánh giá khả năng ứng dụng vào thực tế.
- Hiểu các tính chất của hệ thống biển báo cũng như đèn báo giao thơng Việt
Nam và trích xuất các đặc trưng ứng dụng xử lý ảnh phục vụ yêu cầu nhận diện.
- Phát triển 1 thuật toán nhận diện biển báo giao thông.
3) Đối tượng và phạm vi nghiên cứu
- Thư viện Open cv.
- Ngơn ngữ lập trình Python.
- Phương pháp xử lý ảnh.
- Một số loại biển báo giao thông tại Việt Nam.
- Máy tính nhúng Raspberry Pi.
4) Phương pháp nghiên cứu
- Phương pháp nghiên cứu lý thuyết: nghiên cứu về xử lý ảnh để giải các bài
toán liên quan đến giao thông, nhận dạng các đối tượng biển báo và đèn tín hiệu.
- Kế thừa : các tài liệu liên quan đến xử lý ảnh.
5) Giới hạn của đề tài
Đề tài chỉ nhận diện các loại biển báo đi thẳng, rẽ phải, rẽ trái, stop, đèn tín
hiệu xanh và đèn tín hiệu đỏ.

2



Chương 1: TỔNG QUAN
1.1 Khái quát về xử lý ảnh
1.1.1 Khái niệm xử lý ảnh
Xử lý ảnh là đối tượng nghiên cứu của lĩnh vực thị giác máy tính, là quá trình
biến đổi từ một ảnh ban đầu sang một ảnh mới với các đặc tính tuân theo ý muốn
của người sử dụng. Xử lý ảnh có thể gồm quá trình phân tích, phân lớp các đối tượng,
làm tăng chất lượng, phân đoạn và tách cạnh, gán nhãn cho vùng hay q trình biên
dịch các thơng tin hình ảnh của ảnh.
Mục đích của xử lý ảnh gồm:
- Biến đổi ảnh làm tăng chất lượng ảnh.
- Tự động nhận dạng ảnh, đoán nhận ảnh, đánh giá các nội dung của ảnh.
Nhận biết và đánh giá các nội dung của ảnh là sự phân tích một hình ảnh thành
những phần có ý nghĩa để phân biệt đối tượng này với đối tượng khác, dựa vào đó
ta có thể mơ tả cấu trúc của hình ảnh ban đầu.
1.1.2 Quá trình xử lý ảnh

Hình 1. 1 Các giai đoạn xử lý ảnh
Thu nhận ảnh: Đây là cơng đoạn đầu tiên mang tính quyết định đối với quá
trình xử lý ảnh. Ảnh đầu vào sẽ được thu nhận qua các thiết bị như camera, sensor,
máy scanner,v.v… và sau đó các tín hiệu này sẽ được số hóa. Các thơng số quan
trọng ở bước này là độ phân giải, chất lượng màu, dung lượng bộ nhớ và tốc độ thu
nhận ảnh của các thiết bị.
Tiền xử lý: Ở bước này, ảnh sẽ được cải thiện về độ tương phản, khử nhiễu,
khử bóng, khử độ lệch,… với mục đích làm cho chất lượng ảnh trở lên tốt hơn, chuẩn
bị cho các bước xử lý phức tạp hơn về sau trong quá trình xử lý ảnh.
3


Phân đoạn ảnh: Phân đoạn ảnh là bước then chốt trong xử lý ảnh. Giai đoạn

này phân tích ảnh thành những thành phần có cùng tính chất nào đó dựa theo biên
hay các vùng liên thông. Tiêu chuẩn để xác định các vùng liên thơng có thể là cùng
màu, cùng mức xám,...
Tách các đặc tính: Dựa trên thơng tin thu được qua quá trình phân đoạn, kết
hợp với các kỹ thuật xử lý để đưa ra các đặc trưng của ảnh cũng như các thơng tin
cần thiết trong q trình xử lý, nhờ các đặc tính có được từ ảnh có thể phân loại các
đối tượng khác nhau.
Nhận dạng và giải thích: Đây là bước cuối cùng trong q trình xử lý ảnh.
Nhận dạng ảnh có thể được nhìn nhận một cách đơn giản là việc gán nhãn cho các
đối tượng trong ảnh. Ví dụ đối với nhận dạng biển báo giao thông, các đối tượng
trong ảnh cần nhận dạng là các biển báo, ta cần tách riêng các biển báo đó ra và tìm
cách gán đúng các nhãn tên của biển báo tương ứng cho các mẫu biển báo thu được
trong ảnh. Giải thích là cơng đoạn gán nghĩa cho một tập các đối tượng đã được nhận
biết.
1.2 Deep learning
Deep learning (Học sâu) là một nhánh nhỏ của Machine Learning(Máy học),
bắt nguồn từ thuật toán Neural Network. Deep learning đã tạo ra nhiều lợi ích trong
cuộc sống hàng ngày. Ví dụ như trong lĩnh vực y tế, việc phân tích hình ảnh X-quang
được ứng dụng vào Deep learning để nghiên cứu dự đoán khả năng mang bệnh của
người khám. Và đặc biệt Deep learning còn được ứng dụng trong các xe tự hành để
dự đốn các tình huống giao thông.
1.3 Neural Network
Neural Network là một mạng lưới gồm nhiều lớp được lấy cảm hứng từ neural
người. Ở đó, lớp đầu tiên để đưa các đặc tính của vật cần dự đoán vào được gọi là
Input Layer. Và lớp cuối cùng mang kết quả dự đoán gọi Output Layer. Một mạng
neural có thể có hoặc khơng có các lớp ở giữa Input Layer và Output Layer gọi là
4


Hidden layer, các Hidden Layer này giúp cho tỉ lệ dự đốn chính xác cao hơn tuy

nhiên việc huấn luyện cũng tốn nhiều thời gian và dung lượng hơn. Mỗi Layer là tập
hợp nhiều node, các node của lớp sau kết nối với tồn bộ các node của lớp trước.

Hình 1. 2 Cấu trúc mạng Neural
Mỗi node trong Hidden Layer và output Layer thực hiện các công việc sau:
Liên kết với tất cả các node ở layer trước đó với các hệ số w riêng. Mỗi node có 1
hệ số bias b riêng. Từ đó w,b biểu thị mối quan hệ giữa node trước và node sau.

Hình 1. 3 Mối quan hệ giữa ngõ vào và ngõ ra của một node
Node phía trên có đầu vào là X1,X2, trọng số w1,w2. Ngõ ra y là kết quả của
một hàm phi tuyến và một hàm tuyến tính.
Các hàm phi kích hoạt thường được sử dụng là:
Sigmoid: Giá trị ngõ ra được chuyển về trong khoảng [0,1] bằng công thức
𝜎(𝑥) =

1
1 + 𝑒 −𝑥
5


Hàm sigmoid cho ngõ ra có giá trị bằng 1 khi ngõ vào lớn và ngõ ra bằng 0
khi ngõ vào bằng 1.
Tanh : Giá trị ngõ ra được chuyển hướng về trong khoảng [-1,1] khiến nó có
tính chất tâm khơng(zero-centered). Khi đó ngõ ra bằng 1 khi ngõ vào lớn và ngõ ra
bằng -1 khi ngõ vào nhỏ. Hàm Tanh với tính chất tâm khơng giúp các dữ liệu được
phân bố quanh điểm 0.

Hình 1. 4 Đồ thị hàm sigmoid (a) và hàm Tanh (b)
ReLU và leaky ReLU: lấy ngưỡng giá trị ở 0 : g(x)=max(0,x). Hàm ReLU
loại bỏ các giá trị âm, việc hội tụ cũng diễn ra nhanh hơn khi khơng cịn bị bão hịa

ở hai đầu như hàm Sigmoid và hàm Tanh. Tuy nhiên, với các giá trị âm nhỏ gần 0,
việc giữ lại đạo hàm vẫn có giá trị khi lấy Gradient, nhưng lại bị triệt tiêu gây ra hiện
tượng “Dying ReLU”. Để khắc phục việc đó, hàm Leaky ReLU ra đời và là biến thể
của ReLU: g(x), các giá trị âm lớn gần như xấp xỉ bằng 0 trong khi các giá trị âm
nhỏ vẫn mang giá trị khi đạo hàm. Nhưng cả hai hàm ReLU và Leaky ReLU lại
khơng có đạo hàm tại 0.

6


Hình 1. 5 Đồ thị hàm ReLU
Mish: Mish là hàm kích hoạt được sử dụng trong YOLOv4. Mish được tác
giả cho rằng tốt hơn các hàm kích hoạt khác nhờ việc giữ được tính chất của hàm
ReLU giúp hội tụ nhanh chóng hơn, giữ được một phần gradient âm cho phép model
học tốt hơn như hàm Leaky ReLU, mà khắc phục được việc khơng có đạo hàm tại 0
cửa hai hàm trên, Mish có đạo hàm tại mọi giá trị âm. Hàm Mish được biểu biễn bởi
cơng thức: g(x)= x.tanh(ln(1+ex))

Hình 1. 6 Đồ thị hàm Mish
1.4 Convolutional Neural Network
1.4.1 Tổng quát về Convolutional Neural Network
Convolutional Neural Network (CNN) hay còn gọi là mạng Nơ-ron tích chập
là một trong những mơ hình của Deep Learning. Tác dụng của thuật tốn này chính
7


là tạo ra những hệ thống thơng minh, có sự phản ứng với độ chính xác cao. Ứng
dụng cơ bản nhất của thuật toán này là phân lớp, khi đưa hình ảnh vào máy tính, nó
sẽ là các điểm ảnh hai chiều và điều CNN thực hiện đó là khi các điểm ảnh thay đổi
thì máy tính vẫn biết được nó là ảnh gì.

CNNs được chia thành 3 chiều: rộng, cao, sâu. Các Nơ-ron trong mạng khơng
liên kết hồn tồn với toàn bộ Nơ-ron kế đến mà chỉ liên kết tới môt vùng nhỏ. Cuối
cùng, một tầng đầu ra được tối giản thành vec-tơ của giá trị xác suất.
CNNs gồm 2 thành phần:
- Phần tầng ẩn hay phần rút trích đặc trưng: Trong phần này, mạng sẽ tiến
hành tính tốn hàng loạt phép tích chập (Convolutional Layer) và phép hợp nhất
(pooling) để phát hiện các đặc trưng.
- Phần phân lớp: Tại phần này, một số lớp các liên kết đầy đủ (Fully
Connected) sẽ đóng vai trị như một bộ phân lớp các đặc trưng đã rút trích trước đó.
Tầng này sẽ đưa xác suất của một đối tượng trong hình.

Hình 1. 7 Cấu trúc CNN
1.4.2 Lớp tích chập( Convolutional Layer)
Đây là phép tính quan trọng trong CNN. Ta thực hiện phép tích chập bằng
cách trượt bộ lọc theo kiểu dữ liệu đầu vào. Tại mỗi vị trí, ta tiến hành phép nhân
ma trận và tính tổng để đưa và feature map. Feature map này chính là một ma trận 3
chiều, trong đó bao gồm những con số (parameter).
8


Ở lớp đầu tiên, khối tích chập dùng để phát hiện cạnh thẳng đứng và cạnh nằm
ngang, cạnh nghiêng. Ở các lớp tiếp theo, khối tích chập sẽ nhận diện các đường
cong, đường gấp khúc. Càng sử dụng nhiều lớp tích chập thì càng phát hiện được
những đặc trưng phức tạp hơn.
1.4.3 Lớp tổng hợp(Pooling layer)
Là lớp cuối cùng có tác dụng làm đơn giản các thông tin đầu ra, lược bớt các
thông tin không cần thiết để cho ra kết quả mà người dùng mong muốn.
Có 2 loại pooling: max pooling lấy giá trị lớn nhất trong một pooling window
và average pooling lấy giá trị trung bình trong một pooling window.
Pooling hoạt động gần giống convolution, ở max pooling cửa sổ trượt qua

từng giá trị của ma trận dữ liệu đầu vào, chọn ra giá trị lớn nhất.

Hình 1. 8 Max pooling
1.4.4 Lớp kết nối đầy đủ( Fully Connected Layer)
Sau khi ảnh được truyền qua nhiều lớp tích chập và lớp tổng hợp thì model đã
học được tương đối các đặc điểm của ảnh (ví dụ bánh xe, khung xe,…) thì tensor
của output cuối cùng, kích thước H*W*D sẽ được chuyển về 1 vector kích thước
(H*W*D).

Hình 1. 9 Phép flatten đưa tensor về thành 1 vector
9


Sau đó, mỗi điểm của vector sẽ được liên kết với toàn bộ output của mode
giống như một lớp của mạng Neural Network. Lớp kết nối đầy đủ cuối của mạng có
nhiệm vụ phân loại theo yêu cầu của bài tốn.
1.4.5 Softmax
Sau khi mạng CNNs học qua các lớp phía trước, ta thu được vector đặc trưng.
Khi đó, cần dựa vào vector đặc trưng này để phân loại vào các lớp theo u cầu bài
tốn. Hàm softmax là một mơ hình xác suất để với mỗi input x, tính được output ai
thể hiện xác suất để input đó rơi vào lớp thứ i.
Hàm softmax có đầu vào là một vextor, đầu ra là một vector có cùng số chiều
𝐴𝑖 = ∑𝑐

exp⁡(𝑧𝑖 )

𝑗=1 exp⁡(𝑧𝑖 )

∀𝑖 = 1,2,3,…C


với C là số lớp ngõ ra

Giá trị zi càng lớn thì xác suất dữ liệu rơi vào lớp thứ i càng cao. Các a i lớn
hơn 0 và có tổng bằng 1.

Hình 1. 10 Ví dụ về đầu vào và đầu ra của hàm softmax
1.4.6 Batch Normalization
Trong q trình training, có thể xảy ra hiện tượng gradients không ổn định do
gradients trước và sau khi di chuyển qua 1 layers không giống nhau. Đây là vấn đề
liên quan đến phân phối của inputs của các layers.
Một lợi ích được nhận định của batch normalization là huấn luyện nhanh hơn.
Thuật toán cụ thể là:
10


Hình 1. 11 Phép biến đổi batch normalization
1.5 Thuật tốn YOLO
Yolo là một mơ hình mạng CNN cho việc phát hiện, nhận dạng và phân loại
đối tượng. Yolo được tạo ra từ việc kết hợp giữa các convolutional layers và
connected layers. Trong đó các convolutional layers sẽ trích xuất ra các đặc tính của
ảnh, cịn full-connected layers sẽ dự đốn ra xác suất đó và tọa độ của đối tượng.

Hình 1. 12 Mơ hình mạng YOLO
Về độ chính xác thì YOLO có thể khơng phải là thuật tốn tốt nhất nhưng nó
là thuật tốn nhanh nhất trong các lớp mơ hình object detection. Nó có thể đạt được
tốc độ gần như real time mà độ chính xác khơng q giảm so với các model thuộc
top đầu. YOLO là thuật toán nhận diện đối tượng nên mục tiêu của mơ hình không
chỉ là dự báo nhãn cho vật thể như các bài tốn phân loại mà nó cịn xác định vị trí

11



của vật thể. Do đó YOLO có thể phát hiện được nhiều vật thể có nhãn khác nhau
trong một bức ảnh thay vì chỉ phân loại duy nhất một nhãn cho một bức ảnh.
*Kiến trúc mạng YOLO
Base network là các mạng tích chập làm nhiệm vụ trích xuất đặc trưng. Phần
phía sau là những Extra Layers được áp dụng để phát hiện vật thể trên feature map
của base network. Base network của YOLO sử dụng chủ yếu là các convolutional
layer và các fully conntected layer. Các kiến trúc YOLO cũng khá đa dạng và có thể
tùy biến thành các phiên bản cho nhiều dạng đầu vào khác nhau.

Hình 1. 13 Kiến trúc mạng YOLO
Thành phần Darknet Architechture được gọi là base network có tác dụng trích
suất đặc trưng. Outtput của base network là 1 feature map có kích thước 7×7×1024 sẽ
được sử dụng làm input cho các Extra layers có tác dụng dự đoán nhãn và tọa độ
bounding box của vật thể.
Hiện tại YOLO đang hỗ trợ 2 đầu vào chính là 416×416 và 608×608. Mỗi một
đầu vào sẽ có một thiết kế các lớp riêng phù hợp với dạng đầu vào. Sau khi đi qua
các layer convolutional thì hình dạng giảm dần theo cấp số nhân là 2. Cuối cùng ta
thu được một feature map có kích thước tương đối nhỏ để dự báo vật thể trên từng ô
của feature map.
*Output của YOLO
Output của mơ hình YOLO là một véc tơ sẽ bao gồm các thành phần:
𝑦 𝑇 = [𝑝0 , (𝑡⏟𝑥 , 𝑡𝑦 , 𝑡𝑤 , 𝑡ℎ )⁡, (𝑝
⏟ 1 , 𝑝2 , … , 𝑝𝑐 ) ]
𝑏𝑜𝑢𝑛𝑑𝑖𝑛𝑔⁡𝑏𝑜𝑥

𝑠𝑐𝑜𝑟𝑒𝑠⁡𝑜𝑓⁡𝑐⁡𝑐𝑙𝑎𝑠𝑠𝑒𝑠

12



𝑝0 là xác suất dự báo vật thể xuất hiện trong bounding box. (t x , t y , t w , t h) giúp
xác định bounding box. Trong đó tx, ty là tọa độ tâm và tw, th là kích thước rộng, dài
của bounding box. (𝑝1 , 𝑝2 , … , 𝑝𝑐 ) là véc tơ phân phối xác suất dự báo của các classes.
Output sẽ được xác định theo số lượng classes theo công thức (nclass+5). Nếu
huấn luyện 80 classes thì bạn sẽ có output là 85. Trường hợp bạn áp dụng 3
anchors/cell thì số lượng tham số output sẽ là:
(𝑛𝑐𝑙𝑎𝑠𝑠 + 5).3 = 85.3 = 255
*Hàm tính IOU
IOU (Intersection Over Union) là hàm đánh giá độ chính xác của object
detector trên tập dữ liệu cụ thể. IOU được tính bằng:
𝐼𝑜𝑈 =

𝐴𝑟𝑒𝑎⁡𝑜𝑓⁡𝑂𝑣𝑒𝑟𝑙𝑎𝑝
𝐴𝑟𝑒𝑎⁡𝑜𝑓⁡𝑈𝑛𝑖𝑜𝑛

Hình 1. 14 Biểu diễn hàm tính IOU
Trong đó Area of Overlap là diện tích phần giao nhau giữa predicted bounding
box với grouth-truth bouding box , còn Area of Union là diện tích phần hợp giữa
predicted bounding box với grouth-truth bounding box. Những bounding box được
đánh nhãn bằng tay trong tập traing set và test set. Nếu IOU > 0.5 thì prediction được
đánh giá là tốt.
*Anchor Box
Để tìm được bounding box cho vật thể, YOLO sẽ cần các anchor box làm cơ
sở ước lượng. Những anchor box này sẽ được xác định trước và sẽ bao quanh vật
thể một cách tương đối chính xác. Sau này thuật toán regression bounding box sẽ
13



tinh chỉnh lại anchor box để tạo ra bounding box dự đốn cho vật thể. Trong một mơ
hình YOLO:
Mỗi một vật thể trong hình ảnh huấn luyện được phân bố về một anchor box.
Trong trường hợp có từ 2 anchor boxes trở lên cùng bao quanh vật thể thì ta sẽ xác
định anchor box mà có IoU với ground truth bounding box là cao nhất.

Hình 1. 15 Xác định anchor box
Xác định anchor box cho một vật thể. Từ Cell i ta xác định được 3 anchor
boxes viền xanh như trong hình. Cả 3 anchor boxes này đều giao nhau với bounding
box của vật thể. Tuy nhiên chỉ anchor box có đường viền dày nhất màu xanh được
lựa chọn làm anchor box cho vật thể bởi nó có IoU so với ground truth bounding
box là cao nhất.
*Loss Function
Hàm lỗi trong YOLO được tính trên việc dự đốn và nhãn mơ hình để tính. Cụ
thể hơn nó là tổng độ lỗi của 3 thành phần con sau :
+ Classifycation loss
Classifycation loss - độ lỗi của việc dự đoán loại nhãn của object, hàm lỗi này
chỉ tính trên những ơ vng có xuất hiện object, cịn những ơ vng khác ta khơng
quan tâm. Classifycation loss được tính bằng cơng thức sau:

14


×