반응형

svm 3

[Open CV] 머신러닝 _ HOG+SVM 필기체 숫자 인식

이번 시간에는 HOG알고리즘과 SVM 알고리즘을 조합해서 필기체 숫자를 인식하는 프로그램을 만들어본다. HOG알고리즘을 이용해서 필기체 숫자의 방향성정보를 추출하고 그 방향성 정보를 SVM 알고리즘을 이용해서 10개의 클래스로 나눠준다. 그리고 사용자가 숫자를 입력하면 해당 클래스를 비교하여 숫자를 인식하는 방법이다. 그럼 저번강의에서도 봤었던 digit 이미지 내부에있는 숫자를 분리해야하는데 해당 숫자들을 HOG알고리즘 사용을 위해 나눠주고 주황색 박스처럼 4개의 셀을 하나로 묶어주어 사용하면 셀 하나가 9개의 히스토그램 그래디언트 방향성 정보를 갖게된다. 그러면 나오게되는 500X324 크기의 행렬에서 SVM 알고리즘의 초평면에 의해서 클래스가 나뉘게 된다. SVM알고리즘은 기본적으로 2개의 클래스로..

[Open CV] 머신러닝 _ OpenCV SVM 사용하기

이번에는 OpenCV에서 SVM 알고리즘을 사용하는 방법에 대해서 알아본다. SVM 알고리즘을 사용하기 위해서는 SVM 객체를 먼저 생성해줘야한다. SVM 객체 생성 cv2.ml.SVM_create() -> retval - retval : cv2.ml_SVM 객체 SVM 타입 지정 cv2.ml_SVM.setType ( type ) -> None - type : SVM 종류 지정. cv2.ml.SVM_으로 시작하는 상수. SVM 커널 지정 cv2.ml_SVM.setKernel ( kernelType ) -> None - kernelType : 커널 함수 종류 지정. cv2.ml.SVM_으로 시작하는 상수 커널 타입에 관한 이미지를 OpenCV Documents에 들어가서 살펴보면 위와같은 이미지를 얻을 수..

[Open CV] 머신러닝 SVM 알고리즘

이번 시간에는 가장 유명하고 많이 사용되고있는 SVM 알고리즘에 대해 알아본다. 서포트 벡터 머신 ( SVM : Support Vector Machine ) 알고리즘이란? - 기본적으로 두 개의 그룹 ( 데이터 ) 을 분리하는 방법으로 데이터들과 거리가 가장 먼 초평면 ( hyperplane ) 을 선택하여 분리하는 방법 ( maximum argin classifier ) 위 2개의 그룹을 분리하기 위한 직선, 즉 선형적인 직선의 형태를 만든다. 1번과 2번의 직선을 보면 2개 직선 모두 두개의 그룹을 확실하게 나눴다고 하기에는 애매한 부분이 눈에 보인다. 그럼 사각형 그룹이나 삼각형 그룹에서 노이즈가 발생하게 됐을때 1번과 2번의 직선을 사용해서 구분하기는 어렵다. 그랬을때 두 그룹을 구분하기 위해서는..

반응형