Nhận dạng biển số xe dùng phương pháp học sâu CNNs (Luận văn thạc sĩ)Nhận dạng biển số xe dùng phương pháp học sâu CNNs (Luận văn thạc sĩ)Nhận dạng biển số xe dùng phương pháp học sâu CNNs (Luận văn thạc sĩ)Nhận dạng biển số xe dùng phương pháp học sâu CNNs (Luận văn thạc sĩ)Nhận dạng biển số xe dùng phương pháp học sâu CNNs (Luận văn thạc sĩ)Nhận dạng biển số xe dùng phương pháp học sâu CNNs (Luận văn thạc sĩ)Nhận dạng biển số xe dùng phương pháp học sâu CNNs (Luận văn thạc sĩ)Nhận dạng biển số xe dùng phương pháp học sâu CNNs (Luận văn thạc sĩ)Nhận dạng biển số xe dùng phương pháp học sâu CNNs (Luận văn thạc sĩ)Nhận dạng biển số xe dùng phương pháp học sâu CNNs (Luận văn thạc sĩ)
Trang 1Nguyễn Duy Long
Trang 2Luận văn được hoàn thành tại:
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Người hướng dẫn khoa học: PGS TS LÊ HOÀNG THÁI
Vào lúc: giờ ngày tháng năm
Có thể tìm hiểu luận văn tại:
- Thư viện của Học viện Công nghệ Bưu chính Viễn thông
Trang 3MỞ ĐẦU
Trong bối cảnh toàn cầu hóa và hội nhập quốc tế hiện nay, cùng với sự bùng nổ thông tin, sự phát triển của khoa học kỹ thuật và nhu cầu đi lại ngày càng tăng số lượng phương tiện giao thông trên đường ngày càng xuất hiện nhiều Với số lượng phương tiện giao thông lớn và còn không ngừng tăng lên như vậy đã làm nảy sinh nhiều vấn đề trong việc kiểm soát cũng như quản lý các phương tiện
Để giải quyết vấn đề này nhu cầu đặt ra là áp dụng các hệ thống tự động Một trong những hệ thống như vậy là hệ thống tự động nhận dạng biển số xe là hệ thống có khả năng thu nhận hình ảnh cũng như
là “đọc” và “hiểu” các biển số xe một cách tự động
Một hệ thống như vậy có thể được sử dụng trong rất nhiều các ứng dụng chẳng hạn như: trạm cân và rửa xe tự động hoàn toàn, bãi giữ xe tự động, kiểm soát lưu lượng giao thông, giám sát tai nạn hay trong các ứng dụng về an ninh như tìm kiếm xe mất cắp
Như mọi hệ thống tự động khác, hệ thống như vậy cũng sẽ yêu cầu có cả phần cứng lẫn phần mềm Phần cứng của nó có phần chính sẽ là một camera có tác dụng thu nhận hình ảnh còn phần mềm
sẽ có tác dụng xử lý hình ảnh đó Với sự phát triển của kỹ thuật điện
tử, các camera sẽ dễ dàng có khả năng thu nhận được hình ảnh do đó
mà vấn đề đặt ra và luôn là vấn đề quan trọng nhất trong hệ thống, quyết định tính hiệu quả của hệ thống xử lý ảnh như vậy sẽ là phần mềm xử lý ảnh Với vai trò như đã phân tích ở trên nghiên cứu này tập trung vào giải quyết các vấn đề đặt ra khi xử lý ảnh để đưa ra
chính xác biển số đăng ký xe
Trang 4Trước đây, đã có những nghiên cứu đáng kể về việc phát hiện biển số và những kỹ thuật nhận dạng Tuy nhiên hầu hết đều có những hạn chế nhất định, làm việc với camera tĩnh, góc nhìn, độ phân giải cố định, chỉ sử dụng cho một mẫu hay loại biển số cụ thể, phụ thuộc vào font chữ dùng trên biển số Đặc biệt là độ chính xác không được tốt dưới những điều kiện khác nhau như ảnh chụp không trực diện (thay đổi về tư thế), nhạy cảm với độ sáng (chói sáng, thiếu sáng), hiệu ứng sáng tối
Chính vì các lý do cơ bản trên, việc lựa chọn đề tài nghiên cứu
“Nhận dạng biển số xe dùng phương pháp học sâu CNNs” là cần
thiết và đáp ứng yêu cầu cấp thiết của mục tiêu cải thiện độ chính xác cho hệ thống nhận dạng biển số tự động
Luận văn được bố cục như sau:
Chương 1 – Tổng quan – Cơ sở lý luận
Chương 2 – Cơ sở lý thuyết
Chương 3 – Thực nghiệm
Chương 4 – Cài đặt và kiểm thử
Trang 5Chương 1 - TỔNG QUAN 1.1 Khái niệm về hệ thống nhận dạng biển số xe
đó một thuật toán OCR (Optical Character Recognition) được
sử dụng để lấy từng ký tự và chuyển đổi thành định dạng mà máy tính có thể phân biệt được các chữ và số như dạng text
1.1.4 Ứng dụng thực tiễn tại Việt Nam
Hệ thống nhận dạng biển số xe được xây dựng nhằm mục đích giám sát, kiểm soát các phương tiện
1.2 Một số nghiên cứu về phương pháp cách ly biển số, phân đoạn ký tự từ ảnh chụp của camera
1.2.1 Chuyển đổi Hough
1.2.2 Hình thái học
1.3 Một số nghiên cứu về phương pháp nhận dạng ký tự trong biển số từ ảnh chụp của camera
Phương pháp phổ biến nhất để nhận dạng ký tự là sử dụng mạng noron (hoặc SVM, K-NN,…), tức là huấn luyện cho máy tính
để nhận dạng các ký tự
1.4 Đề xuất phương pháp áp dụng trong luận văn
Các công trình nghiên cứu là những cơ sở quý báo, và các công trình này bước đầu cũng đã áp dụng Trong đồ án này, công việc cần phải giải quyết vấn đề phát hiện vùng chứa biển số xe và
Trang 6nhận dạng ký tự trong biển số Cả bài toán phát hiện vùng chứa biển
số và bài toán nhận dạng ký tự sẽ sử dụng mô hình Convolutional Neural Networks để tiến hành nhận dạng cho các biển đăng ký xe của Việt Nam
Trang 7Chương 2 - CƠ SỞ LÝ THUYẾT 2.1 Tổng quan về mạng noron, luật học delta và lan truyền ngược
2.1.1 Giới thiệu về mạng noron
Mạng nơron nhân tạo, Artificial Neural Network (ANN)
là một mô hình xử lý thông tin phỏng theo cách thức xử lý thông tin của các hệ nơron sinh học Nó được tạo nên từ một số lượng lớn các phần tử (nơron) kết nối với nhau thông qua các liên kết (trọng số liên kết) làm việc như một thể thống nhất để giải quyết một vấn đề cụ thể nào đó Một mạng nơron nhân tạo được cấu hình cho một ứng dụng cụ thể (nhận dạng mẫu, phân loại dữ liệu, ) thông qua một quá trình học từ tập các mẫu huấn luyện Về bản chất học chính là quá trình hiệu chỉnh trọng số liên kết giữa các nơron
Một Nơron nhân tạo cũng giống như một Nơron sinh học được cấu thành từ hai khối chính: nối kết và thân với nhân bên trong Mỗi khối này chịu trách nhiệm cung cấp hai kiểu biến đổi toán học khác nhau hình thành lên cơ chế xử lý thông tin của một Nơron: Biến đổi toán học nối kết và biến đổi toán học bên trong thân Nơron Mô hình tổng quát của một Nơron được mô tả trong hình sau:
Hình 2.1: Mô hình một noron sinh học
Trang 8Hình 2.2: Mô hình một noron nhân tạo của McCulloch và Pitts
Một cách tổng quát, mạng nơron nhân tạo là một cấu trúc xử
lý thông tin phân phối song song có các đặc điểm sau:
5 Có khả năng học, nhớ lại, tổng quát hóa từ dữ liệu học bởi việc điều chỉnh trọng số kết nối
6 Có khả năng tính toán mạnh mẽ và không là một nơron mang thông tin đơn lẻ
Bởi vì các đặc tính trên, các tên gọi khác thường sử dụng cho mạng nơron nhân tạo là: mô hình xử lý phân phối song song, mô hình kết nối, hệ thống tự tổ chức
2.1.2 Một số kiểu mạng noron
Các nơron trong mạng có thể kết nối đầy đủ (fully connected) tức là mỗi nơron đều được kết nối với tất cả các nơron khác, hoặc kết nối cục bộ (partially connected) chẳng hạn chỉ kết nối giữa các nơron trong các tầng khác nhau
) (
f
0
0 1
) (
“Cháy”
“Không cháy”
Trang 92.1.3 Mạng noron lan truyền ngƣợc MLP
Hình 2.3: Ánh xạ phi tuyến trong noron
Ánh xạ phi tuyến bao gồm:
Phép toán hợp nhất: đồ án xử dụng phép hợp nhất tuyến tính (Integration Linear Function)
Hàm truyền phi tuyến: đồ án sử dụng hàm sigmoid với =
1
Trang 10Đồ án xây dựng mô hình mạng neuron truyền thẳng đơn giản
ba lớp với lớp nhập, lớp ẩn và lớp xuất
Hình 2.4: Mô hình mạng noron truyền thẳng đơn giản 2.2 Giới thiệu về mạng noron tích chập và kỹ thuật cải tiến
2.2.1 Giới thiệu về mạng noron tích chập
Convolutional Neural là một trong những mô hình Deep Learning tiên tiến giúp cho chúng ta xây dựng được những hệ thống
thông minh với độ chính xác cao như hiện nay
2.2.2 Convolution
Để dễ hình dung, ta có thể xem tích chập như một cửa
sổ trượt (sliding window) áp đặt lên một ma trận
2.2.3 Mô hình mạng noron tích chập
Trong mô hình CNNs các layer liên kết được với nhau thông qua cơ chế convolution Layer tiếp theo là kết quả convolution từ layer trước đó, nhờ vậy mà ta có được các kết nối cục bộ Nghĩa là mỗi nơ-ron ở layer tiếp theo sinh ra từ filter áp đặt lên một vùng ảnh cục bộ của nơ-ron layer trước đó
Mỗi layer như vậy được áp đặt các filter khác nhau, thông thường có vài trăm đến vài nghìn filter như vậy Một số layer khác như pooling/subsampling layer dùng để chắt lọc lại các thông tin hữu ích hơn (loại bỏ các thông tin nhiễu)
Trang 11tả như sau (dấu mũi tên thể hiện thứ tự sắp xếp các tầng từ trước đến sau)
[[CONV -> RELU]*N -> POOL?]*M -> [FC -> RELU]*K -> FC
Trong đó:
[CONV -> RELU]*N tức là trong kiến trúc này sau tầng CONV là tầng RELU, trong CNN kiến trúc 2 tầng này có thể lặp N lần
POOL? là tầng Pooling cho người thiết kế quyết định có thể
có hoặc không
[[CONV -> RELU]*N -> POOL?]*M trong kiến trúc CNN
có thể lặp lại M lần kiểu sau tầng CONV là tầng RELU và kế tới là tầng Pooling
Trang 12[FC -> RELU]*K trong CNN có thể lặp K lần cấu trúc kiểu sau tầng FC là tầng RELU nhưng trước nó phải có tầng [CONV -> RELU]
2.3 Phương pháp cải tiến gần đây
2.3.1 Phương pháp học không giám sát để huấn luyện bộ trọng ban đầu
2.3.2 Phương pháp Dropout trong Deep Neural Networks
Như ta đã biết overfitting là một vấn nạn đối với Machine Learning, đặc biệt là trong mạng Deep Neural Networks Khi muốn cho mô hình trở nên phức tạp hơn, ta thường tăng số lượng layer và
số lượng noron (unit) của mỗi layer thay vì tăng bậc của feature Nhưng khi mô hình phức tạp hơn, overfitting bắt đầu xuất hiện, vì số lượng tham số trong mạng Deep Neural Networks nhiều và có “độ sâu” khác nhau, vì vậy có một kĩ thuật dành riêng cho mạng NN và khá đơn giản, đó là Drop-out
Drop-out là một kĩ thuật Regularization để chống lại vấn đề overfitting Cách Drop-out thực hiện là xoá bỏ một số unit trong các step training ứng với một giá trị xác suất p cho trước
Trang 13Kích thước của ảnh huấn luyện: 64 x 128 (pixel)
Hình 3.1: Mẫu biển 11 ký tự (Nhãn: 74-DY038.45_1)
Hình 3.2: Mẫu biển 9 ký tự (Nhãn: 09-T13567_1)
Một số ảnh huấn luyện có nhãn với giá trị xuất hiện là 0:
Hình 3.3: Biển số nhãn:82-T8242.84_0
Trang 14Ảnh đầu vào sau khi vecto hóa:
Hình 3.5: Ảnh đầu vào sau khi vecto hóa
Nhãn của ảnh (label của ảnh đầu vào) sau khi vecto hóa, vị trí ký tự xuất hiện trong mảng sẽ mang giá trị 1 còn lại là 0:
Hình 3.6: Nhãn của ảnh đầu vào sau khi vecto hóa
Đồ án đã xây dựng mạng noron căn bản ba lớp theo lý thuyết
đã đưa ra ở trên
Số lần huấn luyện (số vòng lặp): 500 lần với hệ số học: 0.001
Hình 3.7: Noron căn bản sau huấn luyện
Kiểm thử mạng với 100 ảnh biển số ta được kết quả như hình 3.9
Trang 15Hình 3.9: Kết quả kiểm thử mạng noron căn bản
3.2 Thực nghiệm mạng noron căn bản dùng thư viện trên bộ dữ liệu ảnh sưu tập
Đồ án sử dụng lớp tf.nn của thư viện tensorflow nhằm thực nghiệm với mô hình mạng noron này, ta được kết quả như hình 3.10
Số lần huấn luyện (số vòng lặp): 500 lần với hệ số học: 0.001
Số ảnh kiểm thử: 100
Hình 3.10: Thực nghiệm noron căn bản dùng thư viện 3.3 Thực nghiệm phương pháp phân lớp truyền thống dựa vào hình thái học sử dụng thư viện open CV trên bộ dữ liệu ảnh sưu tập
Số liệu thu thập sau khi thực nghiệm ứng dụng hệ thống giữ
xe thông minh được phát triển bởi công ty Tâm Toàn Thắng:
Trang 16Hình 3.14: Giao diện vận hành TTT-SP
Kết quả: 247/261 bức ảnh thực tế ~ 94,6%
Ứng dụng nhận dạng không thành công một số ảnh: bị tối - thiếu sáng, biển bị bóng – phản chiếu, biển dơ – mù - ố vàng, biển nghiêng – lệch
3.4 Thực nghiệm phương pháp phân lớp truyền thống dựa vào hình thái học sử dụng thư viện open CV trên bộ dữ liệu ảnh sưu tập
Đồ án sử dụng thư viện tensorflow xây dựng mô hình mạng CNNs đơn giản bao gồm hai tầng giữa (tương ứng 32 đặc trưng và 64 đặc trưng)
Số lần huấn luyện (số vòng lặp): 500 lần với hệ số học: 0.001
Số ảnh kiểm thử: 100
Ta được kết quả như hình 3.15
Hình 3.15: Thực nghiệm mạng CNNs đơn giản
Nhận xét:
Trang 17Mạng noron truyền thẳng (feedforward neural network) không thể hiện tốt với dữ liệu dạng ảnh (kích thước lớn) Chính sự liên kết quá đầy đủ đã tạo nên những hạn chế cho mô hình
Sau thực nghiệm ta có thể thấy trong ba mô hình tại mục 3.1 – 3.2 – 3.4, tuy số lần lặp khá ít, chỉ 500 lần, mô hình mạng noron đa lớp đơn giản cho kết quả cao nhất
Thực nghiệm phương pháp phân lớp truyền thống tại mục 3.3 nhằm cho thấy một số mặt hạn chế của phương pháp này và làm tiền
đề cho việc đề xuất phương pháp mô hình mạng CNNs cải tiến sẽ được cài đặt trong chương 4
Trang 18Chương 4 – CÀI ĐẶT VÀ KIỂM THỬ
Ngoài các mô hình được xây dựng dùng cho mục đích thực nghiệm trong chương 3, luận văn xây dựng thêm mô hình mạng CNNs dùng cho ứng dụng thực tế
4.1 Cài đặt ứng dụng
4.1.1 Nền tảng công nghệ sử dụng
Ngôn ngữ: Python version 3.6.4 – Anaconda 3, javascript kết hợp công nghệ ajax, html
Thư viện: Tensorflow, opencv
Card màn hình: GeForce 940MX 2GB nhằm tăng tốc độ khi huấn luyện mô hình
Font chữ: Soxe2banh.ttf (Loại bỏ bớt một số ký tự không được sử dụng trong biển số xe máy tại Việt Nam)
Luận văn xây dựng và sử dụng mạng CNNs giải quyết cả 2 công đoạn:
Dò tìm biển số
Sử dụng tầng convolution trượt cửa sổ lần lượt trên ảnh Vị trí được khoanh vùng sẽ mang giá trị xác suất cao nhất Sau đó tất cả các vị trí được cho là biển số (đặt ngưỡng xác suất >0.5) sẽ được gộp lại thành một vị trí chung trên ảnh
Nhận dạng chuỗi ký tự trên biển số
Mỗi vị trí cửa sổ trên ảnh sẽ được nhận dạng chuỗi
ký tự
Xây dựng mô hình mạng gồm ba tầng giữa và một tầng fully connected như hình 4.1
Trang 20Độ lỗi: ~458.71 (trong đó độ lỗi xuất hiện biển số: ~116.02,
độ lỗi ký tự: ~342.68 )
Hình 4.3: Huấn luyện sau 32460 lần lặp
4.1.2 Các chức năng của chương trình
Giao diện của chương trình:
Hình 4.4: Giao diện trang chủ của chương trình
Để chọn ảnh cần nhận dạng, ta nhấp chuột vào hình ảnh trên menu bên trái
Trang 22 Chương trình còn cho phép tiếp tục huấn luyện mô hình mạng sau khi đăng nhập với quyền quản trị
Hình 4.8: Đăng nhập với quyền quản trị
Để tiếp tục huấn luyện mô hình mạng, ta nhấn nút “Training” trên giao diện
Hình 4.9: Tiếp tục huấn luyện mô hình mạng của chương trình
Đầu vào của việc tiếp tục huấn luyện mạng sẽ là tập tin trọng
số cũ (tập tin weights.npz), sau khi việc huấn luyện hoàn tất, tập tin
lưu trữ trọng số mới sẽ được tạo ra
4.2 Kiểm thử và đánh giá
Hình ảnh thực tế: 261 bức ảnh sưu tập (được sử dụng tương
tự cho thực nghiệm tại chương 3 - mục 3.3)
Mô hình mạng được huấn luyện liên tục trong ba ngày với hơn 100000 lần lặp, trong đó mỗi lần lặp sử dụng 50 bức ảnh huấn luyện khác nhau
Tiến hành kiểm thử với bộ ảnh thực tế sưu tập đạt kết quả như sau:
Trang 23Khoanh vùng biển số đạt 252/261 bức ảnh thực tế ~ 96.5% Nhận dạng ký tự trong phân vùng biển số đạt 105/261 bức ảnh thực tế ~ 40.2%
Thay đổi: 32 -> 48 đặc trưng / số lần lặp: 32 000
Khoanh vùng biển số đạt 252/261 bức ảnh thực tế ~ 96.5% Nhận dạng ký tự trong phân vùng biển số đạt 213/261 bức ảnh thực tế ~ 81.6%
Hạn chế của mô hình: như đã đề cập trong mục 4.1.1,
phương pháp khoanh vùng dựa trên việc lựa chọn cửa sổ cho xác suất cao nhất, việc nhận dạng ký tự trong phân vùng phụ thuộc rất lớn vào phân vùng biển số đó có chính xác hay không, và nhiều trường hợp sai một vài ký tự do cửa sổ cho xác suất cao nhất lại không phù hợp
để đưa ra kết quả nhận dạng đúng
Như ví dụ bên dưới, mô hình đưa ra sáu tọa độ cửa sổ và chuỗi ký tự nhận dạng được tương ứng Cửa sổ có tọa độ (7,25) với xác suất 0,84 đưa ra kết quả chính xác, tuy nhiên cửa sổ có tọa độ (7,20) với xác suất 0.94 được chọn mang lại kết quả nhận dạng ký tự không chính xác
Hình 4.11: Tọa độ các cửa sổ
Trang 24Hình 4.12: Biển số nhận dạng sai Nơron 3
lớp tự xây
dựng
Nơron 3 lớp dùng thƣ viện
CNNs
16 đặc trƣng
CNNs 32 đặc trƣng tầng 1 & 64 đặc trƣng tầng 2 kết hợp drop out
tầng 2
CNNs 48 đặc trƣng tầng 1 & 64 đặc trƣng
tầng 2
Trang 25Tuy mô hình trong luân văn còn nhiều hạn chế (do hạn chế
về thời gian huấn luyện, thời gian kiểm thử cũng như việc lựa chọn, thiết lập mô hình, tự khởi tạo ngẫu nhiên bộ trọng ban đầu) và chưa thể so sánh với các ứng dụng đã được đưa vào thương mại Nhưng về
cơ sở lý thuyết phương pháp nhận dạng áp dụng CNNs mở ra một hướng mới trong bài toán nhận dạng biển số xe nhờ vào khả năng rút trích đặc trưng rất linh hoạt và hiệu quả (tạo nên các bản đồ đặc trưng mạnh)
Trong thực tế, ta có thể chọn giải quyết các bài toán cụ thể
mà nhu cầu mở rộng không quá lớn và không quá đòi hỏi độ linh hoạt cao Với những bài toán như vậy thì mạng CNNs vẫn là một mô hình hiệu quả