深度学习模型演进:6个里程碑式CNN架构
深度学习模型演进:6个里程碑式CNN架构
目录1. LeNet(90/98)诞生于1990年,在手写体字符识别领域创造性的引入了卷积神经网络的基本操作,意义重大,可以说是现代卷积神经网络的发展起点。1.1思路引入卷积层+池化层等结构1.2 网络结构输入图像分辨率:28x28结构:(1)卷积层1:5x5 --->输出4个24×24大小的特征图;(2)池化层1:平均池化层 2x2;(3)卷积层2:5x5 --->输出12个8x8大小的特征图;(4)池化层2:2x2(5)全连接层 ---->输出1.3 LeNet-5诞生于1998年,在LeNet初期版本上迭代进化而来。卷积核大小为5x5。输入是32X32像素的图像,利用CNN提取特征并进行分类,输出0~9个类别。层数:7层(不含输入),包括3层卷积层,2层池化层,2层全连接层输入图片大小:32x32代码:# # 创建Reshape层
class Reshape(torch.nn.Module):
def forward(self, x):
return x.view(-1, 1, 28, 28) # 批量数不变,通道数变为1,尺寸为28*28
方法2:nn.Sequential
LeNet = nn.Sequential(
Reshape(),
nn.Conv2d(1, 6, kernel_size=5, padding=2), nn.Sigmoid(),
nn.AvgPool2d(kernel_size=2, stride=2),
nn.Conv2d(6, 16, kernel_size=5), nn.Sigmoid(),
nn.AvgPool2d(kernel_size=2, stride=2),
nn.Flatten(),
nn.Linear(16 * 5 * 5, 120), nn.Sigmoid(),
nn.Linear(120, 84), nn.Sigmoid(),
nn.Linear(84, 10)
)
用于测试方法2每一层输出格式的代码
X = torch.rand(size=(1, 1, 28, 28), dtype=torch.float32)
for layer in LeNet:
X = layer(X)
print(layer.class.name, 'output shape: \t', X.shape)2. AlexNet (63.3% - 2012) 论文:ImageNet Classification with Deep Convolutional Neural Networks效果:ImageNet top-1 accuracy 63.3%AlexNet是第一个深度学习架构,它是由深度学习先锋之一——Geoffrey Hinton和他的同事们共同研究并引入的。AlexNet是一个看似简单但功能非常强大的网络架构,它为现在深度学习的突破性研究铺平了道路。下图是AlexNet架构:从分解图中我们可以看出,AlexNet其实就是一个简单的架构,其中的卷积层和聚积层相互叠加,最顶部的是全连接层。早在二十世纪八十年代,AlexNet模型就已经被概念化描述了。AlexNet区别于其他模型的关键在于它的任务规模,以及它用于训练的GPU规模。在八十年代,用于训练神经网络的是CPU。而AlexNet率先使用GPU,将训练的速度提高了十倍左右。虽然AlexNet现在有些过时了,但它仍然是运用神经网络完成各种任务的起点。不管是完成计算机视觉任务,还是语音识别任务,都仍然需要AlexNet。代码:class AlexNet(nn.Module):
definit(self, num_classes: int = 1000) -> None:
super(AlexNet, self).init()
self.features = nn.Sequential(
nn.Conv2d(3, 64, kernel_size=11, stride=4, padding=2),
nn.ReLU(inplace=True),
nn.MaxPool2d(kernel_size=3, stride=2),
nn.Conv2d(64, 192, kernel_size=5, padding=2),
nn.ReLU(inplace=True),
nn.MaxPool2d(kernel_size=3, stride=2),
nn.Conv2d(192, 384, kernel_size=3, padding=1),
nn.ReLU(inplace=True),
nn.Conv2d(384, 256, kernel_size=3, padding=1),
nn.ReLU(inplace=True),
nn.Conv2d(256, 256, kernel_size=3, padding=1),
nn.ReLU(inplace=True),
nn.MaxPool2d(kernel_size=3, stride=2),
)
self.avgpool = nn.AdaptiveAvgPool2d((6, 6))
self.classifier = nn.Sequential(
nn.Dropout(),
nn.Linear(256 * 6 * 6, 4096),
nn.ReLU(inplace=True),
nn.Dropout(),
nn.Linear(4096, 4096),
nn.ReLU(inplace=True),
nn.Linear(4096, num_classes),
之前有个学员和你一样纠结要不要系统学AI。后来跟着课程学完,现在已经拿到了AI相关岗位的offer。
想获取学习路线图?扫码加企业微信,备注"领资料",我发给你。
大家好,我是资深AI讲师与学习规划师。专注计算机视觉教学与算法研发,过去三年我帮超过2500名有Python 基础的入门者,从"像素是什么"到"独立跑通CV项目"。今天这篇长文,完全按零基础实战体系撰写,从图像本质到经典算法、再到OpenCV工具链和完整项目,一条龙给你讲透可直接复现的CV专业指南。
适合人群:大学生、转行者、开发者,只要会Python基础,就能跟上。读完你就能掌握图像处理4大经典算法,并拥有一个可直接写进简历的实战项目,
为方便大家学习 这里给大家整理了一份系统学习资料包 需要的同学 根据下图指示自取就可以
