Huấn luyện và test bộ phân loại nhị phân

Một phần của tài liệu (LUẬN văn THẠC sĩ) ứng dụng kỹ thuật phát hiện người trong giám sát an ninh (Trang 64 - 68)

CHƢƠNG 3 : THỰC NGHIỆ M ĐÁNH GIÁ

3.1. Thực nghiệm

3.1.3. Huấn luyện và test bộ phân loại nhị phân

Thƣ viện libSVM

Nhiều gói SVM có sẵn nhƣng libSVM là một trong những gói phổ biến và hồn chỉnh nhất. Nó là thƣ viện nguồn mở đƣợc phát triển tại Đại học quốc gia Đài loan (National Taiwan University), bằng ngôn ngữ C++ và hỗ trợ phân loại. Nó là phần mềm miễn phí [28, 29] cho phép sử dụng trong phạm vi rộng các ngôn ngữ và các nền. Code đƣợc chuyển thành ngôn ngữ matlab cho bộ phân loại cùng tham số và cấu trúc.

Dữ liệu huấn luyện và test SVM:

Phát hiện ngƣời hay phát hiện đối tƣợng nói chung đang trở thành mục tiêu c a lĩnh vực học máy, một vài tập dữ liệu có thể đƣợc tìm thấy trên Internet. Hai tập dữ liệu nỗi tiếng cho phát hiện ngƣời đi bộ là tập dữ liệu c a MIT (Massachusetts

Institute of Technology) và c a INRIA (French National Institute for Research in Computer Science and Control). Đề tài này sử dụng tập dữ liệu c a INRIA [5]. Tập

dữ liệu này đƣợc chia thành hai định dạng: ảnh gốc với các file chú thích tƣơng ng và các ảnh positive trong định dạng 64x128 chuẩn và các ảnh negative gốc.

 1126 ảnh testing positive 70x134 chuẩn hóa và lấy trung tâm. (dùng để test SVM)

 2416 ảnh training positive 96x160 chuẩn hóa và lấy trung tâm. (dùng để huấn luyện SVM)

 1218 ảnh training negative gốc. (dùng để huấn luyện SVM)  614 ảnh training positive gốc.

 453 ảnh testing negative gốc. (dùng để test SVM)  288 ảnh testing positive gốc. (dùng để test detector)  970 Megabytes nén, 1150 Megabytes khơng nén.

Hình 3.2. Một vài ảnh positive huấn luyện trên tập dữ liệu c a INRIA.

Huấn luyện một bộ phân loại nhị phân dùng mơ hình libSVM

Huấn luyện một bộ phân loại libSVM nhị phân, với các hàm kèm theo.

Đọc các tham số khác nhau (từ file.mat). Hàm get_params.m – Ngõ vào: đƣờng dẫn đến file tham số. Ng ra: đƣa tất cả các tham số đến giá trị thực c a nó.

Lấy các ảnh theo ý muốn cho các ảnh negative ng vào. Hàm

negtives gốc và thƣ mục ảnh negtives lấy đƣợc. Ng ra: thƣ mục ch a các ảnh negtives lấy đƣợc.

Truy vấn tất cả hoặc một tập con các thƣ mục ảnh positive và negative theo đƣờng dẫn. Hàm get_files.m –Ng vào: số đƣờng dẫn ảnh positive mong muốn, số đƣờng dẫn ảnh negative mong muốn (-1 trong trƣờng hợp yêu cầu tất cả ảnh trong thƣ mục) và một mảng cell ch a đƣờng dẫn lần lƣợt đến thƣ mục ch a ảnh positive và ảnh negative. Trong trƣờng hợp không cho đƣờng dẫn một cửa sổ nhắc nhở đƣờng dẫn cho cả hai thƣ mục. Ng ra: Hai danh sách ch a các đƣờng dẫn đến ảnh positives và negatives. Hàm convert2gray.m – dùng để lƣu một phiên bản tỉ lệ xám c a mỗi ảnh vào một thƣ mục cụ thể. Thƣờng thu đƣợc một dãy ảnh xám từ ảnh RGB trong dãy huấn luyện và dãy test từ bộ dữ liệu ngƣời INRIA.

Tính ma trận bộ mơ tả cho tất cả các ảnh ng vào. Hàm

get_feature_matrix.m –Ng vào: Đƣờng dẫn đến ảnh positive và ảnh negatives. Tất cả các tham số window đƣợc đọc từ file window params. Ngõ ra: các nhãn; một vector cột với loại đúng cho mỗi phần tử vào, ma trận huấn luyện; ma trận bộ mơ tả / ma trận đặc trƣng trong đó số hàng bằng với số phần tử vào và số cột bằng với số số chiều vector đặc trƣng.

Kiểm tra tính hợp lệ (cross validation) c a một mơ hình SVM. Tìm tất cả các khơng gian tham số, trả về cấu hình tốt nhất. Hàm cross_validate.m – Ngõ vào:

loại hàm nhân (RBF hoặc linear dạng string), phạm vi cost và gamma, ma trận huấn luyện (càng nhiều hàng thì số phần tử huấn luyện càng nhiều, càng nhiều cột thì số chiều c a HOG càng nhiều). Một vector cột gán nhãn cụ thể loại c a mỗi phần tử huấn luyện và đƣờng dẫn lƣu mơ hình. Ng ra: Chuỗi đại diện cho dãy tham số tốt nhất theo định dạng c a libSVM. Đề tài dùng 2416 mẫu ảnh positive và 2215 mẫu ảnh negative, dùng hàm nhân „linear‟ với khoảng cost từ 2-2 đến 28 cho cấu hình tốt nhất có thể với độ chính xác 97.2792%.

Huấn luyện một mơ hình libSVM. Tìm ra mơ hình tốt nhất có thể bằng cách đọc cấu hình huấn luyện từ file tham số huấn luyện gồm loại hàm nhân, phạm vi cost và gamma cụ thể. Sau khi đọc cấu hình, đọc tất cả ảnh đƣợc tìm thấy trong

các thƣ mục có đƣờng dẫn và tính HOGs c a chúng. Một mơ hình đƣợc xây dựng dựa vào các nhãn đúng và ma trận huấn luyện bộ mơ tả. Mơ hình sau đó đƣợc lƣu theo đƣờng dẫn cụ thể. Ngoài ra, file nhật ký kiểm tra tính đúng đắn (cross- validation) c ng đƣợc lƣu vào cùng đƣờng dẫn. Mỗi dịng cụ thể cấu hình tham số hàm nhân hiện hành và độ chính xác đạt đƣợc. Hàm train_svm.m – Ngõ vào: tên mơ hình, đƣờng dẫn lƣu mơ hình và đƣờng dẫn ảnh, trƣờng hợp khơng có đƣờng dẫn, một cửa sổ nhắc nhở chúng giống nhƣ trong hàm svm.m. Ng ra: cấu trúc mơ hình libSVM.

Test dùng phân loại SVM nhị phân

Để xác định tính hiệu quả c a một mơ hình phân loại, cần quan tâm hai yếu tố sau: Th nhất và quan trọng nhất là chọn mẫu test không đƣợc nằm trong tập mẫu huấn luyện (training). Để test hiệu suất thực c a mơ hình, ta cần biết nó phân loại nhƣ thế nào với dữ liệu chƣa biết, điều này cho ta sự trực quan về khả năng tổng qt hóa c a mơ hình đƣợc huấn luyện. Th hai, thiết lập mối quan hệ giữa số mẫu c a các lớp, thƣờng dùng số mẫu c a mỗi lớp là nhƣ nhau. Tuy nhiên trong một số trƣờng hợp đặc biệt cần dùng bộ dữ liệu lệch nhau để phục vụ mục đích đo lƣờng cụ thể.

Thực hiện test một bộ phân loại libSVM nhị phân, với các hàm kèm theo. Đọc các tham số khác nhau (từ file.mat). Hàm get_params.m – Ngõ vào: đƣờng dẫn đến file tham số. Ng ra: đƣa tất cả các tham số chính đến giá trị thực c a nó.

Truy vấn một window có kích thƣớc cụ thể từ một ảnh. Hàm get_window.m – Ng vào: ảnh để xử lý, chiều rộng và chiều cao mong muốn c a window và phƣơng pháp trích rút. Các phƣơng pháp có thể chọn là lấy trung tâm hay lấy ngẫu nhiên, trong đó phƣơng pháp lấy trung tâm trích rút một window c a ảnh có kích thƣớc cụ thể từ một ảnh ng vào, phƣơng pháp lấy ngẫu nhiên trích rút một window hợp lệ bất kỳ có kích thƣớc cụ thể từ một ảnh ng vào. Ngồi ra cịn có phƣơng pháp lấy window từ một tọa độ upper-left cho trƣớc. Ng ra: window trích rút đƣợc.

Test một mơ hình libSVM cho trƣớc. Cho trƣớc các đƣờng dẫn tìm đến các thƣ mục ảnh positive và negative, đọc tất cả các ảnh, trích đặc trƣng các bộ mô tả HOG c a mỗi phần tử và và phân loại mỗi ảnh để so sánh với loại đúng cho trƣớc. Cuối cùng tính tất cả các đo lƣờng bằng số (đƣợc giải thích trong phần test SVM). Hàm test_svm.m – Ng vào: Đƣờng dẫn đến mơ hình, các đƣờng dẫn đến các thƣ mục ảnh positive và negative. Trƣờng hợp khơng có đƣờng dẫn, một cửa sổ nhắc nhở cho đƣờng dẫn đến các thƣ mục. Ng ra: cấu trúc tất cả các đo lƣờng bằng số (đƣợc giải thích trong phần test SVM).

Test 1126 mẫu ảnh positive và 1131 mẫu ảnh negative. Kết quả nhƣ sau:

OKs KOs FP FN TP TN

2150 107 100 7 1119 1031

Trong đó:

OKs: số phân loại đúng. KOs: số phân loại sai. FP: số false positive FN: số false negative TP: số true positive TN: số true negative

Vẽ đƣờng cong ROC. Hàm plot_ROCcurve.m - Một cửa sổ nhắc nhở cho file mơ hình SVM và các thƣ mục ch a các ảnh huấn luyện positive và negative.

Vẽ các đo lƣờng độ chính xác (accuracy) theo ch c năng ngƣỡng phân loại. Vẽ các đo lƣờng recall, precision F-score. Hàm plot_reject_curves.m – Ngõ vào: mơ hình libSVM và thƣ mục ảnh vào. Ng ra: bỏ trống.

Một phần của tài liệu (LUẬN văn THẠC sĩ) ứng dụng kỹ thuật phát hiện người trong giám sát an ninh (Trang 64 - 68)

Tải bản đầy đủ (PDF)

(100 trang)