2012-03-16 2 views
3

나는 TV 채널을 인식하는 프로젝트를 진행 중이다. 채널의 사진을 찍어서 배경을 피하고 로고의 중심에서 샘플을 가져 오려고합니다. 나는 4 가지 로고를 인식하고, 여기에 템플릿은 다음과 같습니다로고 인식 - 성능 향상 방법

Channel1Channel2Channel3Channel4 내 템플릿 매칭 알고리즘 작업이 않는 방법

: 크기 100 × 100의 4 템플릿을
을 감안할 때, 다른 TV 채널을 대표하는 각, 각각은 (확률의) 상이한 문턱 값을 갖는다. 사용자가 TV 세트에서 로고를 캡처하면 알고리즘은 다음과 같습니다. - 각 템플릿에 대해 4 개의 독립적 인 템플릿 일치를 실행하여 각 템플릿이 캡처 된 이미지와 일치 할 확률을받습니다. - 모든 채널 확률에 대해 채널의 확률이 채널의 임계 값보다 낮 으면 확률이 0으로 변경됩니다. - 인식 된 로고를 가장 높은 확률로 발표하십시오. 모든 확률이 0이면 "인식하지 않음"을 발표하십시오.

예를 들어, 확률이 0.85이고 임계 값이 0.9 인 채널 하나와 확률값이 0.8이고 임계 값이 0.75 인 두 번째 채널이 있으면 두 번째 채널이 '이기기'입니다.

로고 중 하나의 사진을 찍을 때 사진의 95 %를 인식합니다.

현재 결과 :

  • 첫 번째 ("웃는 얼굴"로고)를 감지하려고, 10 개 탐지에서 나는 10 정확한 탐지를 얻었다. 정확한 템플리트와 이미지 사이의 템플리트 일치에 대해 0.91에서 0.94 사이의 확률을 얻습니다. 다른 로고의 경우 확률은 0.77에서 0.91 사이입니다.
  • 두 번째 ("녹색"로고)를 탐지하려고 할 때 10 개의 탐지 중 10 개의 정확한 탐지가있었습니다. 올바른 템플리트와 이미지 사이의 템플리트 일치에 대해 0.78에서 0.91 사이의 확률을 얻습니다. 다른 로고의 경우 확률은 0.71에서 0.83 사이입니다 (그러나 임계 값이 높기 때문에 감지가 성공합니다).
  • 세 번째 ("둥근"로고)를 탐지하려고 할 때 10 개의 탐지 중 9 개의 정확한 탐지가있었습니다. 정확한 템플리트와 이미지 사이의 템플리트 일치에 대해 나는 0.83에서 0.92 사이의 확률을 얻습니다. 다른 로고의 경우 확률은 0.73에서 0.91 사이입니다.
  • 네 번째 ("흑백"로고)를 탐지하려고 할 때 10 개의 탐지 중 10 개의 정확한 탐지가있었습니다. 정확한 템플리트와 이미지 사이의 템플리트 일치에 대해 0.91에서 0.94 사이의 확률을 얻습니다. 다른 로고의 경우 확률은 0.78에서 0.92 사이입니다.
  • "부정적인"이미지를 탐지하려고 시도 할 때, 나는 여러 번 로고 감지 (나쁘다)를 얻습니다. 예를 들어 완전한 흰색 시트 이미지를 얻으면 확률이 0.9 이상인 첫 번째, 세 번째 및 네 번째 로고를 감지합니다.

더 나은 결과를 얻으려면 알고리즘을 향상 시키거나 변경하려면 어떻게해야합니까? "Negative"이미지에?돕는

감사합니다, 그것은 모두 당신이 템플릿에서 채널 확률을 계산하는 방법에 따라 달라집니다

Eyal 님

+0

현재 템플릿 일치 작업은 정확히 어떻게 작동합니까? – TomP89

+0

편집을 살펴보십시오. 제가 결정한 알고리즘과 내가 만든 테스트의 결과가 추가되었습니다. – Eyal

+0

@Eyal, 템플릿 일치 알고리즘만으로는 충분하지 않습니다. 흰색 시트는 귀하의 로고와 유사하지 않습니다. –

답변

3

. 색상의 히스토그램 또는 그래디언트 막대 그래프를 사용하고 템플릿과 테스트 이미지의 히스토그램 차이를 확인하고 있습니까?

또 다른 접근법은 그라디언트의 히스토그램과 색의 히스토그램을 연결하는 것과 같이 테스트 이미지로부터 특징 벡터를 계산하는 것입니다. 그런 다음 레이블 (이미지에 표시되는 레이블에 따라 1, 2, 3 또는 4)을 알고 교육용 데이터베이스를 수동으로 만들고 하드 코딩 된 레이블을 히스토그램 기능과 함께 제공 할 수 있습니다. 분류 자 루틴. 이를 위해 LIBSVM을 사용하는 것이 좋으며, scikits.learn 구현은 이것을 Python에서 사용하기 쉽습니다.

이렇게하면 새 이미지의 특징 벡터를 학습 세트의 지원 벡터와 비교하고 이미지에 나타날 가능성이 가장 높은 올바른 레이블을 결정하는 지원 벡터 시스템 분류기가 생성됩니다. 그런 다음 예측 된 레이블이 아닌 확률을 산출하는 무언가를 원할 경우이 SVM 위에 물류 모델을 적용 할 수 있습니다.

이 유형의 기계 학습에서 시작하기에 좋은 두 권의 책은 Duda, Hart, Stork의 Pattern Classification 및 Bishop의 Pattern Recognition and Machine Learning입니다.

파이썬에서 Poselets 및 Histogram of Oriented Gradients를 구현하기 위해 작성한 일부 지저분한 파이썬 코드를 찾을 수 있습니다. linked here; 어쩌면 거기에 코드의 일부 섹션을 잡을 수 있고 그것은 당신의 작업에 적합합니다.