DRN - 扩张残留网络(图像分类和语义分割)

article/2025/9/24 6:43:40

DRN - 扩张残留网络(图像分类和语义分割)

原标题 | Review: DRN — Dilated Residual Networks (Image Classification & Semantic Segmentation)

作者 | Sik-Ho Tsang

翻译 | had_in(电子科技大学)

编辑 | Pita

本文回顾了普林斯顿大学和英特尔实验室的DRN(扩张残差网络)。2016年ICML发布了用于语义分割的DilatedNet后,作者提出了DRN,不仅可以提高语义分割效果,还可以提高图像分类效果,而不增加模型的深度和复杂度。文章发表于2017年,被引用超过100次。(SH Tsang @ Medium)

概要

1、扩张卷积;2、需要扩张卷积的原因;3、扩张残差网络(DRN);4、定位;5、去网格化;6、结果

1. 扩张卷积

为了简单起见,我仅引用了DilatedNet结构中的公式:
在这里插入图片描述

左边是标准卷积。右边是扩张卷积。我们可以看到在求和时,需要满足s+l*t=p,索引我们在卷积操作过程中的会跳过一些点。当l=1时,上式表示标准卷积。当l>1时, 上式表示扩张卷积。
在这里插入图片描述

标准卷积(l=1)(左),扩张卷积(l=2)(右)

上面的例子说明了l=2时的卷积过程。我们可以看到感知野比标准卷积大。
在这里插入图片描述
l=1(左),l=2(中),l=4(右)

上面的图显示了更多不同感知野的例子。

2. 需要扩张卷积的原因

研究结果表明,在网络末端得到的较小输出特征map,降低了语义分割的精度。在全卷积网络(FCN,https://towardsdatascience.com/review-fcn-semantic-segmentation-eb8c9b50d2d1)中,当需要32倍的上采样时,我们只能得到非常粗略的分割结果。因此,需要更大的输出特征map。

一种简单的方法是删除网络中的下采样(跨步)步骤,以提高特征map的分辨率。然而,这也减少了感知野,从而严重减少了获得的上下文信息。因为更高的分辨率而产生的感知野减少的代价是不值得的。因此,扩张卷积用于增加后面网络层的感知野,补偿去除下采样而引起的感知野减少。研究发现,使用扩张卷积也有助于这篇文章中的图像分类任务。

3. 扩张残差网络 (DRN)

本文采用d作为扩张因子。当d=1时,为标准卷积。当d>为1时,为扩张卷积。
在这里插入图片描述

3.1. 原始的残差网络

在原残差网络中,最后两组卷积层G4和G5使用3×3标准卷积(d=1):
在这里插入图片描述

由于最大池化层的存在,特征map变得越来越小。输出特征map的大小只有7×7。这并没有前面提到的那样好。

3.2 扩张残差网络**(DRN)**

在DRN中,在G4层,卷积采用d=2:
在这里插入图片描述
在G5层,对于第一次卷积(i=1),仍然采用d=2:
在这里插入图片描述
在G5层,对于剩余的卷积(i>1),采用d=4:
在这里插入图片描述
最后,DRN中G5层的输出为28×28,远远大于原始的ResNet。

4. 定位

在这里插入图片描述

对于图像分类任务,最后是一个全局平均池化,然后是1×1卷积层和softmax层。要将模型用于定位,只需删除平均池化。不涉及任何训练或参数调优。准确的分类DRN可以直接用于定位。

5. 去网格化

在这里插入图片描述

当特征图的频率比扩张卷积的采样率高时,就会出现网格化效应,如上所示。

在这里插入图片描述

DRN-A(上),DRN-B(中),DRN-C(下)

DRN-A:仅有膨胀卷积的网络,有网格效应。

DRN-B:研究发现,第一个最大池化操作会导致高幅度高频率的激活值。因此,将第一个最大池化层替换为2个残差块(4个3×3卷积层),以减少网格效应。在网络的末端还添加了2个残差块。

DRN-C:在网络的末端,扩张率逐渐降低,以消除混叠效应,如先进行2倍膨胀的卷积,再进行1倍膨胀的卷积。然而,混叠效应仍然存在,因为它可以通过残差连接传递。因此,相应的残差连接被删除。

在这里插入图片描述

ResNet-18和相应DRNs的激活图

上面展示了一个可视化。

DRN-A-18:随着卷积的扩张,存在网格效应。

DRN-B-26:使用卷积代替最大池化,特征map网格效应减少了。

DRN-C-26:随着扩张卷积的逐步缩小和残差连接的去除,网格效应进一步减小。

在这里插入图片描述

DRN-C-26中不同层级的特征map的可视化(显示了每层的最高平均激活值)

6. 结果

6.1. ImageNet****图像分类

在这里插入图片描述

ImageNet验证集的Top-1和Top-5错误率

DRN-A-18和DRN-A-34的1-crop top-1准确率分别比ResNet-18和ResNet-34高2.43和2.92个百分点。(从ResNet-34到DRN-A-34,相对误差降低了10.5%。)。DRN-A-50在1-crop top-1准确率上超过ResNet-50一个百分点。将ResNet直接转换为DRN-A,完全不改变模型的深度或容量,但是显著提高了分类精度。每个DRN-C模型都显著优于相应的DRN-A。由DRN-A-18衍生而来的DRN-C-26,其精度与较深的DRN-A-34相当。由DRN-A-34衍生而来的DRN-C-42,其精度与较深的DRN-A-50相当。DRN-C-42接近ResNet-101的精度,但后者层数是前者的2.4倍。

6.2. ImageNet****目标检测

这里基于特征map激活值进行弱监督目标检测。

在这里插入图片描述

C=1000,因为ImageNet是一个1000类的ImageNet数据集。

在分辨率为W×H的C响应map中,f(C, W, H)为位置(W, H)的响应,每个位置的最可能的类别为g(W, H),边界框集合为Bi,其中t为激活阈值。bi为在Bi中选择的最小边界框。

与ground-truth的IOU大于0.5的框,被认为是准确的。

在这里插入图片描述

ImageNet验证集目标检测Top-1和Top-5错误率。DRN的性能优于相应的ResNet模型,说明了基本DRN结构的优势。DRN-C-26的性能明显优于DRN-A-50,尽管深度要低得多。这表明,去网格化方案对于需要更详细的空间图像分析的应用程序具有特别显著的好处。DRN-C-26也优于ResNet-101。

6.3. Cityscape****数据集语义分割

在这里插入图片描述

ResNet-101得到的平均IOU为66.6%。DRN-C-26的表现比ResNet-101基准模型高出一个多百分点,尽管ResNet-101的网络层数是 DRN-C-26的4倍。DRN-C-42模型的表现比ResNet-101基准模型高出4个百分点以上,尽管网络层数要低2.4倍。DRN-C-26和DRN-C-42的表现都优于DRN-A-50,这表明去网格化结构对密集预测任务特别有利。

在这里插入图片描述

Cityscape数据集

如上所示,即使模型是利用密集标注像素级数据集进行监督训练的,DRN-A-50的预测结果也被网格效应所破坏。相比之下,DRN-C-26的预测不仅更准确,而且明显更清晰。

6.4. 使用DRN-D模型的结果

作者的GitHub中还有一种DRN-D版本,它是DRN-C的一个简化版本。

在这里插入图片描述

在ImageNet的验证集上的分类错误率和模型参数的个数

在这里插入图片描述

在ImageNet的验证集上的分类错误率和模型参数的个数

所有的DRN都可以在参数较少(模型较小)的情况下获得较低的错误率。

在这里插入图片描述

分割的mIoU和模型参数个数(在多种学习率、随机缩放比率和旋转等设置下进行训练)。DRN-D-22参数较少,达到68% mIoU,与DRN-C-26相同,高于DRN-A-50。这里并没有逐步降低网络特征表示的分辨率,直到场景的空间结构不再可见,而是通过使最后的输出层始终保持较高空间分辨率。提高了图像分类精度,最终DRN性能优于最先进的ResNet。

率和旋转等设置下进行训练)。DRN-D-22参数较少,达到68% mIoU,与DRN-C-26相同,高于DRN-A-50。这里并没有逐步降低网络特征表示的分辨率,直到场景的空间结构不再可见,而是通过使最后的输出层始终保持较高空间分辨率。提高了图像分类精度,最终DRN性能优于最先进的ResNet。

本文主要参考https://cloud.tencent.com/developer/article/1491401,转载请注明!


http://chatgpt.dhexx.cn/article/m6SUA1JX.shtml

相关文章

DRN——强化学习与推荐系统结合

强化学习是近年来机器学习领域非常热门的研究话题,它的研究起源于机器人领域,针对智能体在不断变化的环境 中决策和学习的过程进行建模。在智能体的学习过程中,会完成收集外部反馈,改变自身状态,再根据自身状态对下一步的行动进行决策&#x…

【Pytorch深度学习实战】(7)深度残差网络(DRN)

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

图像超分辨率 之 DRN 论文解读与感想

图像超分辨率 之 DRN (Closed-loop Matters: Dual Regression Networks for Single Image Super-Resolution)论文解读与感想 DRN是在2020年顶会(CVPR)上发表的一篇想法简单,但是结果非常不错的文章。 先来说一下文章的切入点: …

关于CSRF攻击及mvc中的解决方案 [ValidateAntiForgeryToken]

一.CSRF是什么? CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。 二.CSRF可以做什么&#xff…

CSRF简介

一.CSRF是什么? CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。 二.CSRF可以做什么&#xf…

django种表单post出现CSRF verification failed( CSRF验证失败 ) 的两种解决方案

现象 表单界面如下&#xff1a; 在点击提交之后&#xff0c;出现如下错误页面&#xff1a; HTML的代码如下&#xff1a; contact_form.html <!DOCTYPE HTML PUBLIC ><html> <head><title>Contact us</title> </head><body><h1&…

Django CSRF验证失败. 请求被中断.

项目场景&#xff1a; Python版本&#xff1a;3.7 Django版本&#xff1a;3.1.7 问题描述&#xff1a; 出现了CSRF验证失败. 请求被中断. 原因分析&#xff1a; 在Django中有个设定&#xff0c;防止跨域来请求。比如有爬虫&#xff0c;爬虫不是从网站根目录开始搜寻&#x…

detail: “CSRF Failed: CSRF token missing or incorrect 问题解决方法

如果你尝试了所有方法之后还是没用&#xff0c;那定位你的Ajax方法&#xff1a; 1&#xff0c;var $crf_token $(‘[name“csrfmiddlewaretoken”]’).attr(‘value’) 2&#xff0c;headers:{“X-CSRFToken”: $crf_token} 原因分析&#xff1a; 这是由于你的django,有一个…

CSRF防御之token认证

一、CSRF是什么&#xff1f; CSRF&#xff08;Cross-site request forgery&#xff09;&#xff0c;中文名称&#xff1a;跨站请求伪造。攻击者盗用你的身份&#xff0c;以你的名义发送恶意请求。CSRF能够做的事情包括&#xff1a;以你名义发送邮件&#xff0c;发消息&#xf…

禁止访问 (403)CSRF验证失败. 请求被中断.

出现这个问题是因为django在收到表单提交过来的信息时&#xff0c;会检查提交过来的信息中是否有token,并会对token进行校验&#xff0c;如果校验通过&#xff0c;那就继续执行&#xff0c;反之就会认定这次的数据有伪造的风险。 解决方案&#xff1a; 在项目的settings.py文…

禁止访问 (403) CSRF验证失败. 请求被中断.————错误处理(测试接口时遇到的问题)

问题描述 解决措施 在Header参数中添加Content-Type和X-CSRFToken信息&#xff0c;这样就不会报错了。 运行结果

通过验证Referer解决CSRF安全防御问题

一、背景 JAVAWEB 类项目处于客户验收阶段&#xff0c;在安全扫描处出现 CSRF 问题&#xff0c;通过多个博客中解决思路都无法解决。后来通过同事提醒 可以试试判断 Referer页面来源参数&#xff0c;最终使用该方法解决问题。 二、环境 服务器&#xff1a;Linux 前端&#…

CSRF实战案例—绕过referer值验证

在一个添加管理员的界面引起了我的注意 尝试添加一个管理员&#xff0c;如下添加成功&#xff0c;我们可以观察其请求包中并未存在token字段&#xff0c;可能存在csrf漏洞。但是存在“Referer”和“Origin”字段 我们把referer字段删了只剩origin&#xff0c;查看是否可以请求成…

访问django后台,提示CSRF验证失败. 请求被中断.Referer checking failed - **** does not match any trust

1.非debug模式看到的报错 2.settings打开debug模式&#xff0c;才能把报错信息看的详细 3.去settings.py中&#xff0c;找到CsrfViewMiddleware 中间件&#xff0c;点击进入 4.搜索匹配报错信息 5.往下看看用到这个关键字的地方 6.从源码第一行开始看 7.settings.py&…

安全认证中的CSRF

1、什么叫做CSRF攻击 简单地说&#xff0c;就是说恶意网站&#xff0c;虽然没有盗取你的用户名和密码信息&#xff0c;但是却可以伪装成你&#xff0c;然后登录到银行&#xff0c;或者等危险网站&#xff0c;模拟你进行操作。利用的就是cookies这个特性&#xff0c;即浏览器提供…

csrf验证问题 -- 不同域名下Iframe嵌套Cookie失效导致csrf验证失败

问题原因 Cookie:SameSite Chrome 51 开始&#xff0c;浏览器的 Cookie 新增加了一个SameSite属性&#xff0c;主要用于防止CSRF攻击和用户追踪。 cookie的SameSite属性用来限制第三方Cookie&#xff0c;从而减少安全风险(防止CSRF)。 SameSite可以有下面三种值&#xff1a;…

接口报403,报CSRF验证失败的问题

问题定位&#xff1a;后台两个接口重名&#xff0c;走了优先级更高的接口&#xff0c;接口没有过滤CSRF&#xff1b; 一、csrf是什么 CSRF&#xff08;Cross-site request forgery&#xff09;跨站请求伪造&#xff0c;是一种常见的web安全漏洞&#xff0c;概括地说就是指&…

Django的csrf豁免:解决CSRF验证失败,请求被中断问题

1.CSRF介绍 跨站请求伪造&#xff08;英语&#xff1a;Cross-site request forgery&#xff09;&#xff0c;也被称为 one-click attack 或者 session riding&#xff0c;通常缩写为 CSRF 或者 XSRF&#xff0c; 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的…

解决:禁止访问 (403) CSRF验证失败

在测试Django框架POST请求方式时&#xff0c;程序报错如下 在确保访问安全的情况下有一下两种方式&#xff1a; 1、在相应html文件form代码块中添加如下代码&#xff1a; <form method"post" action"/method_show/">{% csrf_token %} <!-- 改行…

Ubiquant LGBM Baseline 九坤量化大赛 版本44

数据描述&#xff1a; 该数据集包含来自数千项投资的真实历史数据的特征。你的挑战是预测与做出交易决策相关的模糊指标的价值。 Your challenge is to predict the value of an obfuscated metric relevant for making trading decisions. 这是一个代码竞赛&#xff0c;它依…