Tiếp cận Boosting

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 34)

Boosting là kĩ thuật nâng cao độ chính xác cho các thuật toán máy học. Năm 1989, Schaire đã đưa ra các chứng minh đầu tiên về thuật toán boosting. Và một năm sau đó Freund đã phát triển thuật toán boosting một cách hiệu quả hơn rất nhiều, mặc dù vẫn còn nhiều hạn chế trong thực tế và chỉ tối ưu trong một số trường hợp. Các thực nghiệm đầu tiên với thuật toán boosting được thực hiện bởi Drucker, Schapire và Simard trong chương trình nhận dạng ký tự quang học (OCR_Optical Character

Recognition). Mãi đến năm 1995 thuật toán AdaBoost mới chính thức được công bố

bởi Freund và Schapire [17].

Nguyên lý cơ bản của thuật toán Boosting là kết hợp các bộ phân loại yếu (weak classifiers) thành một bộ phân loại mạnh (strong classifier). Trong đó bộ phân loại yếu là các bộ phát hiện đơn giản chỉ cần có độ chính xác trên 50%. Bằng cách này, chúng ta nói bộ phát hiện đã được “boost”.

Xét một bài toán phát hiện 2 lớp (mẫu cần nhận dạng sẽ được phân vào 1 trong 2 lớp) với D là tập huấn luyện gồm có n mẫu. Trước tiên, chúng ta sẽ chọn ngẫu nhiên ra n1 mẫu từ tập D (n1<n) để tạo tập D1. Sau đó, chúng ta sẽ xây dựng “weak classifier” đầu tiên C1 từ tập D1. Tiếp theo, chúng ta xây dựng tập D2 để huấn luyện bộ phân loại C2. D2 sẽ được xây dựng sao cho một nửa số mẫu của nó được phân loại

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

Formatted: Font: Times New Roman, 12 pt

đúng bởi C1 và nửa còn lại bị phân loại sai bởi C1. Bằng cách này, D2 chứa đựng những thông tin bổ sung cho C1. Bây giờ chúng ta sẽ xây huấn luyện C2 từ D2.

Tiếp theo, chúng ta sẽ xây dựng tập D3 từ những mẫu không được phân loại tốt bởi sự kết hợp giữa C1 C2: những mẫu còn lại trong D C1 C2 cho kết quả khác nhau. Như vậy, D3 sẽ gồm những mẫu mà C1 và C2 hoạt động không hiệu quả. Sau cùng, chúng ta sẽ huấn luyện bộ phân loại C3 từ D3.

Bây giờ chúng ta đã có một “strong classifier”: sự kết hợp C1, C2 C3. Khi tiến hành nhận dạng một mẫu X, kết quả sẽ được quyết định bởi sự thỏa thuận của 3 bộ C1, C2 C3: Nếu cả C1 C2 đều phân X vào cùng một lớp thì lớp này chính là kết quả phân loại của X; ngược lại, nếu C1 C2 phân X vào 2 lớp khác nhau, C3 sẽ quyết định X thuộc về lớp nào [ 3, Trang 14-15 ].

Hình 2. 7. Boosting[ 3, Trang 16 ]. 2.2.2.2, AdaBoost

AdaBoost (Adaptive Boost) là một bộ phân loại phi tuyến mạnh cải tiến từ thuật toán Boosting, giúp đẩy nhanh việc tạo ra bộ phân loại mạnh (strong classifier) bằng cách chọn các đặc trưng tốt Haar-Like trong bộ phân loại yếu (weak classifier) và kết

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

Formatted: Font: Times New Roman, 12 pt

hợp chúng lại tuyến tính để hình thành một bộ phân loại mạnh (strong classifier) bằng cách sử dụng các trọng số (Weight) để đánh dấu các mẫu khó nhận dạng.

Cho trước một vài thuật toán học yếu, người ta áp dụng kỹ thuật tăng cường để tạo ra thuật toán học mạnh hơn. Adaboost là thuật toán cho phép ta có thể làm được điều trên. Gồm có 2 giai đoạn chính như sau: [18]

Giai đoạn 1: Tạo ra các giả định yếu (weak hypotheses) từ các thuật toán học yếu.

Giai đoạn 2: Tạo ra các thuật toán học mạnh từ các giả định yếu.

Với một tập dữ liệu huấn luyện, một giả định yếu được khởi tạo như sau:

Đầu vào(Input): Cho một tập dữ liệu huấn luyện, N cặp (xi, yi), xi là các vector đặc trưng Haar, yi là giá trị đầu ra mong muốn luôn luôn mang giá trị bằng +1 hoặc -1

(trong đó +1 là đối tượng (object), -1 không phải là đối tượng( background)), và số

lượng vòng lặp là T.

Đầu ra(Output): Tồn tại một hàm có thể được sử dụng để phân lớp các

đặc trưng của vector x.

Nếu thì x được phân lớp là -1. Nếu thì x được phân lớp là +1.

Khởi tạo(Initialization): Cho trọng số

Lặp(Iterate): tính giả định (hypothesis) , trọng số tốt

(goodness) , và đồng thời cập nhật lại các trọng số theo các bước sau:

Bước 1: Chọn ngẫu nhiên một tập con trong tập dữ liệu huấn luyện. Trong

trường hợp này chính là trọng số .

Bước 2: Tính toán giả định bằng cách sử dụng bộ phân lớp yếu cho (adsbygoogle = window.adsbygoogle || []).push({});

Bước 3: Tính toán sai số của trọng số huấn luyện của .

(2.4)

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

Formatted: Font: Times New Roman, 12 pt

Bước 3.2: Nếu thì đây không phải là một phân lớp yếu. Khi đó nên tăng

thêm số lượng mẫu huấn luyện.

Bước 4: Tính toán trọng số tốt của

(2. 5)

Bước 5: Cập nhật lại trọng số

Với

Và :

Trong đó là thừa số chuẩn hóa sao cho

Kết thúc (Termination):

(2. 6)

Tính chất quan trọng nhất của thuật toán Adaboost là có tốt hơn . Để đánh giả hiệu quả của thuật toán ta định nghịa hàm sai số sau:

Khi đó tổng sai số trên N mẫu là:

(2.7)

2.3. Giới thiệu phƣơng pháp phân tích thành phần chính (Principle Component Analysis_PCA).

2.3.1, Giới thiệu.

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

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

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

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

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

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

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 34)