Code

注意事项: These resources might need a password to be opened. Please supply your name, institute, and positions to get the password. Click Google form or Wenjuan to do this. The source code is free for research and education use only. Please cite our paper if you use any part of our source code or data in your research.

Source code

We open-source all papers by default, except for a few of them supported by commercial companies with NDA (non-disclosure agreement). Thus, we stop updating the following list. Please go to the publication page for the source code.

  1. C++:  Salient Object Detection: A Discriminative Regional Feature Integration Approach, IJCV, 2017. [project] [bib]
  2. C++: HFS: Hierarchical Feature Selection for Efficient Image Segmentation. ECCV, 2016. [project][bib]
  3. C++ & Matlab: Salient Object Detection: A Benchmark, IEEE TIP, 2015. [project]
  4. C++ & CUDA: Struck: Structured output tracking with kernels, IEEE TPAMI, 2016. [pdf]
  5. C++ & CUDA: SemanticPaint: Interactive 3D Labeling and Learning at your Fingertips, ACM TOG 2015. [project]
  6. C++: DenseCut: Densely Connected CRFs for Realtime GrabCut, CGF 2015. [project] (I didn’t get enough time to reorganize the code. This is an initial version code without careful comments and organization.)
  7. C++ & CUDA: A Framework for the Volumetric Integration of Depth Images, arxiv eprint, 2014. [project]
  8. C++: ‘BING: Binarized Normed Gradients for Objectness Estimation at 300fps’, IEEE CVPR 2014. [project] [bib][readme]
  9. C++: Efficient Salient Region Detection with Soft Image Abstraction”, IEEE ICCV 2013. [project] [bib]
  10. C++(speech recognition part): “ImageSpirit: Verbal Guided Image Parsing”, ACM TOG, 2014, [bib] [project]。 Full code from Github.
  11. C++: “Global Contrast based Salient Region Detection”, IEEE TPAMI 2015. [project] [FAQs] [bib]
  12. C++: “Curve Structure Extraction for Cartoon Images” [Pdf] [bib]
  13. Executable 和 C++: “A Shape-Preserving Approach to Image Resizing”. CGF 2009. [project] [bib]
  14. Commercial version (神笔小Q, powered by QQ实验室) for our paper “Sketch2Photo: Internet Image Montage“, ACM TOG, 2009. [bib]
  15. Matlab: “Connectedness of Random Walk Segmentation”, IEEE TPAMI 2009. [bib]

License

The code is released under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License for NonCommercial use only. Any commercial use should get formal permission first.

Data

  • COD10K (Baidu w3up| Google ) (2.25G): Camouflaged Object Detection, CVPR, 2020.
  • SIP1K (Baidu pan fetch code: 46w8 | Google drive )]: Rethinking RGB-D Salient Object Detection: Models, Data Sets, and Large-Scale Benchmarks, TNNLS, 2020. (Human-centered RGB-D salient object detection)
  • DAVSOD (Baidu  [fetch code: ivzo]| Google)]: Shifting More Attention to Video Salient Object Detection, CVPR, 2019. (Video Salient Object Detection)
  • SOC6K (TestSet GT) [Object-level]|[Instance-level]
  • SOC6K ([730.2MB] Baidu | Google): Salient Objects in Clutter: Bringing Salient Object Detection to the Foreground,  ECCV, 2018. (First one largest instance-level salient object detection dataset with high-quality rich annotations, e.g., object level, instance level, and image-level annotations. ) [project page][bib].
  • aNYU: attributes augmented NYU dataset published with our CVPR 2014 paper “Dense Semantic Image Segmentation with Objects and Attributes” (Please follow the instructions on the project page for getting unzip password).
  • THUR15K (787MB): Salient object region labeling (annotated at pixel accuracy if exist such a salient object) for 15000 non-selected internet images, divided into five groups according to the keywords used to download them. Please cite our paper [BIB] if you use it. We also provide a Matlab file of Fig. 7(b) for easier comparison.
  • MSRA10K: Pixel accurate salient object labeling for 10000 images from the MSRA dataset.
  • PASCAL VOC annotations: Unfortunately, the XML format used in one of the most widely used benchmark datasets (PASCAL VOC) does not compatible with OpenCV. Here is a YML version of PASCAL VOC annotations (VOC 2007), which could be read by OpenCV directly.

Patents

International patents: (Espacenet)

  1. Method and Apparatus for Detecting Salient Object in Image, Qibin Hou, Mingming Cheng, Wei Bai, Xunyi Zhou, US20200143194
  2. Image processing method and image processing device, Shi-Min Hu, Ming-Ming Cheng, Guo-Xin Zhang, Niloy J. Mitra, Xiang Ruan, US20120288189, EP2523165, CN102779338A, JP2012243313A
  3. Method for calculating image visual saliency based on color histogram and overall contrast, Shi-Min Hu, Ming-Ming Cheng, Guo-Xin Zhang, WO 2012122682, PCT/CN2011/000690
  4. Method for detecting similar units based on outline belt graph, Shi-Min Hu, Ming-Ming Cheng, Fang-Lue Zhang, WO 2011131029, CN 101833668

Chinese patents (企知道, 中国专利公告):

  1. 程明明,姜鹏涛,张长彬,侯淇彬,曹洋,基于在线注意力累积的挖掘目标物体区域的方法,申请号:201910715341.X,申请日:2019-08-05。
  2. 杨巨峰,夏爽,冀晓东,陈松,程明明,一种基于多序列MRI的多发性骨髓瘤病灶的分割系统,申请号:201910582883.4,申请日:2019-07-01。
  3. 杨巨峰,梁杰,程明明,一种基于正交元空间的多模态图像增强方法,申请号:201910571058.4,申请日:2019-06-28。
  4. 范登平;程明明;张钊,一种基于深度图过滤器的显著性物体检测方法,申请号:201910524475.3,申请日:2019-06-18。
  5. 程明明,杨巨峰,伍小平,展翅,一种基于注意力机制和多层次卷积特征的植物病虫害识别方法,申请号:201910404278.8,申请日:2019-05-16。
  6. 杨巨峰,程明明,孙晓晓,陈丽怡,一种基于对抗神经网络和海量噪声数据的图片分类方法,申请号:201910358002.0,申请日:2019-04-30。
  7. 程明明,范登平,林铮,吴文海,一种基于注意力转移机制的视频显著性物体检测方法,申请号:201910347420.X,申请日:2019-04-28。
  8. 程明明,刘云,吴宇寰,基于多路割的弱监督实例分割方法,申请号:201910347532.5,申请日:2019-04-28。
  9. 杨巨峰,程明明,陈丽怡,折栋宇,孙晓晓,一种基于上下文信息的艺术画风格分类方法,申请号:201910311265.6,申请日:2019-04-18。
  10. 程明明,高尚华,赵凯,可集成到神经网络架构中的图像多尺度信息提取方法及应用,申请号:201910242489.6,申请日:2019-03-28。
  11. 程明明,赵凯,一种基于互斥正则化技术的人脸识别方法,申请号:201910235306.8,申请日:2019-03-27。
  12. 程明明,陈林卓,李炫毅,基于空间注意力机制的点云特征提取方法,申请号:201910235177.2,申请日:2019-03-27。
  13. 程明明,刘云,基于多层次上下文信息融合的显著性物体检测方法,申请号:201811547592.3,申请日:2018-12-18。
  14. 杨巨峰,程明明,折栋宇,王恺,一种基于深度度量学习的图像情感分类与检索算法,申请号:201810173303.1, 申请日:2018-03-02。
  15. 刘姜江,程明明,侯淇彬,范登平,谭永强,一种基于深度网络的多类型任务通用的检测方法,申申请号:201810173285.7,申请日:2018-03-02。
  16. 杨巨峰,程明明,梁杰,王恺,基于三元组的自动估计类数的子空间聚类方法,申请号:201810170826.0,申请日:2018-03-01。
  17. 杨巨峰,程明明,孙延,梁杰,王恺,一种基于多视角多特征的图像印象性预测方法,申请号:201810171247.8,申请日:2018-03-01。
  18. 范登平,程明明,曹洋,吴宇寰,任博,一种基于二进制的前景图相似度评测方法,申请号:201810171102.8 申请日:2018-03-01。
  19. 杨巨峰,程明明,孙晓晓,王恺,一种基于迭代采样和一对多标签修正的Web图像训练卷积神经网络方法,申请号:201810171017.1,申请日:2018-03-01。
  20. 侯淇彬,程明明,白蔚,周迅溢,图像显著性物体检测方法和装置,申请号:201710488970.4,申请日:2017年6月26日。
  21. 程明明,刘笑畅,白蔚,苗磊,一种图片处理方法及设备,申请号:201710602208.4,申请日期:2017年7月24日。
  22. 程明明,刘云,侯淇彬,白蔚,图像分割方法及装置,申请号:201610850223.6,申请日:2016年9月28日。
  23. 胡事民,张方略,程明明,基于成组物体混合的图像合成方法,申请号:201110262737.7 申请日:2011-09-06。
  24. 胡事民,程明明,张国鑫,基于色彩直方图和全局对比度的图像视觉显著性计算方法,申请号:201110062520.1, 授权日:2012年7月25日。
  25. 胡事民,程明明,张方略,一种基于轮廓带图的相似单元检测方法,申请号:201010159931.8, 授权日: 2011年12月28日。
  26. 胡事民,程明明,张方略,基于几何信息的相似图元隐藏部分自动补全方法,申请号:201010158440.1,授权日: 2012年9月5日。
  27. 胡事民,程明明,张国鑫,一种基于共形能量的内容敏感图像缩放方法,申请号:200910092756.2,授权日2011年12月28日。
  28. 胡事民,陈韬,程明明,张松海,基于图像库的图像合成质量自动评测方法,申请号:200910086937.4,受权日2011年9月14日。
  29. 胡事民,陈韬,程明明,张松海,基于混合梯度场和混合边界条件的图像合成方法和装置,申请号:200910084769.5,授权日2011年5月11日。
  30. 胡事民,程明明,陈韬,张松海,一种基于草图的网络图元自动提取方法和系统,申请号:200910081069,授权日2010年9月1日。
  31. 胡事民,张一飞,程明明,视频像素可伸缩性的计算方法,申请号:200810114466.9,授权日:2009年12月9日。
  32. 胡事民,程明明,陈韬,张松海,基于卡通片的高质量线结构提取方法,申请号:200810106664,授权日2009年9月25日。
  33. 程明明,张少甫,李文博,周瑞,仇玲,一种节能的路灯亮度随需动态调节系统及控制方法,申请号:200810018101,授权日:2012年4月25日。

(Visited 260,035 times, 2 visits today)
Subscribe
Notify of
guest

433 Comments
Inline Feedbacks
View all comments
MissP

程老师,您好,看了您的BING程序,关于DataSetVOC中getTrainTest()函数有什么作用囊?因为我在论文中看到只训练6中类型,但是在程序里,这个函数与其他函数没有关系,很是不理解。希望您能解惑。

frisch

程老师你好, 请教一下关于sz2idx这个函数的返回值的问题:
int sz2idx(int w, int h) {w -= _minT; h -= _minT; CV_Assert(w >= 0 && h >= 0 && w < _numT && h < _numT); return h * _numT + w + 1; }
请问一下这个函数最后的返回值是什么含义? 谢谢

Liuqian

SureD,你好。
我在调试程序的时候也出现了你提出的问题。测试样本导入个数是0 ,而且下载的VOC2007、training和testing文件夹内都没有class.txt文档。
请问你的问题是如何解决的?
如果方便,能加我的QQ吗?125110121

Liuqian

程老师,您好。我之前给您留过言。之前的问题已经解决了。但是在调试时加载train集合test集合时发现在DataSetVOC的构造函数中加载“TrainVal.txt”、”Test.txt”和”class.txt”路径时,在”ImageSets/Main/“路径下没有”Test.txt”和”class.txt”这两个文本文件。
我将你网站上提到的 VOC 2007 、 training 、testing和 annotation for opencv链接下的数据包都下载了下来,分别在training链接下的文件夹找到了TrainVal.txt,在testing链接下的文件夹找到了Test.txt。但在上面四个文件夹中都没有查找到Class.txt文件。请问这个问题怎么解决?

zhangpeng

程老师,你好。我最近在学习“Global Contrast based Salient Region Detection”这篇文章,准备使用您的Saliency这个代码包。但是总存在问题,基本上都是跟环境配置相关,我用的是opencv3.0.0和vs2012。请问下,要运行该代码,用vs2012和opencv2.49搭建的环境可以吗?

fangtao

for study

黄玲玲

程老师你好,您的RC算法中的预分割图像区域所用的那个算法的参数是对您实验数据里的图片都适用吗?我做实验时发现有些图像所用您代码中的参数分割后的区域都只有几个,问下程老师,您实验时用的是统一的参数,还是不同的图像用了不同的参数呢?

Ming-Ming Cheng

应该是适用的,那个结果很奇怪可以发给我,看看是什么地方出问题了。实验的时候当然得用统一的参数,不然自动的分析方法就没有意义了,要是每来一个输入都得调参数的话,还不如直接手指一圈把结果说出来。

黄玲玲

这是我只做了RC算法中的预分割图像区域的那部分实验,代码和参数都是完全用的您程序中的,以下为两个分割结果图,第一组是分割情况较好的,第二组是比较常见的分割结果。

zhangpeng

同学,你好。我现在也在学习“Global Contrast based Salient Region Detection”这篇文章,用的Saliency这个代码包,但是总存在问题,希望你能指导一下。问题如下:
1.环境用的OpenCV3.0.0和VS2012,配置好之后使用简单的代码检查是否配置成功,debug下能成功,release下总是提示错误。
2.不知道是否是因为问题1,导致运行Saliency代码的时候,总是提示很多:未声明的标识符,比如CV_RGB2BGR等等。
我的邮箱是r308977210@126.com,谢谢。

丽惠 曹

程老师您好:

我在运行您的saliency代码的时候有很多错误:

(1)
感觉您的代码是在visual studio2012上面运行过,所以visual studio 2010运行会有集成环境vc120找不到的问题,这个问题在属性里改一下就可以了。

(2)
运行代码是总出现“cmd.exe 已退出,代码为3.”的错误。

Moc’ing SpRecoUI.h…

1> 系统找不到指定的路径。

1>
Uic’ing SpRecoUI.ui…

1> 系统找不到指定的路径。

1>
Rcc’ing SpRecoUI.qrc…

1> 系统找不到指定的路径。

1> C:Program Files (x86)MSBuildMicrosoft.Cppv4.0Microsoft.CppCommon.targets(151,5):
error MSB6006: “cmd.exe”已退出,代码为 3。

我找了以后发现这三个文件是存在的,只是这三个文件例如ApRecoUI.h中包含的头文件不存在,如图所示,找不到ui_SpRecoUI.h这个文件。

这个问题要怎么解决呢,老师,希望得到您的指导。

Ming-Ming Cheng

这个代码是很多paper代码放在一块了。SpRecoTOG14是另外一个ACM TOG paper的代码,需要安装QT才能运行。你如果只关心saliency的话,大可简单地从solution中删除这个project。

hongyi

程老师,感谢您的分享。我想请教一个问题,通过编译生成了一个名为Saliency的文件,然后怎样处理图片呢?可以达到您文章“Global contrast based salient region detection”中所给出的效果。

Sayram

程老师您好,我看了您BING的代码,在训练第一步SVM时,代码里是拿groundtruth bounding box通过base取样得出的1-2个box作为正例样本,而不是像您论文中说的直接拿原始groundtruth bounding box作为正例。这种差别其实还挺大的,只保证IOU>0.5就作为正例,而不是原始groundtruth,是不是跟论文矛盾了呢,哪个更合理些?谢谢!

Ming-Ming Cheng

这些都是实现中的小细节,你可以自己试试不同的选择,对结果影响不大。

SureD

程老师,不知刚才那个问题您是否看到……在BING调试运行后,Result中的结果全是0,在windows下和linux下都是这样,是由于我的电脑不支持最新指令集的原因吗?但是我重写了那个popcnt函数,理论上应该是可以的,只是牺牲了一些效率。训练的结果图也像论文中效果相同,但结果确全是0,在linux下加载class.txt时会抛出一个异常,是由DataSetVOC::loadBox中CV_Assert_(clsIdx[clsIdx.size() – 1] >= 0, (“Invalidate class namen”));这句引起的,但文件中的class.txt的内容应该正确,可能是第一次循环时导致的异常,我冒险把这个注释掉后就可以正常运行了…但仍然看不到正确结果,另外我在VOC上下载的ImageSets这个文件夹中的内容和之前我下载的有些区别,因此不知道是不是因为这个原因导致的。
还有就是提醒一下在linux上跑的同学们,因为linux区分大小写,因此加载失败抛出异常的原因可能是main文件夹中的test.txt/train.txt的首字母大写了。。:)

SureD

问题已解决……训练样本的问题~

Liuqian

SureD,你好。
我在调试程序的时候也出现了你提出的问题。测试样本导入个数是0 ,而且下载的VOC2007、training和testing文件夹内都没有class.txt文档。
请问你的问题是如何解决的?
如果方便,能加我的QQ吗?125110121

lzy

你好,我想问问你是怎么调试出来的,你说的那个语句的问题我也出现了,但是注释了之后test也是0,并且会报错。有时间的话能加个QQ指导我一下吗,谢谢。QQ:945007031

Jing Li

程老师您好,我正在学习您的objectness程序,opencv配置OK,3个zip包也都解压到了voc2007目录下,编译通过但是仍然运行不出来,报错结果如下:
Load annotations finished
Dataset:`../VOC2007/’ with 2501 training and 4952 testing
WinRecall.m Base = 2, W = 8, NSS = 2, perSz = 130
OpenCV Error: Assertion failed (0 <= roi.x && 0 <= roi.width && roi.x + roi.width <= m.cols && 0 <= roi.y && 0 <= roi.height && roi.y + roi.height <= m.rows) in cv:: Mat::Mat, file ..\..\..\opencv\modules\core\src\matrix.cpp, line 323
我看到有人和我一样的错误,但是我的voc数据都下载好了,仍然不行。每次运行到RunObjectness("WinRecall.m", 2, 8, 2, 130)就中断了,vs2010显示无可用源,不知道是为什么

SureD

嗯,我也是这个问题,一旦调用loadDataGenericOverCls()这个随机分配的就会出错,而调用固定的读入就不会出错,但是我的Results确全是0,不清楚是什么原因?我在Linux和Windows下都试过了,结果确全是0,Windows下因为CPU没有带SSE4.2的指令集,因此我重写了一个算法用来替代__popcnt64,调试通过后,结果是0,我以为是这个原因,因此下了Linux上的代码,调试成功运行后仍然全是0..不知道是什么原因,不知程老师是否遇到过这个问题?谢谢~

SH

Hi.
I have a question about your code “Objectness.cpp”, line85.

int height = cvRound(pow(_base, r/_numT + _minT)), width = cvRound(pow(_base, r%_numT + _minT));

“r%_numT” is a typo of “r/_numT” ?

fyj

程老师,您好,我运行代码编译能通过,一运行就显示“0x0F5A115C (msvcr110d.dll) (SaliencyICCV13.exe 中)处的第一机会异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突。”用vs2010和vs2012都出现同样的问题,用的是win7(64)+opencv2.4.9+vs2012,网上都找不到解决方案,麻烦老师了!谢谢!

董潇

程老师您好!
我在看您的Global contrast based salient region detection论文对应的salient检测代码的时候,将3通道颜色量化为12*12*12的公式您能解释一下为什么是这样的么?
// Build color pallet,(color, num) pairs in pallet
map pallet;
for (int y = 0; y < rows; y++)
{
const float* imgData = img3f.ptr(y);
int* idx = idx1i.ptr(y);
for (int x = 0; x < cols; x++, imgData += 3)
{
idx[x] = (int)(imgData[0]*clrTmp[0])*w[0] + (int)(imgData[1]*clrTmp[1])*w[1] + (int)(imgData[2]*clrTmp[2]);//opencv默认使用BGR的通道顺序,(int)(B*11.9999f)*144+(int)(G*11.9999f)*12+(int)(R*11.9999f)
pallet[idx[x]] ++;
}
}

之后将值转化为BGR时是这样的,这个我能理解:
vector color3i(num.size());
for (unsigned int i = 0; i < num.size(); i++)
{
color3i[i][0] = num[i].second / w[0];//color/144
color3i[i][1] = num[i].second % w[0] / w[1];//(color%144)/12
color3i[i][2] = num[i].second % w[1];//color%12
}

yupeng cheng

是为了减少计算复杂度,原来的颜色通道是256*256*256的,太大了。

田建国

对老师从事的工作比较感兴趣,先来学习一下。

jianhengzhu

请问Bing的解压密码是多少

Shivani

What is the passowrd to access code ?

乐乐

谢谢你们的工作以及分享的精神,让后来者不需要再做重复工作!

zouhb

老师你好!
我编译你 “Efficient Salient Region Detection with Soft Image Abstraction“, IEEE ICCV 2013C++代码出错:
我得环境是 win7 64+vs2012+opencv249配置正确,编译CmLib为dll,设置dll的路径,再编译SaliencyICC13为exe,出现错误为
Loadlibraryfailed:126
GetProcAddressfailed:127
机器为联想的E530,双显卡,按照网上的操作设置为独立单显卡错误一样,????

zouhb

我都编译为win32的程序呀,还是上面的错误!!

fyj

我跟你一样的错误,不知道解决没有!求助!

fyj

如果没有64位版本,是说64位系统就没法运行了?不知道老师有什么好的解决办法?

zhouqiao

您好!请问“Efficient Salient Region Detection with Soft Image Abstraction“, IEEE ICCV 2013C++代码的解压密码是多少?谢谢!

肥肥

程老师,“Global Contrast based Salient Region Detection”里面的代码好像下载不了,点一下会跳回原页面

1 3 4 5 6 7 11