首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于视频中人类活动分类的3D筛选。没有很好的准确性。

用于视频中人类活动分类的3D筛选。没有很好的准确性。
EN

Stack Overflow用户
提问于 2015-05-11 06:07:05
回答 1查看 594关注 0票数 1

我试图在视频中对人类活动进行分类(每堂课有六节课,每节课有将近100个视频,6*100=600视频)。我正在使用来自UCF的3D SIFT( xy和t scale=1)。

代码语言:javascript
复制
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值)

代码语言:javascript
复制
 idx1000=kmeans(double(total_des),1000);

我得到30k的长度索引向量。然后,我创建每个视频的直方图签名,根据它们的索引值在集群中。然后执行svmtrain(在matlab中的和)对签名(din-600*1000)。

一些潜在的问题-

1-我在3D中随机生成300个点,从这些点300个点算出50个描述符。

2- xy和时间尺度值,在默认情况下它们是"1“。

3-群集数,我不确定k=1000是否足以处理30000x640数据。

我正在使用这个matlab库。

注意:一切都在MATLAB上。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-13 16:09:17

你的基本设置似乎是正确的,特别是考虑到你得到了85%-95%的准确度。现在,这只是一个调整你的程序的问题。不幸的是,除了测试各种参数以检查结果和重复之外,没有其他方法可以做到这一点。我要把这个答案分成两部分。关于单词特征包的建议,关于支持向量机分类器的建议。

字调袋特征

您正在使用50个3D筛选功能,每个视频从随机选择的点,词汇量为1000个视觉单词。正如您已经提到的,词汇表的大小是您可以调整的一个参数。每个视频的描述符数量也是如此。

假设每个视频有60帧长( 30 fps只有2秒,但假设您在1fps采样1分钟视频)。这意味着每个帧捕获的描述符少于一个。这在我看来非常低,即使是3D描述符,特别是如果位置是随机选择的。

我将手动检查您正在为其生成特性的点。它们在空间和时间上都有很好的分布吗?你拍的背景太多了吗?问问自己,考虑到这些特性,我能区分这些行为吗?

如果您发现所选的许多点信息不足,增加点数可能会有所帮助。kmeans聚类可以为信息不丰富的异常值生成一些组,而更多的点意味着您希望捕获更多的信息点。您还可以尝试其他选择点的方法。例如,你可以使用角点。

您还可以手动检查聚集在一起的点。这些团体有什么共同之处?这些星系团是不是太混了?这通常表明你需要一个更大的词汇量。

调整支持向量机

使用Matlab实现或Libsvm实现不应该有什么不同。它们都是相同的方法,具有相似的调优选项。

首先,您应该使用交叉验证来调优支持向量机,以避免在测试集上过度拟合。

支持向量机最强大的参数是核选择。在Matlab中,有五个内置的内核选项,您也可以定义自己的选项。内核也有自己的参数。例如,高斯核有一个缩放因子σ。通常,您从一个简单的内核开始,并与更复杂的内核进行比较。例如,从线性开始,然后测试二次、三次和高斯。要进行比较,您可以简单地查看您的平均交叉验证准确性。

此时,最后一种选择是查看被错误分类的个别实例,并试图找出它们可能比其他实例更难的原因。是否存在诸如遮挡之类的共性?还可以直接查看为这些实例选择的可视单词。在调优功能时,您可能会发现一些您忽略的内容。

祝好运!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30160601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档