【发布时间】:2015-07-21 12:57:53
【问题描述】:
我正在尝试对视频中的人类活动进行分类(六类,每类近 100 个视频,6*100=600 个视频)。我正在使用 UCF 的 3D SIFT(xy 和 t scale=1)。
for f= 1:20
f
offset = 0;
c=strcat('running',num2str(f),'.mat');
load(c)
pix=video3Dm;
% Generate descriptors at locations given by subs matrix
for i=1:100
reRun = 1;
while reRun == 1
loc = subs(i+offset,:);
fprintf(1,'Calculating keypoint at location (%d, %d, %d)\n',loc);
% Create a 3DSIFT descriptor at the given location
[keys{i} reRun] = Create_Descriptor(pix,1,1,loc(1),loc(2),loc(3));
if reRun == 1
offset = offset + 1;
end
end
end
fprintf(1,'\nFinished...\n%d points thrown out do to poor descriptive ability.\n',offset);
for t1=1:20
des(t1+((f-1)*100),:)=keys{1,t1}.ivec;
end
f
end
我的方法是首先为一个视频获取 50 个描述符(640 维),然后使用所有描述符(在 50*600= 30000 个描述符上)执行词袋。执行 Kmeans 后(1000 k 值)
idx1000=kmeans(double(total_des),1000);
我得到 30k 的长度索引向量。然后我根据它们在集群中的索引值创建每个视频的直方图签名。然后在签名(dim-600*1000)上执行 svmtrain(matlab 中的 sum)。
一些潜在的问题-
1-我在 3D 中随机生成 300 个点,以从这些点 300 个点计算任意 50 个点上的 50 个描述符。
2- xy 和时间刻度值,默认为“1”。
3-Cluster 数字,我不确定 k=1000 对于 30000x640 数据是否足够。
4-svmtrain,我正在使用这个 matlab 库。
注意:一切都在 MATLAB 上。
【问题讨论】:
-
有什么问题?我在这里看不到问题陈述。
-
嘿,我为这部分道歉。问题是我对这个过程的准确性不好。这就是我在这里描述一切的原因。
-
别生气。我只是想询问更多信息。你的准确率是多少?您希望获得什么准确度?
-
还有多少视频用于训练,多少用于验证?
-
你好塞西莉亚,别误会我的意思。我把这个陈述写成了大写,这样每个人都可以看到问题陈述。如果是这样,我再次道歉。
标签: matlab video svm k-means sift