Professional Documents
Culture Documents
ĐỒ ÁN
Đề tài:
ĐỒ ÁN
Đề tài:
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)
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
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)
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
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
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
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 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.
TÓM TẮT ĐỒ ÁN iv
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
KẾT LUẬN 34
PHỤ LỤC 36
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
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
CHƯƠNG 2. CƠ SỞ LÝ THUYẾ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).
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.
• 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
nó
• 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)
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.
Trong đó:
• j : độ lệch (bias)
• Các đơn vị đầu vào (Input units), nhận tín hiệu từ 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.
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).
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ể.
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:
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:
• 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ó để 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 mạng nơron truyền thẳng trong dự báo thời tiết
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.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.
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ố.
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 đó:
• 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:
13
Hình 2.5 Hidden layers and classification
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.
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.
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.
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
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.
• 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.
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
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ể.
• 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ể.
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ả.
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.
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.
23
CHƯƠNG 3. BÀI TOÁN NHẬN DẠNG
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ỏ.
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.
26
3.4.2.2 Thay đổi độ sáng của ảnh
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
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.
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 :
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
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.
33
KẾT LUẬN
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