Mục đích của phương pháp PCA là loại bỏ đi một số hướng thành phần trong không gian dữ liệu, và chỉ giữ lại các thành phần đặc trưng nhất.
Formatted: Font: Check spelling and grammar Formatted: Font: 12 pt
Formatted: Font: Times New Roman, 12 pt
PCA giúp làm giảm số chiều của dữ liệu. Hay nói theo cách khác thay vì sử dụng các trục tọa độ của không gian cũ, PCA xây dựng một không gian mới có số chiều ít hơn, nhưng lại có thể biểu diễn dữ liệu tốt tương đương không gian cũ, nghĩa là đảm bảo độ biến thiên (variability) của dữ liệu trên mỗi chiều mới [19].
Hình 2.8 là một ví dụ kinh điển hình ảnh của một con lạc đà. Cùng một con
nhưng với hai góc nhìn khác nhau thì sẽ có được hai thông tin khác nhau.
Hình 2. 8. Phép chiếu lên các trục tọa độ khác nhau có thể cho cách nhìn khác nhau về
cùng một dữ liệu.
Hoặc một ví dụ khác như hình 2.9 với một tập dữ liệu ban đầu (tập điểm màu xanh) được quan sát trong không gian 3 chiều (trục màu đen), ta dễ dàng nhận thấy 3 trục này không mô tả được dữ liệu một cách tốt nhất. PCA sẽ tìm một hệ trục tọa độ mới ( là trục màu đỏ), với không gian mới dữ liệu được mô tả rõ ràng hơn (hình bên phải màu đỏ). Rõ ràng hình bên phải chỉ cần 2 trục tọa độ nhưng cách thể hiện dữ liệu tốt hơn so với hệ trục ban đầu.
Formatted: Font: Check spelling and grammar Formatted: Font: 12 pt
Formatted: Font: Times New Roman, 12 pt 2.3.2, Thuật toán PCA
Thuật toán PCA được trình bày lần lượt theo các bước dưới đây[7]:
Bƣớc 1: Chuyển đổi ảnh
Biểu diễn M ảnh trong không gian 2D thành 1D. Tạo vector có kích thước N (số
hàng của ảnh xám x số cột của ảnh xám) như mô tả sau:
(2.8)
Với: ai là giá trị pixel của ảnh T là chuyển vị của ma trận Si
Kết quả chuyển cho M ảnh đưa vào ma trận như sau:
Mỗi ảnh là một ma trận cột, ghép M ma trận cột ứng với M ảnh thành một ma trận có kích thước NxM
(2. 9)
Chỉ số đầu là thành phần của vector, chỉ số sau là thứ tự của ảnh.
Bƣớc 2: Tính ảnh trung bình
(2.10)
Chi tiết công thức trên:
(2.11)
Bƣớc 3: Trừ mỗi ảnh cho ảnh trung bình
Formatted: Font: Check spelling and grammar Formatted: Font: 12 pt
Formatted: Font: Times New Roman, 12 pt
(2.12)
Xây dựng ma trận từ các vừa tìm được
Đặt: sẽ được ma trận kích thước NxM
Bƣớc 4: Xây dựng ma trận Covariance
Nhằm mục đích thể hiện sự tương quan của từng vector đối với các vector còn lại trong không gian.
cov = AxAT (2.13)
Tính trị riêng (eigenvalue: ) và vector riêng (eigenvector: ) của ma trận Covariance này. Đó chính là thành phần đặc trưng thành phần thiết yếu của ảnh.
Trong thực tế, giả sử tồn tại một ảnh có kích thước 200x230 (độ rộng và độ cao
của ảnh) thì khi đó kích thước của ma trận cov là 46000x46000 (N2). Kích thước quá
lớn do đó không thể tính trực tiếp trị riêng và vector riêng theo cách này. Vì vậy áp dụng lý thuyết đại số tuyến tính: , có thể tính bằng cách giải quyết trị riêng, vector riêng của ma trận ATA (kích thước MxM nhỏ hơn nhiều so với NxN).
Đặt và là các trị riêng và vector riêng của ma trận ATA. Kết quả như sau: (2.14) Nhân mỗi vế của (2.14) cho A sẽ được:
với X= (2.15)
Điều này cho thấy: M vector riêng của và M trị riêng của đầu tiên tương ứng chính là tích ( A với vector riêng của ) và .
Các vector riêng là không gian đặc trưng của các biển báo trong cơ sở dữ liệu ảnh ban đầu. Các vector riêng được sắp xếp theo thứ tự từ cao đến thấp theo trị riêng tương ứng. Vector riêng có trị riêng càng cao sẽ mang nhiều đặc trưng thiết yếu nhất
Formatted: Font: Check spelling and grammar Formatted: Font: 12 pt
Formatted: Font: Times New Roman, 12 pt
trong không gian các biển báo. Ở đây chỉ với M hướng đặc trưng mang giá trị riêng lớn nhất trong không gian NxN không gian đặc trưng.
Bƣớc 5: Phép chiếu
Chiếu lần lượt các ảnh trong cơ sở dữ liệu đến không gian đặc trưng M, để sinh ra các biển báo đặc trưng trong không gian mới này.
(2.16)
Với
Với là các ma trận đặc trưng các biển báo đã rút trích ra được (gọi là các eigensignal).
là vector ảnh thứ i trừ đi ảnh trung bình.
Bƣớc 6: Ảnh cần nhận dạng
Chuyển đổi ảnh cần nhận dạng thành vector 1 chiều:
(2.17)
Tính sự sai số của ảnh cần nhận dạng với ảnh trung bình của các ảnh trong cơ sở dữ liệu.
Được vector sai số sau:
(2.18)
Chiếu sai số này lên không gian đặc trưng của các biển báo.
(2.19)
Formatted: Font: Check spelling and grammar Formatted: Font: 12 pt
Formatted: Font: Times New Roman, 12 pt
Như vậy dựng đặc trưng của ảnh cần nhận dạng và đặc trưng các biển báo trong cơ sở dữ liệu đã được xây dựng.
Phân loại biển báo các đơn giản nhất là dùng khoảng cách Euclide.
(2.20)
2.4. Nhận dạng biển báo dùng bộ phân lớp Support Vector Machine (SVM)
Support Vector Machine (SVM) là phương pháp phân lớp dựa trên lý thuyết thống kê của Vapnik và Alexei Chervonenkis xây dựng vào năm 1960 [7]. Và được sử dụng nhiều trong các ứng dụng nhận dạng chữ viết tay, nhận dạng khuôn mặt, phân loại tài liệu, tin sinh học…So với các phương pháp phân loại khác, khả năng phân loại của SVM là tương đương hoặc tốt hơn đáng kể [7]. Trong luận văn, nhóm nghiên cứu đã biểu diễn biển báo giao thông nguy hiểm dưới dạng vector và áp dụng phương pháp phân loại SVM để phân loại các biển báo giao thông nguy hiểm.
2.4.1, Phân lớp tuyến tính (Linear classifier)
Ý tưởng của thuật toán SVM là xây dựng một mô hình để phân loại một đối tượng có thuộc hay không thuộc vào nhóm đối tượng cần quan tâm. Thuật toán SVM sẽ biểu diễn các điểm trong không gian và xác định ranh giới giữa hai nhóm đối tượng sao cho khoảng cách giữa tập dữ liệu được huấn luyện tới ranh giới là xa nhất có thể.
Tiến hành xét một bài toán đơn giản là tách hai lớp với tập dữ liệu mẫu đã được huấn luyện. Và sau đó ta có thể mở rộng phương pháp cho nhiều trường hợp tổng quát mà dữ liệu thậm chí không thể tách được phân lớp.
Với xi, i = 1, 2 ,.., N là tập các vector đặc trưng của bộ huấn luyện X. Và nó sẽ thuộc về một trong hai lớp w1,w2 và được giả sử rằng tập dữ liệu sẽ được phân lớp tuyến tính. Với mục tiêu là sẽ xây dựng mặt siêu phẳng(hyperplane) để tách chính xác các phân lớp mẫu được huấn luyện được cho bởi phương trình sau:
g(x) = wTx + w0 =0 (2.21)
Trong đó w là vector trọng số, w0 là độ dịch.
Với phương trình (2.21) ta sẽ xác định được mặt siêu phẳng theo như mô tả trong hình 2.10. Trong trường hợp này mặt siêu phẳng là đường thẳng đậm đen liền nét tách
Formatted: Font: Check spelling and grammar Formatted: Font: 12 pt
Formatted: Font: Times New Roman, 12 pt
hai phân lớp tuyến tính. Mặt siêu phẳng giúp dễ dàng tách được hai phân lớp w1,w2.
Tuy nhiên trong thực tế mặt siêu phẳng sẽ có nhiều hơn một như trong hình 2.11, ở
đây ta có thể dựng được hai mặt siêu phẳng được đánh dấu lần lượt là h1 và h2. Vấn đề cần giải quyết được đặt ra là sẽ chọn mặt siêu phẳng nào để dùng làm ranh giới tách hai phân lớp dữ liệu.
Hình 2. 10. Tách hai phân lớp tuyến tính với một mặt siêu phẳng.
Hình 2. 11. Tách hai phân lớp tuyến tính với hai mặt siêu phẳng
Trong trường hợp hình 2.11 thuật toán SVM sẽ xác định mặt siêu phẳng dùng để tách phân lớp dựa theo khoảng cách cực đại giữa hai mẫu dữ liệu đã được huấn luyện. Theo hình 2.11 có thể dễ dàng thấy được khoảng cách z2 > z1do đó mặt siêu phẳng h2 sẽ được SVM chọn dùng làm ranh giới để tách hai bộ phân lớp. Và khoảng cách cực đại này còn được gọi là lề(margin), mặt siêu phẳng này còn được gọi là mặt siêu phẳng lề tối đa.
Formatted: Font: Check spelling and grammar Formatted: Font: 12 pt
Formatted: Font: Times New Roman, 12 pt
Độ lớn của lề (margin) được cho như sau:
(2.22)
Từ phương trình (2.21) khi thay đổi w và w0 hướng và khoảng cách từ gốc tọa độ tới mặt siêu phẳng. Bộ phân loại SVM được định nghĩa như sau:
f(x) = sign(wTx + w0 ) (2.23)
Nếu f(x) = +1 thì x thuộc về phân lớp đang cần quan tâm, và ngược lại nếu f(x) = -1 thì x thuộc về lớp khác.
Phương pháp máy học SVM là tập các mặt siêu phẳng phụ thuộc vào các tham số w và w0. Mục tiêu của phương pháp SVM là ước lượng hai giá trị này để có thể cực đại hóa lề(margin). Với giá trị của lề càng lớn thì mặt siêu phẳng phân lớp càng tốt. Theo hình 2.12 thấy được với độ lớn của lề nhỏ hơn thì khả năng cho kết quả sai sẽ
cao hơn.
Hình 2. 12. Ví dụ minh họa về độ lớn của lề (margin)
Nếu tập dữ liệu huấn luyện là khả tách tuyến tính ta có các ràng buộc sau:
wTxi+ w0 ≥ +1 nếu yi= +1 (2. 24)
wTxi+ w0 ≤ -1 nếu yi= -1 (2.25)
Hai mặt siêu phẳng có phương trình wT
xi+ w0 = ± 1 được gọi là mặt siêu phẳng
hỗ trợ. Theo hình 2.11 thì mặt siêu phẳng hỗ trợ chính là những đường thẳng nằm song song với mặt siêu phẳng h1, h2.
Formatted: Font: Check spelling and grammar Formatted: Font: 12 pt
Formatted: Font: Times New Roman, 12 pt
Phương pháp có thể tìm được giá trị w và w0 để xây dựng được mặt siêu phẳng lề tối ưu là phải giải bài toán tối ưu toàn phương (Quadratic Programming).
Cực đại hóa:
(2. 26)
Với các ràng buộc sau:
(2. 27)
(2.28)
Trong đó các hệ số Lagrange là các biến số cần phải tối ưu hóa.
Vector w sẽ được tính từ các nghiệm của bài toán toàn phương như sau:
(2.29) Để xác định độ dịch w0, ta chọn xisao cho , sau đó sử dụng điều kiện Karush-Kuhn-Tucker (KKT) như sau:
(2.30) Với là những mẫu nằm gần mặt siêu phẳng nhất và được gọi là các vector hỗ trợ (Support Vector). Theo hình 2.13 những mẫu được gọi là Support Vector là các mẫu xanh hoặc đỏ được khoanh tròn và nằm trên mặt siêu phẳng hỗ trợ (do dấu của bất đẳng thức bằng +1 nếu đây là mẫu cần quan tâm và bằng -1 với các mẫu còn lại).
Formatted: Font: Check spelling and grammar Formatted: Font: 12 pt
Formatted: Font: Times New Roman, 12 pt
Hình 2. 13. Minh họa các mẫu được gọi là Support Vector. 2.4.2, Phân lớp phi tuyến (Nonlinear classifier)
Thực tế trong trường hợp tổng quát, mặt phân hoạch có thể là một mặt phi tuyến bất kì (Hình 2.14). Và ta chỉ cần ánh xạ vector dữ liệu vào không gian đặc trưng có số chiều cao hơn nhiều.
Ví dụ theo hình 2.14 giả sử các mẫu xithuộc không gian Rn, không gian này được gọi là không gian giả thiết (hypothesis space). Để tìm mặt phi tuyến trong không gian này, ta ánh xạ các vector mẫu xi từ Rn vào một không gian Rd có số chiều lớn hơn (d > n,d có thể bằng ∞). Rd được gọi là không gia đặc trưng (feature space). Sau đó áp dụng phương pháp SVM tuyến tính để tìm ra một siêu phẳng phân hoạch trong không gian đặc trưng Rd. Siêu phẳng này sẽ là ứng với mặt phi tuyến trong không gian
Rd.[ 6 ]
Hình 2. 14. Một mặt phân chia phi tuyến có thể trở thành một siêu phẳng trong không
Formatted: Font: Check spelling and grammar Formatted: Font: 12 pt
Formatted: Font: Times New Roman, 12 pt
Trong không gian đặc trưng (feature space) này, các điểm dữ liệu trở thành khả tách tuyến tính, hoặc có thể phân tích với ít lỗi hơn so với trường hợp sử dụng không gian ban đầu. Khi đó, bài toán quy hoạch toàn phương ban đầu trở thành như sau:
Cực đại hóa:
(2.31)
với các ràng buộc sau:
(2.32)
(2.33) Trong đó k là một hàm nhân (kernel function) thỏa mãn:
(2.34)
Với việc sử dùng hàm nhân (kernel function), thì ta không cần quan tâm về ánh xạ . Bằng cách chọn một hàm nhân phù hợp, ta sẽ xây dựng được nhiều bộ phân loại khác nhau. Ví dụ, chọn nhân đa thức dẫn đến bộ phân loại đa
thức, nhân Gaussian dẫn đến bộ phân loại RBF
(Radial Basis Functions)[1].
2.5. Tiểu kết
Chương này nhóm nghiên cứu trình bày phương pháp tổng quát được sử dụng trong đề tài. Nhóm cũng nêu ra những cơ sở lý thuyết về thuật toán trích xuất đặc trưng Haar-like, bộ tăng tốc Adadboost, phương pháp rút đặc trưng Principle Components Analysis, phương pháp nhận dạng biển báo giao thông dùng thuật toán Support Vector Machine.
Formatted: Font: Check spelling and grammar Formatted: Font: 12 pt
Formatted: Font: Times New Roman, 12 pt CHƢƠNG 3: THIẾT KẾ VÀ XÂY DỰNG CHƢƠNG TRÌNH
3.1 Chức năng của chƣơng trình. 3.2 Xây dựng chƣơng trình. 3.3 Tiểu kết
Formatted: Font: Check spelling and grammar Formatted: Font: 12 pt
Formatted: Font: Times New Roman, 12 pt 3.1. Chức năng của chƣơng trình
Chương trình được viết bằng ngôn ngữ lập trình C++ trong bộ phần mềm Visual Studio 2010 của Microsoft, cùng với sự hỗ trợ của bộ thư viện xử lý ảnh OpenCV của Intel.
Chương trình được xây dựng với 3 chức năng chính:
o Phát hiện và nhận dạng biển báo qua ảnh tĩnh.
o Phát hiện và nhận dạng biển báo qua video clip quay sẵn với định dạng AVI.
o Phát hiện và nhận dạng biển báo qua camera gắn trực tiếp với hệ thống.
Ngoài ra còn có một số chức năng phụ như:
o Tạo bộ cơ sở dữ liệu cho quá trình học nhận dạng.
o Huấn luyện nhận dạng biển báo cho chương trình.
3.2. Xây dựng chƣơng trình
3.2.1, Xây dựng cơ sở dữ liệu ảnh biển báo
Ảnh được dùng trong quá trình huấn luyện phát hiện biển báo gồm 2 loại:
o Ảnh Positive: là những ảnh có chứa đối tượng cần được phát hiện, cụ thể là ảnh có chứa biển báo.
o Ảnh Negative: là ảnh không chứa đối tượng biển báo.
3.2.1.1, Nguồn ảnh
Quá trình thu thập ảnh cho mục đích huấn luyện, nhóm đồng thời sử dụng nhiều phương pháp khác nhau để có được bộ dữ liệu ảnh.
Các nguồn ảnh được nhóm sử dụng:
o Google image.
o Ảnh trích xuất từ video clip tự quay hoặc sưu tầm từ YouTube.
o Ảnh tự chụp từ thực tế.
Quá trình huấn luyện của máy học đòi hỏi hàng ngàn tấm ảnh ở những điều kiện ánh sáng, tương phản khác nhau, để tạo được bộ ảnh như vậy tốn khá nhiều thời
Formatted: Font: Check spelling and grammar Formatted: Font: 12 pt
Formatted: Font: Times New Roman, 12 pt
gian nên nhóm đưa ra ý tưởng quay các đoạn video của biển báo sau đó viết một chương trình nhỏ để tách thành các frame ảnh từ đó khiến cho việc sưu tập bộ dữ liệu được nhanh chóng hơn và đặc biệt là có được những tấm ảnh với những đặc trưng đa dạng.
Từ những phương pháp trên nhóm xây dựng được bộ dữ liệu ảnh gồm 1848 ảnh Positive và 2805 ảnh Negative dùng cho việc huấn luyện máy học. Các ảnh được lưu trữ ở định dạng BMP.
3.2.1.2, Phân loại ảnh
Theo thông tư số 22TCN 237-01 biển báo nguy hiểm gồm 46 kiểu được đánh
số từ 201 đến 246. Dựa theo tình hình khảo sát thực tế [Phụ lục 1] tại thành phố Biên Hòa, nhóm đã phân loại ra các loại biển báo nguy hiểm phổ biến để tiến hành nghiên cứu như theo bảng 3.1.
Bảng 3.1. Một số biển báo giao thông đƣợc bộ đƣợc nhóm nghiên cứu.
Bảng 3. 1. Một số biển báo giao thông được bộ được nhóm nghiên cứu.
Biển Báo Ý Nghĩa
- Biển báo số 201a “Chỗ ngoặt nguy hiểm vòng bên trái”.
- Biển báo số 201b “Chỗ ngoặt nguy hiểm vòng bên phải”.
- Biển báo số 202 “Nhiều chỗ ngoặt nguy hiểm liên tiếp”.
- Biển báo 205e “Đường giao nhau”.
- Biển báo 207a “Giao nhau với đường không ưu tiên”.
- Biển báo 207b “Giao nhau với đường không ưu tiên”.
- Biển báo 207c “Giao nhau với đường không ưu tiên”.
- Biển báo 209 “Giao nhau có tín hiệu đèn”.
- Biển báo 210 “Giao nhau với đường sắt có rào chắn”.
Formatted: Font: Bold