0


深度学习之 11 空洞卷积的实现

本文是接着上一篇深度学习之 11 卷积神经网络实现_水w的博客-CSDN博客

空洞卷积

  • 灰色部分为卷积核权重,与左侧相同;白色部分为空,值为0
  • dilation rate:空洞率,空洞卷积权 重值的间隔为dilation rate - 1
  • 当空洞率为1时,退化为普通卷积
  • 空洞后的卷积核的空间(感受野)大

1 优点与适用性

在不增加参数的情况下增大感受野,适用于图片size较大,或需要快速感受全局信息的情况

通过设置不同的dilation rate捕获多尺度上下文信息,适用于需要捕获图片的多层次的情况,如语义分割等。

卷积核为大小2,四层卷积,普通卷积可以覆盖5个像素点, 而使用空洞卷积可以覆盖16个像素点

但是因为空洞卷积的特殊性,我们其实并不能够项普通卷积一样拿来就用。

2 存在的问题

空洞卷积存在网格效应

远距离的点之间的信息可能不相关

空洞卷积存在网格效应

三层空洞卷积 dilation=2

只获取到了一些点的信息, 并没有获取到全部的信息。实际上就算我们不断的继续堆叠最顶点的这个点,只用到了部分结点,我们还是不能够获取到全部底层的信息。

右侧的序列上, 如果我们不进行填充,那么在3层之后就已经到头了,没有办法再进行卷积了。

远距离的点之间的信息可能不相关

空洞卷积虽然是被设计用来捕获更远距离的信息的,但是这样一味的使用大的dalition就会忽略掉近距离的信息,如何能同时处理远距离信息和临近区域的信息是设计好空洞卷积的关键之一。

点B明显与近距离点A更相关,与左上角的点C 关系不大,如果dalition过大则容易忽略点A的信息而降低模型效果。

解决方法

满足HDC条件的空洞卷积叠加演示:dilation rate [1, 2, 5] with 3 x 3 kernel

3 **使用PyTorch实现空洞卷积 **

◼ **空洞卷积的实现 **实现dilation为1,2,5的三层空洞卷积

直接套用之前实现的普通卷积的代码,定义了这3层卷积,对每一层卷积都指定它的空洞率分别为1,2和5,然后在这个前向传播的过程中也是和之前的过程是一致的,这里不过多叙述。

空洞卷积实验结果

  • 模型在训练集上可以达到一个较低的loss和较高的准确率;
  • 在大约40轮后测试集的Loss就处于波动状态甚至有些上升,说明模型出现了过拟合;
  • 测试集的平均准确率达到了82.92%,说明当前模型在cifar-10上进行分类的效果良好;

使用空洞卷积之后,测试集的loss曲线在大概40轮左右的时候,就不再下降了,甚至有点稍微上升的情况,就说明在40轮的时候,模型可能有点过拟合。那么最后我们这个测试集的准确率也到了82%左右,而对于之前设计的普通卷积的准确率大概是不到80%,。

但是并不能够说明这个空洞卷积在任何时候都比普通卷积都要好。需要依据任务和数据的不同,效果也会有所差距。


本文转载自: https://blog.csdn.net/qq_45956730/article/details/126166121
版权归原作者 水w 所有, 如有侵权,请联系我们删除。

“深度学习之 11 空洞卷积的实现”的评论:

还没有评论