天天看點

MMCheng圖像顯著算法RC配置

環境

vs2013 + opencv3.2 + MMCheng倉庫中SalBenchmark-master的RC

SalBenchmark的github連結

說明

嘗試使用opencv3.0來跑RC,PR曲線不是下降的可以看出opencv3.0配2015年的RC是有問題的(也可能是我手殘哪裡點錯了)。是以換opencv3.2來配置RC。不過建議拿opencv2.x進行嘗試,或許會比opencv3.2的效果好。汗,13年的代碼下不到了。建議使用cv2.4嘗試看。

步驟

倉庫裡的readme,寫的蠻清楚的了。這裡介紹整體步驟。

  1. 編譯release版的opencv3.2,在vs中打開cmake生成的項目。将項目屬性改成release。這裡參考opencv編譯

    tips: a. vs中對項目右鍵屬性,改的是這個項目的屬性;而屬性管理器是所有項目的共有屬性(x64 release這次用到的是)。 b. 建議用vs打開項目前,先用文本編輯器修改

    C:\Users\Administrator\AppData\Local\Microsoft\MSBuild\v4.0裡的

    Microsoft.Cpp.x64.user.props(x64 release和debug),删除裡面以前配置的資訊,免得編譯的時候沖突。

    這邊不需要另外編譯contrib部分,選擇install而不是all build

  2. 對 SalBenchmark編譯
    • 打開SalBenchmark-master\Code\Demo.sln,切換成x64 release。
    • 移除除了cmlib和GetRC以外的項目(懶,不想改其他的配置。或者按照之前修改x64.user.props的步驟,之後打開項目)
    • 将opencv3.2頭檔案的路徑添加項目的cmlib的屬性中(cmlib包括檔案夾路徑等操作),生成SalBenchmark-master\Code\Lib\CmLib.lib。這邊Cmlib的工作結束了,作者在GetRC的GetRC.vcxproj寫好了Cmlib.lib的相對路徑。
    • 從項目中移除cmlib。将opencv3.2的頭檔案,庫檔案路徑和庫檔案名字加入GetRC的屬性。
    • 修改GetRC.cpp的輸入代碼(這部分本來是由一個統一接口進來的)
int main(int argc,char *argv[])
{
    /*CV_Assert(argc == 3);
    CStr imgW = argv[1], salDir = argv[2];*/
    char* b[] = { "", "J:/extra/MSRA1000/image/noise1/*.jpg", "J:/extra/MSRA1000/RCsaliency/noise1/" };// imgdir, saldir 
    CStr imgW = b[], salDir = b[];// replace argv with b
    // 後面一緻
}
           

小結

按倉庫的readme, opencv和cmlib的全是在release下編譯的。MSRA1000的RC方法的PR-auc是0.9x(不精确到後兩位了~),曲線和論文中看到還算吻合。建議使用2.x版本的opencv嘗試下。

PS

對opencv3.0的惡意

MMCheng圖像顯著算法RC配置

左 opencv3.2+salbench的RC————————–右 opencv3.0+salbench的RC

cmlib編譯

a.打開SalBenchmark/Code/CmLibCmLib.vcxproj或者另外一個倉庫CmCode/CmCode.sln;

b.保持編譯環境一緻,我是都64位,用vs生成.lib,也就是靜态連結庫;

c.在SalBenchmark庫目錄引入.lib

繼續閱讀