TỔNG QUAN VỀ HỆ THỐNG TRẠM GỬI XE
Tổng quan về hệ thống
Bài viết nhằm mục đích cung cấp cái nhìn tổng quan về hệ thống, từ đó xác định nhiệm vụ cần thực hiện để hiểu rõ hơn về cầu ra và đầu vào một cách chính xác Hình 1.1 minh họa tổng thể hệ thống, bao gồm quá trình xử lý từ phía client và việc truyền tải dữ liệu lên server để lưu trữ.
Hình1.1 Mô hình tổng quan hệ thống trạm gửi xe thông minh
Hệ thống được thực hiện bao gồm hai phần xử lý bên trên cloud và xử lý bên dưới các tầng thiết bị (client):
• Hệ thống bao gồm nhân viên, camera, thiết bị xử lý nhận dạng và đầu đọc thẻ từ
• Máy trạm có vai trò xử lý nhận dạng và kiểm soát xe ra vào trong bãi đỗ.
• Mỗi trạm được bố trí vao gồm hai luồn vào và ra.
• Truyền các dữ liệu xử lý ra được lên server để lưu trữ và xử lý.
• Dò điều kiện có thể xẩy những trường hợp ngoại lệ không chính xác hoặc không nhận dạng được nên cần có chức năng nhập biển số bằng tay.
• Quản lý vé tháng, quản lý nhân viên.
• Thống kê doanh thu, thống kê vé tháng… Ưu điểm sửa dụng hệ thống
• Nhanh chóng thuận tiện đỡ tốn nhân công hơn so với phương pháp ghi vé bằng tay.
• Tự động lưu các thông tin liên qua đến vé xe, loại xe, thời điểm khách ra vào…
• Tự động tính toán ra các số liêu về doanh thu, vé xe, nhân viên, số lượng xe vào ra theo công thức đã thiết lập sẵn
Nhiệm vụ của hệ thống là chụp ảnh xe khi người dùng gửi xe, từ đó nhận dạng biển số và chuyển đổi thành văn bản để gửi lên server xử lý Mặc dù có thể áp dụng các phương pháp xử lý ảnh trên nền tảng máy tính lớn, nhưng để giảm chi phí và đơn giản hóa quy trình, dự án đã được triển khai trên một số nền tảng nhúng.
Mô hình bên phía client
Hệ thống nhận dạng biển số xe tự động đang được áp dụng rộng rãi tại các trạm gửi xe, như minh họa trong hình 1.2 Quy trình vận hành của hệ thống này bao gồm các thiết bị phần cứng, phần mềm và cơ khí, với các bước cụ thể được thể hiện rõ ràng trong hình 1.2.
1 Xe vào camera chụp ảnh biển số xe nhận được thông tin.
2 Raspberry xử lý file ảnh chụp được nhận dạng biển số ảnh nếu có biển số cho ra chuỗi xác nhập cùng với thẻ RFID.
3 Truyền file lên máy chủ để lưu trữ biển số theo cả text và kèm theo ảnh nhị phân (đen trăng) của phương tiện đi vào.
4 Mở tấm chắn cho xe đi vào bến gửi trong trường hợp nhận dạng được biển số nếu không nhận dạng được thì người trực phải nhập bằng tay biển số người gửi.
Hình 1.2 Ảnh minh họa giải pháp nhận dạng biển số xe
Đánh giá raspberry pi
1.2.1 Mô hình trạm máy tính cây
Hình 1.3 Mô hình nhận dạng biển số xe áp dụng máy tính cây[1]
Các mô hình áp dụng máy tính cây, như thể hiện trong hình 1.3, đang được sử dụng rộng rãi trong các hệ thống gửi xe tự động hiện nay Hệ thống này sử dụng camera để chụp ảnh và nhận dạng biển số xe Dựa trên kết quả nhận dạng, phần mềm sẽ thực hiện các chức năng như đếm và thống kê lượt xe, cảnh báo khi biển số không khớp với thẻ vé, và tự động mở barrier khi biển số trùng khớp với vé gửi xe.
1.2.1.2 Ưu điểm của phương pháp
• Giảm bớt nhân công do sửa dụng phương pháp tự động chụp ảnh và nhận dạng biển số xe từ camera.
• Biển số và thời gian về xe ra vào được tự động lưu trữ tự động.
• Thông tin xe vào ra được hiển thị ngay trên màn hình.
1.2.1.3 Nhược điểm của phương pháp
Máy tính có hộp lớn và cồng kềnh, như hình 1.3, chiếm nhiều diện tích và yêu cầu nguồn điện cung cấp lớn từ điện lưới Với công suất tiêu thụ trung bình khoảng 200W, nếu sử dụng liên tục 10 giờ mỗi ngày, máy tính có thể tiêu thụ lên đến 2KW.h, dẫn đến việc tốn điện nếu sử dụng lâu dài và với nhiều thiết bị.
1.2.2 Mô hình áp dụng raspberry
Nhiệm vụ của hệ thống bao gồm xử lý ảnh từ camera để nhận dạng biển số xe, chuyển đổi thành văn bản và lưu trữ file nhận dạng trên server Điều này giúp quản lý và giám sát các phương tiện ra vào một cách dễ dàng, như mô hình áp dụng thể hiện trong hình 1.4.
1.4 là mô hình tổng quan về xử lý ảnh trên raspberry Mô hình bao gồm các khối được thể hiện sau đây.
• Đầu vào xử nhận dữ liệu tương tự từ ngoài vào camera là một ảnh vào có độ phân giải 640x480.
• Khối xử lý: là một module xử lý chạy trên nên tảng hệ thống nhúng như rasberry pi, BeagleBone Black, FPGA….
Khối truyền tín hiệu lên server có chức năng truyền dữ liệu từ các thiết bị lên server, giúp quản lý và xử lý hiệu quả hơn Điều này đặc biệt quan trọng do hạn chế về dung lượng bộ nhớ và tốc độ CPU của các thiết bị tầng dưới.
Khối nguồn đóng vai trò quan trọng trong việc cung cấp nguồn đầu vào cho khối đầu vào và khối xử lý Nó có thể sử dụng nguồn hạ áp từ adapter hoặc pin, đảm bảo hoạt động liên tục ngay cả trong những khu vực thường xuyên xảy ra mất điện, nhằm bảo vệ thiết bị khỏi những ảnh hưởng tiêu cực.
Hình 1.4 Thiết kế mô hình tổng quan hệ thống áp dụng raspberry
1.2.2.2 Ưu điểm khi áp dụng raspberry
Giá thành của máy tính cây Raspberry thấp hơn đáng kể so với việc xây dựng một hệ thống máy tính hoàn chỉnh Cụ thể, một bộ xử lý Raspberry chỉ có giá hơn 1 triệu đồng, trong khi chi phí ước tính cho mỗi máy tính cây có thể lên tới 8 triệu đồng.
Máy tính cây có kích thước khoảng 300 x 170 x 350 cm, lớn gấp khoảng 350 lần kích thước của Raspberry Do đó, Raspberry là lựa chọn phù hợp hơn cho những không gian nhỏ và dễ dàng di chuyển.
Raspberry Pi tiêu thụ điện năng rất thấp, dưới 10W, cho phép tích hợp pin dự phòng nhằm tránh tình trạng mất điện Điều này là một lợi thế lớn so với các máy tính cây, nơi việc sử dụng pin dự phòng thường không khả thi.
1.2.2.3 Tính khả thi của rasspberry
Khối xử lý – Rasberry Pi3:
Máy tính mini, với thiết kế nhỏ gọn, mang lại ưu thế vượt trội trong việc thực hiện các tác vụ không quá phức tạp Thiết bị này có khả năng tiền xử lý dữ liệu ngay từ đầu vào, giúp tối ưu hóa hiệu suất làm việc.
Bộ xử lý SoC Broadcom BCM2835 tích hợp nhiều đặc tính xây dựng quan trọng, bao gồm CPU, GPU, bộ xử lý âm thanh và video, cùng với các tính năng khác, tất cả đều được thiết kế trong một chip tiết kiệm điện năng.
- Được ứng dụng trong hệ thống điện tử, những dự án DIY, thiết lập hệ thống tính toán rẻ tiền …
Hình 1.5 Hình ảnh raspberry pi
Hình 1.5 minh họa thực tế của Raspberry, cho thấy các thành phần như chip xử lý, RAM, cổng kết nối Ethernet và camera, phù hợp với những thông tin lý thuyết đã được nêu.
- SoC 1,4GHz với 1GB RAM
- 1 cổng HDMI cho đầu ra âm thanh/ video số
- 1 cổng video RCA cho đầu ra video Analog
- Jack Headphone Stero 3.5mm cho đầu ra âm thanh Analog
- 01 đầu đọc thẻ nhớ SD
• Hệ điều hành & phần mềm
- Chủ yếu chạy các Distributions Linux (nhúng) như Raspbian, Pidora, openSUSE OpenWRT, OpenELEC …
Khối xử lý – camera raspberry
- Là module camera do Raspberry Pi Foundation thiết kế.
- Được tích hợp với camera 5 Megapixel có độ nhạy sáng cao, chụp tốt ở nhiều điều kiện.
- Đăng nhập với user pi: $sudo raspi-config
- Chọn mục Enable Camera, sau đó chọn Enable
Hình 1.6 Hệ điều hành cho raspberry
Hình 1.6 sẽ cung cấp cái nhìn tổng quan về các khối chức năng chi tiết của Raspberry, bao gồm các ngoại vi và các block có sẵn, từ đó hỗ trợ cho công việc nhận dạng biển số xe.
Mộ số thuật toán xử lý ảnh
Đánh giá phương án tối ưu cho việc sử dụng thư viện áp trên Raspberry Pi là rất quan trọng, nhằm xác định tính khả thi và cải thiện tốc độ tính toán trên nền tảng bo mạch nhúng với nguồn tài nguyên hạn chế Dưới đây là một số phương pháp đang được áp dụng để thực hiện đề tài này.
OpenCV (Open Source Computer Vision) là thư viện mã nguồn mở hàng đầu cho thị giác máy tính, xử lý ảnh và máy học, với tính năng tăng tốc GPU cho hoạt động thời gian thực Được phát hành theo giấy phép BSD, OpenCV hoàn toàn miễn phí cho cả học thuật và thương mại, hỗ trợ các ngôn ngữ lập trình như C++, C, Python, Java, và tương thích với các hệ điều hành Windows, Linux, Mac OS, iOS và Android Thư viện này được thiết kế để tối ưu hóa tính toán và tập trung vào các ứng dụng thời gian thực, với mã nguồn được viết bằng C/C++ để tận dụng xử lý đa lõi.
Rễ dàng áp dụng và cài đặt
Nhanh, nhỏ gọn, có thể trên chạy trên nhiều nền tảng như windown, linux, mac
Không cần dữ liệu để huấn luyện.
Nhược điểm ứng dụng của OpenCV:
Khó nhận dạng các biển số nếu độ sáng thay đổi hoặc các biển số bị nhòe.
Kích thước biển số xe thay đổi(quá lớn hoặc quá bé) sẽ dẫn tới tình trạng sai lệch của phương pháp.
Để áp dụng được cần đặt góc và khoảng camera thích hợp dẫn tới công việc lắp đặt các thiết bị phần cứng trở nên khó khăn.
Emgu CV là một thư viện NET đa nền tảng, cho phép người dùng truy cập các chức năng của OpenCV thông qua các ngôn ngữ lập trình tương thích như C# và VB.
Visual Studio, Xamarin Studio, and Unity can compile wrappers like VC++, IronPython, and more, enabling applications to run on various platforms, including Windows, Linux, Mac OS X, iOS, Android, and Windows Phone One significant advantage of using the EmguCV library is its ability to facilitate computer vision tasks across these diverse environments.
Được viết hoàn toàn bằng C# nên có thể chạy được trên bất kỳ nền tảng hộ nào của IOS, Android, Windown, Linux
Có thể sửa dụng được nhiều ngôn ngữ khác nhauu như C#, C++, Python…
Xử lý khử nhiễu, điều chỉnh độ sáng…
Có thể gọi trực tiếp các chức năng từ thư viện OpenCV.
Nhược điểm áp dụng thư viện EmguCV
Tốc độ xử lý chậm do vậy khó áp dụng trên một số nền tảng tài nguyên thấp.
Bắt người dùng phải include tất cả các file dll với dung lượng lớn.
Haar Cascade là thuật toán phát hiện đối tượng dựa trên machine learning, cho phép xác định các đối tượng trong hình ảnh và video Thuật toán này sử dụng phương pháp xếp tầng, được đào tạo từ một tập hợp lớn hình ảnh tích cực và tiêu cực, nhằm phát hiện các đối tượng trong những hình ảnh khác.
Thuật toán nhận dạng biển số dựa trên các đặc trưng cơ bản của khuôn mặt người, như hình dạng, kích thước và các điểm nổi bật, nhằm cải thiện độ chính xác trong việc nhận diện Việc áp dụng những đặc điểm này giúp tối ưu hóa quy trình nhận dạng và nâng cao hiệu quả trong các ứng dụng an ninh và giám sát.
Đặc trưng về cạnh (edge features)
Đặc trung về đường (line features)
Đặc trưng xung quanh tâm (center-surrourd features)
Một số thuật toán liên quan đến Haar Cascade, khi áp dụng trong nhận dạng khuôn mặt, gặp phải nhược điểm lớn là chỉ nhận diện được các ảnh có hình dạng gần giống với khuôn mặt (vuông) Điều này khiến cho việc áp dụng cho bài toán tổng thể trở nên khó khăn.
1.3.4 Thuật toán Support Vector Machine (SVM)
SVM (Support Vector Machine) là một thuật toán học máy giám sát, chủ yếu được sử dụng cho phân loại dữ liệu Thuật toán này có khả năng phân loại các lớp dữ liệu, như minh họa trong hình 1.7 Hình 1.7 thể hiện đường phân lớp tín hiệu, phân chia rõ ràng hai loại dữ liệu: xanh và đỏ.
Hình 1.7 Phân cách các điểm dữ liệu trong thuật toán SVM Ưu điểm của việc áp dụng SVM
Xử lý trên không gian số chiều cao (ảnh màu): áp dụng trong các bài toán phân loại văn bản và phân tích quản điểm.
Tiết kiệm bộ nhớ là một lợi ích quan trọng, vì chỉ có một tập hợp con các điểm dữ liệu được sử dụng trong quá trình huấn luyện và ra quyết định cho các điểm dữ liệu mới Điều này có nghĩa là chỉ những điểm cần thiết mới được lưu trữ trong bộ nhớ khi đưa ra quyết định, giúp tối ưu hóa hiệu suất và giảm thiểu dung lượng lưu trữ.
Tính linh hoạt: phân lớp áp dụng các kernel nên cho phép tính linh hoạt của việc thay đổi các ma trận kernel này.
Nhược điểm của việc áp dụng SVM
Chưa thể hiện xác xuất nhận đúng: do chỉ việc cố gắng phân tách các đối tượng vào được lớp phân tách.
Bị nhầm trong các bài toán với tập dữ liệu lớn có nhiều đối tượng cần nhận dạng cho kết qua không cao.
Thuật toán dựa trên mạng nơ-ron (neural network) hoạt động trong không gian ba chiều, là một trong những mô hình Deep Learning tiên tiến, giúp xây dựng hệ thống thông minh với độ chính xác cao, được áp dụng rộng rãi trên các nền tảng như Facebook, Google và Amazon với chức năng nhận dạng khuôn mặt Mạng CNN bao gồm nhiều lớp Convolution và các lớp Pooling để giảm bớt thông tin đầu ra, thu nhỏ không gian ma trận đầu vào cho mạng tiếp theo Một số mô hình phổ biến hiện nay như YOLO, R-CNN, và SSD Bài viết này sẽ trình bày lý thuyết và áp dụng mô hình YOLO, cùng với những ưu và nhược điểm của phương pháp này.
Nhược điểm mô hình YOLO
Khó khăn trong việc áp dụng thuật toán ban đầu xuất phát từ yêu cầu cần có một nguồn dữ liệu lớn để huấn luyện, nhằm đảm bảo độ chính xác Điều này có thể dẫn đến một số thách thức trong quá trình huấn luyện.
Có độ chính xác thấp, khó áp dụng khi nhận dạng cỡ chữ có trong biển số.
Với các biển số có độ nghiên thuật toán khó áp dụng do đối tượng nhận dạng da đa số là ảnh hình vuông biển số. Ưu điểm YOLO
Gọn nhẹ dễ dàng áp dụng trên một số nền tảng nhúng.
Cho ra tốc độ nhanh và khá chính xác.
Là một như viện mã nguồn mở nên có thể được áp dụng vào mục đích thương mai.
Hệ thống trạm gửi xe sử dụng Raspberry Pi để nhận dạng biển số mang lại nhiều lợi ích về giá thành, không gian và tính tiện lợi trong trường hợp mất điện Dự án khả thi nhờ vào bộ xử lý tốc độ cao, hệ điều hành nhúng tích hợp và giao tiếp ethernet, giúp truyền dữ liệu nhanh chóng lên server cho việc lưu trữ và tính toán Hiện nay, một số phương pháp nhận dạng biển số như OpenCV, EmguCV và SVM được áp dụng, nhưng để triển khai trên các bo mạch nhúng, cần có sự tương thích về hệ điều hành và tài nguyên đủ để đảm bảo thời gian chờ của người gửi xe không quá lâu Để đạt được điều này, mô hình lý thuyết về mạng neural network và giao thức TCP/IP sẽ được áp dụng trong chương tiếp theo.
MÔ HÌNH LÝ THUYẾT ÁP DỤNG TRÊN TRẠM GỬI XE
Lý thuyết mô hình neural network
Mạng nơron là mô hình toán học mô phỏng hoạt động của nơron trong hệ thống thần kinh con người Hình 2.1 minh họa cấu trúc của mạng nơron sinh học so với mạng nơron nhân tạo, được áp dụng để giải quyết các nhiệm vụ cụ thể.
Input layer Output layer x0 x1 x2 xd
Cấu trúc mạng neuron thần kinh bao gồm một tầng đầu vào (input layer) với d+1 nút, nơi các trọng số w0, w1,…,wd được gán cho từng nút Dữ liệu đầu vào từ tầng này được tổng hợp qua công thức Z = ∑ w i x i, và sau khi tính toán tổng trọng số, giá trị Z sẽ được đưa qua hàm kích hoạt để tạo ra đầu ra Y.
Mô hình mạng neural network tương tự như một nút nhỏ trong hệ thần kinh sinh học, trong đó dữ liệu từ nhiều dây thần kinh được đưa về một nhân tế bào (cell nucleus) Nhân tế bào này hoạt động như một bộ tổng hợp có trọng số ∑ w i x i, nơi thông tin được tổng hợp tương tự như hàm kích hoạt trong mạng neural network, dẫn đến đầu ra cuối cùng Do đó, tên gọi "neural network" xuất phát từ cấu trúc này, với các lớp input, hidden layer và output được thể hiện rõ ràng.
Hình 2.2 Mô hình mạng neural network
Mỗi mạng nơ-ron (neural network) bao gồm nhiều nơ-ron đơn lẻ, mỗi nơ-ron nhận đầu vào (input) và sản sinh đầu ra (output) dựa trên các trọng số nhất định Các đầu ra này được sắp xếp thành các mạng lưới và phân chia theo các tầng ẩn (hidden layer), trong đó đầu vào của tầng sau là đầu ra của tầng trước Quá trình xử lý tại mỗi tầng phụ thuộc vào yêu cầu cụ thể của từng bài toán, dẫn đến các phương pháp xử lý khác nhau.
Mạng Neural Network là một thành phần quan trọng trong machine learning và deep learning, đặc biệt là trong các kiến trúc như CNN (Convolution Neural Networks) Các mạng này được cấu trúc dưới dạng chuỗi các lớp chuyển đổi, cho phép xử lý và phân tích dữ liệu một cách hiệu quả.
Lớp kết nối đầy đủ trong mạng nơ-ron giúp tổ chức không gian theo chuỗi ba chiều, tạo nên kiến trúc tinh gọn hơn Mạng CNN bao gồm nhiều lớp tích chập chồng lên nhau và sử dụng hàm kích hoạt phi tuyến như ReLU để điều chỉnh trọng số trong các nút Mỗi lớp, sau khi áp dụng hàm kích hoạt, sẽ trở thành đầu vào cho lớp tiếp theo, tạo ra các kết nối cục bộ giữa các lớp.
Mục đích của việc sử dụng các lớp tích chập là để trích xuất đặc trưng từ ảnh đầu vào Lớp tích chập thực hiện phép toán giữa ma trận ảnh đầu vào và kernel, một ma trận quét qua dữ liệu từ trái sang phải và từ trên xuống dưới Mỗi giá trị trong ma trận đầu vào sẽ được nhân với giá trị tương ứng trong kernel, sau đó cộng tổng lại và đưa qua hàm kích hoạt (như sigmoid, relu, elu, ) Kết quả cuối cùng là một ma trận mới chứa các giá trị cụ thể.
Convolution Layer như 1 cửa sổ trượt, Các giá trị trong mỗi filter sẽ không thay đổi trong suốt quá trình dịch chuyển.
Ví dụ thực hiện đầu vào của lớp convolution layer.
Sau khi kernel quét qua từng phần tử đầu vào và thực hiện phép nhân tương ứng, chúng ta sẽ thu được giá trị feature map bằng cách cộng các kết quả lại với nhau, như được thể hiện dưới đây.
Thực hiện lần lượt các bước tính toán ta sẽ thu được kết quả sau:
Khi áp dụng các giá trị kernel khác nhau, chúng ta sẽ nhận được những kết quả khác nhau, như thể hiện trong hình 2.3 Mỗi kernel sẽ giúp trích xuất những đặc trưng riêng biệt của từng ảnh trong hình 2.3.
Hình 2.3 Minh họa các ứng dụng của Convolutional Layer
Pooling Layer, hay còn gọi là subsampling hoặc downsample, là một thành phần quan trọng trong cấu trúc Mạng Nơ-ron Tích chập (Convolutional Neural Networks) Về mặt toán học, Pooling là quá trình xử lý ma trận nhằm giảm kích thước mà vẫn giữ lại các đặc trưng nổi bật trong ma trận đầu vào Việc giảm kích thước này giúp giảm số lượng tham số Bằng cách sử dụng cửa sổ trượt để quét qua từng giá trị đầu vào, Pooling chọn ra giá trị lớn nhất trong cửa sổ đó làm đặc trưng.
Trong trường hợp ta có một một ảnh ở dưới dạng ma trận có kích thước W× H ×
Chiều dài, chiều rộng và chiều sâu của ma trận điểm ảnh được ký hiệu lần lượt là D, trong khi kích thước của ma trận kernel là F × F Với số bước nhảy giữa hai ma trận là S, kích thước đầu ra có thể được xác định thông qua một công thức cụ thể.
Với kích thước đầu ra là: W out × H out × D [6]
Ví dụ với cửa số trượt bằng 2x2 khi trượt qua đầu vào ta sẽ có ma trận sau: input
Hình 2.4 Minh hoa ứng dụng dùng 2 lớp Full-Connected Layer
Kết nối đầy đủ (full-connected) là phương pháp liên kết tất cả các nơ-ron giữa hai tầng trong mạng nơ-ron, trong đó tầng sau kết nối hoàn toàn với các nơ-ron ở tầng trước Phương pháp này thường được áp dụng ở các tầng cuối cùng của mạng để tối ưu hóa khả năng dự đoán và phân loại.
Mạng nơ-ron sâu thường sử dụng hai lớp Full-Connected Layer ở cuối để kết nối giữa các lớp đầu vào Qua quá trình xử lý thông qua các lớp convolution layer và max pooling, chúng ta thu được kết quả đầu ra như được minh họa trong hình 2.4.
Hàm ReLU (Rectified Linear Unit) hoạt động bằng cách loại bỏ các giá trị âm và thay thế chúng bằng 0, điều này giúp ngăn chặn việc giá trị kết quả bị mắc kẹt ở 0 hoặc trôi dần về phía vô cực khi đi qua nhiều tầng.
CNN là một kiến trúc mạng nơ-ron bao gồm nhiều lớp đầu ra, trong đó có các thành phần cơ bản như Convolution (CONV), Pooling (POOL), ReLU và Fully-Connected (FC) Cấu trúc này được thiết kế đơn giản và được áp dụng cho việc nhận dạng hình ảnh đầu vào, chẳng hạn như xe hơi, như thể hiện trong hình 2.5.
Hình 2.5 Kiến trúc mô hình CNN nhận dạng xe [7]
Mô hình mạng YOLO
Có một vài thuật toán để phát triển liên quan đến nhận dạng đối tượng được chia làm hai nhóm chính:
Thuật toán phân loại (classification) được thực hiện qua hai bước chính: đầu tiên, lựa chọn khung vực ảnh khả thi nhất, sau đó phân loại khu vực đó bằng mạng tích chập CNN Mặc dù giải pháp này mang lại hiệu quả cao, nhưng có thể mất thời gian do phải chạy dự đoán cho các khu vực đã chọn, ví dụ như trong mô hình Region-based convolutional neural network (RCNN).
Thuật toán dựa trên hồi quy cho phép dự đoán các lớp và khu vực (box) cho toàn bộ hình ảnh trong một lần chạy, thay vì chỉ chọn các phần có khả năng Một trong những thuật toán nổi bật trong lĩnh vực này là YOLO (You Only Look Once), thường được sử dụng để phát hiện các đối tượng với thời gian thực.
YOLO (You Only Look Once) là một phương pháp quan trọng trong Computer Vision, sử dụng mạng tích chập sâu để phát hiện và trích xuất đặc trưng của ảnh Đây là một trong những kỹ thuật nhanh nhất hiện nay cho việc nhận dạng đối tượng, có thể áp dụng trên các nền tảng IoT như Raspberry Pi Từ khi ra đời, YOLO đã có ba phiên bản: YOLO1, YOLO2 và YOLO3, mỗi phiên bản đều cải thiện khả năng chia và tính toán tâm đối tượng trong ảnh thông qua việc dự đoán lớp và giới hạn chỉ định cho từng đối tượng Mô hình tổng quan của YOLO1, như được thể hiện trong hình 2.6, cho thấy các lớp và các thông số liên quan đến hộp giới hạn.
Hình 2.6 Kiến trúc mạng YOLO cơ bản[9]
Ví trí trung tâm đặt của bật thể (bx by)
Kích cỡ vật thể chiều rộng (width) bx, chiều cao (height) by
Loại vật thể đó là gì (xe, đèn báo, động vật…)
2.2.1 Thuật toán YOLO1 Đầu tiên ta chia ảnh thành ma trận các ô vuông SxS grids, thông thường người ta sẽ chia thành 7x7, 9x9, 13x13 và 19x19 grid, mỗi ô vuông lại chứa thông tin mà mô hình phải dự đoán Để có thể lấy ra được các đối tượng (detect object).
Ví dụ trong hình 2.7 là trường hợp chia ảnh thành 7x7 grids.
Hình 2.7 Mô hình YOLO chia thành 7x7 grid cell[10]
Mạng bao gồm hai thành phần chính là các lớp convolution và lớp fully-connected Sau khi hình ảnh được xử lý qua các lớp này, chúng ta thu được kết quả đầu ra.
Vị trí của ô được xác định bởi B-bounding box, được sử dụng trong quá trình huấn luyện Mỗi bounding box chứa thông tin về vị trí và kích thước của ô, giúp cải thiện độ chính xác trong việc dự đoán.
• Mỗi bounding box được đăng trưng bởi năm con số bao gồm, tọa độ x,y, kích thuớc w,h và c: confidence-IOU (độ chính xác đối tượng cần detect ).
• IOU (intersectuib over union): là tỉ lệ giao nhau giữa hai hình.
• CLASS: phân bố xác xuất xem đối tượng đó thuộc class phân lớp nào.
Trong khi áp dụng thuật toán YOLO1 cũng có những nhược điểm nhất định như:
• Chỉ nhận dạng được 1 đối tượng trên 1 grid cell.
YOLO1 dự đoán các bounding box trực tiếp, cho phép kích thước của các đối tượng được sinh ra một cách tự do Tuy nhiên, thực tế cho thấy hầu hết các ảnh đều có kích thước gần giống nhau, như được minh họa trong hình 2.8 dưới đây.
Hình 2.8 Hình ảnh minh hoa các đối tượng dự đoán trong YOLO[11]
Dẫn tới việc cho ra đời thuật toán YOLO2 nhằm khắc phục những nhược điểm trên của phiên bản thuật toán đời đầu.
Hình 2.9 Kiến trúc mô hình YOLO2 loại bỏ hai lớp fully-connnected
Việc bổ sung Anchor Boxes trong phiên bản YOLO2 đã loại bỏ các lớp fully-connected layer, chuyển đổi cách dự đoán boundary box Mô hình mạng giờ đây cho phép các lớp dự đoán di chuyển từ cấp cell lên cấp boundary box, với mỗi lớp dự đoán bao gồm 4 tham số cho boundary box.
Để tạo ra dự đoán với kích thước 7*7*125, chúng ta thay thế lớp convolution cuối cùng bằng 3 lớp convolution 3*3 cho mỗi đầu ra 1024 kênh Cuối cùng, chúng ta thêm một lớp convolution 1*1 để chuyển đổi đầu ra 7*7*1024 thành 7*7*125.
2.2.2.2 Kết hợp convolutional với Anchor Boxes (hộp mỏ neo)
Trong YOLO1, phương pháp dự đoán bounding box có kích cỡ tự do gây tốn thời gian tính toán Để khắc phục nhược điểm này, YOLO2 đã sử dụng các anchor box có kích thước cố định, chỉ cần dự đoán phần sai lệch của các bounding box với anchor box để xác định bounding box cần tìm, giúp phát hiện nhiều đối tượng trong cùng một ô Để nhận diện nhiều đối tượng khác nhau, chúng ta sẽ tạo ra nhiều hình dự đoán và tập trung vào những hình dạng cụ thể mà chúng ta cho là giống với vật thể, từ đó việc training ban đầu sẽ có tính cố định hơn Các anchor box này có thể được xác định đầu vào, ví dụ như 5 anchor box được thể hiện trong hình 2.10.
Hình 2.10 Hình ảnh với anchor box là 5
Chúng ta có thể sử dụng sai lệch và các anchor để dự đoán và tạo ra bounding box Tuy nhiên, nếu không có ràng buộc cho kết quả dự đoán, các bounding box có thể bị chọn ngẫu nhiên một lần nữa YOLO2 xác định 5 tham số: t x, t y, t w, t h và t o Hình 2.11 minh họa hộp màu xanh là biên và hình chữ nhật chấm đỏ biểu thị tâm của anchor.
Hình 2.11 Hình ảnh biên giới hạn và tâm của kết quả Direct location prediction
YOLO predicts multiple bounding boxes for each grid cell, and to calculate the loss for true positives—instances where the model correctly identifies a positive class, such as recognizing a license plate—only the bounding box with the highest Intersection over Union (IoU) relative to the ground truth is considered The loss function in YOLO employs mean squared error in conjunction with the ground truth data for loss computation, and it consists of several components.
Localization loss (sai số giữa bounding box được dự đoán với ground truth)
Confidence loss (Đối tượng không nằm bên trong bounding box)
Nếu một đối tượng được xác định, classification loss của mỗi cell là bình phương sai số của xác suất mỗi class
nếu đối tượng xuất hiện trong cell i, nếu không thì nó bằng 0
là xác suất đối tượng c nằm trong i
Localization loss tính trên sai lệch về vị trí và kích thước của bounding box với ground truth.
nếu boundary box j của cell i chịu trách nhiệm phát hiện đối tượng, ngược lại bằng 0
tăng weight cho loss trong vị trí boundary box
Nếu đối tượng nằm trong box:
Nếu đối tượng không nằm trong box:
nếu boundary box j trong cell i chịu trách nhiệm phát hiện đối tượng
là confident score của box j trong cell i là weights giảm loss trong phát hiện ảnh nền1.3.4 thư viện Tesseract
Optical Character Recognition (OCR) is an open-source library developed by Google that converts images containing text into written text format Tesseract, written in C/C++, is compatible with various platforms including Windows, Linux, Mac, and Android.
Tesseract sử dụng quy trình từng bước để xử lý hình ảnh, bắt đầu bằng việc tiền xử lý với ngưỡng thích ứng nhằm tạo ra hình ảnh nhị phân Sau đó, nó phân tích các thành phần ký tự liên kết trong hình ảnh đầu vào, tiếp theo là cắt và liên kết các ký tự để sắp xếp thành từ Cuối cùng, quá trình nhận dạng được thực hiện thông qua các phương pháp clustering và classification Các bước này được minh họa chi tiết trong hình 2.12.
Hình 2.12 Kiến trúc Tesseract OCR[12]
1.3.4.2 training Tesseract Để chuẩn bị cho việc training Tesseract cần có một ảnh của một dạng văn bản mẫu bằng cùng ngôn ngữ với văn bản đang cố nhận diện Đối với mỗi đối tượng Tesseract tríc dẫn ra các đặt trưng của nó sau đó dùng các kỹ thuật clustering để xây dựng mô hình cho mỗi đối tượng và các mô hình đó sau cùng sẽ được sử dụng trong phương pháp classification để quết định xem chữ viết nào sẽ được nhận ra[12]. Để đào tạo cho Tesseract các thử nghiệm đã được thực hiện cho hai vấn đề cho việc nhận dạng biển số phát sinh đặt ra:
• Tiếp cân văn bản đào tạo đã được viết với một phông chữ làm bằng hình ảnh chữ duy nhất có trong hình
• Dùng các phông chữ tương tự nhau đã được viết với cùng một phông ví dụ như chữ cắc cặp chữ T va số 1, chữ Z và số 2
Giao thức truyền thông TCP
Socket cung cấp một giao diện lập trình mạng tại tầng Transport, hoạt động như một điểm cuối của kết nối giữa hai ứng dụng Hiện nay, socket được hỗ trợ rộng rãi trên nhiều hệ điều hành, đặc biệt là Linux và các hệ điều hành nhúng như Raspbian, cho phép tích hợp TCP socket trên những nền tảng này một cách hiệu quả.
Close() là mô hình truyền thông qua TCP socket được thể hiện qua các bước sẽ được trình bày ở phần lý thuyết ngay tiếp theo hình đây.
Hình 2.13 Mô hình truyền nhận file gữi client-server bằng socket
Giai đoạn 1 của quá trình kết nối mạng là khi server tạo một socket, gán số hiệu cho cổng và bắt đầu lắng nghe các yêu cầu kết nối tại cổng đó Server chuẩn bị để phục vụ các client có nhu cầu kết nối nhằm sử dụng dịch vụ ở tầng giao vận.
• Bind(): gán số hiệu cổng kết nối (port) cho socket.
• Listen(): server lắng nghe các yêu cầu kết nối đến cổng kết nối đã được tạo.
Giai đoạn 2: Client tạo ra socket, yêu cầu thiết lập một kết nối với server ở chính cổng kết nối mà server đã tạo ra trước đó.
• Connect(): client tạo ra một socket và gửi thông tin yêu cầu kết nối đến server thông qua công đã khởi tạo trước đó bên server.
Hàm Access() cho phép server phản hồi lại client, tạo điều kiện kết nối qua cổng đã mở Trong hai giai đoạn đầu, quá trình chủ yếu tập trung vào việc thiết lập đường truyền thông qua socket giữa client và server, đồng thời xác nhận khả năng gửi gói tin trong tương lai.
Giai đoạn 3: Trao đổi thông tin giữa client và server.
Sau khi kết nối, server sẽ tạo một bộ đệm để chờ nhận thông tin từ client Các gói tin sẽ được chia nhỏ và gửi đến bộ đệm của server cho đến khi có tín hiệu giải phóng bộ nhớ (cờ puh), lúc đó dữ liệu sẽ được giải phóng khỏi bộ đệm.
• Server sẽ phân tích kết quả gửi gói tin đến bằng lệnh read() và gửi trả tín hiệu phàn hồi bằng lệnh write().
• Client sẽ gửi kết quả bằng lệnh write(), và chờ nhận kết quả phản hồi từ server bằng lệnh read().
Trong giao thức TCP, gói tin được chia thành các khối nhỏ để truyền nhận dữ liệu hiệu quả Để xác định thứ tự các gói tin nhận được, trường Sequence number sẽ báo cáo số gói tin đã được server nhận Thông qua tín hiệu phản hồi này, client sẽ biết để gửi gói tin tiếp theo.
Giai đoạn 4: Kết thúc quá trình trao đổi.
Sau khi quá trình trao đổi dữ liệu hoàn tất, client sẽ gửi tín hiệu cờ FIN đến server để thông báo kết thúc việc gửi gói tin và chờ phản hồi Server nhận được gói tin sẽ gửi hai tín hiệu về phía client: một tín hiệu phản hồi ACK và một tín hiệu cờ FIN để xác nhận kết thúc quá trình Cuối cùng, client sẽ gửi tín hiệu phản hồi để xác nhận đã nhận được cờ FIN từ server, hoàn tất quy trình.
Sau khi hoàn tất quá trình, server sẽ trở lại chế độ kiểm tra kết nối thông qua hàm access() và tiếp tục chờ đợi cho đến khi nhận được gói tin tiếp theo từ phía client.
Quá trình kết nối giữa client và server bằng phương pháp bị động bao gồm bốn giai đoạn chính Đầu tiên, server khởi tạo cổng kết nối và lắng nghe các yêu cầu kết nối Tiếp theo, client tạo kết nối thông qua cổng đã được khởi tạo và server thực hiện kết nối Sau đó, quá trình gửi file giữa client và server diễn ra cho đến khi nhận được cờ báo trạng thái kết thúc có giá trị bằng 1 Cuối cùng, client và server tiến hành kết thúc quá trình truyền nhận file dữ liệu.
2.3.2.1 Tổng quan về TCP/IP
Trong các ngành tin học và viễn thông, tầng giao vận là tầng thứ tư trong mô hình OSI, có nhiệm vụ đáp ứng yêu cầu dịch vụ của tầng phiên và cung cấp dịch vụ cho tầng mạng Tầng giao vận đảm bảo việc truyền dữ liệu giữa các máy chủ một cách hiệu quả, bao gồm các chức năng sửa lỗi, điều khiển lưu lượng và đảm bảo tính toàn vẹn của dữ liệu Trong bộ giao thức TCP/IP, chức năng này thường được thực hiện bởi giao thức TCP, giúp duy trì kết nối và quản lý việc truyền tải dữ liệu.
Các giao thức liên mạng là bộ giao thức phổ biến nhất cho các hệ thống mở, cho phép giao tiếp qua nhiều liên mạng cũng như trong mạng LAN và WAN Trong số đó, Giao thức điều khiển truyền tải (TCP) và Giao thức liên mạng (IP) hoạt động ở tầng 4 và 3 của mô hình OSI Ngoài TCP và IP, bộ giao thức IP còn bao gồm nhiều giao thức cho tầng ứng dụng như dịch vụ thư điện tử và truyền tải tập tin Bộ giao thức này được phát triển vào giữa thập niên 70 bởi Văn phòng các dự án nghiên cứu chuyên sâu của Bộ Quốc phòng Mỹ (DARPA), nhằm tạo ra một mạng chuyển mạch gói để kết nối các hệ thống máy tính khác nhau Kết quả là bộ giao thức Liên mạng hoàn thành vào cuối thập niên 70, sau đó TCP/IP được tích hợp vào hệ điều hành UNIX phiên bản BSD, trở thành nền tảng cho Internet và dịch vụ WWW.
Hình 2.14 Cấu trúc gói tin TCP/IP Ý nghĩa của các trường trên hình 2.14 được mô tả như sau:
Version: Xác định phiên bản của giao thức đang được sử dụng.
IP Header Length: Xác định chiều dài của phần tiêu đề của gói tin, tính bằng đơn vị là từ -32 bits.
Total Length: Đặc tả chiều dài, tính bằng type, của cả gói tin IP, bao gồm cả phần dữ liệu và tiêu đề.
Indentification: Số nguyên nhận dạng gói tin dữ liệu hiện hành Trường này được sử dụng để lắp ráp lại các phân đoạn của gói tin.
Cờ (Flags) bao gồm 3 bit, trong đó bit có trọng số nhỏ nhất dùng để xác định xem gói tin có bị phân đoạn hay không Bit thứ hai chỉ ra liệu đây có phải là phân đoạn cuối cùng của gói tin hay không, trong khi bit có trọng số lớn nhất hiện chưa được sử dụng.
Fragment Offset là chỉ số xác định vị trí của một phân đoạn dữ liệu so với vị trí ban đầu của gói dữ liệu gốc Nó giúp máy tính có khả năng tái tạo lại gói tin ban đầu một cách chính xác.
Thời gian sống (TTL) là một cơ chế lưu giữ bộ đếm thời gian, với giá trị giảm dần cho đến khi đạt 0, lúc này gói tin sẽ bị xóa Điều này giúp ngăn chặn tình trạng gói tin bị truyền đi lòng vòng mà không bao giờ đến đích.
Protocol: Biểu hiện giao thức ở tầng trên sẽ nhận gói tin khi nó đã được giao thức IP xử lý.
Header Checksum: kiểm tra tính toàn vẹn của phần tiêu đề.
Source address: Địa chỉ của máy gửi gói tin.
Destination address: Địa chỉ của máy nhận gói tin.
Tùy chọn hỗ trợ giải quyết các vấn đề như bảo mật, trong khi dữ liệu chứa thông tin từ tầng trên được truyền đi một cách hiệu quả.
2.3.2.2 Kiến trúc và ưu nhược điểm mô hình Client/server
Mô hình client/server là một hình thức phổ biến trong ứng dụng phân tán, nơi phần mềm được chia thành các tiến trình client và server Client gửi yêu cầu đến server qua giao thức đã định sẵn, nhằm nhận thông tin hoặc yêu cầu server thực hiện một tác vụ Sau khi hoàn thành yêu cầu, server sẽ gửi phản hồi lại cho client.
THIẾT KẾ VÀ THỰC THI HỆ DỰ ÁN TRẠM GỬI XE
Mô hình hệ thống
Hình 3.1 Mô hình hệ thống camera
Hình 3.1 thể hiện hệ thống bao gồm ảnh đầu vào từ camera trên raspberry pi B+ thông qua ba quy trình xử lý bao gồm:
Dừng xe tại điểm quy định
Quét thẻ Chụp ảnh hình
Nhận dạng biển số Cho ra file text
Tạo file text Truyền lên server
Máy trạm Nhân viên soát vé khách
Process 1: Ảnh sau khi được chụp sẽ cho vào để nhận dạng xem trong hình vừa chụp có ảnh biển số hay không nếu có ảnh biển số thì sẽ tách ảnh biển số ra để đưa xuống quynh trình 2 xử lý riêng.
Process 2: Ảnh chỉ có riêng biển số sau khi được tách ra từ ảnh đầu vào sẽ được cho vào Process 2 như trên hình 3.1 để xử lý cho kết quả đầu ra là dạng text, trong quy trình này nếu bức ảnh bị dạng dạng sai người trông dữ trạm xe có nhiệm vụ căn chỉnh lại văn bản text cho đúng với hình ảnh biển số để truyền gộp file dữ liệu đó truyền lên server.
Process 3: Biển số dưới dạng text và ảnh thẻ từ đầu vào sau khi được tổng hợp lại thành một bản tin sẽ được truyền lên server để xử lý lưu trữ và tính toán hoặc sẽ nhận lại thông tin phản hồi từ dữ liệu từ server trong trường hợp có luông xe ra hay không để thực hiện việc mở barrier cho xe ra hay không.
Luồng xử lý dữ chi tiết
3.2.1 Xử lý luồng xe vào
Hình 3.2 trình bày sơ đồ hoạt động xử lý xe vào, làm rõ quy trình nhận dạng biển số Hệ thống sẽ cụ thể hóa chi tiết hơn về sơ đồ luồng xử lý dữ liệu như đã thể hiện ở hình 3.1 Sơ đồ này tương tự các tiến trình đã được xử lý trước đó trong hình 3.1.
Khách hàng sẽ dừng lại tại điểm quy định, nơi nhân viên kiểm soát vé sẽ quét thẻ đầu vào, bao gồm vé tháng hoặc vé ngày Đồng thời, hệ thống sẽ chụp ảnh biển số xe để nhận dạng Tại bước này, hình ảnh biển số sẽ được cắt ra để phục vụ cho bước tiếp theo.
Sau khi biển số xe được cắt ra để nhận dạng các ký tự và chữ số trong ảnh, nếu có sai sót trong việc nhận diện biển số, người soát vé cần nhập lại ký tự cho đúng Nếu các ký tự được nhập chính xác, xe sẽ được cho phép đi qua.
B3: Nhận đầu vào từ thẻ, kết hợp chuỗi kết quả văn bản của thẻ với văn bản từ ảnh biển số, và gửi kết quả này lên server Khách hàng sẽ nhận lại thẻ (vé xe) sau khi quá trình hoàn tất.
3.2.2 Xử lý luồng dữ liệu xe ra
Hình 3.3 minh họa sơ đồ hoạt động của quy trình cho xe ra trong hệ thống, bao gồm ba bước tương ứng với ba tiến trình xử lý đã được nêu trong mô hình tổng quan ở hình 3.1 Các bước chính trong quy trình này được trình bày cụ thể để dễ dàng theo dõi và thực hiện.
Khi khách lấy xe từ bãi đỗ, họ sẽ dừng lại tại điểm quy định và đưa vé cho nhân viên soát vé Nhân viên sẽ nhận thẻ và chụp ảnh biển số xe bằng cách bấm nút trên bàn phím Sau khi chụp, hệ thống sẽ nhận dạng biển số trong ảnh; nếu có, ảnh biển số sẽ được cắt ra để sử dụng trong bước tiếp theo.
Tại bước 2, sau khi cắt ảnh biển số từ bước 1, ảnh chỉ còn lại biển số sẽ được khoanh viền Từ những ảnh này, hệ thống sẽ chuyển đổi thành văn bản Nếu biển số bị nhận dạng sai, nhân viên soát vé cần nhập lại văn bản để đảm bảo kết quả chính xác và so sánh với dữ liệu trên server.
B3: Trong quy trình xử lý dữ liệu xe ra, bước 3 là giai đoạn khác biệt nhất so với quy trình xe vào Tại đây, sau khi nhận dạng chính xác biển số từ ảnh chụp đầu vào máy chạm (raspberry), hệ thống sẽ gửi tín hiệu đến server để truyền tải dữ liệu ảnh về thẻ xe cho việc xác thực với vé mà khách hàng cung cấp Nếu thông tin trùng khớp, xe sẽ được cho phép đi qua; ngược lại, nếu không trùng khớp, hệ thống sẽ phát tín hiệu báo động để nhân viên soát vé có biện pháp xử lý kịp thời.
Dừng xe tại điểm quy định
Quét thẻ Chụp ảnh hình
Nhận dạng biển số Cho ra file text
Nhận thẻ, cho xe ra Báo động
Hình 3.3 Sơ đồ luồng xử lý xe ra
3.3.3 Thiết kế giao thức truyền thông
3.3.1 Định nghĩa gói tin length type value
Hình 3.4 Các trường bản tin truyền lên server
Gói tin được gửi lên server được thể hiện trên hình 3.4, cấu trúc bản tin ở hình 3.4 bao gồm các trường được mô ta sau đây:
• Length: độ dài bản tin gói tin gửi lên server.
• Type: Định danh bản tin
Bản tin gửi lên server khi xe vào bao gồm các trường được thể hiện như trong bảng 3.1
Bảng 3.1 Gói tin gửi lên server khi xe vào
1 Length 4 20 Độ dài bản tin
3 Plate number 9 Char Biển số xe
Bản tin gửi lên server yêu cầu xác nhận thẻ (vé xe) của người lấy xe ra được thể hiện tác trường và ý nghĩa các truognwf trong bảng 3.2.
Bảng 3.2 Gói tin gửi lên server yêu cầu xác nhận thẻ (vé xe)
1 Length 4 11 Độ dài bản tin
Bản tin gửi từ trên server xuống khi gửi thẻ lên và server trả lời xuống được thể hiện trên bảng 3.3
Bảng 3.3 Gói tin phản hồi từ server khi xe ra
1 Length 4 14 Độ dài bản tin
3 Plate number 9 Char Biển số xe
3.2.3 Tạo dữ liệu huấn luyện mạng
3.2.3.1 Tổng hợp dữ liệu từ nguồn dữ liệu trên mạng
Dữ liệu huấn luyện đầu vào sau khi có sẽ được tổng hợp bao gồm hai loại:
• Một loại dành để nhận dạng và cắt ảnh biển sô trong mô hình mạng YOLO
• Một loại dành để nhận dạng ra chữ viết sau khi đã cắt được các ô hình vuồng có chứa chữ số trong thư viện tesseract.
Để chuẩn bị dữ liệu cho việc huấn luyện hệ thống YOLO, chúng tôi đã thu thập hơn 1700 ảnh đầu vào Dữ liệu đầu vào càng phong phú thì độ chính xác của mạng YOLO trong việc nhận dạng càng cao Tuy nhiên, do nguồn dữ liệu hạn chế, chúng tôi đã phải tìm kiếm và sử dụng ảnh tham khảo từ internet để phục vụ cho dự án.
B2: vẽ trainning cho ảnh đầu ra ra
Để huấn luyện mạng, hệ thống đã sử dụng công cụ “Yolo Annotation Tool” để khoanh vùng biển số trên từng ảnh, từ đó xuất ra tọa độ cần thiết Mục tiêu là tạo ra dữ liệu huấn luyện đầu vào cho mạng YOLO, giúp tạo ra các bounding box chính xác nhất Quá trình này góp phần nâng cao hiệu quả cắt ảnh biển số, như được thể hiện trong hình 3.4.
Hình 3.5 Ảnh dữ liệu đầu vào huấn luyến
B3: train nhận dạng ký tự có trong hình
Hình 3.6 Trainning ký tự nhận dạng trong ảnh
Mỗi loại biển số xe đều có những ký tự đặc trưng riêng, được quy định bởi các cơ quan chức năng, giúp chúng ta dễ dàng nhận diện chữ trên biển số Để chuẩn bị dữ liệu cho việc nhận diện, cần thu thập hình ảnh có các đường nét bị mất và các ký tự thông thường, nhằm huấn luyện hệ thống trong trường hợp biển số bị mờ hoặc thiếu nét, như minh họa trong hình 3.5.
3.2.4 Xử lý nhận dạng ảnh biển số
Xử lý nhận dạng biển số xe để chuyển đổi thành văn bản là bước quan trọng nhất trong quy trình nhận diện biển số Để thực hiện điều này, các mô hình YOLO được sử dụng để trích xuất hình ảnh biển số, kết hợp với thư viện OpenCV nhằm cắt ảnh, và cuối cùng sử dụng Tesseract để chuyển đổi hình ảnh thành văn bản.
3.2.4.1 Mô hình áp dụng thực tế về xử lý nhận dạng biển số Ảnh Độ chắc chắn
Bounding box Cắt ra ảnh biển sô Ảnh xám
Cắt ra ảnh biển sô
Mô hình xử lý nhận dạng ảnh thực tế bắt đầu bằng việc đưa ảnh đầu vào vào mô hình YOLO để tách các Bounding box với tọa độ xác định Tiếp theo, ảnh sẽ được cắt bằng OpenCV để chỉ giữ lại phần biển số và chuyển đổi sang ảnh xám nhằm thuận tiện cho việc xử lý Sau đó, từng ký tự trong ảnh sẽ được cắt ra và cuối cùng, Tesseract sẽ được sử dụng để nhận dạng và chuyển đổi các ký tự chữ số thành dạng text Quy trình này được minh họa trong hình 3.6.
3.2.4.2 Chụp ảnh đầu vào đưa vào raspberry xử lý
Hình 3.8 Ảnh biển số xe đưa vào xử lý camera
Sau khi Raspberry Pi chụp ảnh, hình ảnh sẽ được xử lý trong khối xử lý của Raspberry để cắt ra khung ảnh Kích thước ảnh có thể tùy chỉnh nhờ vào mô hình YOLO, nhưng để giảm số lượng ma trận xử lý và tăng tốc độ tính toán, camera của Raspberry Pi chọn kích thước ảnh đầu vào là 448x640.
3.2.4.3 Cắt ảnh biển số có trong hình chụp ảnh biển số.
Hình 3.9 Ảnh đã được cắt bằng mô hình YOLO
Sau khi áp dụng mô hình YOLO để xác định Bounding box, chúng tôi đã sử dụng thư viện OpenCV để cắt ảnh, chỉ giữ lại phần chứa biển số Việc này giúp giảm dung lượng ảnh và cải thiện khả năng nhận dạng chữ số trên biển số Kết quả cuối cùng được hiển thị như trong hình 3.8.
3.2.4.4 Xử lý ảnh xám đầu vào
Hình 3.10 Ảnh biển số xử lý về ảnh xám