Svm là gì
Lập trình Giới Thiệu về Mô Hình SVM04/11/20207 min read Giới thiệu tổng quan mô hình SVM và sử dụng SVM trong OpenCV. Bài viết giới thiệu tổng quan về mô hình SVM và ví dụ về SVM trong OpenCV. Show SVM là gì?SVM (Support Vector Machine) là 1 thuật toán học máy thuộc nhóm Supervised Learning (học có giám sát) được sử dụng trong các bài toán phân lớp dữ liệu (classification) hay hồi qui (Regression). SVM là 1thuật toán phân loại nhị phân, SVM nhận dữ liệu vào và phân loại chúng vào hai lớp khác nhau. Với 1 bộ các ví dụ luyện tập thuộc hai thể loại cho trước, thuật toán luyện tập SVM xây dựng 1 mô hình SVM để phân loại các ví dụ khác vào hai thể loại đó. Ví dụ vềSVM tuyến tínhCó 1 không gian có nhiều điểm và các kíhiệu như sau:
Tổng quan:
Với các điểm tổng quan ở trên thì nhiệm vụ chính là phân loại thống kê.
SVM trong OpenCVSource code#includePhân tíchThiết lập dữ liệu huấn luyệnfloat labels[4] = {1.0, -1.0, -1.0, -1.0}; float trainingData[4][2] = {{501, 10}, {255, 10}, {501, 255}, {10, 501}};Dữ liệu được huấn luyện được tạo thành bởi 1 tập điểm có giá trị 2D. Ở đoạn code trên:
Chú ý: Số lượng phần tử của ma trận labelsbằng với số cột của ma trận củatrainingData. Chú ý: hàm CvSVM::train()sử dụng kiểu dữ liệu truyền vào là kiểu Mat. Thiết lập thông số của SVM// Set up SVM's parameters PtrPhân tích:
Chú ý: Với các phiên bản khác của OpenCV, để thiết lập thông số cho SVM có thể sẽ có cách hiện thực khác. Huấn luyện SVMĐể xây dựng mô hình huấn luyện SVM, sử dụng phương thức CvSVM::train(). Phân loại lớp (Bản lề)Phương pháp CvSVM::predict() được sử dụng để phân loại 1 mẫu đầu vào bằng cách sử dụng 1 SVM được huấn luyện. Vec3b green(0, 255, 0), blue(255, 0, 0); for (int i = 0; i < image.rows; ++i) { for (int j = 0; j < image.cols; ++j) { Mat sampleMat = (Mat_
Support VectorTrong OpenCV 3.0, để có thể lấy được các điểm Support Vector thì sử dụng phương thức SVM::getSupportVectors(). Kiểu trả về ở đây là 1 Mat, với số hàng Rowschính là số lượng của các điểm Support Vector. Computer VisionThị giác máy tính. |