AlexNet
AlexNet-Model(pytorch版本)
参考文献格式:
- 1.一 论文导读
- 2.二 论文精读
- 3.三 代码实现
- 4.四 问题思索
《ImageNet Classification with Deep Convolutional Neural Network》
—基于卷积神经网络的图像分类
作者:Alex Krizhevsky
单位:加拿大多伦多大学
发表会议及时间:NIPS 2012
一 论文导读
1.论文导读及研究背景介绍
AlexNet于2012年被提出,开启了深度学习的热潮。
在2012年之前对于图像的处理主要还是关于支持向量机的相关算法,支持向量机独立风骚十几年。由此可见,支持向量机有其特别出众发的优点。
但是在那个时候,人们对于图像处理并不自信,图像处理最基本的分类任务的最高准确率还只是出于89%左右,还是在一定的限定条件下。
16年残差神经网络让图像分类准确率达到96%及其以上,宣告了这类课题(识别图片等)的结束
CNN卷积是一种特征工程,用来提取特征
补充:LeNet简介
LeNet:径向基神经网络
研究一个网络最重要的就是特征工程,后面的分类用其他任何的分类器效果都不会差(有好的特征工程的情况下)
为什么说CNN那么强呢?看起来如此简单的结构,甚至让人不可思议,就这样的结构为什么能取代图像处理方面的复杂的特征工程,就是因为随着CNN的加深,卷积神经网络逐层提取了边缘、轮廓、高级语义等越来越高级的特征信息。就是因为CNN能提取到大部分的图像特征工程的特征信息,只要随着CNN层数的加深。
HR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMzc1MzE4,size_16,color_FFFFFF,t_70)
ImageNet是人文、艺术类数据集,商业价值不高
Benchmark具有商业价值的模型
Baseline就是通用的普遍的模型
两个小型数据集,可以用来测测自己写的模型
Top1:小类
Top5:大类,所以Top5>Top1
图像分类的网络发展:(都是由卷积核构成的)
常用Vgg,
像GoogleNet、ResNet已经过于高级,适合比赛、论文。---- emmmm,2020的我对这句话感到羞愧!
二 论文精读
三 代码实现
from torch import nn # 定义Alexnet网路结构 class AlexNet(nn.Module): def __init__(self, num_classes=5): super(AlexNet, self).__init__() self.features = nn.Sequential( nn.Conv2d(3, 64, kernel_size=3, stride=2, padding=1), # 修改了这个地方,不知道为什么就对了 # raw kernel_size=11, stride=4, padding=2. For use img size 224 * 224. 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.classifier = nn.Sequential( nn.Dropout(), nn.Linear(256 * 1 * 1, 4096), nn.ReLU(inplace=True), nn.Dropout(), nn.Linear(4096, 4096), nn.ReLU(inplace=True), nn.Linear(4096, num_classes), ) def forward(self, x): x = self.features(x) x = x.view(x.size(0), 256 * 1 * 1) x = self.classifier(x) # return F.log_softmax(inputs, dim=3) return x
四 问题思索