반응형

파이썬 131

[OpenCV 머신러닝] OpenCV에서 k-means 알고리즘 사용하기 - cv2.kmeans

OpenCV에서 제공하는 함수를 이용하여 k-means 알고리즘을 이용하는 방법에 대해 공부해보겠습니다. k-평균(k-means) 알고리즘 k-means 알고리즘은 주어진 데이터를 k 개의 구역으로 나누는 군집화(clustering) 알고리즘입니다. 비지도 학습이며 데이터를 무작정 입력으로 주고 임의의 기준으로 나눠주는 형태로 동작하는 알고리즘 입니다. k는 군집 갯수를 의미하여 사용자가 지정해줘야 하는 파라미터입니다. k-means 알고리즘 동작 순서 1. 임의의 k개 중심을 선정합니다. (초기치 중심을 설정해줘야 합니다) 랜덤하게 각 샘플의 중심이라고 간주할 위치를 임의로 선택합니다. 초기 중심점을 어떻게 선정하냐에 따라 결과값이 달라지게 됩니다. 2. 모든 데이터에 대하여 가장 가까운 중심을 선택하..

[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은 초평면과 가장 가까이 있는 데이터와의 거리를 의미합니다. 마진을 최..

[OpenCV 머신러닝] OpenCV로 k 최근접 이웃 알고리즘(KNN) 구현하기 - cv2.ml.KNearest_create

k 최근접 이웃 알고리즘 - KNN, k-Nearest Neighbor k 최근접 이웃 알고리즘은 특징 공간에서 테스트 데이터와 가장 가까이 있는 k개의 학습 데이터를 찾아 분류 또는 회귀를 수행하는 지도 학습 알고리즘의 하나입니다. 학습 데이터가 녹색이라고 가정하였을 때 원래 데이터(파랑색, 빨강색)중 가장 가까지 있는 데이터의 클래스를 부여합니다. 위 사진에서 녹색 데이터는 빨강색 데이터와 가까이 있지만 빨강색 데이터라고 판단하기에는 애매합니다. 이처럼 잘못 분류될 가능성이 있는데 이를 해결하기 위해 가장 가까이 있는 것을 k개 찾습니다. 선별한 k개 데이터에서 파랑색, 빨강색 데이터 개수를 세어 더 많이 선별된 데이터의 클래스를 부여하게 됩니다. 예를 들어 5개 데이터를 선별했을 때 3개가 파랑색,..

[OpenCV 머신러닝] OpenCV 머신러닝 클래스 - 객체 생성, 학습, 추론 - create, train, predict

OpenCV 머신 러닝 클래스 OpenCV에서 머신러닝과 관련된 클래스를 제공하고 있습니다. OpenCV 머신 러닝 클래스 설명 클래스 이름 설명 ANN_MLP 인공 신경망(artificial neural network) 다층 퍼셉트론(multi-layer perceptron) 입니다. 여러 개의 은닉층을 포함한 신경망을 학습시킬 수 있고, 입력 데이터에 대한 결과를 예측할 수 있습니다. DTrees 이진 의사 결정 트리(decision trees)알고리즘입니다. DTrees 클래스는 부스팅 알고리즘은 구현한 ml::Boost 클래스와 랜덤 트리(random tree) 알고리즘을 구현한 ml::RTree 클래스의 부모 클래스 역할을 합니다. Boost 부스팅(boostring) 알고리즘입니다. 다수의 약..

[파이썬 OpenCV] 영상의 모션 벡터 - 밀집 옵티컬플로우 - cv2.calcOpticalFlowFarneback

밀집 옵티컬플로우 - 밀집 옵티컬 플로우는 모든 픽셀에 대해 옵티컬플로우를 계산하는 방법입니다. 주로 파네백 알고리즘(Farneback's algorithm)을 이용하여 구현하게 됩니다. 옵티컬 플로우에 대한 설명은 여기 포스팅을 참조할 수 있습니다. [파이썬 OpenCV] 영상의 모션 벡터 - 루카스 카나데 옵티컬 플로우 - cv2.calcOpticalFlowPyrLK 옵티컬플로우 - Optical flow 옵티컬플로우는 연속하는 두 프레임(영상)에서 카메라 또는 객체의 움직임에 의해 나타나는 객체의 이동 정보 패턴을 의미합니다. 픽셀이 어떻게 움직였는지를 화 deep-learning-study.tistory.com 밀집 옵티컬 플로우 계산 함수 - cv2.calcOpticalFlowFarneback ..

[파이썬 OpenCV] 영상의 모션 벡터 - 루카스 카나데 옵티컬 플로우 - cv2.calcOpticalFlowPyrLK

옵티컬플로우 - Optical flow 옵티컬플로우는 연속하는 두 프레임(영상)에서 카메라 또는 객체의 움직임에 의해 나타나는 객체의 이동 정보 패턴을 의미합니다. 픽셀이 어떻게 움직였는지를 화살표로 나타내고 있습니다. 옵티컬플로우 활용 분야 손떨림을 보정해서 동영상을 저장하는 용도, 동영상을 압축할 때도 움직임 정보를 잘 활용하면 적은 bit를 활용해서 화질이 좋은 동영상으로 압축하는 데에 이용할 수 있습니다. OpenCV 옵티컬플로우 계산 함수 (1) 루카스-카나데 알고리즘(Locas-Kanade algorithm) 루카스-카나데 알고리즘은 지정한 점들에 대해 옵티컬플로우를 계산하는 방법입니다. (주로) Sparse points에 대한 이동 벡터를 계산합니다. 특정 픽셀에서 옵티컬플로우 벡터를 계산합..

[파이썬 OpenCV] 영상의 객체 추적 - 캠시프트(CamShift) 방법 - cv2.CamShift

캠시프트 - CamShift 캠시프트는 민시프트의 단점을 보완해서 만든 추적 방법입니다. 추적하는 객체의 크기가 변하더라도 검색 윈도우의 크기가 고정되어 있는 평균 이동 알고리즘의 단점을 보완했습니다. 민시프트(Mean Shift)에 대한 내용은 여기에서 확인할 수 있습니다. [파이썬 OpenCV] 영상의 객체 추적 - 평균 이동(Mean Shift) 방법 - cv2.meanShift, cv2.calcBackProject 추적 - Tracking 평균 이동 알고리즘을 공부하기 전에 Detection(검출), Recognition(인식), Tracking(추적)에 대해 알아보겠습니다. Detection(검출) : 영상에서 찾고자 하는 대상의 위치와 크기를 알아내는.. deep-learning-study.t..

[파이썬 OpenCV] 영상의 객체 추적 - 평균 이동(Mean Shift) 방법 - cv2.meanShift, cv2.calcBackProject

추적 - Tracking 평균 이동 알고리즘을 공부하기 전에 Detection(검출), Recognition(인식), Tracking(추적)에 대해 알아보겠습니다. Detection(검출) : 영상에서 찾고자 하는 대상의 위치와 크기를 알아내는 작업 Recognition(인식) : 주어진 영상이 무엇인지 판별하는 작업 - classification, identification Tracking(추적) : 동영상에서 특정 대상의 위치 변화를 알아내는 작법 - Mean Shift, CamShift, Trackers in OpenCV 이번 포스팅에서 공부할 내용은 추적중 한 가지 방법인 Mean Shift(평균 이동) 방법에 대해 공부해보겠습니다. 1. 평균 이동 알고리즘 - Mean Shift 평균 이동 알고..

반응형