深度学习

边缘检测数据集bsds500及评测

2019-12-30  本文已影响0人  逆风g

边缘检测相关论文所用到的评测代码都是基于bsds500数据集的benchmarks。

bsds500介绍

berkeley segmentation data set (bsds500)是伯克利大学computer vision group提供的数据集可以用来图像分割物体边缘检测。该数据集包含200张训练图,100张验证图,200张测试图;所有真值用.mat文件保存,包含segmentation和boundaries,每张图片对应真值有五个,为5个人标注的真值,训练时真值可采用平均值或者用来扩充数据,评测代码中会依次对这五个真值都做对比。
压缩包中包含三个子文件:

数据集扩充

最近很多关于边缘检测的深度学习论文2019BDCN、2017CRF、2015HED等都对bsds500的训练集和验证集共300张图片进行了数据扩充,包括旋转翻转尺度缩放。HED扩充之后的数据集地址:http://vcl.ucsd.edu/hed/HED-BSDS.tar,该数据集有1.3GB共28800张训练图,该数据集未给出测试集真值,评测时仍需要用到之前bsds500中的真值。

边缘评测

评测可以直接使用伯克利BSDS500中的benchmarks评测。或者使用HED的评测脚本,考虑到相关边缘检测论文评测前都会对方法结果进行非极大值抑制,推荐使用HED的评测脚本,它包含了非极大值抑制代码。地址:https://github.com/s9xie/hed_release-deprecated/tree/master/examples/eval。它的readme.txt为:

In our experiment, the evaluation pipeline is 
1. Store the edge prediction results in IPython Notebook to individual .mat files using scipy.io.savmat() function.
2. using nms_process.m to get NMS processed png files.
3. using EvalEdge.m to get the final evaluation results. 
4. To get the "late merging" results reported in the paper, run merge_res.m (simply add up nms processed files).

You still need to download Piotr's edge toolbox to make this work.
This is highly redundant, and for now we release these scripts so that the reported results can be exactly reproduced. (Numerical precision of edge map saved can affect the performance a little bit, e.g. directly save the png files before NMS)
We plan to port the NMS code and evaluation code to python very soon.
Contact s9xie(AT)eng.ucsd.edu for questions.

根据readme内容,一步一步操作:
本电脑MATLAB为2015b

  1. 在Python中使用scipy.io.savmat()函数把每张待预测图片保存成.mat格式,保存之后矩阵中元素的取值范围要求为0到1,代表像素点为边缘的概率,实际上为网络sigmoid激活后输出结果。
  2. 下载Edge Toolbox
    下载地址:https://github.com/pdollar/edges,使用之前需要Matlab Toolbox:https://pdollar.github.io/toolbox/

同目录下非常重要,否则会导致无法找到对应参数类型的edgesNmsMex函数

Please compile mex code from within Matlab (note: win64/linux64 binaries included):
  mex private/edgesNmsMex.cpp    -outdir private [OMPPARAMS]
Here [OMPPARAMS] are parameters for OpenMP and are OS and compiler dependent.
  Windows:  [OMPPARAMS] = '-DUSEOMP' 'OPTIMFLAGS="$OPTIMFLAGS' '/openmp"'
  Linux V1: [OMPPARAMS] = '-DUSEOMP' CFLAGS="\$CFLAGS -fopenmp" LDFLAGS="\$LDFLAGS -fopenmp"
  Linux V2: [OMPPARAMS] = '-DUSEOMP' CXXFLAGS="\$CXXFLAGS -fopenmp" LDFLAGS="\$LDFLAGS -fopenmp"
To compile without OpenMP simply omit [OMPPARAMS]; note that code will be single threaded in this case.
  1. 运行nms_process.m产生非极大值抑制后的边缘结果
  2. 运行EvalEdge.m得到评测结果。

结束

最终给出我的文件夹内容:


其中source为Edge Toolbox的内容,toolbox为Matlab Toolbox的内容,这里已经把编译好的edgesNmsMex放到了与nms_process.m同目录下。一定要记得添加路径,简单粗暴直接:

具体评测相关内容可参考HED:
https://github.com/s9xie/hed
非常感谢!

上一篇 下一篇

猜你喜欢

热点阅读