每个人!
我正在尝试并行化使用来自 mexopencv ( KNearest.m, KNearest_.mexw32 ) 的 mex 文件的算法。
该程序基于 vlfeat (vlsift.mex32) + mexopencv (KNearest.m 和 KNearest_.mexw32)。我对从图像中获得的描述符进行分类。
所有代码都位于文件共享中
\\ LAB-07 \ untitled \ DISTRIB \ (this is the program code)
\\ LAB-07 \ untitled \ + cv (mexopencv)
当我使用matlabpool close运行程序时,一切正常。
然后我打开 matlabpool(每台 2 核上的 2 台计算机。最终有 4 个工作人员,但现在我只用于测试计算机上的 2 个工作人员并运行程序) PathDependencises from fileshare -> \LAB-07\untitled\DISTRIB\ , \LAB-07\无标题+cv
在 parfor 循环之前,我在本地机器上训练分类器
classifiers = cv.KNearest
classifiers.train(Descriptors',Labels','MaxK',1)
然后运行 parfor
descr=vlsift(img);
PredictClasses = classifiers.predict(descr');
错误
Error in ==> KNearest>KNearest.find_nearest at 173
Invalid MEX-file '\\LAB-07\untitled\+cv\private\KNearest_.mexw32':
The specified module could not be found.
那是KNearest.m找到,但没有KNearest_.mexw32。因为 KNearest_.mexw32 位于私人文件夹中,所以我将代码 KNearest.m (它呼吁 KNearest_ () 的所有地方都更改为 cv.KNearest_ ()。示例:this.id = сv.KNearest_ ())并放置在一个文件夹中KNearest_.mexw32 KNearest.m。结果,得到同样的错误
在 matlabpool 上打开文件后立即对工作人员进行搜索
pctRunOnAll which ('KNearest.m')
'KNearest.m' not found.
'KNearest.m' not found.
'KNearest.m' not found.
pctRunOnAll which ('KNearest_.mexw32')
'KNearest_.mexw32' not found.
'KNearest_.mexw32' not found.
'KNearest_.mexw32' not found.
cd \LAB-07\untitled+cv 之后
pctRunOnAll which ('KNearest.m')
\\LAB-07\untitled\+cv\KNearest.m
\\LAB-07\untitled\+cv\KNearest.m % cv.KNearest constructor
\\LAB-07\untitled\+cv\KNearest.m
>> pctRunOnAll which ('KNearest_.mexw32')
\\LAB-07\untitled\+cv\KNearest_.mexw32
\\LAB-07\untitled\+cv\KNearest_.mexw32
\\LAB-07\untitled\+cv\KNearest_.mexw32
我跑了和 FileDependecies,但结果相同。
我不知道这是否相关,我 在训练之后和 parfor 之前执行程序分类器期间显示
classifiers =
cv.KNearest handle
Package: cv
Properties:
id: 5
MaxK: 1
VarCount: 128
SampleCount: 9162
IsRegression: 0
Methods, Events, Superclasses
在分类器之前的 parfor 中。预测
classifiers =
cv.KNearest handle
Package: cv
Properties:
id: 5
我测试了文件 cvtColor.mexw32。我在一个文件夹中只留下了 2 个文件 cvtColor.mexw32 和 vl_sift
parfor i=1:2
im1=imread('Copy_of_start40.png');
im_vl = im2single(rgb2gray(im1));
desc=vl_sift(im_vl);
im1 = cvtColor(im1,'RGB2GRAY');
end
同样的错误,并且 vl_sift 工作,cvtColor 没有...