ĐỒ ÁN TỐT NGHIỆP Nghiên cứu ứng dụng mạng Neural trong nhận dạng biển số xe mô tô hai bánh
ĐỀ TÀI: Nghiên cứu ứng dụng mạng Neural trong nhận dạng biển số xe mô tô hai bánh
MỞ ĐẦU
Mạng neural nhân tạo(Artificial neural networks ) là một mô phỏng xử lý thông tin, được nghiên cứu ra từ hệ thống thần kinh của sinh vật, giống như bộ não để xử lý thông tin. Trải qua nhiều năm phát triển, nay mạng Neural thực sự được chú ý và nhanh chóng trở thành hướng đi đầy triển vọng trong việc xây dựng các máy tính thông minh gần với trí tuệ con người.
Nhờ đặc tính khá mềm dẻo, dễ thích nghi với môi trường nên mạng Neural đã được áp dụng thành công trong các lĩnh vực nhận dạng, phân loại, giảm nhiễu, dự đoán,….
Nhận dạng ký tự là một trong những ứng dụng điển hình của mạng Neural, trong đó nhận dạng biển số xe đã và đang được áp dụng rộng rãi trong thực tiễn, ứng dụng trong camera an ninh, hay trong bãi giữ xe thông minh.
Vì vậy, em chọn đề tài “Nghiên cứu ứng dụng mạng Neural trong nhận dạng biển số xe mô tô hai bánh”
để làm đề tài đồ án tốt nghiệp bằng cách nghiên cứu và thực hiện mô phỏng trên Visual Studio. Để thực hiện được nội dung này thì đồ án của em được cấu thành bởi các chương sau:
Chương 1: Mạng Neural nhân tạo.
Chương 2: Cơ sở lý thuyết.
Chương 3: Xây dựng hệ thống.
Chương 4: Mô phỏng đánh giá.
Chương 5: Kết luận và hướng phát triển của đề tàiMỤC LỤC
Chương Một : Mạng Neural nhân tạo. 2
1.1. Mở đầu chương. 2
1.2. Sơ lược về neural sinh học. 2
1.3. Mạng Neural nhân tạo. 4
1.3.1. Mô hình một Neural nhân tạo. 6
1.3.2. Mạng Neural một lớp. 8
1.3.3. Mạng Neural nhiều lớp. 9
1.4. Phân loại cấu trúc mạng. 10
1.4.1. Mạng có cấu trúc tiến. 10
1.4.2. Mạng hồi quy. 10
1.5. Huấn luyện mạng neural.11
1.5.1.Phương pháp học. 11
1.5.2.Học có giám sát11
1.5.3.Học không giám sát12
1.5.4.Học tăng cường. 12
1.5.5. Thuật toán lan truyền ngược. 12
1.6. Các bước chuẩn bị thiết lập mạng. 14
1.7. Vấn đề quá khớp và khả năng tổng quát hóa của mạng. 14
1.7.1. Hiện tượng quá khớp. 14
1.7.2. Cải thiện tính tổng quát hóa (ngưng huấn luyện khi mạng quá khớp). 15
1.8. Ứng dụng mạng Neural trong lĩnh vự nhận dạng. 17
1.9. Kết luận chương. 18
Chương Hai: Cơ sở lý thuyết………………………………….………………………19
2.1. Giới thiệu chương. 19
2.2. Tìm hiểu hệ thống nhận dạng biển số xe mô tô hai bánh. 19
2.3. Xử lý ảnh.22
2.3.1. Các loại ảnh cơ bản trong xử lý ảnh.22
2.3.2. Các khái niệm cơ bản trong xử lý ảnh. 23
2.3.2.1. Phần tử ảnh (pixel). 23
2.3.2.2. Mức xám (gray level). 23
2.3.2.3. Ảnh số. 23
2.3.2.4. Ảnh nhị phân (binary image). 25
2.3.2.5. Ảnh xám (gray image). 25
2.3.2.6. Ảnh màu (color image). 26
2.4 Kỹ thuật chuyển ảnh màu sang mức xám.26
2.5. Lược đồ mức xám.27
2.6. Các kỹ thuật xử lý ảnh. 28
2.6.1. Xử lý ảnh bằng thuật toán K-means……………………………………………28
2.6.2. Lọc trung vị (Median). 30
2.6.3. Lọc BlobsFiltering. 30
2.7. Phương pháp phân tích phổ tần số (Fast Fourier Transform):…..……….....……31
2.8. Kết luận chương. 32
Chương Ba: Xây dựng hệ thống. 33
3.1. Giới thiệu chương. 33
3.2. Mô hình hệ thống nhận dạng biển số xe mô tô hai bánh. 33
3.3. Tách biển số, xử lý ảnh biển số và tách ký tự chữ số. 34
3.3.1. Tách biển số. 35
3.3.1.1. Lọc bỏ ngoại cảnh. 35
3.3.1.2. Tách biển số khỏi nền. 37
3.3.2. Tiền xử lý ảnh. 39
3.3.3. Tách ký tự trên biển số.41
3.4 Nhận dạng ký tự bằng mạng Neural nhân tạo.43
3.5. Chương trình mô phỏng. 43
3.6. Kết luận chương.44
Chương Bốn: Thử nghiệm, đánh giá và hướng giải quyết đề tài45
4.1. Giới thiệu chương. 45
4.2. Thử nghiệm với ảnh chụp biển số. 45
4.3. Nhận xét kết quả. 46
4.4. Một số kết quả mô tả việc thử nghiệm.. 47
4.4.1. Tách biển số. 47
4.4.2. Tách ký tự trên biển số. 48
4.4.3. Nhận dạng ký tự sau khi tách. 49
4.5. Hướng giải quyết của đề tài50
Tài liệu tham khảo……………………………………………………………..………51
Phụ lục…………………………………………………………………………………52
Chương Một
MẠNG NEURAL NHÂN TẠO
1.1. Mở đầu chương
Ở chương này ta sẽ tìm hiểu về lịch sử ra đời, thành phần cấu trúc cũng như cách huấn luyện cho mạng Neural nhân tạo và ứng dụng của nó trong thực tiễn.
1.2. Sơ lược về neural sinh học
Qua quá trình nghiên cứu về bộ não, người ta thấy rằng: bộ não con người bao gồm khoảng 1011 Neural tham gia vào khoảng 1015 kết nối trên các đường truyền. Mỗi đường truyền này dài khoảng hơn một mét. Các Neural có nhiều đặc điểm chung với các tế bào khác trong cơ thể, ngoài ra chúng còn có những khả năng mà các tế bào khác không có được, đó là khả năng nhận, xử lý và truyền các tín hiệu điện hóa trên các đường mòn Neural, các con đường này tạo nên hệ thống giao tiếp của bộ não. Sau đây là những thành phần chính trong cấu trúc của một Neural trong bộ não con người
Hình 1.1 : Mô hình neuron sinh học
Trong đó :
- Các Soma là thân của Neural.
- Các dendrites là các dây mảnh, dài, gắn liền với soma, chúng truyền dữ liệu (dưới dạng xung điện thế) đến cho soma xử lý. Bên trong soma các dữ liệu đó được tổng hợp lại. Có thể xem gần đúng sự tổng hợp ấy như là một phép lấy tổng tất cả các dữ liệu mà Neural nhận được.
- Một loại dây dẫn tín hiệu khác cũng gắn với soma là các axon. Khác với dendrites, axons có khả năng phát các xung điện thế, chúng là các dây dẫn tín hiệu từ Neural đi các nơi khác. Chỉ khi nào điện thế trong soma vượt quá một giá trị ngưỡng nào đó thì axon mới phát một xung điện thế, còn nếu không thì nó ở trạng thái nghỉ.
- Axon nối với các dendrites của các Neural khác thông qua những mối nối đặc biệt gọi là synapse. Khi điện thế của synapse tăng lên do các xung phát ra từ axon thì synapse sẽ nhả ra một số chất hoá học, các chất này mở "cửa" trên dendrites để cho các ions truyền qua. Chính dòng ions này làm thay đổi điện thế trên dendrites, tạo ra các xung dữ liệu lan truyền tới các Neural khác.
Có thể tóm tắt hoạt động của một Neural như sau: Neural lấy tổng tất cả các điện thế vào mà nó nhận được, và phát ra một xung điện thế nếu tổng ấy lớn hơn một ngưỡng nào đó. Các Neural nối với nhau ở các synapses. Synapse được gọi là mạnh khi nó cho phép truyền dẫn dễ dàng tín hiệu qua các Neural khác. Ngược lại, một synapse yếu sẽ truyền dẫn tín hiệu rất khó khăn.
Các synapses đóng vai trò rất quan trọng trong sự học tập. Khi chúng ta học tập thì hoạt động của các synapses được tăng cường, tạo nên nhiều liên kết mạnh giữa các Neural.
Có thể nói rằng người nào học càng giỏi thì càng có nhiều synapses và các synapses ấy càng mạnh mẽ, hay nói cách khác, liên kết giữa các Neural càng nhiều thì bộ não càng nhạy bén.
1.3. Mạng Neural nhân tạo
Mạng Neural nhân tạo(Artificial Neural Network) là một mô phỏng xử lý thông tin, được nghiên cứu từ hệ thống thần kinh của sinh vật, giống như bộ não bao gồm số lượng lớn các Neural được gắn kết với nhau để xử lý thông tin. Mạng Neural nhân tạo giống như con người, được học bởi kinh nghiệm (thông qua huấn luyện), lưu những kinh nghiệm hiểu biết và sử dụng trong việc dự đoán các dữ liệu chưa biết.
Sự kiện đầu tiên đánh dấu sự ra đời của mạng Neural nhân tạo diễn ra vào năm 1943 khi nhà thần kinh học Warren McCulloch và nhà toán học Walter Pitts viết bài báo mô tả cách thức các Neural hoạt động. Họ cũng đã tiến hành xây dựng một mạng Neural đơn giản bằng các mạch điện. Các Neural của họ được xem như là các thiết bị nhị phân với ngưỡng cố định. Kết quả của các mô hình này là các hàm logic đơn giản chẳng hạn như “ a OR b” hay “a AND b”.
Sau đó, một nhóm các nhà nghiên cứu đã kết hợp những kiến thức về sinh học và tâm thần học để tạo ra một mạng neural nhân tạo hoàn chỉnh đầu tiên. Ban đầu được chế tạo dưới dạng một mạch điện tử, sau đó các mạng neural được chuyển thành các chương trình mô phỏng trên máy tính có độ linh hoạt cao hơn.
Trong thời gian gần đây mạng Neural được phát triển mạnh mẽ với các nghiên cứu về các mạng Neural nhiều lớp phức tạp. Mặt khác do khả năng phần cứng của máy tính tăng lên rất nhiều cũng góp phần vào sự phát triển của lĩnh vực nghiên cứu này.
Mô hình tổng quát của mạng Neural có thể được hiểu đơn giản như hình sau:
Mạng Neural gồm các trọng số giữa các Neural |
So sánh |
Điều chỉnh trọng số |
Ngõ ra |
Ngõ vào |
Ngõ ra mong muốn |
Hình 1.2: mô hình toán học tổng quát của mạng Neural
Tín hiệu ngõ vào sau khi qua mạng neural sẽ được tính toán và ngõ ra của mạng sẽ được so sánh với tín hiệu đích mong muốn. Mạng sẽ tiếp tục cập nhật và điều chỉnh trọng số và ngưỡng đến khi thỏa mãn ngõ ra yêu cầu.
Điều kiện quan trọng trong việc sử dụng mạng neural là phải biết mối liên hệ giữa ngõ vào và ngõ ra biết trước. Mối quan hệ này có thể kéo theo nhiều thứ nhưng nó nhất định phải tồn tại.
Tổng quát, nếu ta sử dụng một mạng neural ta sẽ không biết chính xác trạng thái tự nhiên của mối liên hệ giữa ngõ vào và ngõ ra (nếu ta biết mối liên hệ ta có thể làm mô hình đó trực tiếp mà không cần mạng Neural ). Một tính năng khác của mạng neural là nó có thể học mối liên hệ giữa ngõ vào và ngõ ra thông qua việc huấn luyện. Có ba loại huấn luyện sử dụng trong mạng neural là huấn luyện có giám sát, huấn luyện không giám sát và kiểu huấn luyện tăng cường. Với những loại mạng khác nhau thì sử dụng các loại huấn luyện khác nhau. Huấn luyện có giám sát sử dụng thông dụng nhất.
Trong việc học có giám sát, người sử dụng mạng phải có một tập hợp dữ liệu cần huấn luyện. Tập hợp này chứa những ngõ vào mẫu với ngõ ra tương ứng và mạng sẽ huấn luyện để đưa ra mối liên hệ giữa ngõ ra và ngõ vào.
Ngày nay, mạng Neural ngày càng được ứng dụng nhiều trong thực tế. Đặc biệt là các bài toán nhận dạng mẫu, xử lý, lọc dữ liệu, và điều khiển. Ứng dụng của mạng Neural được chia thành các loại sau:
- Xử lý ngôn ngữ
- Nhận dạng mẫu
- Xử lý tín hiệu
- Lọc và phân loại dữ liệu
Mạng Neural nhân tạo được tạo thành từ cách mô phỏng lại hệ thống thần kinh con người, tức là mô phỏng lại từng neural thần kinh rồi gắn kết nhiều neural lại với nhau tạo thành mạng Neural nhân tạo.
1.3.1. Mô hình một Neural nhân tạo
Một Neural là một đơn vị xử lý thông tin và là thành phần cơ bản của một mạng Neural . Cấu trúc của một Neural được mô tả trên hình dưới.
wp + b |
p |
b |
w |
f |
∑ |
a = f(wp + b) |
Hình 1.3 : Neural một ngõ vào
Trong đó : p là ngõ vào.
w là trọng số
n = wp +b là tổng trọng số và ngưỡng
f là hàm truyền
a = f(wp + b) : ngõ ra của mạng
Nếu có nhiều ngõ vào thì p được định nghĩa đưới dạng một vector R phần tử, hay ma trận R hàng và một cột.
f |
∑ |
W1,1 |
W1,R |
Hình 1.4: Neural có nhiều ngõ vào
Các hàm truyền phải có các đặc tính sau:
- Hàm bị chặn trên và chặn dưới
- Hàm có tính đơn điệu
- Hàm phải có tính liên tục.
Thông thường hàm truyền là một trong bốn hàm sau
Hình 1.5: Các hàm truyền cơ bản.
1.3.2. Mạng Neural một lớp
Hình 1.6 mô tả mạng Neural một lớp với :
- R là số phần tử của vector đầu vào
- S là số Neural có trong lớp
- a = (W.P + b) là ngõ ra của mạng
Hình 1.6: Mô hình mạng Neural một lớp
Trong đó, ma trận trọng số w được biểu diễn như sau:
W =
Các Neural được làm gọn thành một với trọng số w là một ma trận (RxS), với S là số Neural có trong lớp.
Hình 1.7: Mạng Neural một lớp thu gọn
1.3.3. Mạng Neural nhiều lớp
Ta thấy ngõ ra a của mạng Neural một lớp là một vector, thực tế người ta dùng ngõ ra của lớp này làm ngõ vào của lớp kia để tăng khả năng huấn luyện. Thông thường người ta dùng ba lớp: một lớp vào, một lớp ẩn và một lớp đầu ra. Hình 1.9 biểu diễn mạng Neural truyền thắng gồm 3 lớp.
Hình 1.8: Mạng Neural truyền thẳng ba lớp
Mạng có nhiều lớp, mỗi lớp có một ma trận W, một ngưỡng b và một vector ngõ ra a. Thông thường giá trị ra của một lớp là giá trị đầu vào của lớp tiếp theo. Mỗi lớp trong mạng đảm nhiệm vai trò khác nhau, gồm đầu vào, đầu ra và các lớp ẩn. Mạng đa lớp có khả năng xử lý rất lớn.
1.4. Phân loại cấu trúc mạng
Xét theo theo cấu trúc mạng, người ta chia mạng Neural nhân tạo thành hai kiểu cấu trúc là mạng có cấu trúc tiến và mạng hồi quy
1.4.1. Mạng có cấu trúc tiến
Trong mạng có cấu trúc tiến, tín hiệu đi vào các Neural ngõ vào, qua các Neural ẩn và cuối cùng đến các Neural ngõ ra. Mô hình mạng giống như hình vẽ
Hình 1.9: Mạng Neural cấu trúc tiến
1.4.2. Mạng hồi quy
Giống mạng có cấu trúc tiến nhưng nó còn chứa các kết nối ngược trở về các Neural trước đó. Mạng có thể chạy không ổn định và dao động rất phức tạp. có hai loại là hồi quy hoàn toàn và hồi quy không hoàn toàn. Hồi quy không hoàn toàn là mạng có cấu trúc tiến, nhưng có một số phần tử có cấu trúc hồi quy.
Hình 1.10: Mạng Neural hồi quy không hoàn toàn
Hình 1.11: Mạng hồi quy hoàn toàn
1.5. Huấn luyện mạng neural.
1.5.1.Phương pháp huấn luyện
Mạng neural nhân tạo phỏng theo việc xử lý thông tin của bộ não người, do vậy đặc trưng cơ bản của mạng là có khả năng học, khả năng tái tạo các hình ảnh và dữ liệu khi đã học. Trong trạng thái học thông tin được lan truyền theo hai chiều nhiều lần để huấn luyện các trọng số. Có 3 kiểu huấn luyện chính, đó là huấn luyện có giám sát, huấn luyện không giám sát và huấn luyện tăng cường.
1.5.2.Huấn luyện có giám sát
Một thành phần không thể thiếu của phương pháp này là sự có mặt của một “người thầy” (ở bên ngoài hệ thống). Người thầy này có kiến thức về môi trường thể hiện qua một tập hợp các cặp đầu vào - đầu ra đã được biết trước. Hệ thống học (ở đây là mạng neural) sẽ phải tìm cách thay đổi các tham số bên trong của mình (các trọng số và các ngưỡng) để tạo nên một ánh xạ có khả năng ánh xạ các đầu vào thành các đầu ra mong muốn. Sự thay đổi này được tiến hành nhờ việc so sánh giữa đầu ra thực sự và đầu ra mong muốn.
1.5.3.Huấn luyện không giám sát
Trong huấn luyện không giám sát, ta phải tìm ra một mô hình mà mô hình đó phù hợp với các quan sát của mạng. Nó khác biệt với huấn luyện giám sát ở chỗ là đầu ra đúng tương ứng cho mỗi đầu vào là không biết trước. Mạng sẽ tự chọn đầu ra tương ứng với mỗi mẫu đầu vào. Đầu vào của nó là một tập các biến ngẫu nhiên.Phần lớn các ứng dụng nằm trong vùng của các bài toán ước lượng như mô hình hóa thống kê, nén, lọc, phân cụm.
1.5.4.Huấn luyện tăng cường
Huấn luyện tăng cường nghiên cứu cách thức hoạt động của một chủ thể trong một môi trường nên chọn các hành động nào, để cực đại một khoản nào đó về lâu dài. Các thuật toán huấn luyện tăng cường cố gắng tìm một chiến lược ánh xạ các trạng thái của môi trường tới các hành động của chủ thể trong trường hợp đó.
Huấn luyện tăng cường không có các cặp dữ liệu vào/ra đúng hay sai, các hành động gần tối ưu cũng không được đánh giá đúng sai một cách tường minh. Luôn có một sự cân bằng của việc học cái mới và kế thừa cái cũ. Huấn luyện tăng cường là cách thức hoạt động giống não của người nhất.
1.5.5. Thuật toán lan truyền ngược
Được ứng dụng để giải các bài toán điều khiển các hệ phi tuyến phức tạp và bất ổn định. Lan truyền ngược là một phương pháp cho phép xác định tập trọng sốt tốt nhất của mạng để giải một bài toán đã cho. Việc áp dụng phương pháp lan truyền ngược là một quá trình lặp đi lặp lại các tiến trình: lan truyền tiến để thực hiện ánh xạ và lan truyền ngược sai số để cập nhật các trọng số. các trọng số của mạng là các hệ số của mô hình. Phương pháp giảm gradient được dùng để cập nhật những hệ số này sao cho giảm thiểu được sai số của mô hình mạng.
Hình 1.12: mạng ba lớp lan truyền ngược
Đầu tiên ta cho lan truyền thẳng trong mạng, qua các neural và được tiếp tục với các hàm kích hoạt của phần tử Neural, các mạng được nghiên cứu cùng với thuật toán lan truyền ngược được gọi là “mạng lan truyền ngược”.
Thuật toán này cung cấp một thủ tục cho việc thay đổi các vector trọng số trong mạng, đầu ra của mạng được lan truyền ngược trở lại ở đầu vào cho đúng các mẫu. cơ sở cho việc cập nhật các trọng số là phương pháp gradient.
Với các cặp vào ra (x(f); d(k) – d(k) là đầu ra mong muốn), thuật toán lan truyền ngược thực hiện các bước như sau:
Đầu tiên, mẫu x(k) được lan truyền từ lớp đầu vào qua các lớp ẩn đi đến lớp đầu ra có kết quả là y(k). Sau đó, sai số giữa y(k) và d(k) được lan truyền ngược trở lại từ lớp đầu ra tới lớp đầu vào để cập thật trọng số. Hình 1.12 biểu diễn mạng Neural có m phần tử Neural ở lớp đầu vào, n phần tử Neural ở lớp đầu ra. Đường nét liền diễn tả lan truyền thẳng của tín hiệu, đường nét đứt thể hiện lan truyền ngược của các sai số.
1.6. Các bước chuẩn bị thiết lập mạng
Trước hết ta phải xác định được tập dữ liệu – là tập bao gồm một số các trường hợp, mỗi trường hợp chứa những giá trị của ngõ vào và ngõ ra khác nhau. Sau đó xác định những biến nào sẽ sử dụng, bao nhiêu trường hợp cần thu thập.
Việc lựa chọn những biến sẽ được sử dụng thường do trực giác quyết định và phụ thuộc vào công việc chuyên môn cũng như lĩnh vực của nó. Trong Neural Networks, ta có thể chọn và loại bỏ nhiều biến hoặc xác định bằng thực nghiệm những biến hữu ích. Bước đầu, ta nên tính đến bất kì biến nào mà ta nghĩ có ảnh hưởng đến quá trình thiết kế.
Thực hiện lặp đi lặp lại số thí nghiệm của mỗi cấu hình, giữ lại mạng tốt nhất (thường dựa trên sai số xác minh). Thí nghiệm nhiều lần trên mỗi cấu hình mạng để tránh rơi vào sai số cục bộ.
Trong mỗi lần thí nghiệm, nếu xảy ra việc huấn luyện chưa đủ (mạng không đạt được mức hiệu suất chấp nhận) thì thử tăng số Neural trong lớp ẩn. Nếu không hiệu quả, thì thêm một lớp ẩn.
Nếu xảy ra huấn luyện quá mức (sai số xác minh bắt đầu tăng lên) thử bỏ bớt một vài Neural ẩn (và có thể bỏ lớp ẩn).
1.7. Vấn đề quá khớp và khả năng tổng quát hóa của mạng
1.7.1. Hiện tượng quá khớp
Một trong những vấn đề thường xảy ra trong suốt quá trình huấn luyện mạng là quá khớp. Quá khớp xảy ra khi mạng được luyện quá khớp (quá sát) với dữ liệu huấn luyện (và nhiễu trên tập huấn luyện), nên nó sẽ trả lời chính xác những gì đã được huấn luyện, còn những gì không được huấn luyện thì nó không quan tâm. Sai số trong tập huấn luyện được kéo xuống rất bé, nhưng khi đưa dữ liệu mới vào thì mạng lại tạo sai số lớn. Mạng có nhớ được các mẫu huấn luyện, nhưng mạng không học được tính tổng quát hóa.
Các đa thức khác nhau có đồ thị khác nhau, với bậc lớn hơn (và do đó có nhiều số hạng hơn) sẽ có đồ thị phức tạp hơn. Với một tập dữ liệu cho trước, chúng ta muốn tìm ra đa thức biểu diễn tập dữ liệu này. Dữ liệu có thể có nhiễu, vì thế chúng ta không cần thiết tìm ra phương trình đúng nhất cho tất cả các điểm.
Mạng có càng nhiều trọng số thì hàm càng phức tạp và do đó sẽ rơi vào tình trạng khớp quá mức. Mạng có ít trọng số hơn sẽ không đủ khả năng để mô phỏng hàm cơ sở. Ví dụ như mạng không có các lớp ẩn chỉ mô phỏng hàm truyền đơn giản. Hình dưới cho thấy đáp ứng của mạng được huấn luyện quá nhiều. Rõ ràng mạng này quá khớp với dữ liệu và không tổng quát hóa tốt.
Hình 1.13: Mạng bị quá khớp với mẫu huấn luyện
Vậy chúng ta sẽ chọn lựa độ phức tạp của mạng đúng như thế nào? Mạng lớn hơn sẽ hầu như luôn luôn có được sai số nhỏ hơn, nhưng điều này có thể là khớp quá mức hơn là một mô hình tốt.
1.7.2. Cải thiện tính tổng quát hóa (ngưng huấn luyện khi mạng quá khớp).
Vấn đề quá khớp xảy ra vì mạng có năng lực quá lớn. Có 3 cách để hạn chế bớt năng lực của mạng:
– Hạn chế số nút ẩn
– Ngăn không cho mạng sử dụng các trọng số lớn
– Giới hạn số bước luyện
Khi mạng được luyện, nó chuyển các hàm ánh xạ từ đơn giản đến tương đối phức tạp. Nó sẽ đạt được một cấu hình tổng quát hóa tốt nhất tại một điểm nào đó. Sau điểm đó mạng sẽ học để mô hình hóa nhiễu, những gì mạng học được sẽ trở thành quá khớp. Nếu ta phát hiện ra thời điểm mạng đạt đến trạng thái tốt nhất này, ta có thể ngừng tiến trình luyện trước khi hiện tượng quá khớp xảy ra.
Ta biết rằng, chỉ có thể để đánh giá mức độ tổng quát hóa của mạng bằng cách kiểm tra mạng trên các mẫu nó không được học. Ta thực hiện như sau: chia mẫu thành tập mẫu huấn luyện và tập mẫu kiểm tra. Luyện mạng với tập mẫu huấn luyện nhưng định kỳ dừng lại và đánh giá sai số trên tập mẫu kiểm tra. Khi sai số trên tập mẫu kiểm tra tăng lên thì quá khớp đã bắt đầu và ta dừng tiến trình luyện.
Chú ý rằng, nếu sai số kiểm tra không hề tăng lên, tức là mạng không có đủ số nút ẩn để quá khớp. Khi đó mạng sẽ không có đủ số nút cần thiết để thực hiện tốt nhất. Do vậy nếu hiện tượng quá khớp không hề xảy ra thì ta cần bắt đầu lại nhưng sử dụng nhiều nút ẩn hơn.
Ngoài ra, người ta còn áp dụng phương pháp ngưng luyện khi mạng bắt đầu quá khớp. Trong kỹ thuật này, dữ liệu chia thành hai tập con. Tập thứ nhất là tập huấn luyện, dùng để cập nhật trọng số và ngưỡng của mạng. Tập thứ hai là tập kiểm tra. Sai số trên tập kiểm tra này được giám sát trong suốt quá trình huấn luyện. Sai số trên tập kiểm tra thường giảm trong giai đoạn đầu huấn luyện. Tuy nhiên khi mạng bắt đầu quá khớp dữ liệu, sai số trên tập kiểm tra thường bắt đầu tăng. Khi sai số kiểm tra tăng sau một số vòng lặp, việc huấn luyện sẽ ngừng, trọng số và ngưỡng ở cực tiểu sai số kiểm tra sẽ được trả lại.
Hình 1.14: Mạng được ngưng huấn luyện đúng lúc
1.8. Ứng dụng mạng Neural trong lĩnh vự nhận dạng
Ứng dụng mạng Neural trong lĩnh vực nhận dạng là xây dựng một hệ thống tin học có khả năng: cảm nhận-nhận thức-nhận biết các đối tượng vật lý gần giống khả năng của con người. Nhận dạng có gắn chặt với 3 khả năng trên là một lĩnh vực hết sức rộng có liên quan đến việc xử lý tín hiệu trong không gian nhiều chiều, mô hình, đồ thị, ngôn ngữ, cơ sở dữ liệu, phương pháp ra quyết định... Hệ thống nhận dạng phải có khả năng thể hiện được quá trình nhận thức của con người qua các mức:
oMức một : mức cảm nhận: cảm nhận được sự tồn tại các đối tượng quan sát, hay đối tượng mà hệ thống cần nhận dạng. Mức này cũng đưa ra quá trình thu nhận số liệu qua các bộ cảm biến trong hệ thống nhận dạng, ví dụ trong hệ thống nhận dạng tiếng nói: đối tượng ở đây là hình biển số xe máy được chụp từ camera.
oMức hai: mức nhận thức: ở đây biểu diễn quá trình học, mô hình hoá đối tượng để tiến tách các đối tượng cần nhận dạng thành từng nhóm với các đặc trưng khác nhau.
oMức ba: mức nhận biết: từ đối tượng đã được phân thành từng nhóm nhỏ, mạng có thể nhận biết đây là đối tượng nào ở đầu ra.
1.9. Kết luận chương
Trong chương này ta đã tìm hiểu được mô hình, cấu trúc cũng như cách huấn luyện mạng Neural và các ứng dụng của mạng Neural vào lĩnh vực nhận dạng, vốn là một trong những ví dụ điển hình của mạng Neural.
............................................
Chương Bốn
THỬ NGHIỆM, ĐÁNH GIÁ VÀ HƯỚNG GIẢI QUYẾT ĐỀ TÀI
4.1. Giới thiệu chương
Với phần mềm mô phỏng hệ thống đã được xây dựng ở chương Ba, chương Bốn đi vào thử nghiệm trên thực tế với ảnh chụp biển số và nhận xét kết quả có được, đồng thời đề ra hướng giải quyết của đề tài để ứng dụng vào thực tế.
4.2. Thử nghiệm với ảnh chụp biển số
Để thử nghiệm chương trình, ta lấy máy ảnh chụp hình lại biển số xe và cho chương trình nhận dạng, với các thông số của ảnh và hệ thống như sau:
Thông số ảnh thử nghiệm |
||
Loại ảnh |
JPEG, 3 kênh màu RGB |
|
Vị trí chụp ảnh |
Phía sau xe, biển số nằm ở trung tâm ảnh |
|
Loại biển số |
Biển số dân dụng nền trắng phản quang chữ đen |
|
Số lượng ảnh chụp |
107 ảnh |
|
Thông số hệ thống |
||
|
Intel Core i3-2350M - 2,30 GHz |
|
Bộ nhớ RAM |
4,00 GB |
|
Hệ điều hành |
Windows 7 Home Premium |
|
Ngôn ngữ lập trình |
Csharp 2013 |
|
Phần mềm mô phỏng |
Visual studio 2013 |
|
Bảng 4.1: Thông số ảnh và hệ thống thử nghiệm
Thử nghiệm với ảnh chụp, ta được kết quả thống kê trong bảng 4.2:
Số lượng ảnh thử nghiệm |
107 ảnh |
Số lượng tách biển số đúng |
79/107 ảnh |
Số lượng tách biển số sai |
28/107 ảnh |
Tỉ lệ trích biển số đúng |
73,83% |
Số lượng tách ký tự đúng |
60/79 ảnh |
Số lượng tách ký tự sai |
19/79 ảnh |
Tỉ lệ tách ký tự đúng |
75,95% |
Số lượng nhận dạng đúng |
33/60 ảnh |
Số lượng nhận dạng sai |
27/60 ảnh |
Tỉ lệ nhận dạng đúng |
55% |
Tốc độ xử lý |
≈ 1s |
Bảng 4.2: Thống kê kết quả thử nghiệm
4.3. Nhận xét kết quả
Để nhận xét chương trình, ta xét lần lượt các bài toán tách biển số, tách ký tự và nhận diện ký tự trong chương trình.
- Tách biển số: kết quả trích biển số đạt tỉ lệ tương đối (73,83%). Việc chọn ảnh nền để tách phần đuôi xe trong chương trình em chỉ cọn một ảnh cho nhiều phông nền khác nhau nên khiến cho việc tách biển số sai nhiều. Khoảng cách chụp ảnh cũng ảnh hưởng đến kết quả bài toán này rất nhiều, trong tập ảnh chụp, có một số ảnh chụp quá xa hay quá gần sẽ không trích được đúng vị trí biển số. ánh sáng môi trường cũng là một nguyên nhân khiến việc tách biển số sai lệch nhiều, một số ảnh có vùng ảnh không chứa biển số mà mức sáng lớn thì kết quả nhận diện sẽ sai lệch. Biển số bị nghiêng cũng làm cho việc tách biển số gặp khó khăn.
- Tách ký tự: cũng chỉ đạt tỷ lệ tương đối (75,95%) do chương trình chưa xử lý hết nhiễu trong ảnh. Một số biển số nhiễu do đinh ốc, bùn đất, tính phản xạ của mặt kính bảo vệ, trầy xước biển số,…làm tăng sai số trong tách ký tự . Nhiễu quá nhiều nên khi lọc nhiễu đã làm mất đi hay tăng thêm một số ký tự trên biển số và gây khó khăn cho việc nhận dạng, ví dụ số 0 thành số 8, số 1 với số 2, số 0 mất nét thành 9,6,….
- Nhận dạng ký tự: giai đoạn nhận dạng ký tự sẽ phụ thuộc rất nhiều vào giai đoạn trích biển số và tách ký tự. Nếu trích biển số và tách ký tự tốt thì kết quả nhận dạng sẽ tốt. Tuy nhiên nếu ảnh ký tự bị nhiễu quá nhiều cũng sẽ dẫn đến việc nhận dạng ký tự bị lỗi. Khi biển số bị nghiêng thì hai hàng ký tự hoặc nhiều ký tự có bề ngang lớn sẽ “dính” vào nhau khi phân tích histogram. Ngoài ra do số ký tự chữ thu thập được trên biển số khá ít (mỗi biển số chỉ có 1 hoặc 2 ký tự chữ) nên việc huấn luyện cho các ký tự chữ chưa hoàn chỉnh và việc nhận dạng chưa có kết quả tốt. Đối với các ký tự số thì thu thập được khá nhiều, tuy nhiên trong quá trình nhận dạng ký tự thì sẽ dễ bị nhầm lẫn giữa các ký tự 0 và 8, 2 và 7, 9 và 8 hay 5 và 6.
Các kết quả nhận dạng cuối cùng như vậy là chưa thực sự tốt, do xử lý nhiễu chưa được tốt trên biển số. Thuật toán tách biển số còn phụ thuộc nhiều vào độ sáng của ảnh nền và khoảng cách từ biển số đến camera. Thuật toán tách ký tự chưa loại bỏ được hết nhiễu trên biển số (đinh ốc, bùn đất cũng như một số ảnh có mặt gương làm phản xạ ánh sáng). Mạng Neural nhận dạng còn lỗi nhiều do chưa được huấn luyện kỹ.
4.4. Một số kết quả mô tả việc thử nghiệm
4.4.1. Tách biển số
Tỷ lệ tách biển số đúng đạt tỷ lệ khá cao, nhưng đối với một số ảnh có phông nền quá sáng (chụp ngược sáng) hay khoảng cách từ biển số tới camera không phù hợp thì không thể tách biển số được.
Hình 4.1: ảnh tách biển số đúng
Hình 4.2: Ảnh tách biển số sai
4.4.2. Tách ký tự trên biển số
Do ảnh hưởng của nhiễu (bùn đất. đinh ốc, chói sáng,…) cùng với phương pháp tách ký tự chưa tối ưu nên tỷ lệ tách ký tự trên biển số đạt tỷ lệ không cao, nhiều ký tự còn bị thiếu nét, thêm nét gây sai số lớn trong nhận dạng.
Hình 4.3: Ảnh tách ký tự đúng
Hình 4.4: Ảnh tách ký tự sai
4.4.3. Nhận dạng ký tự sau khi tách
Việc nhận dạng ký tự phụ thuộc rất nhiều vào việc tách biển số và tách ký tự. Nói chung những ký tự nào tách ra được, không bị mất nét, thêm nét,… thì chương trình nhận dạng khá tốt. còn đối với những ký tự mà trong quá trình tách bị mất nét (ví dụ số 0, số 8 mà chỉ cắt được một nửa, số 2 bị mất nét thành giống số 7) hoặc them nét (số 5 thêm nét thành số 6, số 6, số 9 thêm nét thành số 8)… thì hệ thống nhận dạng sai.
Hình 4.5: Nhận dạng ký tự đúng
Hình 4.6: Tách ký tự sai dẫn đến nhận dạng sai
4.5. Hướng giải quyết của đề tài
Từ những hạn chế trên, để có thể xây dựng hệ thống vào ứng dụng thực tế, em xin đề ra hướng giải quyết của đề tài như sau:
- Xây dựng thêm hệ thống tự động chụp ảnh biển số xe khi xe vào cổng bằng cách cảm biến phát tia hồng ngoại để phát hiện xe vào đúng vị trí.
- Xây dựng ứng dụng tổng quát hơn cũng như xử lý với một số trường hợp biển số đặc biệt như biển số xe nền xanh chữ trắng, hay nền đỏ chữ trắng, biển số se 4 bánh, và các loại xe khác nhau.
- Tăng cường khả năng tách biển số, tách ký tự và nhận dạng ký tự với khoảng cách linh động hơn, xử lý ảnh và nhận dạng tốt hơn đối với biển số xấu. Cũng như trong các điều kiện ánh sáng khác nhau.
- Phát triển khả năng tự điều chỉnh biển số nghiêng
- Tăng tốc độ xử lý của hệ thống.
TÀI LIỆU THAM KHẢO
[1] Doãn Đạt Phước, Nguyễn Đồng Hải Dương, Tự động nhận dạng biển số đăng ký xe trong ảnh chụp từ camera, Hội nghị sinh viên nghiên cứu khoa học lần 6, Đại học Đà Nẵng – 2008
[2] Lê Minh Trung, “Mạng Nơron nhân tạo”, Nhà xuất bản Thống kê, 1999
[3] Nguyễn Đình Thúc, “Mạng Nơron Phương pháp và ứng dụng”, Nhà xuất bản Giáo dục, 2000
[4] Nguyễn Phạm Anh Tuấn, Nhận dạng biển số xe, Đại học Lạc Hồng, 2010
[5] Trương Văn Thắng, “Nhận dạng biển số xe áp dụng việc quản lý giao thông”, Luận văn Thạc sĩ chuyên ngành Vật lý Điện tử, Đại học Khoa học Tự nhiên TP Hồ Chí Minh, 2003
[6] Carlos Gershenson, Artificial Neural Networks for Beginners, Website: http://arxiv.org/pdf/cs/0308031
[7] R. Rojas: Neural Networks, Springer-Verlag, Berlin, 1996
[8] Website: http://www.aforgenet.com/
[9] Website: http://www.codeproject.com
[10] Website: http://www.sch.vn/jquery-swfupload/uploads/5c8dadf4f3e38c75579ef677c740febe.pdf
Cùng nhiều nguồn tài liệu trên internet
PHỤ LỤC
Một số hàm sử dụng trong chương trình
Lọc bỏ ảnh nền (Subtract class):
// create filter
Subtract filter = new Subtract( overlayImage );
// apply the filter
Bitmap resultImage = filter.Apply( sourceImage );
Chuyển ảnh sang ảnh mức xám (Grayscale):
// create grayscale filter (BT709)Grayscale filter =new Grayscale(0.2125,0.7154,0.0721 );// apply the filterBitmap grayImage = filter.Apply( image );
Phân ngưỡng ảnh (Threshold):
// create filterThreshold filter =new Threshold(200 );// apply the filterfilter.ApplyInPlace( image );
Đảo màu ảnh (invent):
// create filterInvert filter =new Invert( );// apply the filterfilter.ApplyInPlace( image );
Bộ lọc Median:
// create filterMedian filter =new Median( );// apply the filterfilter.ApplyInPlace( image );
Bộ lọc BlobsFiltering:
// create filterBlobsFiltering filter =new BlobsFiltering( );// configure filterfilter.CoupledSizeFiltering =true;filter.MinWidth =25;filter.MinHeight =10;filter.MaxHeight =100;// apply the filterfilter.ApplyInPlace( image );
Nghiêncứuứngdụngmạng Neural nhântạotrongnhậndạngbiểnsốxemôtôhaibánh