我目前正致力于使用不同的图像描述符对图像进行分类.由于他们有自己的指标,我使用预先计算的内核.因此,考虑到这些NxN内核矩阵(总共N个图像),我想训练和测试SVM.虽然我对使用SVM不是很有经验.
令我困惑的是如何输入培训输入.使用内核MxM的子集(M是训练图像的数量),训练具有M个特征的SVM.但是,如果我理解正确,这限制了我使用具有相似数量的功能的测试数据.尝试使用大小为MxN的子内核,在训练期间会导致无限循环,因此,在测试时使用更多功能会产生不良结果.
这导致使用相同大小的训练和测试集给出合理的结果.但是,如果我只想分类,说一张图像,或者为每个班级训练一定数量的图像并用其余的训练,这根本不起作用.
如何消除培训图像和功能的数量之间的依赖关系,以便我可以测试任意数量的图像?
我正在使用libsvm for MATLAB,内核是距离矩阵,范围在[0,1]之间.
我正在尝试在状态栏菜单中使用NSProgressIndicator(不确定).我正在使用NSView对象作为menuitem的视图,然后查看进度指示器以显示它.但每当我尝试调用startAnimation时:对于进度,没有任何反应.当我尝试在普通的NSWindow上做同样的事情时,它可以很好地工作,而不是在一个menuitem中.
我是cocoa和objective-c的新手,所以我可能会忽略一些"显而易见的"但我已经搜索了很多但是没有成功.我发现一些关于menuitems的东西在显示时无法更新,你需要使用无边框窗口.但我无法在任何文档中证实这一点.
编辑:
好的,现在差不多了.当使用setUsesThreadedAnimation:并从MenuDelegate的menuWillOpen中创建一个新线程.该线程运行本地方法:
-(void) doWork(NSProgressIndicator*) p{
[p startAnimation:self];
}
Run Code Online (Sandbox Code Playgroud)
这将在打开菜单时以随机(?)为基础启动progressindicator.如果我startAnimation:直接打电话doWork:(仍然使用新线程),它永远不会工作.不setUsesThreadedAnimation:使进度条为动画创建自己的线程吗?