[图像算法]-如何设计卷积神经网络CNN?

卷积神经网络CNN的设计

eras为例来说明。我们可以用5步 + 4种基本元素 + 9种基本层结构,这5-4-9模型来总结。这个博客特别适合小白入门简单粗暴地建立一个网络
知乎——CNN 网络应该如何设计?

回答1:网络多一层和少一层, 好像没什么区别. 但这样一层层测试调参未免太狗血了.一种挺好的方法是:
设计一种或几种block(这block由几层网络构成), 然后堆这种block.
这样看起来舒服多了,参考resnet网络结构(其实很多优秀网络都是这样的设计)至于每层的通道数, VGG有个设定是: 输出的feature
map大小相同时,卷积核个数也相同输出的feature map大小减半(被stride=2的卷积或Pooling后),
则卷积核数翻倍.这样让每层的时间花销相同.而通道数的大小如何确定? 基于对应数据集, 参考其他优秀模型的设置. 记得对比网络参数大小 .
回答2:建议在pre-trained model 基础之上进行改进。
回答3:我的经验是,要知道什么样的结构对具体任务有作用,最有效的办法就是去做对比实验,从而体会不同结构对网络性能的影响(参数量/计算量/训练稳定性/最终精度)。例如想找到kernel_size的最优值,只能通过控制变量,对比实验。
回答4:流程:

1-找baseline先找一个前人的基础网络结构,作为你设计的基础。可以是resnet,densenet,Alexnet这种非常经典的,且训练过程已经被大家复现过的。
2-调训练超参训练超参指的是: learning_rate, num_epoch, weight_decay, momentum还有learning_rate的下降方式以及其涉及到的所以超参等等。个人体会是,weight_decay 影响比较大,相对独立,也调起来也相对容易些,可以先调;learning_rate以及它的下降方法影响也比较大,但是这里相互关联的量很多,调起来比较费时费力;还有num_epoch,这个量也比较关键,调num_epoch的时候基本都得等到训练结束看结果,不太好像调其他参数那样,看情况不好就提前终止。
3-调结构在当前基础上找到一组合理的超参之后,就可以把这组超参固定,之后就可以进入到题主所想研究的调整结构了。这里可以调的东西很多,对于初学者来说,如果想了解网络中的每一层对结构的作用,其实可以逐层修改网络的结构。从而体会不同的layer_type和kernel_size等的影响。
4-再调训练超参因为其实不同的网络结构对应的最优训练超参不是一样的。这一套流程走下来,就算是对于训练参数量在在10M以下的模型,CIFAR10分类来说,也需要很多卡很多天啦。所以设计网络结构还真是一件非常费事费力的事情。

如何设计CNN网络架构资料汇总

在inception和resnet网络提出并相对完善以后,网络结构的设计就不再爆发式出现了,这两大类网路涵盖了大部分应用的卷积网络结构。

!很有用——基于CNN的图形分类综合设计指南

对于大多数应用来说,应该使用迁移学习而不是从头训练网络。但是,你需要抉择保留哪些网络层,以及重新训练哪些层。这取决于你的数据是什么样的。你的数据与预训练的网络(通常在ImageNet上预训练)的数据越相似,你应该重新训练的层数越少,反之亦然。例如,你想分类图片中是否包含葡萄,所以你有一堆有葡萄的和一堆没有的图像。这些图像与ImageNet中的图像非常相似,因此你只需重新训练最后几层,也许就是全连接层。然而,如果你想对拍摄于外太空的图片,分类是否包含行星,那么这样的数据与ImageNet的数据有很大不同,所以你需要重新训练低层的卷积层。简而言之,遵循以下规则:

image.png

知乎——深度学习如何优化神经网络结构|架构?*景略集智的回答超详细keras建立训练测试CNN步骤!!
一、CNN设计及起源及一些资料

1: CNN结构的演变+几种典型的网络介绍+CNN设计准则

2:https://www.jiqizhixin.com/articles/2018-05-30-7(从Inception v1到Inception-ResNet,一文概览Inception家族的「奋斗史」)

3:https://blog.csdn.net/guoyunfei20/article/details/78122504(AlexNet)

4:http://210.28.132.67/weixs/book/CNN_book.html(一本讲CNN的书)

5:https://www.zhihu.com/question/19743656/answer/609887575(深度学习如何优化神经网络结构|架构?)

二、设计准则

1:https://www.cnblogs.com/arbalest/p/basic_CNN_design_method.html(简单CNN的基本网络元素及其设计原则)

2:https://www.jianshu.com/p/628d7099e019(关于CNN图像分类的一份综合设计指南)

3:https://www.jianshu.com/p/f7642437d55a(14种模型设计帮你改进你的卷积神经网络(CNN))

三、目前比较火的网络解析

1:https://blog.csdn.net/u013181595/article/details/80990930

2: https://www.jianshu.com/p/93990a641066

3: https://blog.csdn.net/maliang_1993/article/details/82084983(U-Net 网络结构理解)

4: https://zhuanlan.zhihu.com/p/53521053 (那些用字母开头的Net:U-Net 、V-Net、M-Net)

5: https://zhuanlan.zhihu.com/p/59217276(U-Net 和 ResNet:长短跳跃连接的重要性(生物医学图像分割))

2021.01.14如何设计卷积神经网络

1如何设计卷积神经网络?

在这里插入图片描述

参考资料1:想入门设计卷积神经网络?这是一份综合设计指南 内容总结:

1.准确率,速度,所占内存大小 三者的权衡——选择一个合适的CNN模型。
2.一些新颖的,加快减少内存消耗和运行时间的网络:Mobile Nets,XNOR net,shufflenet等
3.网络层数,激活函数,卷积核大小,空洞卷积,数据增强
4.优化器与学习率:SGD能够得到最好的准确率,但是没有Adam等优化器那么自适应地调节学习率的功能,调学习率很麻烦。策略:以 Adam 作为开始,它最容易使用:设置一个不太高的学习率,一般默认 0.0001,然后你通常会得到一些非常好的结果。随后你可以从零开始使用 SGD,或者使用 Adam,中间换到 SGD,能够以最容易的方式达到最好的准确率。
5.类别均衡
6.你的数据差别与ImageNet数据越大,需要改调的网络层数和参数就越多。ImageNet数据是类似于,有猫没猫,猫狗,有洋葱没洋葱之类的。

参考资料2:怎样设计最优的卷积神经网络内容总结:

1.提升CNN表现的操作:增加图片分辨率,增加网络宽度,增加网络深度,增加跳过连接(密集块或残差块)
2.NAS神经架构搜索+随机连接神经网络:探索新的网络架构和神经元连接方式(这个太远了不需要做)

改进CNN的14个设计模式

1.泛化能力:是很重要的一个模型评价标准。提升泛化能力:使用正则化手段例如dropout。
2.summation ,下采样,maxout+ELUS,freeze-drop-path,循环学习率,bootstrapping
b 站视频——设计CNN
part one 网络深度的设计:网络深度增加作用:非线性表达能力提升。
1.评估深度对模型性能的影响:层数越多线性区间越多,更好地拟合。实验表明,错误率降低。
2.如何选择网络深度?根据一些工业界相关工作者的经验:从5——8层开始试验。imagenet 比赛中,2^5*7=224。一般不超过10层就能满足工业界的一些要求。
3.深度实验:一个复杂数据集vs一个简单数据集,20分类。一个性能简单的网络vs一个高性能网络。
网络1:ALLCONV网络 5-7层conv+1层全连接
网络2:MobileNet10-16层

ALLCONV网络
在这里插入图片描述

图中看出增加卷积层(从5到7个卷积层)会提升准确率,但是7层再增加就出现了瓶颈。
MobileNet出现差不多的结果,从10层增加到16层时出现瓶颈。
4.网络深度增加带来的问题:过拟合,难以优化,PLD,PLS等。解决方案:跳层连接等。

part two 网络宽度的设计:网络宽度指的是每层卷积中滤波器filters(卷积核)的数量,例如VGG16网络第一层的filter数量就是64个,第一个卷积层的网络宽度就是64 ,第三个就是128,第五个就是256…为什么会增加卷积核的个数:“随着网络的加深,feathermap的长宽尺寸会变小,也就是卷积提取的特征越具有代表性,所以后面的卷积层数需要增加,所以卷积核的个数也是要增加的,一般是成倍增加(有的会更根据实验的情况来具体设置)。”
1.网络宽度下降,性能会下降。 更多的通道数可以学到更多的特征。所以要适当增加模型宽度。加宽比加深更能提升性能。但计算量提升也很快。
2.如何初始化CNN网络宽度?答:高效率模型第一层宽度为32足够。(根据经典网络结构和工作经验得出的结论)
3.优化:1*1卷积,分组卷积,跨层连接。

part three 提升模型泛化能力:正则化技术——DROPOUT and BN层的设计
1.类似技术:dropconnect,maxout,stochastic pooling
2.训练开dropout,预测时关闭?:不一定要关,大部分时候关掉可以提升准确率。
3.dropout 相当于增加了噪声,造成梯度的损失,训练时间更久才能收敛。要采用更大的学习率和momentum ,加快收敛。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容