반응형

SVM 5

[ISLR] 서포트 벡터 머신(SVM, Support Vector Machine)

서포트 벡터 머신(Support Vector Machine) 서포트 벡터 머신(SVM, support vector machine)은 서포트 벡터 분류기(support vector classifier)의 확장으로, 커널(kernel)을 사용하여 변수 공간을 확장한 결과입니다. 변수와 출력값 사이의 비선형 관계를 설명하기 위하여 변수 공간을 확장해야 하는데, SVM은 커널을 사용하여 효율적인 연산량으로 변수 공간을 확장한 방법입니다. 서포트 벡터 분류기 문제에 대한 해는 관측값들의 내적만이 관련이 있습니다. 두 관측치 사이의 내적은 다음과 같이 주어집니다. 선형 서포트 벡터 분류기(Linear support vector classifier)는 다음과 같이 나타낼 수 있습니다. 여기서 n개의 파라미터 $\al..

[OpenCV 머신러닝] 학습 데이터 영상을 위치 정규화하여 성능 높이기 - cv2.moments, cv2.warpAffine

학습 데이터 영상 정규화 - Normalization 학습 데이터 영상과 테스트 데이터 영상의 위치, 크기, 회전 등의 요소를 정규화 하면 인식 성능을 향상시킬 수 있습니다. 이번 포스팅에서는 입력 영상의 무게 중심이 전체 영상 중앙이 되도록 위치를 정규화하여 성능을 높여보겠습니다. 무게 중심을 이용한 정규화 방법은 흰색 객체의 x좌표, y좌표를 다 더해서 전체 픽셀수로 나누어서 구현합니다. 무게 중심 정규화 이외에도 회전, 기울기, 크기 정규화를 한다면 더 정확도가 높아질 수 있습니다. 이전 포스팅에서 구현해보았던 HOG&SVM 필기체 숫자 인식 프로그램을 위치 정규화로 성능을 높여보겠습니다. [OpenCV 머신러닝] OpenCV에서 HOG 알고리즘을 이용한 SVM 필기체 숫자 인식 HOG & SVM ..

[OpenCV 머신러닝] OpenCV에서 HOG 알고리즘을 이용한 SVM 필기체 숫자 인식

HOG & SVM 필기체 숫자 인식 픽셀값을 이용하여 SVM을 학습시키는 것보다 HOG 알고리즘으로 추출한 특징 벡터를 이용하여 SVM을 학습시키는 것이 정확도가 더 뛰어납니다. 이번 포스팅에서는 HOG 특징 벡터를 이용한 SVM 학습 방법에 대해 알아보고 필기체 숫자를 인식해 보겠습니다. 필기체 숫자 데이터 필기체 숫자 데이터는 OpenCV 깃허브에서 제공하는 숫자 데이터를 이용했습니다. opencv/opencv Open Source Computer Vision Library. Contribute to opencv/opencv development by creating an account on GitHub. github.com 데이터에는 20X20 숫자 영상이 가로 100개, 세로 50개 총 5000개..

[OpenCV 머신러닝] OpenCV에서 서포트 벡터 머신(SVM) 사용하기 - cv2.ml.SVM_create, cv2.ml_SVM.trainAuto

이전 포스팅에서 서포트 벡터 머신(SVM)에 대해 알아보았습니다. 이번에는 OpenCV로 서포트 벡터 머신을 사용하는 방법에 대해 알아보겠습니다. 객체 생성 -> SVM 타입 지정 -> SVM 커널 지정 -> SVM 자동 학습(k-폴드 교차 검증) -> predict 순으로 진행됩니다. 1. SVM 객체 생성 - cv2.ml.SVM_create() cv2.ml.SVM_create() -> retval • retval: cv2.ml_SVM 객체 cv2.ml.SVM_create() 함수로 cv2.ml_SVM 객체를 반환받을 수 있습니다. 2. SVM 타입 지정 - cv2.ml_SVM.setType cv.ml_SVM.setType(type) -> None • type: SVM 종류 지정. cv2.ml.SVM_..

[OpenCV 머신러닝] 서포트 벡터 머신 알고리즘이란?

서포트 벡터 머신(SVM, Support Vectir Machine) 알고리즘 SVM 알고리즘은 머신러닝 알고리즘에서 가장 유명하고 많이 사용되고 있습니다. SVM 알고리즘은 기본적으로 두 개의 그룹(데이터)을 분리하는 방법으로 데이터들과 거리가 가장 먼 초평면(hyperplane)을 선택하여 분리하는 방법입니다. 데이터를 분리하기 위해 직선이 필요합니다. 직선이 한쪽 데이터로 치우쳐져 있으면 데이터에 변동이나 노이즈가 있을 때 제대로 구분 못할 수 있습니다. 이러한 문제점을 해결하기 위해 margin을 이용하게 됩니다. 이 직선을 초평면(hyperplane)이라고 합니다. Support Vector은 데이터를 의미합니다. margin은 초평면과 가장 가까이 있는 데이터와의 거리를 의미합니다. 마진을 최..

반응형