HED边缘检测

主要是“Holistically-Nested Edge Detection ”这一篇文章
code download:https://github.com/s9xie/hed
这篇边缘检测主要是基于caffe框架下的,所以要实现的时候要在自己电脑上编译caffe,caffe安装编译可以看本人的博客:http://blog.csdn.net/caicai2526/article/details/70156795?locationNum=7&fps=1
先讲解一下本文的方法内容,推荐一篇写的比较好的博客:http://blog.csdn.net/u012905422/article/details/52782615
主要内容——基本思想:
本文提出的end-to-end的边缘检测系统,称为holistically-nested edge detection (HED),使用holistically来表示边缘预测的结果是基于图像到图像的,端到端的过程;而nested则强调了在生成的输出过程中不断地继承和学习得到精确的边缘预测图的过程(具体算法后面再说明)。这里使用多尺度的方法进行特征的学习,多尺度下的该方法边缘检测结果示意图如下图,图中的d,e,f分别为卷积层2,3,4响应得到的边缘检测结果,HED方法的最后输出是远远优于canny算子的。
HED边缘检测_第1张图片
算法结构:
具体算法结构上,作者提出的holistically-nested方法,主要通过几种不同的多尺度深度学习下的结构进行对比说明。在多尺度方面,有更加内部网络形成的多尺度,和外部网络形成的多尺度。前者是学习神经网络里不同层由于降采样的不同得到的不同尺度特征,结合形成多尺度,后者是通过对输入图像的尺度处理时的多尺度,获得不同尺度信息。作者将具体多尺度下的深度学习分为四种,如下图。
HED边缘检测_第2张图片

(a)Multi-stream learning 示意图,可以看到图中的平行的网络下,每个网络通过不同参数与receptive field大小的不同,获得多尺度的结果。输入影像是同时进入多个网络处理,得到的特征结果直接反应多尺度。
(b)Skip-layer network learning 示意图,该方法主要连接各个单的初始网络流得到特征响应,并将响应结合在一起输出。
这里(a)和(b)都是使用一个输出的loss函数进行单一的回归预测,而边缘检测可能通过多个回归预测得到结合的边缘图效果更好。
(c)Single model on multiple inputs 示意图,单一网络,图像resize方法得到多尺度进行输入,该方法在训练和test过程均可加入。同时在非深度学习中也有广泛应用。
(d)Training independent networks ,从(a)演化来,通过多个独立网络分别对不同深度和输出loss进行多尺度预测,该方法下训练样本量较大。
(e)Holistically-nested networks,本文提出的算法结构,从(d)演化来,类似地是一个相互独立多网络多尺度预测系统,但是将multiple side outputs组合成一个单一深度网络。

代码测试:
下载hed之后,caffe编译完成之后,按照readme.txt文件当中进行数据以及模型文件的下载。
在example是/hed文件夹下面应该有7个文件,deploy.prototxt ,solve.py ,solver.prototxt , HED-tutorial.ipynb , train_val.prototxt,最后还有两个模型文件(自己下载的,要放在这个路径之下)。
deploy.prototxt ,solver.prototxt ,train_val.prototxt,训练网络的配置文件,solve.py进行训练。这些都是网络训练必要的。我也进行了训练是可以直接来训练的。

网络模型的测试:HED-tutorial.ipynb这个文件是进行测试的,注意理解里面的意思,对于我一开始想要换其他图片进行测试,然而我并不知道怎么换没有理解里面参数的意思。这里,我告诉大家,想要换其他test文件夹中的图片进行测试需要改一个参数就好

idx=1

该这个参数就好,0-199,就可以随便测试里面的图片了
我的结果:
HED边缘检测_第3张图片
HED边缘检测_第4张图片

你可能感兴趣的:(python)