2010-01-12 2 views
1

나는 인간이 손을 씻고, 달리고 걷는지를 결정하는 어플리케이션을 가지고있다. 아이디어는 핸드 웨이브 (handwave)와 같은 액션을 포즈로 분할 한 것입니다. 예를 들어,데이터 분류 : 훈련 및 테스트 벡터의 크기

예; 이 이미지를 테스트로

for human1:pose7-pose3-pose7-..... represents handwave 
for human3:pose1-pose7-pose1-..... represents handwave 
for human7:pose1-pose1-pose7-..... represents handwave 
for human20:pose3-pose7-pose7-..... represents handwave 

for human1 pose11-pose33-pose77-..... represents walking 
for human2 pose31-pose33-pose77-..... represents walking 
for human3 pose11-pose77-pose77-..... represents walking 
for human20 pose11-pose33-pose11-..... represents walking 

내가 훈련 SVM 및 매트랩 신경 그물을위한 벡터 이상 사용 ..

는 지금은 테스트합니다. 다시 테스트 이미지를 위해 포즈를 분할했습니다.

MATLAB의 테스트 및 트레인 세트의 벡터 크기는; SVM과 신경망에는 동일한 벡터 크기가 필요합니다. 작동하게하려면;
0을 추가하면 (잘못된 포즈 인 pose0 - 가정) 크기를 동일하게 만들기 위해 성능이 좋습니다.
초기 포즈를 처음에 복사하고 크기가 같은 성능이 감소 할 때까지 끝에 추가하십시오.

예 :

train set: pose1-pose2-pose4-pose7-pose2-pose4-pose7 
(1st method)test set: pose3-pose1-pose4-0-0-0-0 or 
(2nd method)test set: pose3-pose1-pose4-pose3-pose1-pose4-pose3 

첨부 된 값은 포즈의 실제 값이므로 두 번째 방법으로 분류하는 것이 더 좋습니다. 그러나 pose0은 실제 포즈가 아닙니다.

의견이 있으십니까? 감사합니다.

+0

꼭 이런 종류의 물건에 관해서는 아마추어 일뿐입니다. 그런데 당신의 데이터 벡터를 덧붙이는 것은 조금 이상합니다.나는 패딩이 이론적으로 그럴듯한 지 또는 방법을 바꾸는 지 확인했다. 시간 구분의 종류에 대해 당신은 나의 첫 번째 생각은 마르코프 모델을 사용하는 것입니다. –

답변

2

귀하의 경우 귀하의 데이터는 각각 (PoseSlot1, PoseSlot2, ..., PoseSlotN에서와 같이 포즈 슬롯) 및 클래스 값 (손 흔들기, 실행 또는 보행).

문제는 모든 클래스에서 기능 수가 동일하지 않습니다. 즉, 달리기에는 7 개의 포즈가 있고 예를 들어 걷기에는 3 개의 포즈가 있습니다.

이런 종류의 문제를 처리하는 표준 방법은 컴퓨터 학습 알고리즘이 누락 된 값을 처리 할 수 ​​있다고 가정 할 때 값이없는 값으로 이러한 빈 슬롯을 표시하는 것입니다. 이제

f1  f2 f3 f4 f5 f6 f7 class 
------------------------------------------------- 
pose1,pose2,pose4,pose7,pose2,pose4,pose7,running 
pose3,pose1,pose4, ?, ?, ?, ?,walking 

, 당신은 pose0를 추가로 사용하는 첫 번째 방법은

(대신 명시 적 ? 값, 누락 된 값을 나타 내기 위해 포즈를 새로 추가하는 유사) 값을 누락 ?를 사용하는 단순화이다 다른 값을 반복하는 또 다른 방법은 실제로 문제를 만듭니다. 문제에 대해 생각한다면 실제로 문제를 만듭니다. 실제로 상관 관계가있는 기능을 만드는 것입니다. 대부분의 기계 학습 알고리즘은 독립적 인 기능 집합에서 가장 잘 작동합니다 (일반적으로 전처리 단계로서 피쳐 선택을 수행)

+0

감사합니다. 이제 또 다른 질문입니다. SVM과 NN과 같은 일부 분류 방법은 trainin 데이터와 테스트 데이터가 동일한 벡터 크기를 가져야한다는 사실을 어떻게 설명합니까 (적어도 Matlab에서는). 기계 학습의 과도기에 그러한 전제 조건의 존재는 의미가 없습니다. 실제 응용에서는 여러 다른 길이의 데이터를 가질 수 있습니다. – tguclu

+1

** 시계열 **을 다루지 않는 한, 대부분의 ML 기법은 속성 값 유형의 데이터를 기대합니다. 내가 생각할 수있는 모든 알고리즘 (ANN, kNN, SVM, 베이 즈넷, 의사 결정 트리, 규칙 유도, 회귀, ..)은 모두 테이블 형식의 데이터를 사용합니다. 이는 각 인스턴스가 d 차원으로 채취 된 변수를 나타 내기 때문에 의미가 있습니다 (통계적 관점에서 생각하면). 아마 당신은 마르코프 체인이나 HMM을 사용하여 시계열로 데이터를 모델링하고 싶을 것입니다 ... – Amro

+0

음, 고마워요. p0을 추가하고 자연스러운 포즈를 추가하여 결과를 수집했습니다. p0 추가가 ~ % 2- % 3 감소하는 것을 제외하고는 신경망 결과는 거의 같습니다. 그러나 SVM은 다른 방식으로 반응하고 성공률은 p0을 추가 할 때 높아집니다. 예를 들어 액션 : 걷기에는 반복 포즈를 추가 할 때 % 77 성능이 있지만 p0을 추가 할 때 % 95 값이 있습니다. 두 개의 approches가 반대 방향으로 움직이는 것이 맞습니까? – tguclu

2

나는 당신의 첫 번째 방법에서 더 나은 성능을 얻는 것은 무리라고 생각하지 않습니다. 나는 당신이 더 나은 분류에서와 같이 더 나은 수행을 의미한다고 가정합니다. 그 이유는 핸드 웨이브 시퀀스는 일반적으로 더 짧을 것이라고 생각합니다. 따라서 "무효"포즈로 채울 때 실제 포즈에 포함 된 것보다 무효 포즈가 포함되어 있는지 여부에 따라 다른 액션을 구별하는 것이 훨씬 쉽습니다.

+0

안녕하세요 당신이 "더 나은 성능을 의미, 더 나은 분류 의미" 특정 행동 유형의 자연스러운 자세로 패딩을 할 때 더 나은 성능을 기대합니다. 그러나 잘못된 포즈를 채우면 성능이 향상됩니다. 아직 나를 위해 이상한 . – tguclu