You are on page 1of 58

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

VIỆN ĐIỆN TỬ - VIỄN THÔNG

ĐỒ ÁN

TỐT NGHIỆP ĐẠI HỌC

Đề tài:

ỨNG DỤNG YOLO VÀ TESSERACT


NHẬN DIỆN BIỂN SỐ XE

Sinh viên thực hiện: PHAN VIỆT DŨNG


NGUYỄN CAO BÁCH
Giảng viên hướng dẫn: ThS. DƯƠNG TẤN NGHĨA

Hà Nội, July 28, 2022


TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN TỬ - VIỄN THÔNG

ĐỒ ÁN

TỐT NGHIỆP ĐẠI HỌC

Đề tài:

ỨNG DỤNG YOLO VÀ TESSERACT


NHẬN DIỆN BIỂN SỐ XE

Sinh viên thực hiện: PHAN VIỆT DŨNG


NGUYỄN CAO BÁCH
Giảng viên hướng dẫn: ThS. DƯƠNG TẤN NGHĨA
Cán bộ phản biện:

Hà Nội, July 28, 2022


ĐÁNH GIÁ QUYỂN ĐỒ ÁN TỐT NGHIỆP
(Dùng cho giảng viên hướng dẫn)

Tên giảng viên đánh giá: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


Họ và tên sinh viên: . . . . . . . . . . . . . . . . . . . . . . . . . . . MSSV: . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tên đồ án: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
................................................................................
Chọn các mức điểm phù hợp cho sinh viên trình bày theo các tiêu chí dưới đây:
Rất kém (1); Kém(2); Đạt(3); Giỏi(4); Xuất sắc(5)

Có sự kết hợp giữa lý thuyết và thực hành (20)


Nêu rõ tính cấp thiết và quan trọng của đề tài, các vấn đề và các giả
1 thuyết (bao gồm mục đích và tính phù hợp) cũng như phạm vi ứng dụng 1 2 3 4 5
của đồ án
2 Cập nhật kết quả nghiên cứu gần đây nhất (trong nước/quốc tế) 1 2 3 4 5
3 Nêu rõ và chi tiết phương pháp nghiên cứu/giải quyết vấn đề 1 2 3 4 5
4 Có kết quả mô phỏng/thực nghiệm và trình bày rõ ràng kết quả đạt được 1 2 3 4 5
Có khả năng phân tích và đánh giá kết quả (15)
Kế hoạch làm việc rõ ràng bao gồm mục tiêu và phương pháp thực hiện
5 1 2 3 4 5
dựa trên kết quả nghiên cứu lý thuyết một cách có hệ thống

6 Kết quả được trình bày một cách logic và dễ hiểu, tất cả kết quả đều 1 2 3 4 5
được phân tích và đánh giá thỏa đáng
Trong phần kết luận, tác giả chỉ rõ sự khác biệt (nếu có) giữa kết quả
7 đạt được và mục tiêu ban đầu đề ra đồng thời cung cấp lập luận để đề 1 2 3 4 5
xuất hướng giải quyết có thể thực hiện trong tương lai
Kỹ năng viết quyển đồ án (10)
Đồ án trình bày đúng mẫu quy định với cấu trúc các chương logic và
đẹp mắt (bảng biểu, hình ảnh rõ ràng, có tiêu đề, được đánh số thứ tự và
8 được giải thích hay đề cập đến; căn lề thống nhất, có dấu cách sau dấu 1 2 3 4 5
chấm, dấu phảy v.v.), có mở đầu chương và kết luận chương, có liệt kê
tài liệu tham khảo và có trích dẫn đúng quy định

9 Kỹ năng viết xuất sắc (cấu trúc câu chuẩn, văn phong khoa học, lập luận 1 2 3 4 5
logic và có cơ sở, từ vựng sử dụng phù hợp v.v.)
Thành tựu nghiên cứu khoa học (5) (chọn 1 trong 3 trường hợp)
Có bài báo khoa học được đăng hoặc chấp nhận đăng/Đạt giải SVNCKH
10a giải 3 cấp Viện trở lên/Có giải thưởng khoa học (quốc tế hoặc trong 5
nước) từ giải 3 trở lên/Có đăng ký bằng phát minh, sáng chế
Được báo cáo tại hội đồng cấp Viện trong hội nghị SVNCKH nhưng
10b không đạt giải từ giải 3 trở lên/Đạt giải khuyến khích trong các kỳ thi 2
quốc gia và quốc tế khác về chuyên ngành (VD: TI contest)
10c Không có thành tích về nghiên cứu khoa học 0
Điểm tổng /50
Điểm tổng quy đổi về thang 10
Nhận xét khác (về thái độ và tinh thần làm việc của sinh viên)
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

Ngày: ... / ... / 20...


Người nhận xét
(Ký và ghi rõ họ tên)
ĐÁNH GIÁ QUYỂN ĐỒ ÁN TỐT NGHIỆP
(Dùng cho giảng viên hướng dẫn)

Tên giảng viên đánh giá: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


Họ và tên sinh viên: . . . . . . . . . . . . . . . . . . . . . . . . . . . MSSV: . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tên đồ án: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
................................................................................
Chọn các mức điểm phù hợp cho sinh viên trình bày theo các tiêu chí dưới đây:
Rất kém (1); Kém(2); Đạt(3); Giỏi(4); Xuất sắc(5)

Có sự kết hợp giữa lý thuyết và thực hành (20)


Nêu rõ tính cấp thiết và quan trọng của đề tài, các vấn đề và các giả
1 thuyết (bao gồm mục đích và tính phù hợp) cũng như phạm vi ứng dụng 1 2 3 4 5
của đồ án
2 Cập nhật kết quả nghiên cứu gần đây nhất (trong nước/quốc tế) 1 2 3 4 5
3 Nêu rõ và chi tiết phương pháp nghiên cứu/giải quyết vấn đề 1 2 3 4 5
4 Có kết quả mô phỏng/thực nghiệm và trình bày rõ ràng kết quả đạt được 1 2 3 4 5
Có khả năng phân tích và đánh giá kết quả (15)
Kế hoạch làm việc rõ ràng bao gồm mục tiêu và phương pháp thực hiện
5 1 2 3 4 5
dựa trên kết quả nghiên cứu lý thuyết một cách có hệ thống

6 Kết quả được trình bày một cách logic và dễ hiểu, tất cả kết quả đều 1 2 3 4 5
được phân tích và đánh giá thỏa đáng
Trong phần kết luận, tác giả chỉ rõ sự khác biệt (nếu có) giữa kết quả
7 đạt được và mục tiêu ban đầu đề ra đồng thời cung cấp lập luận để đề 1 2 3 4 5
xuất hướng giải quyết có thể thực hiện trong tương lai
Kỹ năng viết quyển đồ án (10)
Đồ án trình bày đúng mẫu quy định với cấu trúc các chương logic và
đẹp mắt (bảng biểu, hình ảnh rõ ràng, có tiêu đề, được đánh số thứ tự và
8 được giải thích hay đề cập đến; căn lề thống nhất, có dấu cách sau dấu 1 2 3 4 5
chấm, dấu phảy v.v.), có mở đầu chương và kết luận chương, có liệt kê
tài liệu tham khảo và có trích dẫn đúng quy định

9 Kỹ năng viết xuất sắc (cấu trúc câu chuẩn, văn phong khoa học, lập luận 1 2 3 4 5
logic và có cơ sở, từ vựng sử dụng phù hợp v.v.)
Thành tựu nghiên cứu khoa học (5) (chọn 1 trong 3 trường hợp)
Có bài báo khoa học được đăng hoặc chấp nhận đăng/Đạt giải SVNCKH
10a giải 3 cấp Viện trở lên/Có giải thưởng khoa học (quốc tế hoặc trong 5
nước) từ giải 3 trở lên/Có đăng ký bằng phát minh, sáng chế
Được báo cáo tại hội đồng cấp Viện trong hội nghị SVNCKH nhưng
10b không đạt giải từ giải 3 trở lên/Đạt giải khuyến khích trong các kỳ thi 2
quốc gia và quốc tế khác về chuyên ngành (VD: TI contest)
10c Không có thành tích về nghiên cứu khoa học 0
Điểm tổng /50
Điểm tổng quy đổi về thang 10
Nhận xét khác (về thái độ và tinh thần làm việc của sinh viên)
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

Ngày: ... / ... / 20...


Người nhận xét
(Ký và ghi rõ họ tên)
ĐÁNH GIÁ QUYỂN ĐỒ ÁN TỐT NGHIỆP
(Dùng cho cán bộ phản biện)

Giảng viên đánh giá: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


Họ và tên sinh viên: . . . . . . . . . . . . . . . . . . . . . . . . . . . MSSV: . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tên đồ án: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
................................................................................
Chọn các mức điểm phù hợp cho sinh viên trình bày theo các tiêu chí dưới đây:
Rất kém (1); Kém(2); Đạt(3); Giỏi(4); Xuất sắc(5)

Có sự kết hợp giữa lý thuyết và thực hành (20)


Nêu rõ tính cấp thiết và quan trọng của đề tài, các vấn đề và các giả
1 thuyết (bao gồm mục đích và tính phù hợp) cũng như phạm vi ứng dụng 1 2 3 4 5
của đồ án
2 Cập nhật kết quả nghiên cứu gần đây nhất (trong nước/quốc tế) 1 2 3 4 5
3 Nêu rõ và chi tiết phương pháp nghiên cứu/giải quyết vấn đề 1 2 3 4 5
4 Có kết quả mô phỏng/thực nghiệm và trình bày rõ ràng kết quả đạt được 1 2 3 4 5
Có khả năng phân tích và đánh giá kết quả (15)
Kế hoạch làm việc rõ ràng bao gồm mục tiêu và phương pháp thực hiện
5 1 2 3 4 5
dựa trên kết quả nghiên cứu lý thuyết một cách có hệ thống

6 Kết quả được trình bày một cách logic và dễ hiểu, tất cả kết quả đều 1 2 3 4 5
được phân tích và đánh giá thỏa đáng
Trong phần kết luận, tác giả chỉ rõ sự khác biệt (nếu có) giữa kết quả
7 đạt được và mục tiêu ban đầu đề ra đồng thời cung cấp lập luận để đề 1 2 3 4 5
xuất hướng giải quyết có thể thực hiện trong tương lai
Kỹ năng viết quyển đồ án (10)
Đồ án trình bày đúng mẫu quy định với cấu trúc các chương logic và
đẹp mắt (bảng biểu, hình ảnh rõ ràng, có tiêu đề, được đánh số thứ tự và
8 được giải thích hay đề cập đến; căn lề thống nhất, có dấu cách sau dấu 1 2 3 4 5
chấm, dấu phảy v.v.), có mở đầu chương và kết luận chương, có liệt kê
tài liệu tham khảo và có trích dẫn đúng quy định

9 Kỹ năng viết xuất sắc (cấu trúc câu chuẩn, văn phong khoa học, lập luận 1 2 3 4 5
logic và có cơ sở, từ vựng sử dụng phù hợp v.v.)
Thành tựu nghiên cứu khoa học (5) (chọn 1 trong 3 trường hợp)
Có bài báo khoa học được đăng hoặc chấp nhận đăng/Đạt giải SVNCKH
10a giải 3 cấp Viện trở lên/Có giải thưởng khoa học (quốc tế hoặc trong 5
nước) từ giải 3 trở lên/Có đăng ký bằng phát minh, sáng chế
Được báo cáo tại hội đồng cấp Viện trong hội nghị SVNCKH nhưng
10b không đạt giải từ giải 3 trở lên/Đạt giải khuyến khích trong các kỳ thi 2
quốc gia và quốc tế khác về chuyên ngành (VD: TI contest)
10c Không có thành tích về nghiên cứu khoa học 0
Điểm tổng /50
Điểm tổng quy đổi về thang 10
Nhận xét khác của cán bộ phản biện
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

Ngày: ... / ... / 20...


Người nhận xét
(Ký và ghi rõ họ tên)
ĐÁNH GIÁ QUYỂN ĐỒ ÁN TỐT NGHIỆP
(Dùng cho cán bộ phản biện)

Giảng viên đánh giá: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


Họ và tên sinh viên: . . . . . . . . . . . . . . . . . . . . . . . . . . . MSSV: . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tên đồ án: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
................................................................................
Chọn các mức điểm phù hợp cho sinh viên trình bày theo các tiêu chí dưới đây:
Rất kém (1); Kém(2); Đạt(3); Giỏi(4); Xuất sắc(5)

Có sự kết hợp giữa lý thuyết và thực hành (20)


Nêu rõ tính cấp thiết và quan trọng của đề tài, các vấn đề và các giả
1 thuyết (bao gồm mục đích và tính phù hợp) cũng như phạm vi ứng dụng 1 2 3 4 5
của đồ án
2 Cập nhật kết quả nghiên cứu gần đây nhất (trong nước/quốc tế) 1 2 3 4 5
3 Nêu rõ và chi tiết phương pháp nghiên cứu/giải quyết vấn đề 1 2 3 4 5
4 Có kết quả mô phỏng/thực nghiệm và trình bày rõ ràng kết quả đạt được 1 2 3 4 5
Có khả năng phân tích và đánh giá kết quả (15)
Kế hoạch làm việc rõ ràng bao gồm mục tiêu và phương pháp thực hiện
5 1 2 3 4 5
dựa trên kết quả nghiên cứu lý thuyết một cách có hệ thống

6 Kết quả được trình bày một cách logic và dễ hiểu, tất cả kết quả đều 1 2 3 4 5
được phân tích và đánh giá thỏa đáng
Trong phần kết luận, tác giả chỉ rõ sự khác biệt (nếu có) giữa kết quả
7 đạt được và mục tiêu ban đầu đề ra đồng thời cung cấp lập luận để đề 1 2 3 4 5
xuất hướng giải quyết có thể thực hiện trong tương lai
Kỹ năng viết quyển đồ án (10)
Đồ án trình bày đúng mẫu quy định với cấu trúc các chương logic và
đẹp mắt (bảng biểu, hình ảnh rõ ràng, có tiêu đề, được đánh số thứ tự và
8 được giải thích hay đề cập đến; căn lề thống nhất, có dấu cách sau dấu 1 2 3 4 5
chấm, dấu phảy v.v.), có mở đầu chương và kết luận chương, có liệt kê
tài liệu tham khảo và có trích dẫn đúng quy định

9 Kỹ năng viết xuất sắc (cấu trúc câu chuẩn, văn phong khoa học, lập luận 1 2 3 4 5
logic và có cơ sở, từ vựng sử dụng phù hợp v.v.)
Thành tựu nghiên cứu khoa học (5) (chọn 1 trong 3 trường hợp)
Có bài báo khoa học được đăng hoặc chấp nhận đăng/Đạt giải SVNCKH
10a giải 3 cấp Viện trở lên/Có giải thưởng khoa học (quốc tế hoặc trong 5
nước) từ giải 3 trở lên/Có đăng ký bằng phát minh, sáng chế
Được báo cáo tại hội đồng cấp Viện trong hội nghị SVNCKH nhưng
10b không đạt giải từ giải 3 trở lên/Đạt giải khuyến khích trong các kỳ thi 2
quốc gia và quốc tế khác về chuyên ngành (VD: TI contest)
10c Không có thành tích về nghiên cứu khoa học 0
Điểm tổng /50
Điểm tổng quy đổi về thang 10
Nhận xét khác của cán bộ phản biện
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................

Ngày: ... / ... / 20...


Người nhận xét
(Ký và ghi rõ họ tên)
LỜI NÓI ĐẦU

Ngày nay trên thế giới bên cạnh việc tăng trưởng kinh tế là sự phát triển của các
ngành khoa học kỹ thuật nói chung, mà trong đó ngành công nghiệp sản xuất các phương
tiện giao thông lại là một trong những ngành có tốc độ phát triển cực nhanh. Sự phát
triển ấy, được thể hiện rõ ràng nhất thông qua hình ảnh các phương tiện giao thông trên
thế giới ngày một tăng cao và đa dạng.
Tuy nhiên,điều đó lại gây ra một áp lực đối với những người và cơ quan các cấp
quản lý,làm cho công tác quản lý và giám sát sẽ khó khăn hơn, Và đây cũng là một trong
những vấn nạn ở Việt Nam. Công tác quản lý phương tiện giao thông nói chung và quản
lý ôtô, xe máy là vô cùng phức tạp cũng như công tác phát hiện, xử phạt các hành vi vi
phạm giao thông, chống trộm,sẽ tốn nhiều thời gian và công sức hơn Để làm giảm lượng
nhân lực trong việc công tác quản lý, kiểm soát phương tiện giao thông, trên thế giới đã
nhanh chóng xây dựng hệ thống giám sát tự động đối với các phương tiện giao thông. Và
các hệ thống giám sát đều lấy biển số xe là mục tiêu giám sát. Hệ thống này đã được sử
dụng rộng rãi tuy nhiên ở Việt Nam đây vẫn là một lĩnh vực mới mẻ.
Do đó chúng em chọn làm đề tài “ỨNG DỤNG YOLO VÀ TESSERACT NHẬN
DIỆN BIỂN SỐ XE” với mục đích để tìm hiểu nhằm trợ giúp cho công tác giám sát,
quản lý bãi đỗ xe một cách hiệu quả, dễ dàng và nhanh chóng hơn.
Chúng em chân thành cảm ơn quý thầy cô trong Trường Điện- Điện tử đã tận tình
giảng dạy và truyền đạt những kiến thức quý báu cho chúng em trong suốt những năm
học qua.
Chúng em xin gửi lời chân thành cảm ơn thầy Dương Tấn Ngĩa đã tận tình hướng
dẫn, chỉ bảo và chia sẻ những ý kiến quý báu để chúng em có thể hoàn thành tốt đề tài.
Xin chân thành cảm ơn!
LỜI CAM ĐOAN

Tôi tên là PHAN VIỆT DŨNG, mã số sinh viên 20172496, sinh viên lớp ĐTVT.01,
khóa 62 cùng với NGUYỄN CAO BÁCH, mã số sinh viên 20172419, khóa 62. Người
hướng dẫn là ThS. DƯƠNG TẤN NGHĨA. Tôi xin cam đoan toàn bộ nội dung được
trình bày. Mọi thông tin trích dẫn đều tuân thủ các quy định về sở hữu trí tuệ; các tài liệu
tham khảo được liệt kê rõ ràng. Tôi xin chịu hoàn toàn trách nhiệm với những nội dung
được viết trong đồ án này.

Hà Nội, July 28, 2022


Người cam đoan

PHAN VIỆT DŨNG


MỤC LỤC

DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT i

DANH MỤC HÌNH VẼ ii

DANH MỤC BẢNG BIỂU iii

TÓM TẮT ĐỒ ÁN iv

CHƯƠNG 1. GIỚI THIỆU 1


1.1 Đặt vấn đề . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Phương pháp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Giới hạn phạm vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

CHƯƠNG 2. CƠ SỞ LÝ THUYẾT 2
2.1 Tổng quan về thị giác máy tính . . . . . . . . . . . . . . . . . . . . . . 2
2.2 Các lĩnh vực biên . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2.1 Tổng quan về mạng Nơ-ron . . . . . . . . . . . . . . . . . . . . 3
2.2.2 Mạng nơ ron truyền thẳng (Feed-forward neural network) . . . . 7
2.2.3 Convolution Layer . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2.4 Tổng quan về mạng Nơ-ron CNN . . . . . . . . . . . . . . . . 12
2.3 Cấu trúc CNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.4 YOLO - You Only Look Once . . . . . . . . . . . . . . . . . . . . . . 14
2.4.1 Giới thiệu chung . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.4.2 Kiến trúc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4.3 Out của YOLO . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4.4 Dự báo trên nhiều feature map . . . . . . . . . . . . . . . . . . 17
2.4.5 Anchor box . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.4.6 Hàm loss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4.7 Dự báo bounding box . . . . . . . . . . . . . . . . . . . . . . . 20
2.4.8 Non-max suppression . . . . . . . . . . . . . . . . . . . . . . . 21
2.5 Nhận diện văn bản bằng Tesseract . . . . . . . . . . . . . . . . . . . . 21

CHƯƠNG 3. BÀI TOÁN NHẬN DẠNG 24


3.1 Khái quát hệ thống nhận dạng biển số xe . . . . . . . . . . . . . . . . . 24
3.2 Những yêu cầu đối với hệ thống tự động nhận dạng biển số xe . . . . . 24
3.3 Phương pháp giải quyết bài toán . . . . . . . . . . . . . . . . . . . . . 25
3.3.1 Các bài toán đặt ra trong hệ thống nhận dạng biển số xe . . . . . 25
3.4 Thu thập và chuẩn bị dữ liệu training . . . . . . . . . . . . . . . . . . . 26
3.4.1 Gán nhãn dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4.2 Các phương pháp tăng sự đa dạng của bộ dữ liệu . . . . . . . . 26
3.5 Training data colab . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

CHƯƠNG 4. XÂY DỰNG HỆ THỐNG 30


4.1 Xây dựng giao diện . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.1.1 Package PyQT5 . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.1.2 Công cụ phần mềm phục vụ thiết kế với PyQt5 . . . . . . . . . 30
4.2 Xây dựng cơ sở dữ liệu lưu thông tin . . . . . . . . . . . . . . . . . . . 31
4.2.1 Firebase là gì ? . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.2.2 Thiết lập csdl . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.3 Kết quả . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

KẾT LUẬN 34

Kết luận chung 34

Hướng phát triển 34

TÀI LIỆU THAM KHẢO 35

PHỤ LỤC 36
DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT

CNN Convolutional Neural Network


OCR Optical Character Recognition

i
DANH MỤC HÌNH VẼ

Hình 2.1 Mạng nơ ron nhân tạo . . . . . . . . . . . . . . . . . . . . . . . . 3


Hình 2.2 Đơn vị xử lý (Processing Unit) . . . . . . . . . . . . . . . . . . . 4
Hình 2.3 Mạng Nơ ron truyền thẳng . . . . . . . . . . . . . . . . . . . . . 7
Hình 2.4 Mạng Nơ ron truyền thẳng nhiều lớp . . . . . . . . . . . . . . . . 8
Hình 2.5 Hidden layers and classification . . . . . . . . . . . . . . . . . . 14
Hình 2.6 Sơ đồ kiến trúc mạng YOLO . . . . . . . . . . . . . . . . . . . . 15
Hình 2.7 Các layer trong mạng darknet-53 . . . . . . . . . . . . . . . . . . 15
Hình 2.8 Kiến trúc một output của model YOLO . . . . . . . . . . . . . . 17
Hình 2.9 Các feature maps của mạng YOLOv3 . . . . . . . . . . . . . . . 17
Hình 2.10 Xác định anchor box cho một vật thể . . . . . . . . . . . . . . . 19
Hình 2.11 Công thức ước lượng bounding box từ anchor box . . . . . . . . . 20
Hình 2.12 non-max suppression . . . . . . . . . . . . . . . . . . . . . . . . 21
Hình 2.13 Kết quả phân tích của Tesseract OCR . . . . . . . . . . . . . . . . 22
Hình 2.14 Chia nhỏ các ký tự trong từ (fixed word) . . . . . . . . . . . . . . 22
Hình 2.15 Quy trình nhận diện từ của Tesseract . . . . . . . . . . . . . . . . 23
Hình 3.1 Minh họa một hệ thống nhận dạng biển số xe . . . . . . . . . . . 24
Hình 4.1 Giao diện thiết kế trên QTDesigner . . . . . . . . . . . . . . . . . 30
Hình 4.2 Chuyển đổi file ui sang file python . . . . . . . . . . . . . . . . . 31
Hình 4.3 Trang console của Firebase . . . . . . . . . . . . . . . . . . . . . 32
Hình 4.4 Cấu trúc CSDL . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Hình 4.5 Kết quả . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

ii
DANH MỤC BẢNG BIỂU

iii
TÓM TẮT ĐỒ ÁN

Quản lý bãi đỗ xe theo cách truyền thống còn tồn tại rất nhiều nhược điểm và gây
khó khăn chon nhân viên và người sử dụng phương tiện. Để giải quyết những vấn đề tồn
đọng trong khâu quản lý thông tin phương tiện trong bãi đỗ xe có rất nhiều phương pháp
được đưa ra. Việc áp dụng trí tuệ nhân tạo trong quá trình tự vận hành thao tác bãi đỗ xe
là một phương pháp được đề xuất cao.
Trong trí tuệ nhân tạo có Deep Learning, với việc sử dụng Yolo là một mô hình
mạng CNN cho việc phát hiện, nhận dạng, 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 đóp các convolutional
layers sẽ trích xuất ra các feature của ảnh, còn full-connected layers sẽ dự đoán ra xác
suất đó và tọa độ của đối tượng. Từ đây, thông qua các hình ảnh thu được từ camera trích
xuất được các đối tượng biển số xe. Tuy nhiên, để có được thông tin từ đối tượng biển
số xe đó cần sử dụng thêm các công nghệ OCR hay còn gọi là bản sao kỹ thuật số của
các ký tự viết tay, in hoặc đánh máy đã được quét. Cụ thể chúng ta sẽ sử dụng thư viện
PyTesseract để phân tích và lấy được thông tin từ đối tượng biển số xe đã detect trước
đó.
Kết quả thu được sẽ được lưu lại trong một cơ sở dữ liệu trên cloud phục vụ cho
các mục đích xác minh và các thao tác quản lý khác.
Như vậy, với việc sử dụng YOLO và Pytesseract song song đó là viết mã bằng ngôn
ngữ python thu về được một phần mềm với giao diện hoàn chỉnh phục vụ được các chức
năng quản lý cơ bản của một bãi đỗ xe.

iv
CHƯƠNG 1. GIỚI THIỆU

1.1 Đặt vấn đề


Hiện nay, tại một số nơi công sở, trường học hoặc các trung tâm thương mại với số
lượng người lớn đồng nghĩa với việc các phương tiện giao thông họ sử dụng cũng nhiều.
Tuy nhiên nhiều nơi vẫn đang còn sử dụng phương pháp truyền thống viết thông tin biển
số phương tiện lên vé giấy. Việc này rất khó để đảm bảo an toàn và sử dụng với lượng
lớn thông tin trong một khoảng thời gian ngắn.
Đã có một số giải pháp thay thế phương pháp truyền thống như sử dụng thẻ RFID
và đã được áp dụng thực tế. Bên cạnh đó, khi mà công nghệ đang phát triển rất mạnh
vơi những xu hướng mới như Trí Tuệ Nhân Tạo hay là các thuật ngữ ta thường nghe
như Deep Learning, Machine Learning . Sử dụng Deep Learning phân tích và lấy ra
thông tin phương tiện, so với các bãi đỗ xe kiểu truyền thống, những lợi ích của một bãi
đỗ xe tự động không chỉ là nhanh chóng mà tiện lợi.

1.2 Phương pháp


Yolo là một mô hình mạng CNN cho việc phát hiện, nhận dạng, 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 đóp các convolutional layers sẽ trích xuất ra các feature của ảnh, còn full-
connected layers sẽ dự đoán ra xác suất đó và tọa độ của đối tượng. Như vậy đối tượng
được nhắc đến trong bài toán của ta chính là biển số xe. Nơi lưu trữ thông tin để xác
danh phương tiện đó.
Tuy nhiên mục đích của chúng ta là thông tin để xác định phương tiện. Đối tượng
cần chọn lọc đã có nhưng chưa lấy được thông tin trong đối tượng đó. Cách giải quyết là
sử dụng công nghệ nhận diện ký tự quang học hay còn gọi là OCR. Cụ thể hơn chúng ta
sử dụng Tesseract OCR.
Cuối cùng, sử dụng python và PyQT5 để thiết kể một giao diện người dùng giúp
người dùng dê dàng sử dụng và tiếp cận phương pháp. Tất cả được chạy trên môi trường
OS Raspbrian.

1.3 Giới hạn phạm vi


Bài toán nêu ra đang còn là một bài toán lớn khi mà ngoài việc sử dụng thông tin
thì chúng ta còn có thể sử dụng không gian và thời gian sẽ có thêm nhiều phương pháp
giải quyết khác. Tuy nhiên với giới hạn về chuyên ngành và kiến thức, chúng em đã giới
hạn bài toán để giải quyết vấn đề duy nhất là xác định đối tượng và lấy dữ liệu. Cụ thể
đối tượng là biến số xe và dữ liệu chính là thông tin trên biên số xe đó.

1
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT

2.1 Tổng quan về thị giác máy tính


Thị giác máy tính (computer vision) là một lĩnh vực bao gồm các phương pháp
thu nhận, xử lý ảnh kỹ thuật số, phân tích và nhận dạng các hình ảnh và, nói chung là
dữ liệu đa chiều từ thế giới thực để cho ra các thông tin số hoặc biểu tượng, ví dụ trong
các dạng quyết định. Việc phát triển lĩnh vực này có bối cảnh từ việc sao chép các khả
năng thị giác con người bởi sự nhận diện và hiểu biết một hình ảnh mang tính điện tử.
Sự nhận diện hình ảnh có thể xem là việc giải quyết vấn đề của các biểu tượng thông tin
từ dữ liệu hình ảnh qua cách dùng các mô hình được xây dựng với sự giúp đỡ của các
ngành lý thuyết học, thống kê, vật lý và hình học. Thị giác máy tính cũng được mô tả là
sự tổng thể của một dải rộng các quá trình tự động và tích hợp và các thể hiện cho các
nhận thức thị giác.
Thị giác máy tính là một môn học khoa học liên quan đến lý thuyết đằng sau các
hệ thống nhân tạo có trích xuất các thông tin từ các hình ảnh. Dữ liệu hình ảnh có thể
nhiều dạng, chẳng hạn như chuỗi video, các cảnh từ đa camera, hay dữ liệu đa chiều từ
máy quét y học. Thị giác máy tính còn là một môn học kỹ thuật, trong đó tìm kiếm việc
áp dụng các mô hình và các lý thuyết cho việc xây dựng các hệ thống thị giác máy tính.
Các lĩnh vực con của thị giác máy tính bao gồm tái cấu trúc cảnh, dò tìm sự kiện,
theo dõi video, nhận diện bố cục đối tượng, học, chỉ mục, đánh giá chuyển động và phục
hồi ảnh.

2.2 Các lĩnh vực biên


Các lĩnh vực liên quan của trí tuệ nhân tạo giải quyết các vấn đề như lên kế hoạch
tự động hay các suy tính cho các hệ thống robot để dò đường ở một môi trường nào đó.
Sự hiểu biết chi tiết của các môi trường này được yêu cầu để dò đường thông qua chúng.
Thông tin về môi trường có thể được cung cấp bởi một hệ thống thị giác máy tính, hoạt
động như các cảm biến và cung cấp thông tin mức độ cao về môi trường và robot.
Trí tuệ nhân tạo và thị giác máy tính chia sẻ các chủ đề như nhận dạng mẫu và các
kỹ thuật học. Kết quả là thị giác máy tính đôi khi được xem là một phần của lĩnh vực trí
tuệ nhân tạo hay lĩnh vực khoa học máy tính nói chung.
Thị giác máy tính theo một cách nào đó là sự đảo ngược của đồ họa máy tính.
Trong khi đồ họa máy tính sản sinh hình ảnh từ mô hình 3D, thì thị giác máy tính lại
thường sản sinh ra các mô hình 3D từ dữ liệu hình ảnh. Có một khuynh hướng kết hợp 2
môn học này, ví dụ như khám phá trong tăng cường thực tế.

2
2.2.1 Tổng quan về mạng Nơ-ron
2.2.1.1 Khái niệm
Mạng nơ ron (hay mạng nơ ron nhân tạo - Artificial Neural network (ANN) ) [5]
là một mô hình tính toán phi tuyến tính lấy cảm hứng xây dựng dựa trên các mạng nơ
ron sinh học. Nó có khả năng học cách thực hiện các bài toán như phân loại, dự đoán,...
Một mạng nơ ron nhân tạo gồm một nhóm các nơ ron (nút) hoặc các yếu tố xử lý được
kết nối với nhau và được tổ chức thành 3 lớp: lớp đầu vào (input layer), lớp ẩn (hidden
layer) và lớp đầu ra (output layer).

Hình 2.1 Mạng nơ ron nhân tạo

Mạng nơ ron nhân tạo mô phỏng lại mạng nơ ron sinh học là một cấu trúc khối
gồm các đơn vị tính toán đơn giản được liên kết chặt chẽ với nhau, trong đó các liên kết
giữa các nơ ron quyết định chức năng của mạng.

2.2.1.2 Các đặc trưng cơ bản của mạng Nơ ron


Các đặc trưng cơ bản của mạng Nơ ron gồm:

• Gồm một tập các đơn vị xử lý (các noron nhân tạo)

• Trạng thái kích hoạt hay đầu ra của đơn vị xử lý

• Liên kết giữa các đơn vị. Xét tổng quát, mỗi liên kết được định nghĩa bởi một trọng
số Wjk cho ta biết hiệu ứng mà tín hiệu của đơn vị j có trên đơn vị k

• Một luật lan truyền quyết định cách tính tín hiệu ra của từng đơn vị từ đầu vào của

• Một hàm kích hoạt, hay hàm chuyển (activation function, transfer function), xác
định mức độ kích hoạt khác dựa trên mức độ kích hoạt hiện tại

• Một đơn vị điều chỉnh (độ lệch) (bias, offset) của mỗi đơn vị

• Phương pháp thu thập thông tin (luật học - learning rule)

• Môi trường hệ thống có thể hoạt động

3
2.2.1.3 Các thành phần cơ bản của mạng Nơ ron nhân tạo
Đơn vị xử lý còn được gọi là một nơron hay một nút (node), thực hiện một công
việc rất đơn giản: nó nhận tín hiệu vào từ các đơn vị phía trước hay một nguồn bên ngoài
và sử dụng chúng để tính tín hiệu ra sẽ được lan truyền sang các đơn vị khác.

Hình 2.2 Đơn vị xử lý (Processing Unit)

Trong đó:

• xi : các đầu vào

• Wi j : các trọng số tương ứng với các đầu vào

• j : độ lệch (bias)

• a j : đầu vào mạng (net-input)

• z j : đầu ra của nơron

• g( (x)): hàm chuyển (hàm kích hoạt).

Trong một mạng nơron có ba kiểu đơn vị:

• Các đơn vị đầu vào (Input units), nhận tín hiệu từ bên ngoài.

• Các đơn vị đầu ra (Output units), gửi dữ liệu ra bên ngoài.

• Các đơn vị ẩn (Hidden units), tín hiệu vào (input) và ra (output) của nó nằm trong
mạng.

Mỗi đơn vị j có thể có một hoặc nhiều đầu vào: x0, x1, x2, . . . xn, nhưng chỉ có
một đầu ra zj. Một đầu vào tới một đơn vị có thể là dữ liệu từ bên ngoài mạng, hoặc đầu
ra của một đơn vị khác, hoặc là đầu ra của chính nó.
Mỗi một đơn vị trong một mạng kết hợp các giá trị đưa vào nó thông qua các liên
kết với các đơn vị khác, sinh ra một giá trị gọi là net input. Hàm thực hiện nhiệm vụ này
gọi là hàm kết hợp (combination function), được định nghĩa bởi một luật lan truyền cụ
thể. Trong phần lớn các mạng nơron, chúng ta giả sử rằng mỗi một đơn vị cung cấp một
bộ cộng như là đầu vào cho đơn vị mà nó có liên kết. Tổng đầu vào đơn vị j đơn giản chỉ

4
là tổng trọng số của các đầu ra riêng lẻ từ các đơn vị kết nối cộng thêm ngưỡng hay độ
lệch (bias):

Trường hợpw j i > 0, nơron được coi là đang ở trong trạng thái kích thích. Tương tự,
nếu như w j i < 0, nơ ron ở trạng thái kiềm chế. Chúng ta gọi các đơn vị với luật lan truyền
như trên là các sigma units. Trong một vài trường hợp người ta cũng có thể sử dụng các
luật lan truyền phức tạp hơn. Một trong số đó là luật sigma-pi, có dạng như sau:

Rất nhiều hàm kết hợp sử dụng một "độ lệch" hay "ngưỡng" để tính net input tới
đơn vị. Đối với một đơn vị đầu ra tuyến tính, thông thường, j được chọn là hằng số và
trong bài toán xấp xỉ đa thức j = 1.
Phần lớn các đơn vị trong mạng nơron chuyển net input bằng cách sử dụng một
hàm vô hướng (scalar-to-scalar function) gọi là hàm kích hoạt, kết quả của hàm này là
một giá trị gọi là mức độ kích hoạt của đơn vị (unit’s activation). Loại trừ khả năng đơn
vị đó thuộc lớp ra, giá trị kích hoạt được đưa vào một hay nhiều đơn vị khác. Các hàm
kích hoạt thường bị ép vào một khoảng giá trị xác định, do đó thường được gọi là các
hàm bẹp (squashing). Các hàm kích hoạt hay được sử dụng là:
Hàm đồng nhất (Linear function, Identity function ): g( (x)) = x Nếu coi các đầu
vào là một đơn vị thì chúng sẽ sử dụng hàm này. Đôi khi một hằng số được nhân với
net-input để tạo ra một hàm đồng nhất.

Hàm bước nhị phân (Binary step function, Hard limit function) Hàm này cũng được
biết đến với tên "Hàm ngưỡng" (Threshold function hay Heaviside function). Đầu ra của
hàm này được giới hạn vào một trong hai giá trị:

5
Dạng hàm này được sử dụng trong các mạng chỉ có một lớp. Trong hình vẽ sau,
được chọn bằng 1.

Hàm sigmoid (Sigmoid function (logsig)):


1
g(x) = (2.1)
1 + e−x
Hàm này đặc biệt thuận lợi khi sử dụng cho các mạng được huấn luyện (trained) bởi
thuật toán Lan truyền ngược (back-propagation), bởi vì nó dễ lấy đạo hàm, do đó có thể
giảm đáng kể tính toán trong quá trình huấn luyện. Hàm này được ứng dụng cho các
chương trình ứng dụng mà các đầu ra mong muốn rơi vào khoảng [0,1].

Hàm sigmoid lưỡng cực (Bipolar sigmoid function (tansig)):

1 − e−x
g(x) = (2.2)
1 + e−x
Hàm này có các thuộc tính tương tự hàm sigmoid. Nó làm việc tốt đối với các ứng dụng
có đầu ra yêu cầu trong khoảng [-1,1].
Các hàm chuyển của các đơn vị ẩn (hidden units) là cần thiết để biểu diễn sự phi
tuyến vào trong mạng. Lý do là hợp thành của các hàm đồng nhất là một hàm đồng nhất.
Mặc dù vậy nhưng nó mang tính chất phi tuyến (nghĩa là, khả năng biểu diễn các hàm
phi tuyến) làm cho các mạng nhiều tầng có khả năng rất tốt trong biểu diễn các ánh xạ

6
phi tuyến. Tuy nhiên, đối với luật học lan truyền ngược, hàm phải khả vi (differentiable)
và sẽ có ích nếu như hàm được gắn trong một khoảng nào đó. Do vậy, hàm sigmoid là
lựa chọn thông dụng nhất.
Đối với các đơn vị đầu ra (output units), các hàm chuyển cần được chọn sao cho
phù hợp với sự phân phối của các giá trị đích mong muốn. Chúng ta đã thấy rằng đối với
các giá trị ra trong khoảng [0,1], hàm sigmoid là có ích; đối với các giá trị đích mong
muốn là liên tục trong khoảng đó thì hàm này cũng vẫn có ích, nó có thể cho ta các giá
trị ra hay giá trị đích được căn trong một khoảng của hàm kích hoạt đầu ra. Nhưng nếu
các giá trị đích không được biết trước khoảng xác định thì hàm hay được sử dụng nhất
là hàm đồng nhất (identity function). Nếu giá trị mong muốn là dương nhưng không
biết cận trên thì nên sử dụng một hàm kích hoạt dạng mũ (exponential output activation
function).

2.2.2 Mạng nơ ron truyền thẳng (Feed-forward neural network)


2.2.2.1 Đặc điểm, kiến trúc của mạng Nơ ron truyền thẳng:Mạng nơ ron truyền thẳng
[9] là mạng nơ ron nhân tạo mà các liên kết giữa các nơ ron (nút) không tạo thành chu
kì. Đây là kiến trúc đơn giản nhất của mạng nơ ron vì thông tin chỉ được truyền đi theo
một hướng và không bao giờ ngược lại.
Mạng nơ ron truyền thẳng ở dạng lớp đơn ( có 1 lớp hidden layer): Trong mô hình
này, một loạt các đầu vào được nhân với trọng số. Mỗi giá trị sau đó được cộng lại với
nhau để có được tổng các giá trị vào có trọng số. Nếu tổng này nằm trên một ngưỡng cụ
thể, thưởng đặt là 0, thì giá trị được tạo ra thường là 1, ngược lại thì giá trị tạo ra là -1.
Mô hình dạng lớp đơn này thường được sử dụng trong các nhiệm vụ phân loại. Thêm
nữa, nếu sử dụng phương thức gọi là quy tắc delta, mạng nơ ron này có thể so sánh kết
quả đầu ra của các nút với giá trị trong tập dữ liệu kiểm tra (trong phương pháp học có
giám sát) sau đó điều chỉnh trọng số để thu được giá trị đầu ra chính xác hơn. Quá trình
này là một hình thức của giảm độ dốc (gradient descent).

Hình 2.3 Mạng Nơ ron truyền thẳng

Trong mô hình truyền thẳng nhiều lớp (có nhiều hidden layer), quá trình điều chỉnh
trọng số cũng diễn ra tương tự như trong mô hình lớp đơn bên trên, tuy nhiên nó được

7
định nghĩa cụ thể hơn và được gọi là lan truyền ngược (backpropagation). Trong đó, mỗi
lớp ẩn trong mạng được điều chỉnh theo các giá trị đầu ra do lớp cuối cùng tạo ra. Mặc
dù mạng nơ ron truyền thẳng khá đơn giản nhưng chính kiến trúc đơn giản của chúng lại
được sử dụng như một lợi thế trong các ứng dụng học máy cụ thể.

Hình 2.4 Mạng Nơ ron truyền thẳng nhiều lớp

Luồng thông tin trong mạng nơron truyền thẳng sẽ đi từ trái qua phải, các giá trị
đầu vào x được truyền tới các nơron lớp ẩn thông qua trọng số kết nối sau đó đưa tới lớp
ra. Trọng số kết nối từ phần tử vào thứ i tới nơron ẩn thứ j đợc ký hiệu làwi j, trọng số
kết nối từ nơron ẩn thứ j tới các nơron ra thứ k được ký hiệu là v j k.
Với lớp nơron ẩn thứ j:

Với nơron ra thứ k:

Hàm kích hoạt:


1
f(x) = (2.3)
1 + e−x

Hàm f đơn điệu tăng, khả vi và cho giá trị thuộc [0; 1]. Với một mẫu đầu vào được
cho trước, mạng sẽ tạo ra giá trị đầu ra thực tế zk , giá trị này được so sánh với giá trị
mẫu mong muốn ở đầu ra dk . Các trọng số của mạng sau đó được hiệu chỉnh để giảm
lỗi và đưa ra các mẫu tiếp theo. Sau đó trọng số sẽ tiếp tục được hiệu chỉnh tới khi tổng
lỗi qua tất cả các mẫu học được giảm tới mức cho phép. Thuật toán học này được hiểu
như thuật toán lan truyền ngược.

8
2.2.2.2 Ứng dụng của mạng Nơ ron truyền thẳng:
Ưu điểm:

• Hỗ trợ tính toán song song ở mức rất cao.

• Có khả năng chịu nhiều lỗi, nhờ các tính toán song song.

• Có thể được thiết kế để tự thích nghi (Các trọng số, cấu trúc mạng).

Nhược điểm:

• Không có quy tắc tổng quát để xác định cấu trúc mạng và các tham số học tối ưu
cho một lớp, một bài toán xác định.

• Không có phương pháp tổng quát để đánh giá hoạt động bên trong của ANN (vì vậy
hệ thống ANN được xem như là một “hộp đen”).

• Rất khó (không thể) để giải thích cho người dùng.

• Rất khó để dự đoán hiệu năng của hệ thống trong tương lai (khả năng khái quát hóa
của hệ thống học)

Ứng dụng của mạng Nơ ron truyền thẳng

• Ứng dụng mạng nơron truyền thẳng trong dự báo dữ liệu

• Ứng dụng mạng nơron truyền thẳng trong dự báo thời tiết

• Ứng dụng mạng nơron truyền thẳng trong xử lý tín hiệu

2.2.3 Convolution Layer


Convolution layer là lớp quan trọng nhất và cũng là lớp đầu tiên của của mô hình
CNN. Lớp này có chức năng chính là phát hiện các đặc trưng có tính không gian hiệu quả.
Trong tầng này có 4 đối tượng chính là: ma trận đầu vào, bộ filters, và receptive field,
feature map. Conv layer nhận đầu vào là một ma trận 3 chiều và một bộ filters cần phải
học. Bộ filters này sẽ trượt qua từng vị trí trên bức ảnh để tính tích chập (convolution)
giữa bộ filter và phần tương ứng trên bức ảnh. Phần tưng ứng này trên bức ảnh gọi là
receptive field, tức là vùng mà một neuron có thể nhìn thấy để đưa ra quyết định, và mà
trận cho ra bới quá trình này được gọi là feature map. Để hình dung, các bạn có thể tưởng
tượng, bộ filters giống như các tháp canh trong nhà tù quét lần lượt qua không gian xung
quanh để tìm kiếm tên tù nhân bỏ trốn. Khi phát hiện tên tù nhân bỏ trốn, thì chuông
báo động sẽ reo lên, giống như các bộ filters tìm kiếm được đặc trưng nhất định thì tích
chập đó sẽ cho giá trị lớn.

9
Với ví dụ ở bên dưới, dữ liệu đầu vào ở là ma trận có kích thước 8x8x1, một bộ
filter có kích thước 2x2x1, feature map có kích thước 7x7x1. Mỗi giá trị ở feature map
được tính bằng tổng của tích các phần tử tương ứng của bộ filter 2x2x1 với receptive
field trên ảnh. Và để tính tất cả các giá trị cho feature map, các bạn cần trượt filter từ
trái sáng phải, từ trên xuống dưới. Do đó, các bạn có thể thấy rằng phép convolution
bảo toàn thứ tự không gian của các điểm ảnh. ví dụ điểm góc gái của dữ liệu đầu vào sẽ
tương ứng với bên một điểm bên góc trái của feature map.

2.2.3.1 Tầng convolution như là feature detector


Tầng convolution có chức năng chính là phát hiện đặc trưng cụ thể của bức ảnh.
Những đặc trưng này bao gồm đặc trưng cơ bản là góc,cạnh, màu sắc, hoặc đặc trưng
phức tạp hơn như texture của ảnh. Vì bộ filter quét qua toàn bộ bức ảnh, nên những đặc
trưng này có thể nằm ở vị trí bất kì trong bức ảnh, cho dù ảnh bị xoáy trái/phải thì những
đặc trưng này vẫn bị phát hiện.
Dùng filter ở trên trược qua ảnh của nhân vật Olaf trong trong bộ phim Frozen.
Chúng ta thấy rằng, chỉ ở những vị trí trên bức ảnh có dạng góc như đặc trưng ở filter
thì mới có giá trị lớn trên feature map, những vị trí còn lại sẽ cho giá trị thấp hơn. Điều
này có nghĩa là, filter đã phát hiện thành công một dạng góc/cạnh trên dự liệu đầu vào.
Tập hơn nhiều bộ filters sẽ cho phép các bạn phát hiện được nhiều loại đặc trưng khác
nhau,và giúp định danh được đối tượng.

2.2.3.2 Các tham số của tầng convolution: Kích thước bộ filter, stride và padding
Kích thước bộ filter là một trong những tham số quan trọng nhất của tầng convo-
lution. Kích thước này tỉ lệ thuận với số tham số cần học tại mỗi tầng convolution và là
tham số quyết định receptive field của tầng này. Kích thước phổ biến nhất của bộ filter
là 3x3.
Kích thước filter của tầng convolution hầu hết đều là số lẻ, ví dụ như 3x3 hay 5x5.
Với kích thước filter lẻ, các giá trị của feature map sẽ xác định một tâm điểm ở tầng phía
trước. Nếu các bạn chọn filter có kích thước 2x2, 4x4 thì chúng ta sẽ gặp khó khăn khi
muốn tìm vị trí tương ứng của các giá trị feature map trên không gian ảnh.
Ở những trường hợp đặt biệt như filter có kích thước 1x1, hay có kích thước bằng
với ma trận đầu vào, tầng convolution có ý nghĩa rất thú vị. Khi có kích thước 1x1, tầng
convolution xem mỗi điểm như một đặc trưng riêng biệt, có chức năng giảm chiều (tăng
chiều) khi số lượt feature map ở tầng sau nhỏ hơn (lớn hơn) tầng trước. Filter 1x1 đã
được sử dụng trong kiến trúc mạng phổ biến như Inception networks. Trong khi đó, filter
với kích thước bằng ảnh đầu vào, tầng convolution có chức năng y hệt fully connected
layer.

10
Khi các bạn áp dụng phép convolution thì ma trận đầu vào sẽ có nhỏ dần đi, do đó
số layer của mô hình CNN sẽ bị giới hạn, và không thể xậy đựng deep nets mong muốn.
Để giải quyết tình trạng này, các bạn cần padding vào ma trận đầu vào để đảm bảo kích
thước đầu ra sau mỗi tầng convolution là không đổi. Do đó có thể xậy dựng được mô
hình với số tầng convolution lớn tùy ý. Một cách đơn giản và phổ biến nhất để padding
là sử dụng hàng số 0, ngoài ra các bạn cũng có thể sử dụng reflection padding hay là
symmetric padding.

2.2.3.3 Nonlinear Layer


ReLU (Rectified Linear Units, f = max(0, x)) là hàm kích hoạt phổ biến nhất cho
CNN tại thời điểm của bài viết, được giới thiệu bởi Geoffrey E. Hinton năm 2010. Trước
khi hàm ReLU được áp dụng thì những hàm như sigmoid hay tanh mới là những hàm
được sử dụng phổ biến. Hàm ReLU được ưa chuộng vì tính toán đơn giản, giúp hạn chế
tình trạng vanishing gradient, và cũng cho kết quả tốt hơn. ReLU cũng như những hàm
kích hoạt khác, được đặt ngay sau tầng convolution, ReLU sẽ gán những giá trị âm bằng
0 và giữ nguyên giá trị của đầu vào khi lớn hơn 0.
ReLU cũng có một số vấn đề tiềm ẩn như không có đạo hàm tại điểm 0, giá trị của
hàm ReLU có thể lớn đến vô cùng và nếu chúng ta không khởi tạo trọng số cẩn thận,
hoặc khởi tạo learning rate quá lớn thì những neuron ở tầng này sẽ rơi vào trạng thái
chết, tức là luôn có giá trị < 0.

2.2.3.4 Pooling Layer


Sau hàm kích hoạt, thông thường chúng ta sử dụng tầng pooling. Một số loại
pooling layer phổ biến như là max-pooling, average pooling, với chức năng chính là
giảm chiều của tầng trước đó. Với một pooling có kích thước 2x2, các bạn cần phải
trược filter 2x2 này trên những vùng ảnh có kích thước tương tự rồi sau đó tính max, hay
average cho vùng ảnh đó.
Ý tương đằng sau tầng pooling là vị trí tuyết đối của những đặc trưng trong không
gian ảnh không còn cần cần thiết, thay vào đó vị trí tương đối giữ các đặc trưng đã đủ để
phân loại đối tượng. Hơn giảm tầng pooling có khả năng giảm chiều cực kì nhiều, làm
hạn chế overfit, và giảm thời gian huấn luyện tốt.

2.2.3.5 Fully Connected Layer


Tầng cuối cùng của mô hình CNN trong bài toán phân loại ảnh là tầng fully con-
nected layer. Tầng này có chức năng chuyển ma trận đặc trưng ở tầng trước thành vector
chứa xác suất của các đối tượng cần được dự đoán. Ví dụ, trong bài toán phân loại số
viết tay MNIST có 10 lớp tương ứng 10 số từ 0-1, tầng fully connected layer sẽ chuyển

11
ma trận đặc trưng của tầng trước thành vector có 10 chiều thể hiện xác suất của 10 lớp
tương ứng.
Và cuối cùng, quá trình huấn luyện mô hình CNN cho bài toán phân loại ảnh cũng
tương tự như huấn luyện các mô hình khác. Chúng ta cần có hàm độ lỗi để tính sai số giữ
dự đoán của mô hình và nhãn chính xác, cũng như sử dụng thuật toán backpropagation
cho quá trình cập nhật trọng số.

2.2.4 Tổng quan về mạng Nơ-ron CNN


Convolutional Neural Network (CNN hoặc ConvNet) được tạm dịch là: Mạng nơ
ron tích tụ. Đây được xem là một trong những mô hình của Deep Learning – tập hợp
các thuật toán để có mô hình dữ liệu trừu tượng hóa ở mức cao bằng cách sử dụng nhiều
lớp xử lý cấu trúc phức tạp. Hiểu đơn giản, CNN là một lớp của mạng nơ-ron sâu, được
áp dụng phổ biến nhất để phân tích hình ảnh trực quan. CNN là một trong những mô
hình deep learning phổ biến nhất và có ảnh hưởng nhiều nhất trong cộng đồng Computer
Vision. CNN được dùng trong trong nhiều bài toán như nhân dạng ảnh, phân tích video,
ảnh MRI, hoặc cho bài các bài của lĩnh vự xử lý ngôn ngữ tự nhiên,và hầu hết đều giải
quyết tốt các bài toán này.
CNN cũng có lịch sử khá lâu đời. Kiến trúc gốc của mô hình CNN được giới
thiệu bởi một nhà khoa học máy tính người Nhật vào năm 1980. Sau đó, năm 1998,
Yan LeCun lần đầu huấn luyện mô hình CNN với thuật toán backpropagation cho bài
toán nhận dạng chữ viết tay. Tuy nhiên, mãi đến năm 2012, khi một nhà khoa học máy
tính người Ukraine Alex Krizhevsky (đệ của Geoffrey Hinton) xây dựng mô hình CNN
(AlexNet) và sử dụng GPU để tăng tốc quá trình huấn luyện deep nets để đạt được top
1 trong cuộc thi Computer Vision thường niên ImageNet với độ lỗi phân lớp top 5 giảm
hơn 10 so với những mô hình truyền thống trước đó, đã tạo nên làn sóng mãnh mẽ
sử dụng deep CNN với sự hỗ trợ của GPU để giải quyết càng nhiều các vấn đề trong
Computer Vision.
Hiện tại, tất cả chúng ta chưa có định nghĩa một cách đúng mực nhất về thuật toán
CNN. Mạng CNN được phong cách thiết kế với mục tiêu giải quyết và xử lý tài liệu trải
qua nhiều lớp mảng. Ngoài ra, CNN hoàn toàn có thể giúp bạn tạo ra được mạng lưới hệ
thống mưu trí, phản ứng với độ đúng chuẩn khá cao.
Ví dụ: Bạn có thể sử dụng loại mạng thần kinh này trong các ứng dụng như: nhận
dạng hình ảnh, nhận dạng khuôn mặt và hiện tại đã được đưa vào các nền tảng Facebook,
Google,. . .
So với những mạng nơ ron thường thì, mạng CNN nhận nguồn vào là một mảng
hai chiều và hoạt động giải trí trực tiếp trên hình ảnh thay vì tập trung chuyên sâu trích
xuất tính năng mà bạn thường thấy ở những mạng nơ ron khác .

12
2.3 Cấu trúc CNN
Tích chập được ứng dụng phổ biến trong lĩnh vực thị giác máy tính. Thông qua các
phép tích chập, các đặc trưng chính từ ảnh được trích xuất và truyền vào các tầng tích
chập (layer convolution). Mỗi một tầng tích chập sẽ bao gồm nhiều đơn vị mà kết quả
ở mỗi đơn vị là một phép biến đổi tích chập từ layer trước đó thông qua phép nhân tích
chập với bộ lọc.
Về cơ bản thiết kế của một mạng nơ ron tích chập 2 chiều có dạng như sau:
INPUT − > [[CONV − > RELU]∗N− > POOL?]∗M− > [FC− > RELU]∗K− >
FC
Trong đó:

• INPUT: Tầng đầu vào

• CONV: Tầng tích chập

• RELU: Tầng kích hoạt. Thông qua hàm kích hoạt (activation function), thường là
ReLU hoặc LeakyReLU để kích hoạt phi tuyến

• POOL: Tầng tổng hợp, thông thường là Max pooling hoặc có thể là Average pooling
dùng để giảm chiều của ma trận đầu vào.

• FC: Tầng kết nối hoàn toàn. Thông thường tầng này nằm ở sau cùng và kết nối với
các đơn vị đại diện cho nhóm phân loại.

Các kí hiệu []N, []M hoặc []*K ám chỉ các khối bên trong [] có thể lặp lại nhiều lần
liên tiếp nhau. M, K là số lần lặp lại. Kí hiệu -> đại diện cho các tầng liền kề nhau mà
tầng đứng trước sẽ làm đầu vào cho tầng đứng sau. Dấu ? sau POOL để thể hiện tầng
POOL có thể có hoặc không sau các khối tích chập.
Như vậy ta có thể thấy một mạng nơ ron tích chập về cơ bản có 3 quá trình khác
nhau:

• Quá trình tích chập (convolution)

• Quá trình tổng hợp (max pooling)

• Quá trình kết nối hoàn toàn (fully connected)

13
Hình 2.5 Hidden layers and classification

2.4 YOLO - You Only Look Once


2.4.1 Giới thiệu chung
Object detection là một trong những đề tài rất hot của deep learning bởi khả năng
ứng dụng cao, dữ liệu dễ chuẩn bị và kết quả ứng dụng thì cực kì nhiều. Các thuật toán
mới của object detection như YOLO, SSD có tốc độ khá nhanh và độ chính xác cao nên
giúp cho Object Detection có thể thực hiện được các tác vụ dường như là real time, thậm
chí là nhanh hơn so với con người mà độ chính xác không giảm. Các mô hình cũng trở
nên nhẹ hơn nên có thể hoạt động trên các thiết bị IoT để tạo nên các thiết bị thông minh.
Ngoài ra, một thuật toán object detection có thể tạo ra những ứng dụng rất đa dạng
như: Đếm số lượng vật thể, thanh toán tiền tại quầy hàng, chấm công tự động, phát hiện
vật thể nguy hiểm như súng, dao,. . . . và rất nhiều các ứng dụng khác. Có thể nói dường
bất kì lĩnh vực nào cũng đều có thể ứng dụng được object detection.
Bên cạnh đó nguồn dữ liệu ảnh lại vô cùng đa dạng và sẵn có vì chỉ cần google là
tìm được tất cả những gì bạn cần. Đó cũng là một ưu điểm để huấn luyện model object
detection.
Chính vì tính ứng dụng rất cao, dễ chuẩn bị dữ liệu và huấn luyện mô hình đơn giản
nên bài viết này tôi sẽ giới thiệu tới các bạn một thuật toán object detection state-of-art,
đó chính là YOLO.
YOLO trong object detection có nghĩa là “You only look once”. Tức là chúng ta
chỉ cần nhìn 1 lần là có thể phát hiện ra vật thể. Thật vậy, về độ chính xác thì YOLO
có thể không phải là thuật toán tốt nhất nhưng nó là thuật toá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 quá giảm so với các model thuộc top đầu.
YOLO là thuật toán object detection 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 toán classification mà nó còn xác định location 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.

14
2.4.2 Kiến trúc
Kiến trúc YOLO bao gồm: base network là các mạng convolution 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 version cho nhiều input shape khác nhau.

Hình 2.6 Sơ đồ kiến trúc mạng YOLO

Trong YOLO version 3 tác giả áp dụng một mạng feature extractor là darknet-53.
Mạng này gồm 53 convolutional layers kết nối liên tiếp, mỗi layer được theo sau bởi một
batch normalization và một activation Leaky Relu. Để giảm kích thước của output sau
mỗi convolution layer, tác giả down sample bằng các filter với kích thước là 2. Mẹo này
có tác dụng giảm thiểu số lượng tham số cho mô hình.

Hình 2.7 Các layer trong mạng darknet-53

15
Các bức ảnh khi được đưa vào mô hình sẽ được scale để về chung một kích thước
phù hợp với input shape của mô hình và sau đó được gom lại thành batch đưa vào huấn
luyện.
Hiện tại YOLO đang hỗ trợ 2 đầu vào chính là 416x416 và 608x608. Mỗi một đầu
vào sẽ có một thiết kế các layers riêng phù hợp với shape của input. Sau khi đi qua các
layer convolutional thì shape 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.
Kích thước của feature map sẽ phụ thuộc vào đầu vào. Đối với input 416x416 thì
feature map có các kích thước là 13x13, 26x26 và 52x52. Và khi input là 608x608 sẽ tạo
ra feature map 19x19, 38x38, 72x72.

2.4.3 Out 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:

yT = [p0 , ⟨tx ,ty ,tw ,th ⟩, ⟨ p1 , p2 , ..., pc ⟩] (2.4)


| {z } | {z }
boundingbox scoreso f cclasses

Trong đó

• p0 là xác suất dự báo vật thể xuất hiện trong bounding box.

• ⟨tx ,ty ,tw ,th ⟩ giúp xác định bounding box. Trong đó là tọa độ tâm và là kích thước
| {z }
boundingbox
rộng, dài của bounding box.

• ⟨p1 , p2 , . . . , pc ⟩ là véc tơ phân phối xác suất dự báo của các classes.
| {z }
scoreso f cclasses

Việc hiểu output khá là quan trọng để chúng ta cấu hình tham số chuẩn xác khi
huấn luyện model qua các open source như darknet. Như vậy output sẽ được xác định
theo số lượng classes theo công thức (nc lass + 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à: (nc lass + 5) × 3 = 85 × 3 = 255

16
Hình 2.8 Kiến trúc một output của model YOLO

2.4.4 Dự báo trên nhiều feature map


Cũng tương tự như SSD, YOLOv3 dự báo trên nhiều feature map. Những feature
map ban đầu có kích thước nhỏ giúp dự báo được các object kích thước lớn. Những
feature map sau có kích thước lớn hơn trong khi anchor box được giữ cố định kích thước
nên sẽ giúp dự báo các vật thể kích thước nhỏ.

Hình 2.9 Các feature maps của mạng YOLOv3 với input shape là 416x416, output là 3
feature maps có kích thước lần lượt là 13x13, 26x26 và 52x52.

Trên mỗi một cell của các feature map chúng ta sẽ áp dụng 3 anchor box để dự
đoán vật thể. Như vậy số lượng các anchor box khác nhau trong một mô hình YOLO sẽ
là 9 (3 featue map x 3 anchor box).
Đồng thời trên một feature map hình vuông S x S, mô hình YOLOv3 sinh ra một
số lượng anchor box là: S x S x 3. Như vậy số lượng anchor boxes trên một bức ảnh sẽ
là: (13 × 13 + 26 × 26 + 52 × 52) × 3 = 10647(anchorboxes)

17
Đây là một số lượng rất lớn và là nguyên nhân khiến quá trình huấn luyện mô hình
YOLO vô cùng chậm bởi chúng ta cần dự báo đồng thời nhãn và bounding box trên đồng
thời 10647 bounding boxes.
Một số lưu ý khi huấn luyện YOLO:

• Khi huấn luyện YOLO sẽ cần phải có RAM dung lượng lớn hơn để save được 10647
bounding boxes như trong kiến trúc này.

• Không thể thiết lập các batchsize quá lớn như trong các mô hình classification vì
rất dễ Out of memory. Package darknet của YOLO đã chia nhỏ một batch thành các
subdivisions cho vừa với RAM.

• Thời gian xử lý của một step trên YOLO lâu hơn rất rất nhiều lần so với các mô hình
classification. Do đó nên thiết lập steps giới hạn huấn luyện cho YOLO nhỏ. Đối
với các tác vụ nhận diện dưới 5 classes, dưới 5000 steps là có thể thu được nghiệm
tạm chấp nhận được. Các mô hình có nhiều classes hơn có thể tăng số lượng steps
theo cấp số nhân.

2.4.5 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ẽ tinh chỉnh lại
anchor box để tạo ra bounding box dự đoá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.

• Mỗi một vật thể trong hình ảnh huấn luyện được phân bố về một cell trên feature
map mà chứa điểm mid point của vật thể. Chẳng hạn như hình chú chó trong hình
3 sẽ được phân về cho cell màu đỏ vì điểm mid point của ảnh chú chó rơi vào đúng
cell này. Từ cell ta sẽ xác định các anchor boxes bao quanh hình ảnh chú chó.

18
Hình 2.10 Xác định anchor box cho một vật thể

Như vậy khi xác định một vật thể ta sẽ cần xác định 2 thành phần gắn liền với nó là
(cell, anchor box). Không chỉ riêng mình cell hoặc chỉ mình anchor box. Một số trường
hợp 2 vật thể bị trùng mid point, mặc dù rất hiếm khi xảy ra, thuật toán sẽ rất khó xác
định được class cho chúng.

2.4.6 Hàm loss


Cũng tương tự như SSD, hàm loss function của YOLO chia thành 2 phần:

S2 B

q
1ob j
p
Lloc = λcoord ∑ ∑ 2 2
p
ij [(x i − x̂ i ) + (yi − ŷi ) + ( wi − ŵi ) + ( hi − ĥi )2 ] (2.5)
2
i=0 j=0

S2 B S2
Lcls = ∑ ∑ 1ob j ob j  2
i j + λnoob j (1 − 1i j ) (Ci j − Ĉi j ) + ∑ ∑ 1ob j
i (pi (c) − p̂i (c))
2
(2.6)
i=0 j=0 i=0 c∈C
| {z } | {z }
cellcontainob ject probabilitydistributionclasses

L = Lloc + Lcls (2.7)

Có thể ban đầu công thức trên khá khó hiểu với người bắt đầu. Chúng ta hãy hiểu
đơn giản hóa mục đích của chúng:

• Lloc là hàm mất mát của bounding box dự báo so với thực tế.

• Lcls là hàm mất mát của phân phối xác suất. Trong đó tổng đầu tiên là mất mát của
dự đoán có vật thể trong cell hay không? Và tổng thứ 2 là mất mát của phân phối
xác suất nếu có vật thể trong cell.

19
2.4.7 Dự báo bounding box
Để dự báo bounding box cho một vật thể chúng ta dựa trên một phép biến đổi từ
anchor box và cell.
YOLOv2 vả YOLOv3 dự đoán bounding box sao cho nó sẽ không lệch khỏi vị trí
trung tâm quá nhiều. Nếu bounding box dự đoán có thể đặt vào bất kỳ phần nào của hình
ảnh, như trong mạng regional proposal network, việc huấn luyện mô hình có thể trở nên
không ổn định.
Cho một anchor box có kích thước (pw , ph ) tại cell nằm trên feature map với góc
trên cùng bên trái của nó là (cx , cy ), mô hình dự đoán 4 tham số (tx ,ty ,tw ,th ) trong đó 2
tham số đầu là độ lệch (offset) so với góc trên cùng bên trái của cell và 2 tham số sau là
tỷ lệ so với anchor box. Và các tham số này sẽ giúp xác định bounding box dự đoán b có
tâm (bx , by ) và kích thước (bw , bh ) thông qua hàm sigmoid và hàm exponential như các
công thức bên dưới:
bx = σ (tx ) + cx (2.8)
by = σ (ty ) + cy (2.9)
bw = pw etw (2.10)
bh = ph eth (2.11)

Ngoài ra do các tọa độ đã được hiệu chỉnh theo width và height của bức ảnh nên
luôn có giá trị nằm trong ngưỡng [0, 1]. Do đó khi áp dụng hàm sigmoid giúp ta giới
hạn được tọa độ không vượt quá xa các ngưỡng này.

Hình 2.11 Công thức ước lượng bounding box từ anchor box

20
2.4.8 Non-max suppression
Do thuật toán YOLO dự báo ra rất nhiều bounding box trên một bức ảnh nên đối
với những cell có vị trí gần nhau, khả năng các khung hình bị overlap là rất cao. Trong
trường hợp đó YOLO sẽ cần đến non-max suppression để giảm bớt số lượng các khung
hình được sinh ra một cách đáng kể.

Hình 2.12 non-max suppression

Các bước của non-max suppression:

• Step 1: Đầu tiên chúng ta sẽ tìm cách giảm bớt số lượng các bounding box bằng
cách lọc bỏ toàn bộ những bounding box có xác suất chứa vật thể nhỏ hơn một
ngưỡng threshold nào đó, thường là 0.5.

• Step 2: Đối với các bouding box giao nhau, non-max suppression sẽ lựa chọn ra
một bounding box có xác xuất chứa vật thể là lớn nhất. Sau đó tính toán chỉ số giao
thoa IoU với các bounding box còn lại.

Nếu chỉ số này lớn hơn ngưỡng threshold thì điều đó chứng tỏ 2 bounding boxes
đang overlap nhau rất cao. Ta sẽ xóa các bounding có có xác xuất thấp hơn và giữ lại
bouding box có xác xuất cao nhất. Cuối cùng, ta thu được một bounding box duy nhất
cho một vật thể.

2.5 Nhận diện văn bản bằng Tesseract


OCR (Optical Character Recognition). Chuyên dùng để đọc các ký tự trong ảnh
rồi chuyển thành text để giảm công sức đánh máy. Trong đó phổ biến nhất là nhận diện
văn bản bằng Tesseract.Tesseract là thư viện OCR nổi tiếng do độ chính xác cao hơn hẳn
các thư viên khác. Tesseract có thể chạy độc lập hoặc tích hợp với OpenCV đều được.
Như vậy, với cơ chế như thế nào mà Tesseract có thể mang đến sự hiệu quả cũng
như được sử dụng khá nhiều trong việc nhận dạng ký tự như hiện nay. Về cơ bản, quá

21
trình nhận diện sẽ diễn ra từng bước trải qua bốn bước chính như phân tích layout, tìm
kiếm dòng, tìm kiếm ký tự, nhận diện ký tự và chỉnh sửa kết quả.

Hình 2.13 Kết quả phân tích của Tesseract OCR

Trước tiên, hình ảnh sẽ được phân tích để tìm ra các vùng kết nối (connected
component). Bước này cho phép OCR dễ dàng nhận biết những vùng ký tự ngược để có
thể nhận diện những ký tự bên trong. Trong Tesseract, những vùng chứa ký tự này được
gọi là Blob.
Tiếp đến, những blob này sẽ tiếp tục được phân tích để tìm ra các dòng, rồi đến các
ký tự. Việc tìm các dòng sẽ được xử lý bởi thuật toán dựa vào vùng ký tự, cỡ chữ cùng
toạ độ (trục x). Trong quá trình này, các blob cũng có thể được ghép với nhau nếu OCR
nhận thấy chúng chứa các ký tự trong cùng một dòng. Những blob được ghép phải trùng
ít nhất 50
Sau khi đã xác định được các dòng ký tự cùng các đối số tương ứng, dòng ký tự sẽ
được chia nhỏ thành các từ dựa vào các ký tự phân cách. Lúc này, văn bản cố định sẽ
được chia nhỏ và tiến hành nhận diện. Trong khi đó, văn bản không cố định hoặc chưa
chắc chắn thì sẽ được chia nhỏ thành các từ dù chưa chắc chắn. Nhưng nhờ vào bước
nhận diện, chúng ta sẽ thu được kết quả cuối cùng chính xác hơn.

Hình 2.14 Chia nhỏ các ký tự trong từ (fixed word)

22
Bước vào quá trình nhận diện, input của chúng ta sẽ được đánh giá, phân tích hai
lần. Ở lần đầu tiên, OCR sẽ nhận diện ký tự với kết quả phân tích ở bước trước đó. Các
kết quả nhận diện thoả mãn yêu cầu sẽ được đưa vào tập tin huấn luyện để hỗ trợ cho quá
trình nhận diện lần thứ hai với các kết quả chưa đạt yêu cầu. Đương nhiên, việc xác nhận
kết quả có thoả mãn yêu cầu hay không cần phải dựa trên nhiều tiêu chí vì nhận diện nội
dung phải trải qua một quá trình lặp đi lặp lại gồm các bước nhận diện ký tự, ghép ký tự
và so khớp với từ điển. Các tiêu chí đó bao gồm khoảng cách của các ký tự, độ phù hợp
với từ điển và khoảng cách đến các dấu câu.

Hình 2.15 Quy trình nhận diện từ của Tesseract

23
CHƯƠNG 3. BÀI TOÁN NHẬN DẠNG

3.1 Khái quát hệ thống nhận dạng biển số xe


Hệ thống tự động nhận diện biển số xe là hệ thống sử dụng camera để thực hiện
việc kiếm tra, xác định biển số của phương tiện một cách tự động, từ đó có khả năng hỗ
trợ truy vấn các thông tin chi tiết cấp cao hơn như tên chủ phương tiện, thông tin đăng
ký, . . . Hệ thống này nhằm giải quyết các vấn đề liên quan đến an ninh, thống kê khảo
sát, giám sát và theo vết. . .
Có rất nhiều giải pháp, thiết kế hệ thống, thiết bị khác nhau để giải quyết các yêu
cầu liên quan tới lĩnh vực này tùy theo từng điều kiện áp dụng: ban đêm hay ban ngày,
không gian mở hay đóng, ứng dụng chuyên trách (bãi giữ xe,. . . ), hay ứng dụng kết hợp
(giám sát giao thông, hệ thống theo dõi an ninh, . . . ), ứng dụng cục bộ hay diện rộng
trên phạm vi công cộng, tính địa phương. . .

Hình 3.1 Minh họa một hệ thống nhận dạng biển số xe

3.2 Những yêu cầu đối với hệ thống tự động nhận dạng biển số xe
Từ những yêu cầu phân loại cụ thể phong phú trên ta có thể rút ra những khó khăn
mà một hệ thống nhận dạng biển số xe thông thường phải vượt qua để đạt được độ chính
xác chấp nhận được là :

24
• Điều kiện tự nhiên của không gian và thời gian áp dụng hệ thống: ánh sáng, thời
tiết, ...Điều này rất dễ hiểu vì rỏ ràng nhận diện biển số của một chiếc xe khi trời
đang mưa bao giờ cũng khó khăn hơn khi trời nắng ráo.

• Điều kiện bối cảnh: Trong một nơi mà phông nền đơn giản chỉ với các mặt phẳng
thì bao giờ việc nhận diện cũng dễ hơn là một nơi mà khung cảnh hỗn độn, người
xe tấp nập.

• Điều kiện hiện trạng của biển số: bạn nên nhớ rằng không phải mọi biển số đều có
hiện trạng mới ra lò, chúng có thể cong vênh, sơn có thể tróc, bạc màu...

• Điều kiện về cách thức bố trí thiết bị: cách lắp đặt camera sẽ cho bạn một cơ hội
hay thách thức trong quá trình chạy thuật toán. Tốc độ di chuyển của xe, tốc độ bắt
hình của camera cũng tạo ra những vấn đề không nhỏ.

3.3 Phương pháp giải quyết bài toán


3.3.1 Các bài toán đặt ra trong hệ thống nhận dạng biển số xe
Bài toán 1: Chọn lựa các khung và trích chọn ảnh từ dãy tín hiệu đầu vào là đoạn
phim, camera kỹ thuật số hay thiết bị ghi hình khác. Ảnh thu được sẽ truyền vào máy
tính.
Bài toán 2: Từ ảnh đầu vào(kết quả từ Bài toán 1) thực hiện việc dò tìm và phát
hiện ra vùng con có khả năng chứa biển số xe.
Bài toán 3: Từ các vùng con (kết quả có được từ Bài toán 2)thực hiện một số thao
tác để xác định chính xác vùng con nào là vùng chứa biển số xe. Kết quả của bài toán
này là một hay một tập các ảnh con chứa biển số xe.
Bài toán 4: Giải quyết bài toán nhận dạng ký tự cho tập kết quả từ Bài toán 3.
Bằng cách áp dụng các phương pháp và kỹ thuật của nhận dạng ký tự.

25
3.4 Thu thập và chuẩn bị dữ liệu training
3.4.1 Gán nhãn dữ liệu
Tool labelImg để gán nhãn khu vực có chứa biển số xe

LabelImg hỗ trợ gán nhãn trên cả 2 định dạng PASCAL VOC và YOLO với phần
mở rộng file annotation tương ứng là .xml và .txt. Trong bài toán sử dụng mô hình
YOLO, mình lưu file annotation dưới dạng .txt. Nội dung trong một file annotation

Mỗi dòng trong một file annotation bao gồm: <object-class> <x> <y> <width>
<height>. Trong đó: <x> <y> <width> <height> tương ứng là tọa độ trung tâm và kích
thước của đối tượng. Các giá trị này đã được chuẩn hóa lại, do vậy giá trị luôn nằm trong
đoạn [0,1]. object-class là chỉ số đánh dấu các classes.
Lưu ý: Với bài toán có nhiều nhãn, nhiều người cùng gán nhãn thì cần thống nhất
với nhau trước về thứ tự nhãn. Nguyên nhân do trong file annotation chỉ lưu chỉ số
(0,1,3,4,. . . ) của nhãn chứ không lưu tên nhãn. Sau khi gán nhãn xong các bạn để file
annotation và ảnh tương ứng vào cùng một thư mục. Ảnh biển số xe được trong bộ dữ
liệu được chụp từ một camera tại vị trí kiểm soát xe ra vào trong hầm. Do vậy kích thước
các biển số xe không có sự đa dạng, do khoảng cách từ camera đến biển số xe xấp xỉ gần
bằng nhau giữa các ảnh. Ảnh có độ sáng thấp và gần giống nhau do ảnh được chụp trong
hầm chung cư. => Cần làm đa dạng bộ dữ liệu.

3.4.2 Các phương pháp tăng sự đa dạng của bộ dữ liệu


3.4.2.1 Đa dạng kích thước của biển số
Thu nhỏ kích thước biển bằng cách thêm biên kích thước ngẫu nhiên vào ảnh gốc,
sau đó resize ảnh bằng kích thước ảnh ban đầu. Crop ảnh chứa biển số với kích thước
ngẫu nhiên, sau đó resize ảnh bằng kích thước ảnh ban đầu.

26
3.4.2.2 Thay đổi độ sáng của ảnh

3.4.2.3 Xoay ảnh

3.5 Training data colab


Sau khi thu thập được bộ dữ liệu gồm khoảng 7000 ảnh được dán nhãn, ta tiến hành
huyến luyện cho mô hình nhận diện biển số bằng bộ dữ liệu trên.
Tiến hành huấn luyện bộ dữ liệu bằng mô hình YOLOv4. Sử dụng Google Colab
để training dữ liệu trên. Yêu cầu đầu vào dữ liệu là ảnh và file .txt chứa các vị trí mà có
chứa biển số. Quá trình huấn luyện mô hình sẽ mất thời gian từ 3-5 giờ. Sau khi huấn

27
luyện mô hình xong, ta thu được một thư mục chứa các file.weights là dữ liệu đã được
huấn luyện. Thư mục này sẽ được lưu trữ và sử dụng để tiến hành nhận diện khu vực có
chứa biển số.
Để huấn luyện cho việc nhận diện biển số, ta thực hiện quá trình training như sau:
Bước 1: Truy cập trang web Google Colab và tiến hành đăng nhập Google bằng đường
link: https://colab.research.google.com/

Sau khi đăng nhập tài khoản Google, ta có giao diện như dưới đây:

28
Bước 2: Thay đổi trình tăng tốc phần cứng thành GPU bằng cách tại thanh công cụ
của Google Colab chọn “Thời gian chạy” => “Thay đổi loại thời gian chạy”

Bước 3: Tải file dữ liệu đã thu thập được lên Google Colab bằng cách chọn “Tệp”
và chọn “Tải lên bộ nhớ phiên” ở thanh bên trái của trang web, tìm tới địa chỉ file dữ liệu
và tiến hành tải lên.

29
CHƯƠNG 4. XÂY DỰNG HỆ THỐNG

4.1 Xây dựng giao diện


Để xây dưng giao diện chúng ta cần sử dụng package PyQT5 và viết bằng ngôn
ngữ python. Tuy nhiên việc làm này mất rất nhiều thời gian với những người chưa quen
về cách thiết kế giao diện đối với package này. Trước hết cùng tìm hiểu PyQT5 là gì ?

4.1.1 Package PyQT5


Qt là một Application framework đa nền tảng viết trên ngôn ngữ C++ , được dùng
để phát triển các ứng dụng trên desktop, hệ thống nhúng và mobile. Hỗ trợ cho các
platform bao gồm : Linux, OS X, Windows, VxWorks, QNX, Android, iOS, BlackBerry,
Sailfish OS và một số platform khác. PyQt là Python interface của Qt, kết hợp của ngôn
ngữ lập trình Python và thư viện Qt, là một thư viện bao gồm các thành phần giao diện
điều khiển (widgets , graphical control elements). PyQt API bao gồm các module bao
gồm số lượng lớn với các classes và functions hỗ trợ cho việc thiết kế ra các giao diện
giao tiếp với người dùng của các phần mềm chức năng. Hỗ trợ với Python 2.x và 3.x.
Các class của PyQt5 được chia thành các module, bao gồm : QtCore , QtGui,
QtWidgets, QtMultimedia, QtBluetooth, QtNetwork, QtPositioning, Enginio, QtWeb-
Sockets, QtWebKit, QtWebKitWidgets, QtXml, QtSvg, QtSql, QtTest.

4.1.2 Công cụ phần mềm phục vụ thiết kế với PyQt5


Qt Designer : Qt sử dụng IDE tên Qt Creator với một tool thiết kế giao diện người
dùng Qt Designer. Qt Designer có thể làm việc một mình độc lập với Qt Creator . Qt
Designer sử dụng XML .ui file để lưu thiết kế và không sinh thêm bất kỳ mã nguồn nào
của nó. User Interface Compiler (uic) đọc định dạng file XML (.ui) và xuất ra header
file mã nguồn C++ tươn ứng. Qt có một class QUiLoader cho phép một ứng dụng tải
một file .ui và tạo một giao diện động tương ứng.

Hình 4.1 Giao diện thiết kế trên QTDesigner

30
Sau khi thiết kế được giao diện, tất nhiên vẫn chưa thể sử dụng các thao tác trên
giao diện đó được. QTDesigner sẽ export ra một file XML có đuôi .ui. Với file này
chúng ta có thể import trực tiếp vào project python hoặc chuyển đổi thành file python do
pyqt5 có hỗ trợ phương thức chuyển đổi.

Hình 4.2 Chuyển đổi file ui sang file python

4.2 Xây dựng cơ sở dữ liệu lưu thông tin


4.2.1 Firebase là gì ?
Firebase là dịch vụ cơ sở dữ liệu hoạt động trên nền tảng đám mây – cloud. Kèm
theo đó là hệ thống máy chủ cực kỳ mạnh mẽ của Google. Chức năng chính là giúp
người dùng lập trình ứng dụng bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu.
Cụ thể là những giao diện lập trình ứng dụng API đơn giản. Mục đích nhằm tăng
số lượng người dùng và thu lại nhiều lợi nhuận hơn.
Khi đăng ký một tài khoản trên Firebase để tạo ứng dụng, bạn đã có một cơ sở dữ
liệu thời gian thực. Dữ liệu bạn nhận được dưới dạng JSON. Đồng thời nó cũng luôn
được đồng bộ thời gian thực đến mọi kết nối client.
Đối với các ứng dụng đa nền tảng, tất cả các client đều sử dụng cùng một cơ sở dữ
liệu. Nó được tự động cập nhật dữ liệu mới nhất bất cứ khi nào các lập trình viên phát
triển ứng dụng. Cuối cùng, tất cả các dữ liệu này được truyền qua kết nối an toàn SSL
có bảo mật với chứng nhận 2048 bit.
Trong trường hợp bị mất mạng, dữ liệu được lưu lại ở local. Vì thế khi có mọi sự
thay đổi nào đều được tự động cập nhật lên Server của Firebase. Bên cạnh đó, đối với
các dữ liệu ở local cũ hơn với Server thì cũng tự động cập nhật để được dữ liệu mới nhất.

31
4.2.2 Thiết lập csdl
Chúng ta truy cập vào trang https://firebase.google.com/ đăng nhập và tiến tới trang
console như hình :

Hình 4.3 Trang console của Firebase

Sau đó chúng tạo một project mới và đặt tên cho project đó. Tiến tới phần Realtime
database để thiết lập một cấu trúc cơ sở dữ liệu mới

Hình 4.4 Cấu trúc CSDL

32
4.3 Kết quả
Sau thời gian thực hiện đề tài, nhóm chúng em bước đầu đã thu được kết quả khá
tốt. Đây là hình ảnh đã thử nghiệm hệ thống ngay trên hệ điều hành Window.

Hình 4.5 Kết quả

33
KẾT LUẬN

Kết luận chung


Bước đầu, nhóm đã đạt được kết quả đúng mong đợi. Tuy nhiên vẫn còn đó một số
hạn chế cần khắc phục sớm. Thời gia tới với kết quả đặt ra và kết quả đạt được vẫn có
thể tiếp tục đi đến hướng phát triển nâng cấp phù hợp hơn vơi tình hình hiện tại.

Hướng phát triển


1.Thêm phần xử lý thẻ RFID để nhận và lưu ID ứng với mỗi thông tin trích xuất
được từ biển số xe.
2.Cải thiện hiệu xuất và độ chính xác mỗi khi detect.
3.Hướng tới cơ khí giới với bãi đỗ xe xoay vòng thẳng đứng và tự động hóa quy
trình.

34
TÀI LIỆU THAM KHẢO

35
PHỤ LỤC

Mã nguồn chương trình (nếu có) được đưa vào đây, sử dụng font Courier New, cỡ 10pt.

36

You might also like