当前位置:网站首页>EfficientNet模型的完整细节
EfficientNet模型的完整细节
2022-07-07 12:37:00 【小白学视觉】
点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
导读
本文介绍了一种高效的网络模型EfficientNet,并分析了 EfficientNet B0 至B7的网络结构之间的差异。
我在一个Kaggle竞赛中翻阅notebooks,发现几乎每个人都在使用EfficientNet 作为他们的主干,而我之前从未听说过这个。
谷歌AI在这篇文章中:https://arxiv.org/abs/1905.11946介绍了它,他们试图提出一种更高效的方法,就像它的名字所建议的那样,同时改善了最新的结果。一般来说,模型设计得太宽,太深,或者分辨率太高。刚开始的时候,增加这些特性是有用的,但很快就会饱和,然后模型的参数会很多,因而效率不高。在EfficientNet中,这些特性是按更有原则的方式扩展的,也就是说,一切都是逐渐增加的。
不明白发生了什么?不要担心,一旦看到了架构,你就会明白了。但首先,让我们看看他们得到了什么结果。
由于参数的数目相当少,这个模型族是非常高效的,也提供更好的结果。现在我们知道了为什么这些可能会成为标准的预训练模型,但是缺少了一些东西。
共同之处
首先,任何网络都以它为主干,在此之后,所有对架构的实验都以它为开始,这在所有8个模型和最后的层中都是一样的。
之后,每个主干包含7个block。这些block还有不同数量的子block,这些子block的数量随着EfficientNetB0到EfficientNetB7而增加。要可视化模型层,代码如下:
!pip install tf-nightly-gpu
import tensorflow as tf
IMG_SHAPE = (224, 224, 3)
model0 = tf.keras.applications.EfficientNetB0(input_shape=IMG_SHAPE, include_top=False, weights="imagenet")
tf.keras.utils.plot_model(model0) # to draw and visualize
model0.summary() # to see the list of layers and parameters
如果你计算EfficientNet-B0的总层数,总数是237层,而EfficientNet-B7的总数是813层!!但不用担心,所有这些层都可以由下面的5个模块和上面的主干组成。
我们使用这5个模块来构建整个结构。
模块1 — 这是子block的起点。
模块2 — 此模块用于除第一个模块外的所有7个主要模块的第一个子block的起点。
模块3 — 它作为跳跃连接到所有的子block。
模块4 — 用于将跳跃连接合并到第一个子block中。
模块5 — 每个子block都以跳跃连接的方式连接到之前的子block,并使用此模块进行组合。
这些模块被进一步组合成子block,这些子block将在block中以某种方式使用。
子block1 — 它仅用于第一个block中的第一个子block。
子block2 — 它用作所有其他block中的第一个子block。
子block3 — 用于所有block中除第一个外的任何子block。
到目前为止,我们已经指定了要组合起来创建EfficientNet模型的所有内容,所以让我们开始吧。
模型结构
EfficientNet-B0
EfficientNet-B0架构。(x2表示括号内的模块重复两次)
EfficientNet-B1
EfficientNet-B1的结构
EfficientNet-B2
它的架构与上面的模型相同,唯一的区别是特征图(通道)的数量不同,增加了参数的数量。
EfficientNet-B3
EfficientNet-B3的结构
EfficientNet-B4
EfficientNet-B4的结构
EfficientNet-B5
EfficientNet-B5的结构
EfficientNet-B6
EfficientNet-B6的结构
EfficientNet-B7
EfficientNet-B7的结构
很容易看出各个模型之间的差异,他们逐渐增加了子block的数量。如果你理解了体系结构,我鼓励你将任意的模型打印出来,并仔细阅读它以更彻底地了解它。下面的表表示了EfficientNet-B0中卷积操作的内核大小以及分辨率、通道和层。
此表已包含在原始论文中。对于整个模型族来说,分辨率是一样的。我不确定卷积核的大小是否改变了。层的数量已经在上面的图中显示了。通道数量是不同的,它是根据从每个型号的摘要中看到的信息计算出来的,如下所示:
在结束之前,我附上了另一个图像,来自它的研究论文,显示了它与其他的SOTA的performance的比较,还有减少的参数的数量和所需的FLOPS。
好消息!
小白学视觉知识星球
开始面向外开放啦
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。
下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~
边栏推荐
- Excuse me, I have three partitions in Kafka, and the flinksql task has written the join operation. How can I give the join operation alone
- Substance painter notes: settings for multi display and multi-resolution displays
- Demis Hassabis谈AlphaFold未来目标
- Docker deploy Oracle
- KITTI数据集简介与使用
- 一个程序员的水平能差到什么程度?尼玛,都是人才呀...
- STM32CubeMX,68套组件,遵循10条开源协议
- 手把手教会:XML建模
- Is the spare money in your hand better to fry stocks or buy financial products?
- LeetCode每日一题(636. Exclusive Time of Functions)
猜你喜欢
CVPR2022 | 医学图像分析中基于频率注入的后门攻击
Vscode configuration uses pylint syntax checker
Cvpr2022 | backdoor attack based on frequency injection in medical image analysis
js 获取当前时间 年月日,uniapp定位 小程序打开地图选择地点
Equipment failure prediction machine failure early warning mechanical equipment vibration monitoring machine failure early warning CNC vibration wireless monitoring equipment abnormal early warning
LeetCode每日一题(636. Exclusive Time of Functions)
内部排序——插入排序
GAN发明者Ian Goodfellow正式加入DeepMind,任Research Scientist
常用數字信號編碼之反向不歸零碼碼、曼徹斯特編碼、差分曼徹斯特編碼
2022年13个UX/UI/UE最佳创意灵感网站
随机推荐
解析PHP跳出循环的方法以及continue、break、exit的区别介绍
NLLB-200:Meta开源新模型,可互译200种语言
Oracle non automatic submission solution
LeetCode 648. 单词替换
Vscode configuration uses pylint syntax checker
Seven propagation behaviors of transactions
请问,如图,pyhon云函数提示使用了 pymysql模块,这个是怎么回事?
XML文件的解析操作
GVIM [III] [u vimrc configuration]
Pert diagram (engineering network diagram)
Excusez - moi, l'exécution a été réussie lors de l'utilisation des données de puits SQL Flink à Kafka, mais il n'y a pas de nombre dans Kafka
多商户商城系统功能拆解01讲-产品架构
小米的芯片自研之路
Excuse me, does PTS have a good plan for database pressure measurement?
Transferring files between VMware and host
Arm cortex-a9, mcimx6u7cvm08ad processor application
关于后台动态模板添加内容的总结 Builder使用
Demis Hassabis谈AlphaFold未来目标
ES日志报错赏析-- allow delete
用例图