gyro永不抽风

ああああああああああああああああおおおおおおおおおおおおおおおお

对RCF网络的理解

原论文

原论文:
https://mmcheng.net/rcfEdge/

网络架构

下图为RCF网络架构:

RCF网络架构

其建立在VGG16之上,根据其修改而来。与原来的VGG16相比:

  • RCF网络去除了原来所有的全连接层(最后的三个全连接层)以及最后的池化层。这样做是因为与VGG网络的设计初衷——图像分类问题不同,这个网络旨在边缘检测,VGG最后的全连接层得到的$1 \times 1 \times 4096$的输出是没有意义的,所以将其删去。
  • 为了进行边缘信息的提取,所以需要对像素值本身进行重新计算,所以在VGG16的每个卷积层后,都添加了一个$1\times 1 - 21$的卷积层,先升维,后通过$1 \times 1 - 1$进行降维。
  • 其在每一个stage的最后添加了cross-entropy loss / sigmoid层以计算损失,更新参数。
  • 每一层中有deconv层进行上采样,将图像大小映射回原来的大小,最后在fusion部分将每一个stage的输出叠加,在进行一遍$1\times 1 - 1$的卷积将多通道合并,来达到获取多种混合信息的能力。

损失函数

由于数据集通常是由多个标记者 (Annotator) 标记的。虽然每个人的认知不同,但是大家的结果都具有很高的一致性。对于每一张图片,我们将所有人的标记取平均值来生成一个边缘存在的概率图。对于每一个点,$0$代表没有标记者认为这个点是边缘,$1$则代表所有人都认为这个点是边缘。这里定义一个超参数$\eta$:如果一个点是边缘的概率大于$\eta$,则这个点我们认为其是边缘;若这个点的概率是$ 0 $,则其不是边缘;此外,认为那些概率介于$ 0 $和$ \eta $之间的点是属于有争议的点,不计入损失函数。所以,每一个点的损失函数可以记为:

其中,

$|Y^+|$表示图中一定是边缘的点的个数,$|Y^-|$表示图中一定不是边缘的点的个数,$\lambda$则是超参数。在像素$i$的特征向量和是否为边缘的事实表示分别为$X_i$和$y_i$,$P(X)$是一个标准的Sigmoid激活函数,$W$则代表网络中的所有学习参数。所以,整个图片的损失函数可以记为:

其中,$X_i ^ {(k)}$表示stage k的特征向量,$X_i ^ \text {fuse}$表示stage fusion的特征向量,$|I|$代表像素个数,$|K|$代表阶段数(此处为5)

Online Demo

https://mc.nankai.edu.cn/edge

__EOF__
-------------本文结束感谢您的阅读-------------

本文标题:对RCF网络的理解

文章作者:gyro永不抽风

发布时间:2020年08月20日 - 16:08

最后更新:2020年09月22日 - 17:09

原始链接:http://gyrojeff.moe/2020/08/20/%E5%AF%B9RCF%E7%BD%91%E7%BB%9C%E7%9A%84%E7%90%86%E8%A7%A3/

许可协议: 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 转载请保留原文链接及作者!

真的不买杯奶茶吗?T^T

欢迎关注我的其它发布渠道