大数跨境

图像分类(上):图像分类原理与图像分类模型

图像分类(上):图像分类原理与图像分类模型 知识代码AI
2026-09-07
8
导读:图像分类(上):图像分类原理与图像分类模型一、课程背景本节课是《PyTorch深度学习实战》实战环节的开篇,先

图像分类(上):图像分类原理与图像分类模型


一、课程背景

本节课是《PyTorch深度学习实战》实战环节的开篇,先学习图像分类的理论知识,掌握图像分类原理和常见卷积神经网络;下节课再基于原理完成一个完整的图像分类项目实践。[pdf_18]

生活中的例子:很多智能手机照相时自动给照片内容打上标签(如"多云"),还能根据识别内容推荐美化方案。这背后的技术就是卷积神经网络最常用、最广泛且最基本的一个应用——图像分类。[pdf_18]


二、图像分类原理

需求场景

线上每天有大量图片上传,需设计一个模型自动找出包含极客时间 Logo 的图片。[pdf_18]

模型功能

模型接收一张图片,输出一组概率——该图片为 Logo 的概率与该图片为其他图片(Other)的概率,通过概率判断图片类别。[pdf_18]

图片 → [模型] → [Logo prob, Other prob] → 判断分类

三、感知机(Perceptron)

基本结构

  • 神经元:感知机的最基本组成单元,每个神经元是关于输入的一个线性变换
  • 多层感知机:有多层神经元的网络结构,是卷积神经网络的前身

神经元计算公式

参数
说明
神经元的权重,通过模型学习得到
神经元的偏移项,通过模型学习得到
激活函数
,可选参数

局限

参数量大、难以训练,曾导致发展停滞,直到卷积神经网络的出现打破僵局。[pdf_18]


四、Softmax:将数值转换为概率

作用

将一组数值转换为对应的概率,概率和为1。[pdf_18]

计算公式

PyTorch 代码实现

import torch
import torch.nn as nn

# 2 个神经元的输出 y 的数值为
y = torch.randn(2)
print(y)
# 输出: tensor([ 0.2370,  1.7276 ])

m = nn.Softmax(dim=0)
out = m(y)
print(out)
# 输出: tensor([ 0.1838,  0.8162 ])

原始 y 中最大的值具有最大的概率。Softmax 不是每个问题都会使用,有时也会使用 sigmoid 激活函数(将1个数值转换为0到1之间的概率)。[pdf_18]


五、全连接层(Full Connection Layer,fc 层)

位置与作用

  • 一般放在卷积神经网络的最末端
  • 用来获得最终输出——各个类别的概率[pdf_18]

重要特点

由于全连接层中神经元的个数是固定的,输入图片必须固定尺寸。现实中的图片尺寸不同,需要先统一尺寸,PyTorch 才能进一步处理。[pdf_18]

PyTorch 实现(假设输入 resize 到 128x128)

fc = nn.Linear(128 * 1282)   # in_features=128x128, out_features=2
y = fc(x)
print(y)
# 输出: tensor([[  72.1361, -120.3565 ]], grad_fn=<AddmmBackward>)

output = nn.Softmax(dim=1)(y)
print(output)
# 输出: tensor([[ 1.,  0. ]], grad_fn=<SoftmaxBackward>)

nn.Linear 重要参数

参数
说明
in_features
输入特征的个数(本例为 128x128)
out_features
输出特征的个数(本例为 2)
bias
是否需要偏移项,默认为 True

接收任意尺度输入的方法

在最后的特征图后面加一个全局平均池化(Global Average Pooling),将每个特征图求平均,用平均值代替特征图。这样无论输入尺度是多少,进入全连接层的数据量都是固定的。[pdf_18]


六、卷积神经网络(CNN)

核心作用

提取输入图片的丰富信息,然后对接上层应用(如图片分类)。[pdf_18]

图像分类模型完整结构

输入层 → 卷积层(CNN) → 全连接层 → Softmax → 输出概率

工作重点:整个模型的重点全都在卷积神经网络那块![pdf_18]


七、ImageNet 与经典网络结构

ImageNet 简介

业界标杆,用于评价模型的好与坏。从2010年开始每年举办 ILSVRC 挑战赛(图像分类、目标检测、图像分割等任务),其中图像分类比赛使用 1000 个类别的庞大数据集。[pdf_18]

历年 ImageNet Top-5 错误率

竞赛年份
模型
Top-5 错误率
2010
28.20%
2011
25.80%
2012
AlexNet
16.40%
2014
VGG
7.30%
2014
GoogLeNet
6.70%
2015
ResNet
3.57%
2017
SENet
2.30%
Human
5.00%

Top-1:预测概率最大的类别正确即预测正确;Top-5:前5大概率中包含正确类别即预测正确。[pdf_18]


1. VGG

项目
说明
比赛成绩
ILSVRC 2014 分类第2名、定位项目第1名
常用版本
VGG16(综合模型大小等指标,实际项目中用得更多)
版本系列
VGG A~E 共6种网络,字母不同表示层数不一样

突破重点:[pdf_18]

  1. 证明了模型深度增加,效果也会越来越好
  2. 使用较小的 3x3 卷积代替大卷积核(AlexNet 中的 11x11、7x7、5x5) 
    • 5x5 卷积 → 2层 3x3 卷积替换
    • 7x7 卷积 → 3层 3x3 卷积替换
    • 好处:减少网络参数 + 相同感受野下加深网络层数,提取更丰富的非线性信息

2. GoogLeNet(Inception)

项目
说明
比赛成绩
ILSVRC 2014 分类冠军(与VGG同年)
核心模块
Inception 模块
(v1版本,后续还有v2、v3、v4)
网络层数
22 层
模型特点
参数量比 AlexNet 和 VGG 都少,模型小、占用存储空间小

解决的问题:同一类别的图片中,主要物体在不同图片中所占区域大小不同。标准卷积只能以相同尺寸的卷积核提取特征。[pdf_18]

Inception 模块方案:拆分为使用 1x1、3x3、5x5 以及 3x3 的 max pooling 同时进行特征提取,再合并到一起,实现多尺度方式提取图片特征。[pdf_18]

优化改进:在 3x3、5x5 之前与 pooling 之后添加 1x1 卷积用来降维,降低计算成本。[pdf_18]

面试常考知识点:1x1 卷积的作用——升维或者降维。维度指特征的通道数,1x1 卷积相当于对同一位置不同通道上的像素做线性组合,从而控制特征通道数。[pdf_18]


3. ResNet(残差神经网络)

项目
说明
比赛成绩
ILSVRC 2015,首次超越人眼(人类 Top-5 错误率 5.00%,ResNet 3.57%)
常用版本
ResNet-50(受硬件及推断时间限制,实际项目中更常用)
版本系列
18层、34层、50层、101层、152层

网络退化问题

单纯增加网络深度会引发:

  1. 模型容易过拟合
  2. 梯度消失、梯度爆炸问题

即使解决了上述问题,简单的堆叠卷积层依然不能获得很好效果。[pdf_18]

实验验证:搭建普通20层与56层卷积神经网络在CIFAR-10上验证,无论训练集还是测试集误差,56层均高于20层

网络退化定义:网络可以收敛时,随着层数增加,精度逐渐饱和并迅速降低。原因不是过拟合(如果是过拟合,56层在训练集上的精度应高于20层)。[pdf_18]

作者猜想:网络不容易学习到恒等映射( )。[pdf_18]

残差学习

核心思想:因为网络不容易学习到恒等映射,所以强制添加一个恒等映射。[pdf_18]

实现机制:通过 shortcut connection(捷径连接) 机制完成,即恒等变换。包含 shortcut connection 的几层网络称为残差块。[pdf_18]

残差块定义

其中   可以是 2 层或 3 层的卷积层。通过残差块,就可以训练出更深、更优秀的卷积神经网络。[pdf_18]

           ┌──────────────────┐
x ────→ [weight layer] ──→ [relu] ──→ [weight layer] ──→ F(x)
 │                                                       │
 └─────────────── identity (shortcut) ───────────────────┘
                                                          ↓
                                                    y = F(x) + x
                                                          ↓
                                                       [relu]

八、全课小结

知识点
要点
图像分类原理
输入图片 → 卷积层提取特征 → 全连接层 → Softmax → 输出概率
感知机 → 多层感知机
卷积神经网络的前身,参数量大、难以训练
Softmax
将数值转换为概率,概率和为1
全连接层(fc层)
放在网络末端,神经元个数固定 → 输入图片需固定尺寸
全局平均池化
解决网络接收任意尺度输入的问题
卷积神经网络
核心作用:提取图片的丰富信息
ImageNet
行业标杆,用于评价模型好坏
VGG
证明深度重要性,用3x3小卷积核代替大卷积核
GoogLeNet
Inception 模块多尺度提取特征,1x1卷积降维,模型小
ResNet
shortcut connection 解决网络退化,首次超越人眼

经典网络结构脉络

AlexNet(2012)→ VGG(2014)→ GoogLeNet(2014)→ ResNet(2015)→ SENet(2017)
  • 工作中很少从0到1自创网络,常在经典设计基础上做自定义配置
  • 纵观网络结构发展,长江后浪推前浪,一代更比一代强[pdf_18]

【声明】内容源于网络
0
0
知识代码AI
技术基底 机器视觉全栈 × 光学成像 × 图像处理算法 编程栈 C++/C#工业开发 | Python智能建模 工具链 Halcon/VisionPro工业部署 | PyTorch/TensorFlow模型炼金术 | 模型压缩&嵌入式移植
内容 403
粉丝 0
知识代码AI 技术基底 机器视觉全栈 × 光学成像 × 图像处理算法 编程栈 C++/C#工业开发 | Python智能建模 工具链 Halcon/VisionPro工业部署 | PyTorch/TensorFlow模型炼金术 | 模型压缩&嵌入式移植
总阅读6.6k
粉丝0
内容403