Phân lớp tuyến tính (Linear classifier)

Một phần của tài liệu Xây dựng chương trình phát hiện và nhận dạng một số biển báo giao thông đường bộ nguy hiểm tại việt nam báo cáo nghiên cứu khoa học sinh viên (Trang 42)

Ý 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 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 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 (adsbygoogle = window.adsbygoogle || []).push({});

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]. (adsbygoogle = window.adsbygoogle || []).push({});

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. (adsbygoogle = window.adsbygoogle || []).push({});

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 Formatted: Centered Formatted: Font: Bold

Formatted: Font: Check spelling and grammar Formatted: Font: 12 pt

Formatted: Font: Times New Roman, 12 pt

- Biển báo 225 “Trẻ em”.

3.2.2, Huấn luyện phát hiện biển báo trong ảnh

Để thực hiện quá trình huấn luyện phát hiện các biển báo nguy hiểm trong ảnh, nhóm sử dụng bộ công cụ HaarKit. Bộ công cụ HaarKit bao gồm các chương trình hỗ trợ cho việc huấn luyện máy học.

Quá trình huấn luyện trải qua 3 bước: - Chuẩn bị dữ liệu ảnh huấn luyện. - Lấy mẫu đối tượng từ bộ dữ liệu. - Huấn luyện máy học.

3.2.2.1, Chuẩn bị dữ liệu

Tập ảnh Positive có chứa đối tượng biển báo được đặt tên theo thứ tự và chép vào trong thư mục “rawdata” có đường dẫn “haarkit\temp\positive\rawdata”.

Hình 3. 1. Tập ảnh Positive trong thư mục “rawdata”

Tập ảnh Negative không chứa đối tượng biển báo được đặt tên theo thứ tự và chép vào trong thư mục “negative” có đường dẫn “haarkit\temp\negative”.

Formatted: Font: Check spelling and grammar Formatted: Font: 12 pt

Formatted: Font: Times New Roman, 12 pt

Hình 3. 2. Tập ảnh Negative trong thư mục “negative” (adsbygoogle = window.adsbygoogle || []).push({});

Chạy file “create_list.bat” trong thư mục “negative” để tạo ra file “inforfile.txt” chứa tên tất cả các file ảnh Negative mỗi tên trên một dòng.

Hình 3. 3. Nội dung file “inforfile.txt” sau khi chạy file “create_list.bat”

3.2.2.2, Lấy mẫu dữ liệu huấn luyện

Sử dụng chương trình ObjectMaker trong thư mục “positive” để đánh dấu vùng chứa đặc trưng của đối tượng biển báo.

Formatted: Font: Check spelling and grammar Formatted: Font: 12 pt

Formatted: Font: Times New Roman, 12 pt

Hình 3. 4. Chương trình ObjectMaker trong thư mục “positive”.

Trình ObjectMaker lần lượt duyệt qua từng ảnh trong thư mục “rawdata” hiện lên màn hình để đánh dấu đối tượng.

Hình 3. 5. Đánh dấu đối tượng trong trình ObjectMaker

Sau khi đã hoàn thành đánh dấu đối tượng, trình ObjectMaker tạo ra file “info.txt” chứa thông tin đối tượng biển báo trong ảnh.

Formatted: Font: Check spelling and grammar Formatted: Font: 12 pt

Formatted: Font: Times New Roman, 12 pt

Hình 3. 6. Nội dung file “info.txt”.

Cấu trúc file “info.txt” :

o Cột đầu tiên là tên ảnh.

o Cột thứ hai là số lượng đối tượng trong ảnh.

o Cột thứ ba và tư là tọa độ đỉnh trên bên trái của đối tượng trong ảnh.

o Cột thứ năm là độ rộng của đối tượng.

o Cột thứ sáu là độ cao của đối tượng.

3.2.2.3, Huấn luyện máy học (Machine Learning)

Quá trình này gồm 2 bước :

Bƣớc 1 : Tạo ra file vector đưa vào huấn luyện ở bước 2.

Ở bước này nhóm sử dụng trình “createsamples.exe” của bộ HaarKit tạo ra file “vector.vec” từ các pixel của ảnh.

Để gọi trình “createsamples.exe” nhóm sử dụng file “samples_creation.bat” được cung cấp kèm theo bộ HaarKit với những tham số phù hợp.

Formatted: Font: Check spelling and grammar Formatted: Font: 12 pt

Formatted: Font: Times New Roman, 12 pt

Giải thích ý nghĩa tham số được nhóm sử dụng:

o “-info positive/info.txt” chỉ đến file “info.txt” là file chứa thông tin về tọa độ đối tượng đã được tạo ở trên.

o “-vec data/vector.vec” đường dẫn để lưu file “vector.vec” ở trong thư mục “data”.

o “-num 1848” là số lượng ảnh Positive có chứa đối tượng. (adsbygoogle = window.adsbygoogle || []).push({});

o “-w 24 -h 24” là kích thước của mẫu.

Vì quá trình huấn luyện đòi hỏi các mẫu cần có kích thước giống nhau cụ thể ở đây nhóm sử dụng là 24x24 nên ảnh gốc sẽ được thay đổi kích thước và đóng gói thành file vec. Giá trị kích thước này có thể là bất kì phụ thuộc vào tỉ lệ của đối tượng cần phát hiện nhưng đối tượng có kích thước nhỏ hơn sẽ không được phát hiện. Về cơ bản thì file vec này được sử dụng để tăng tốc quá trình máy học. Sau bước này nhóm có được file “vector.vec”.

Bƣớc 2: Học huấn luyện với HaarTraining

Ở bước này nhóm tiếp tục sử dụng các chương trình trong bộ HaarKit để tạo ra file “xml” gồm dữ liệu các đặc trưng của đối tượng dùng trong chương trình nhận dạng sau này. Đầu tiên nhóm sử dụng trình “haartraining.exe” để tạo ra các phân tầng. Để gọi trình “haartraining.exe” nhóm cũng sử dụng file “haarTraining.bat” được cung cấp kèm theo với những thay đổi tham số phù hợp.

Hình 3. 8. Nội dung file “haarTraining.bat”

Ý nghĩa các tham số:

o “-data data/cascade” đường dẫn đến thư mục lưu trữ các phân tầng.

o “-vec data/vector.vec” đường dẫn đến file “vector.vec” đã tạo ở bước 1.

o “-bg negative/infofile.txt” đường dẫn đến file bao gồm các mẫu ảnh Negative.

o “-npos 1848” là số lượng ảnh Positive.

Formatted: Font: Check spelling and grammar Formatted: Font: 12 pt

Formatted: Font: Times New Roman, 12 pt

o “-nstages 25” là số giai đoạn phân tầng.

o “-mem 1000” là dung lượng bộ nhớ mà chương trình có thể dùng trong quá trình huấn luyện tính bằng MB.

o “-mode ALL” giá trị mặc định.

o “-w 24 –h 24” là kích thước của mẫu, giá trị này trùng với giá trị được sử dụng khi tạo file “vector.vec”.

o “-nonsym” khai báo mẫu không đối xứng.

Quá trình huấn luyện này, với cấu hình máy tính được nhóm sử dụng là:

o CPU Core 2 Duo E7400 2.8GHz.

o Ram 2 GB.

Thì thời gian huấn luyện là xấp xỉ 340 giờ liên tục.

Sau khi giai đoạn này hoàn tất nhóm có được các phân lớp đặc trưng của đối tượng.

Hình 3. 9. Kết quả phân tầng

Để có thể xử dụng được trong chương trình, nhóm tiếp tục sử dụng trình “haarconv.exe” để tạo ra file xml chứa dữ liệu đã học được.

Tương tự như các bước trước, để dễ dàng thực hiện lệnh nhóm sử dụng file “convert.bat” với những tham số thay đổi phù hợp.

Formatted: Font: Check spelling and grammar Formatted: Font: 12 pt

Formatted: Font: Times New Roman, 12 pt

Một phần của tài liệu Xây dựng chương trình phát hiện và nhận dạng một số biển báo giao thông đường bộ nguy hiểm tại việt nam báo cáo nghiên cứu khoa học sinh viên (Trang 42)