CVPR2017 DenseNet, Refiner

2024-03-05 10:48
文章标签 densenet refiner cvpr2017

本文主要是介绍CVPR2017 DenseNet, Refiner,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

师兄给我安利了CVPR2017的两篇最佳论文,就瞄了两眼;发觉最佳论文真的是简单易懂,特别是DenseNet感觉看图就可以了= =

越发觉越厉害的东西表述起来越简单,,ԾㅂԾ,,


首先是DenseNet,其实还是很意外是一个CNN的分类模型,因为传统去做分类模型感觉真的不受宠了,主要是很多指标太难再往上刷了,而且很少看到一个新的且普适的idea,我之前看到的最新的idea是face++的shuffleNet,加入了shuffle的操作,但它又不算是传统的分类,它的目标是移动端,很精巧(参数少)。


DenseNet的想法很暴力,像是ResNet的变种(ShuffleNet也像是它的变种),它的构建建立在卷积层如果离输入层/输入层更近,那么它更容易收敛,所以它的做法比ResNet更暴力,ResNet只是前后两层之间的输出做sum,而这个则是要求各个层之间都有关联,即原来的网络如果有L层,则有L-1个连接,而现在每两个层之间都有一个连接,即L*(L+1)/2个连接,就问你怕不怕,,ԾㅂԾ,,

啥?怎么连接的,我们看看源码

def dense_block(x, stage, nb_layers, nb_filter, growth_rate, dropout_rate=None, weight_decay=1e-4, grow_nb_filters=True):''' Build a dense_block where the output of each conv_block is fed to subsequent ones# Argumentsx: input tensorstage: index for dense blocknb_layers: the number of layers of conv_block to append to the model.nb_filter: number of filtersgrowth_rate: growth ratedropout_rate: dropout rateweight_decay: weight decay factorgrow_nb_filters: flag to decide to allow number of filters to grow'''eps = 1.1e-5concat_feat = xfor i in range(nb_layers):branch = i+1x = conv_block(concat_feat, stage, branch, growth_rate, dropout_rate, weight_decay)concat_feat = merge([concat_feat, x], mode='concat', concat_axis=concat_axis, name='concat_'+str(stage)+'_'+str(branch))if grow_nb_filters:nb_filter += growth_ratereturn concat_feat, nb_filter

就concat到一起啊= =这样做的结果肯定是参数太大了,为了解决这个问题,我们再次引入百搭的1*1卷积核来压缩一下我们的tensor方便再后面再搞事情,当然没压缩的tensor也保留下来,pooling, relu, BN也不要停

这样反复来几次,于是乎denseNet的模型就搭建好了


这里将所有的feature联合起来,再我理解像是结合所有尺度的feature来做判断,而且相比resnet/highway net更加直观,无论从结果还是原理都是make sense的


而另外一篇苹果大佬的论文则是基于GAN的优化

GAN的大火似乎是必然的,因为它不仅有趣,且确实能解决很多问题

像我自己在做医疗图像,知道医疗数据集的标注是多么耗时耗力的一件事情,所以当时看到GAN就想着能不能作为data augmentation的手段之一


说回来,苹果大佬的这篇相对而言没有让我感觉辣么厉害,可能还是太连青(◐﹏◐)

它的重点是在生成器G和判别器D中间多整出一个refiner neural network,而这个网络的训练也非常的易于理解

首先说说refiner的意义何在,它就类似于一个加工器,我们不直接将生成器生成的图片作为输出,而是再生成图片的基础上再做一次加工使其更加逼真,所以refiner的输入是生成器的输出,输出是判别器的输入

于是乎,文章觉得这个起到逼真作用的refiner要达到两个目的:1)混淆判别器,让判别器分不出来;2)保留生成器生成图片的信息;

于是乎,作者大笔一挥给出了这个网络的损失函数


大佬就是这么任性,1)式作为refiner的损失函数,前部分l_real用来混淆判别器,后部分l_reg保留生成图片信息


2)是判别器的损失函数,右边yi为真实样本,左边的~xi为refiner加工过的假样本,为了使判别器分不出来,那我们就要最大化这个损失;

于是乎1)式的前部分就可以从2)式来改写:


最小化3)式的损失就能达到最大化2)式的效果


紧接着作者又一段骚操作给出了整个损失函数


后面为了保留原来图片的信息最小化差值没有问题,但是为什么是L1范数不是L2范数我没想通,希望有大佬能够解答


另外它这里的refiner网络是一个全卷积网络,相当于就是flatten之后的全连接网络,嗯,还是get不到为啥是L1范数


还有几波骚操作不能不提


1)它这里的判别器不仅仅是判别器判别整个图像,而(应该是,我理解的是)是一个判别器判断多个Local patch(即判断特定位置),文章的的解释是这样更能增加判别器的判别能力(增加了训练样本,且限制了卷积核大小)(限制卷积核的大小可能是为了减少参数?为什么限制了卷积核的大小更有助于增强判别器的精度,这里也没懂=,=


2)判别器对于过去已经被标注为假的样本应该时刻铭记,不应该好了伤疤忘了痛,所以我们要反复戳伤疤,哦, 不,反复把以前的refiner造出来的样本和现在的样本结合起来塞进去训练


像上面这样有一个buffer用于存储以前refiner生成过的图片



唠完了,我决定去尝试一下DenseNet(:逃


参考文献:

Shrivastava A, Pfister T, Tuzel O, et al. Learning from Simulated and Unsupervised Images through Adversarial Training[J]. 2016.

Huang G, Liu Z, Weinberger K Q. Densely Connected Convolutional Networks[J]. 2016.

这篇关于CVPR2017 DenseNet, Refiner的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/776267

相关文章

对ResNet和DenseNet的一点比较

在之前的文章中,我曾经详细的分析过DenseNet。随着时间的推移,越来越多的人开始关注DenseNet并且把它应用到实际的项目中(我从百度搜索的统计上得到这个结论 ?)。所以我决定也在应用这方面写一点。 当前卷积网络使用最广泛的两种结构是ResNet和Inception,当然还有各种衍生系列以及它俩的合体Inception-Resnet。从结构特点上,它们都是某个小结构的组合,包括DenseN

动手学深度学习7.7. 稠密连接网络(DenseNet)-笔记练习(PyTorch)

本节课程地址:本节无视频 本节教材地址:7.7. 稠密连接网络(DenseNet) — 动手学深度学习 2.0.0 documentation (d2l.ai) 本节开源代码:...>d2l-zh>pytorch>chapter_multilayer-perceptrons>densenet.ipynb 稠密连接网络(DenseNet) ResNet极大地改变了如何参数化深层网络中函数

DenseNet模型

《Densely Connected Convolutional Networks》阅读笔记 代码地址:https://github.com/liuzhuang13/DenseNet 首先看一张图: 稠密连接:每层以之前层的输出为输入,对于有L层的传统网络,一共有 L L个连接,对于DenseNet,则有L(L+1)2\frac {L(L+1)} 2。 这篇论文主要参考了High

CV预测:快速使用DenseNet神经网络

AI预测相关目录 AI预测流程,包括ETL、算法策略、算法模型、模型评估、可视化等相关内容 最好有基础的python算法预测经验 EEMD策略及踩坑VMD-CNN-LSTM时序预测对双向LSTM等模型添加自注意力机制K折叠交叉验证optuna超参数优化框架多任务学习-模型融合策略Transformer模型及Paddle实现迁移学习在预测任务上的tensoflow2.0实现holt提取时序序列

DenseNet完成Cifer10任务的效果验证

本文章是针对论文《2017-CVPR-DenseNet-Densely-Connected Convolutional Networks》中实验的复现,使用了几乎相同的超参数 目录 一、论文中的实验 1.准确率 2.参数效率 3.不同网络结构之间的比较 二、超参数: 三、复现的实验结果: 1.DenseNet201 epoch=40: 2.DenseNet121 epoch=40

CVPR2017《Detecting Oriented Text in Natural Images by Linking Segments》阅读笔记

前言 本文是对CVPR2017《Detecting Oriented Text in Natural Images by Linking Segments》论文的简要介绍和细节分析。该论文是华中科大白翔组的工作,主要针对自然场景下文本检测模型由char-level到word-level和line-level的检测。 关键词:SSD、Segment、Link、Scene Text Detectio

基于DenseNet网络实现Cifar-10数据集分类

目录 1.作者介绍2.Cifar-10数据集介绍3.Densenet网络模型3.1网络背景3.2网络结构3.2.1Dense Block3.2.2Bottleneck层3.2.3Transition层3.2.4压缩 4.代码实现4.1数据加载4.2建立 DenseNet 网络模型4.3模型训练4.4训练代码4.5测试代码 参考链接 1.作者介绍 吴思雨,女,西安工程大学电子信息

分类神经网络3:DenseNet模型复现

目录 DenseNet网络架构 DenseNet部分实现代码 DenseNet网络架构 论文原址:https://arxiv.org/pdf/1608.06993.pdf 稠密连接神经网络(DenseNet)实质上是ResNet的进阶模型(了解ResNet模型请点击),二者均是通过建立前面层与后面层之间的“短路连接”,但不同的是,DenseNet建立的是前面所有层与后面层的密集连接,

41_经典卷积网络、LeNet、AlexNet、VGG、GoogleNet、ResNet、NIN、DenseNet、EfficientNet、MobileNetV1/2/3、SENet等

1.38.经典卷积网络 1.38.1.LeNet 1.38.1.1.介绍 1.38.1.2.网络结构 1.38.1.3.代码实现 1.38.2.AlexNet 1.38.2.1.介绍 1.38.2.2.网络结构 1.38.2.3.代码实现 1.38.3.VGG 1.38.3.1.介绍 1.38.3.2.网络结构 VGG-16 1.38.3.3.代码实现 1.38.4.GoogleNet 1.38.

常见卷积神经网络总结:Densenet

常见卷积神经网络总结 DenseNet 最近时间没那么紧张了,准备把之前没看的论文总结一下, DenseNet DenseNet是CVPR2017的最佳论文,可见这篇论文还是很厉害的,DenseNet主要是借鉴了Resnet的思想,采取了一种全新的网络连接方式,最近的卷积神经网络主要是从深度和宽度上进行思考的,加深宽度或者加深深度,但这篇文章另辟蹊径,采取了一种新的结构,取