Công nghệ này dựa vào tính cá nhân và đặc thù của biển số xe,biến nó thành đối tượng chính để nghiên cứu và phát triển các hệ thống giám sát hiện đại.Nhờ vào các hệ thống này, việc quản
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
VÀ TRUYỀN THÔNG VIỆT HÀN
KHOA KHOA HỌC MÁY TÍNH
Giảng viên hướng dẫn : THS Hà Thị Minh Phương
Sinh viên thực hiện : Nguyễn Văn Trung - 21IT658
Phạm Công Tính – 21IT243
Đà Nẵng, tháng 5 năm 2024
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
VÀ TRUYỀN THÔNG VIỆT HÀN
KHOA KHOA HỌC MÁY TÍNH
Giảng viên hướng dẫn : THS Hà Thị Minh Phương
Sinh viên thực hiện : Nguyễn Văn Trung - 21IT658
Phạm Công Tính – 21IT243
Đà Nẵng, tháng 5 năm 2024
2
Trang 3MỤC LỤC
LỜI CẢM ƠN 6
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN 7
MỞ ĐẦU 8
CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 10
1 Mô tả bài toán: 10
2 Tổng quan: 10
2.1 Khái niệm biển số xe 10
2.2 Xử lý ảnh và Open CV 10
2.3 Tổng quan về YOLO 11
3 Các công nghệ sử dụng: 12
3.1 Python Standard Libraries: 12
3.2 Thư viện bên ngoài xử lý hình ảnh và dữ liệu 12
3.3 Thư viện học sâu (Deep Learning) 13
CHƯƠNG 2 XỬ LÝ ẢNH VÀ OPENCV 15
1 Xử lý ảnh nhị phân 16
2 Xoay ảnh 18
2.1 Hàm ‘rotate_image’ 18
2.2 Hàm ‘calculate_rotation_angle’ 18
2.3 Hàm ‘crop_n_rotate_LP’ 19
3 Thuật toán Suzuki-Abe: 19
CHƯƠNG 3 QUY TRÌNH NHẬN DIỆN BIỂN SỐ 21
1 Thư viện sử dụng: 21
2 Nhận diện vùng chưa biển số xe 22
2 Đọc và chuyển đổi ảnh nhị phân: 24
2.1 Phân đoạn kí tự từ hình ảnh biển số xe: 24
2.2 Lấy tọa độ của ảnh: 26
3 Nhận diện các ký tự có trong biển số 27
4 Kết quả: 29
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 30
3
Trang 4TÀI LIỆU THAM KHẢO 32
4
Trang 5DANH MỤC HÌNH ẢNH
Hình 1: TensorFlow 14
Hình 2: Quá trình xử lý ảnh 15
Hình 3: Các bước cơ bản trong hệ thống xử lý ảnh 15
Hình 4: Xử lý ảnh nhị phân 16
Hình 5: Thư viện sử dụng 21
Hình 6: Gán nhãn cho đối tượng 22
Hình 7: Quá trình huấn luyện dữ liệu 23
Hình 8: Kết quả cắt biển số xe đã được nhận dạng 24
Hình 9: Code phân đoạn kí tự 25
Hình 10: Kết quả kho phân tách kí tự và lấy tọa độ 27
Hình 11: Huấn luyện kí tự 28
Hình 12: Kết quả phân tách kí tự 28
Hình 13: Kết quả 29
5
Trang 6LỜI CẢM ƠN
Chúng em sẽ không thể thực hiện và hoàn thành đồ án này nếu không có sự hướngdẫn và chỉ bảo tận tình của THS Hà Thị Minh Phương Em xin cảm ơn sự chỉ bảo vàhướng dẫn tận tình của thầy để chúng em hoàn thành tốt đồ án
Em xin trân trọng cảm ơn quý thầy cô trong Khoa Khoa học máy tính Trường Đại họcCông nghệ thông tin và Truyền thông Việt – Hàn Đại học Đà Nẵng đã tận tình giảng dạy,truyền đạt những kiến thức và tạo điều kiện để chúng em hoàn thành đồ án này
Xin chân thành cảm ơn sự giúp đỡ đến từ các anh chị đi trước cũng như các bạntrong quá trình thực hiện đồ án
Tuy đã cố gắng, nỗ lực hết mình để hoàn thành tốt Song, đồ án chắc sẽ có nhữngthiếu sót Chúng em rất mong sự thông cảm của thầy cô và các bạn
Em xin trân trọng cảm ơn
Sinh viên Nguyễn Văn Trung Phạm Công Tính
6
Trang 7NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
Giảng viên hướng dẫn
THS Hà Thị Minh Phương
7
Trang 8MỞ ĐẦU
Hiện nay, số lượng xe cộ tham gia giao thông trên đường phố là rất lớn, điều nàydẫn đến việc tiêu tốn nhiều nhân lực và vật lực cho công tác quản lý phương tiện cá nhântại các bãi gửi xe Nếu không có một công cụ thuận tiện và hiệu quả, việc quản lý cácphương tiện cá nhân sẽ trở nên rất mất thời gian, dễ gây nhầm lẫn, và có thể gây thiệt hạicho người sử dụng dịch vụ tại các bãi đỗ xe
Để giảm tải cho các công việc như thu tiền, bảo hiểm xe, tìm kiếm xe trong bãi đỗ,nhiều quốc gia trên thế giới đã và đang phát triển công nghệ giám sát tự động đối với cácphương tiện giao thông Công nghệ này dựa vào tính cá nhân và đặc thù của biển số xe,biến nó thành đối tượng chính để nghiên cứu và phát triển các hệ thống giám sát hiện đại.Nhờ vào các hệ thống này, việc quản lý phương tiện trở nên chính xác và hiệu quả hơn,giảm thiểu các sai sót và tiết kiệm thời gian cho cả người quản lý và người sử dụng
Do đó, em muốn chọn đề tài này như một bước căn bản trong việc tìm hiểu vànghiên cứu về các công cụ giám sát hiện đại hơn Đây có thể là nền tảng cho việc pháttriển các công nghệ cao cấp như hệ thống kiểm soát xe lưu thông trên đường hay nhậndạng khuôn mặt Những công nghệ này không chỉ đang được thế giới chú trọng mà cònhứa hẹn sẽ mang lại những bước tiến vượt bậc trong việc quản lý giao thông và an ninhcông cộng Việc nghiên cứu và ứng dụng những công nghệ tiên tiến này sẽ góp phần cảithiện chất lượng cuộc sống và tăng cường hiệu quả hoạt động của các hệ thống quản lýgiao thông
2 Nội dung và kế hoạch thực hiện
Trang 911/5 Triển khai mô hình
Nguyễn Văn Trung, Phạm Công TínhTuần thứ 7
từ 12/5 đến
19/5 Đánh giá thực tế
Nguyễn Văn Trung, Phạm Công TínhTuần thứ 8
từ 20/5 đến
23/5 Viết báo cáo, chuẩn bị slide
Nguyễn Văn Trung, Phạm Công Tính
3 Nhiệm vụ đề tài
Từ nội dung nêu trên, đề tài của em sẽ bao gồm các nhiệm vụ sau:
- Tìm hiểu khái quát về xử lý ảnh và bài toán nhận dạng biển số xe
- Tìm hiểu thông tin về biển số xe và phân loại biển số xe của Việt Nam
- Tìm hiểu các công đoạn chính của bài toán nhận dạng biển số xe gồm 3 khâu chính:
Trang 10CHƯƠNG 1 CƠ SỞ LÝ THUYẾT
1 Mô tả bài toán:
- Bài toán nhận diện biển số xe sử dụng trí tuệ nhân tạo (AI) nhằm phát triển một hệthống có khả năng tự động nhận diện và đọc biển số xe từ hình ảnh hoặc video Hệthống này sẽ được triển khai trong các ứng dụng như quản lý bãi đỗ xe, kiểm soátgiao thông, thu phí tự động và an ninh
2 Tổng quan:
Nội dung:
- Tìm hiểu về bảng số xe và hệ thống nhận dạng bảng số xe
- Phát biểu bài toán và hướng giải quyết
- Nghiên cứu một số thuật toán xử lý ảnh và nhận dạng kí tự ứng dụng trong việcnhận dạng bảng số xe
2.1 Khái niệm biển số xe
Ở Việt Nam, biển kiểm soát xe cơ giới (hay còn gọi tắt là biển kiểm soát, biển sốxe) là tâm biển gắn trên mỗi xe cơ giới, được cơ quan công an cấp (đối với xe quân sự do
Bộ Quốc phòng cấp) khi mua xe mới hoặc chuyển nhượng xe Biển số xe được làm bằnghợp kim nhôm sắt, có dạng hình chữ nhật hoặc hơi vuông, trên đó có in số và chữ (biển
xe dân sự không dùng các chữ cái I, J, O, Q, W Chữ R chỉ dùng cho xe rơ-moóc, sơ-mirơ-moóc) cho biết: Vùng và địa phương quản lý, các con số cụ thể khi tra trên máy tínhcòn cho biết danh tính người chủ hay đơn vị đã mua nó, thời gian mua nó phục vụ chocông tác an ninh, đặc biệt trên đó còn có hình Quốc huy Việt Nam dập nổi
Tiêu chuẩn về kích thước: Ở mỗi nước thường có tiêu chuẩn về kích thước nhấtđịnh, còn riêng Việt Nam tỉ lệ kích thước của các biển số là gần như giống nhau Biển số
xe có 2 loại, kích thước như nhauL Loại biển số dài có chiều cao 110 mm, chiều dài 470mm; loại biển số ngắn có chiều cao 200 mm, chiều dài 280 mm nên ta sẽ gọi giới hạn tỉ lệcao/rộng là 3.5 ≤ cao/rộng ≤ 6.5(biển một hàng) và 0.8 ≤ cao/rộng ≤ 1.5(biển hai hàng)
Số lượng kí tự trong biển số xe nằm trong khoảng [7,9] Chiều cao của chữ và số:80mm, chiều rộng của chữ và số: 40mm
Từ những đặc điểm trên ta có thể thiết lập những thông số, điều khiển đẻ lọc chọnnhững đối tượng phù hợp mà ta cần
2.2 Xử lý ảnh và Open CV
Xử lý ảnh là một phân ngành trong xử lý số tín hiệu với tín hiệu xử lý là ảnh Đây
là một phân ngành khoa học mới rất phát triển trong những năm gần đây Xử lý ảnh gồm
4 lĩnh vực chính: xử lý nâng cao chất lượng ảnh, nhận dạng ảnh, nén ảnh và truy vấn ảnh
Sự phát triển của xử lý ảnh đem lại rất nhiều lợi ích cho cuộc sống của con người Ngàynay xử lý ảnh đã được áp dụng rất rộng rãi trong đời sống như: photoshop, nén ảnh, nén
10
Trang 11video, nhận dạng biển số xe, nhận dạng khuôn mặt, nhận dạng chữ viết, xử lý ảnh thiênvăn, ảnh y tế, …
OpenCV (Open Computer Vision) là một thư viện mã nguồn mở hàng đầu cho xử
lý về thị giác máy tính, machine learning, xử lý ảnh OpenCV đươc viết bằng C/C++, vìvậy có tốc độ tính toán rất nhanh, có thể sử dụng với các ứng dụng liên quan đến thời gianthực Opencv có các interface cho C/C++, Python Java vì vậy hỗ trợ được cho Window,Linux, MacOs lẫn Android, iOS OpenCV có cộng đồng hơn 47 nghìn người dùng và sốlượng download vượt quá 6 triệu lần Opencv có rất nhiều ứng dụng như:
YOLOv8 kế thừa các đặc điểm nổi bật của các phiên bản trước và bổ sung thêmnhiều cải tiến quan trọng nhằm nâng cao độ chính xác và hiệu suất:
a Backbone và Neck:
Backbone: YOLOv8 sử dụng một kiến trúc backbone cải tiến, có thể là mộtphiên bản nâng cấp của CSPDarknet hoặc một mô hình mạng nơ-ronconvolutional (CNN) tiên tiến khác, giúp trích xuất các đặc trưng từ ảnhđầu vào hiệu quả hơn
Neck: Sử dụng các module như Path Aggregation Network (PAN) vàFeature Pyramid Network (FPN) để tăng cường khả năng phát hiện đốitượng ở các mức độ khác nhau của ảnh, từ đó cải thiện độ chính xác và khảnăng nhận diện các đối tượng nhỏ
b Head:
Head: YOLOv8 sử dụng các head tiên tiến để tạo ra các dự đoán bao gồmtọa độ của các bounding box, các lớp của đối tượng và các xác suất liênquan Cấu trúc head có thể được tối ưu hóa để giảm thiểu sai số và tăng tốc
độ xử lý
Các kỹ thuật và tối ưu hóa trong YOLOv8
11
Trang 12a Anchor Boxes
YOLOv8 có thể sử dụng hoặc không sử dụng anchor boxes tùy vào cấu hình Anchor-free designs đang ngày càng phổ biến nhờ vào khả năng giảmbớt sự phức tạp và cải thiện độ chính xác trong một số tình huống
b Loss Function
Loss Function: YOLOv8 có thể sử dụng các hàm mất mát tiên tiến để cân nhắc tốt hơn giữa các yếu tố như vị trí, kích thước bounding box, và phân loại đối tượng Các hàm mất mát này được tối ưu hóa để giảm thiểu sự mất mát thông tin và tăng cường độ chính xác tổng thể
c Data Augmentation
Data Augmentation: YOLOv8 sử dụng các kỹ thuật tăng cường dữ liệu tiên tiến như mosaic augmentation, cutout, và mixup để tăng cường đa dạng dữ liệu huấn luyện, từ đó giúp mô hình tổng quát hóa tốt hơn và chống lại hiện tượng overfitting
Giám sát an ninh: Nhận diện và theo dõi đối tượng trong video giám sát
Xe tự hành: Phát hiện và phân loại các đối tượng trên đường phố
Y tế: Phân tích hình ảnh y tế để phát hiện các bất thường
3 Các công nghệ sử dụng:
3.1 Python Standard Libraries:
locale: Thư viện tiêu chuẩn của Python để xử lý cài đặt ngôn ngữ và
mã hóa ký tự
struct và array: Thư viện tiêu chuẩn để làm việc với dữ liệu nhị phân
và mảng
os.path: Thư viện tiêu chuẩn để thao tác với đường dẫn tệp
3.2 Thư viện bên ngoài xử lý hình ảnh và dữ liệu
OpenCV (cv2): Thư viện mạnh mẽ để xử lý hình ảnh và video Được
sử dụng rộng rãi trong các ứng dụng thị giác máy tính
NumPy (numpy): Thư viện phổ biến cho tính toán khoa học và xử lý mảng số học NumPy cung cấp các đối tượng mảng đa chiều hiệu quả
và các chức năng để thao tác với chúng
PIL (Python Imaging Library) / Pillow: Thư viện để mở, xử lý và lưu trữ nhiều định dạng hình ảnh khác nhau
12
Trang 13 Matplotlib (matplotlib.pyplot): Thư viện vẽ đồ thị, rất hữu ích cho việc trực quan hóa dữ liệu.
scikit-image (skimage): Thư viện dành cho xử lý hình ảnh, cung cấp các công cụ mạnh mẽ để phân tích và biến đổi hình ảnh
Pandas (pandas): Thư viện mạnh mẽ để thao tác và phân tích dữ liệu Pandas cung cấp các cấu trúc dữ liệu linh hoạt và hiệu quả như DataFrame
3.3 Thư viện học sâu (Deep Learning)
TensorFlow và Keras (tensorflow.keras):
Keras: API cấp cao cho TensorFlow, giúp dễ dàng xây dựng và huấn luyện các mô hình học sâu
Dense, Conv2D, MaxPooling2D, Dropout, Flatten: Các lớp cơ bản của mạng nơ-ron dùng để xây dựng các mô hình
optimizers: Bộ tối ưu hóa cho việc huấn luyện mô hình
ReduceLROnPlateau, ModelCheckpoint: Các callback để điều chỉnh tốc độ học và lưu trữ mô hình trong quá trình huấn luyện
Sequential: Loại mô hình tuần tự trong Keras
backend: Cung cấp các hàm backend của Keras để thao tác trực tiếp với TensorFlow
3.4 Giới thiệu về Tensorflow:
Trong đồ án này, với mục đích triển khai đào tạo và thử nghiệm network Nhóm
đồ án đã sử dụng thư viện Tensorflow Đây là mã nguồn mở dành cho học máy doGoogle tạo ra để tính toán số sử dụng biểu đồ luồng dữ liệu Các nút trong biểu đồ đạidiện cho các phép toán, trong khi các cạnh của đồ thị đại diệncho các mảng dữ liệu nhiềuchiều được gọi là tensors
Tensorflow cung cấp một số tính năng mạnh mẽ như: nó cho phép ánh xạtính toánvới nhiều máy, không giống như hầu hết các framework tương tự khác;nó đã được tíchhợp hỗ trợ tính toán gradient tự động; nó có thể thực thi một phầncác đồ thị con của toàn
bộ đồ thị và nó có thể thêm các ràng buộc cho các thiết bị,như đặt các nút trên một loạithiết bị nhất định, đảm bảo rằng hai hoặc nhiều đốitượng được đặt trong cùng một khônggian, v.v Bắt đầu với phiên bản 2.0,TensorFlow bao gồm các tính năng của khung Keras.Keras cung cấp các trìnhbao bọc cho các hoạt động được triển khai trong TensorFlow,
13
Trang 14đơn giản hóa đáng kể các cuộc gọi và giảm lượng mã tổng thể cần thiết để đào tạo vàkiểm tra một mô hình
TensorFlow được sử dụng trong một số dự án, chẳng hạn như Mô hình phân loạihình ảnh ban đầu Dự án này đã giới thiệu một mạng hiện đại để phânloại và phát hiệntrong Thử thách nhận dạng hình ảnh quy mô lớn ImageNet năm 2014 Trong dự án này,việc sử dụng tài nguyên máy tính được cải thiện bằngcách điều chỉnh chiều rộng và chiềusâu của mạng trong khi vẫn giữ ngân sáchtính toán không đổi Một dự án khác sử dụngkhung công tác TensorFlow là DeepSpeech, được phát triển bởi Mozilla Kiến trúc là một
hệ thống nhận dạnghiện đại được phát triển bằng cách sử dụng học sâu end-to-end Đơngiản hơn làcác kiến trúc khác và không cần các thành phần được thiết kế thủ công chotiếng ồn xung quanh, độ vang hoặc sự biến đổi của loa Chúng tôi sẽ trình bày cácphươngpháp và kiểu dữ liệu được sử dụng quan trọng nhất từ TensorFlow cùngvới mô tả ngắngọn cho từng phương pháp đó
Hình 1: TensorFlow
CHƯƠNG 2 XỬ LÝ ẢNH VÀ OPENCV
14
Trang 15Quá trình xử lý ảnh được xem như là quá trình thao tác ảnh đầu vào nhằm cho ra kết quả mong muốn Kết quả đầu ra của một quá trình xử lý ảnh có thể là một ảnh “tốt hơn” (theo ý muốn) hoặc một kết luận.
Hình 2: Quá trình xử lý ảnh
Ảnh có thể xem là tập hợp các điểm ảnh và mỗi điểm ảnh được xem là đặc trưng cường độ sáng hay một dấu hiệu nào đó tại một vị trí nào đó của đối tượng trong không gian và có thể xem như hàm n biến Do đó ảnh trong xử lý ảnh có thể xem như ảnh n chiều
Sơ đồ tổng quát của hệ thống xử lý ảnh:
Hình 3: Các bước cơ bản trong hệ thống xử lý ảnh
Và ở chương này chúng ta sẽ được biết OpenCV hỗ trợ gì cho những bước xử
lý ảnh Tiếp sau em sẽ giới thiệu các bước xử lý và OpenCV hỗ trợ xử lý ảnh như thế nào (cung cấp thư viện gì)
Tiền xử lý
Các thao tác xử lý trên ảnh để chuẩn bị cho những bước phân tích tiếp theo Chẳng hạn như các thao tác: chọn ngưỡng để chuyển ảnh đa cấp xám, ảnh màu về dạng nhị phân, giám nhiễu để loại bỏ những dữ liệu không liên quan, phân đoạn để phân tách các thành phần trong ảnh và cuối cùng là làm mảnh hay dò biên để dễ dàngxác định các vùng, các đặc trưng thích hợp và đối tượng cần quan tâm
15
Trang 161 Xử lý ảnh nhị phân
Mức xám là giá trị có thể của điểm ảnh
Với những ảnh đa cấp xám các thông tin đã sẵn ở dạng nhị phân chẳng hạn nhưcác chuỗi văn bản hay các đối tượng ảnh, thì phương pháp nhị phân thông thường sẽđược thực hiện trước Mục đích đích của phương pháp này sẽ tự động chọn mộtngưỡng cần thiết để tách ảnh ra thành hai phần: thông tin ảnh và thông tin nền Việcchọn ngưỡng tốt (ngưỡng mà có thể tách ảnh thành hai phần: phần ảnh, phần nền mộtcách chính xác) luôn là một quá trình khó và dễ gây ra lỗi
Hình 4: Xử lý ảnh nhị phân
Kết quả này sẽ gặp khó khăn khi độ tương phản giữa nền và các giá trị điểm ảnh làthấp (chẳng hạn như xe mày xám nền màu trắng), nét của văn bản mỏng và dữ liệukhông được chiếu sáng tốt
Để thực hiện việc tách ngưỡng này thì OpenCV cung cấp chức năng threshold.threshold( src_gray, dst, threshold_value, max_BINARY_value,threshold_type);
- src_gray: hình ảnh đầu vào
- dst: hình ảnh đầu ra
- threshold_value: giá trị thực hiện tách ngưỡng
- max_BINARY_value: giá trị thực hiện tách ngưỡng nhị phân
- threshold_type: một trong 5 ngưỡng hoạt động
5 ngưỡng hoạt động OpenCV cung cấp:
16
Trang 17a Threshold Binary: nếu giá trị các điểm ảnh cao hơn giá trị ngưỡng thì được
thiết lập giá trị mới là giá trị cao nhất (255), thấp hơn giá trị ở các điểm ảnh về mức 0;
b Threshold binaru, inverted: ngược với Threshold Binary
c Truncate: giá trị các điểm ảnh cao hơn giá trị ngượng sẽ bị thay đổi bằng giá trị
ngưỡng, thấp hơn giữa nguyên
d Threshold to Zero: giá trị các điểm ảnh cao hơn giá trị ngưỡng sẽ được giữ lại
còn các điểm ảnh có giá trị thấp hơn giá trị ngưỡng sẽ đưa giá trị về 0
e Threshold to Zero, inverted: Ngược lại với Threshold to Zero
17