机器学习与深度学习:从基础概念到YOLOv8全解析

你是否被这些概念搞得头晕眼花?

  • 机器学习、深度学习、神经网络是什么关系?
  • CNN、RNN、LSTM、Transformer有什么区别?
  • YOLOv8用的是什么技术?

别担心!这篇文章带你理清这些概念的关系,从基础到前沿一网打尽!


📚 目录


一、概念层级关系总览

1.1 核心概念关系图

人工智能 AI
机器学习 ML
深度学习 DL
神经网络 NN
CNN

卷积神经网络
RNN

循环神经网络
Transformer

注意力机制
LSTM

长短期记忆网络
YOLOv8

目标检测
GPT/BERT

大语言模型

1.2 层级关系详解

第五层:应用模型
YOLOv8
GPT
BERT
第四层:具体架构
CNN
RNN
Transformer
第三层:深度学习
DL = 多层神经网络学习
第二层:机器学习
ML = 从数据中学习规律
第一层:人工智能
AI = 机器模拟人类智能

1.3 核心概念对比

概念 定义 核心思想 典型应用
人工智能 机器模拟人类智能 让机器像人一样思考 智能助手、自动驾驶
机器学习 从数据中学习规律 数据驱动决策 推荐系统、预测分析
深度学习 多层神经网络学习 自动特征提取 图像识别、NLP
神经网络 模拟人脑的计算模型 神经元连接计算 各种AI任务

二、机器学习:AI的基石

2.1 什么是机器学习?

数据
机器学习算法
模型
预测/决策
传统编程
规则 + 数据 = 结果
机器学习
数据 + 结果 = 规则

核心定义

机器学习(Machine Learning) 是人工智能的一个子领域,它让计算机能够从数据中自动学习规律,而无需显式编程。

2.2 机器学习的三大类型

机器学习
监督学习
无监督学习
强化学习
分类
回归
聚类
降维
游戏AI
机器人控制

三大类型详解

类型 特点 数据要求 典型算法
监督学习 有标签数据 输入+输出 线性回归、决策树、SVM
无监督学习 无标签数据 仅输入 K-Means、PCA
强化学习 奖励机制 环境+动作 Q-Learning、DQN

2.3 经典机器学习算法

python 复制代码
# 监督学习示例:线性回归
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split

# 1. 准备数据
X, y = load_data()  # 特征和标签
X_train, X_test, y_train, y_test = train_test_split(X, y)

# 2. 训练模型
model = LinearRegression()
model.fit(X_train, y_train)

# 3. 预测
predictions = model.predict(X_test)

# 4. 评估
score = model.score(X_test, y_test)
python 复制代码
# 无监督学习示例:K-Means聚类
from sklearn.cluster import KMeans

# 1. 准备数据
X = load_data()  # 仅特征,无标签

# 2. 训练模型
kmeans = KMeans(n_clusters=3)
kmeans.fit(X)

# 3. 获取聚类结果
labels = kmeans.labels_
centroids = kmeans.cluster_centers_

2.4 机器学习 vs 深度学习

深度学习
原始数据
自动特征提取

神经网络
端到端学习
预测结果
机器学习
原始数据
人工特征提取
传统算法
预测结果

核心区别

维度 机器学习 深度学习
特征提取 人工设计 自动学习
数据需求 较少 大量
计算资源 CPU即可 需要GPU
可解释性
适用场景 结构化数据 非结构化数据

三、神经网络:模拟人脑的计算模型

3.1 神经网络的灵感来源

人工神经元
输入

x1, x2, ...
加权求和

Σw·x + b
激活函数

σ
输出

y
生物神经元
树突

接收信号
细胞体

处理信号
轴突

传递信号
突触

连接其他神经元

3.2 单个神经元的计算

输出层
激活层
计算层
输入层
x1
x2
x3
w1
w2
w3
bias
激活函数

ReLU/Sigmoid
y
Σ w·x + b

数学公式

复制代码
y = f(Σ(wi × xi) + b)

其中:
- xi: 输入特征
- wi: 权重
- b: 偏置
- f: 激活函数

3.3 常见激活函数

激活函数
Sigmoid
Tanh
ReLU
Leaky ReLU
Softmax
输出范围: 0-1

用于二分类
输出范围: -1到1

用于隐藏层
输出范围: 0到∞

最常用
解决ReLU死神经元问题
输出概率分布

用于多分类

激活函数代码示例

python 复制代码
import numpy as np

def sigmoid(x):
    """Sigmoid激活函数"""
    return 1 / (1 + np.exp(-x))

def relu(x):
    """ReLU激活函数"""
    return np.maximum(0, x)

def softmax(x):
    """Softmax激活函数"""
    exp_x = np.exp(x - np.max(x))  # 防止溢出
    return exp_x / np.sum(exp_x)

# 使用示例
x = np.array([-2, -1, 0, 1, 2])

print("Sigmoid:", sigmoid(x))
print("ReLU:", relu(x))
print("Softmax:", softmax(x))

3.4 多层神经网络(MLP)

输出层
隐藏层2
隐藏层1
输入层
x1
x2
x3
h1
h2
h3
h4
h5
h6
h7
y1
y2

MLP代码示例

python 复制代码
import torch
import torch.nn as nn

class MLP(nn.Module):
    """
    多层感知机(Multi-Layer Perceptron)
    
    结构:输入层 -> 隐藏层1 -> 隐藏层2 -> 输出层
    """
    def __init__(self, input_size, hidden_size, output_size):
        super(MLP, self).__init__()
        
        self.layer1 = nn.Linear(input_size, hidden_size)
        self.layer2 = nn.Linear(hidden_size, hidden_size)
        self.layer3 = nn.Linear(hidden_size, output_size)
        
        self.relu = nn.ReLU()
        self.softmax = nn.Softmax(dim=1)
    
    def forward(self, x):
        x = self.relu(self.layer1(x))
        x = self.relu(self.layer2(x))
        x = self.softmax(self.layer3(x))
        return x

# 使用示例
model = MLP(input_size=784, hidden_size=256, output_size=10)
x = torch.randn(32, 784)  # batch_size=32
output = model(x)
print(output.shape)  # torch.Size([32, 10])

四、深度学习:多层神经网络的力量

4.1 什么是深度学习?

深度学习
核心特点
多层神经网络
自动特征提取
端到端学习
大数据驱动
深度 = 多个隐藏层
无需人工设计特征
输入到输出一体化
数据越多效果越好

核心定义

深度学习(Deep Learning) 是机器学习的一个子领域,使用多层神经网络自动学习数据的层次化表示。

4.2 深度学习的"深"体现在哪里?

深度网络
输入
隐藏层1
隐藏层2
隐藏层3
...
输出
浅层网络
输入
隐藏层
输出

层次化特征学习

复制代码
图像识别的层次化特征:
┌─────────────────────────────────────────┐
│ 第1层:边缘、线条                        │
├─────────────────────────────────────────┤
│ 第2层:简单形状(圆、方、三角)           │
├─────────────────────────────────────────┤
│ 第3层:复杂形状(眼睛、耳朵、轮子)       │
├─────────────────────────────────────────┤
│ 第4层:物体部件                          │
├─────────────────────────────────────────┤
│ 第5层:完整物体                          │
└─────────────────────────────────────────┘

4.3 深度学习的三大支柱

深度学习成功要素
大数据
算力
算法
ImageNet

千万级标注数据
互联网数据

海量文本/图像
GPU并行计算
TPU专用芯片
CNN架构
Transformer架构
优化算法

Adam/SGD

4.4 深度学习训练流程



准备数据
构建模型
定义损失函数
选择优化器
训练循环
前向传播
计算损失
反向传播
更新参数
收敛?
模型评估
部署应用

训练代码示例

python 复制代码
import torch
import torch.nn as nn
import torch.optim as optim

# 1. 准备数据
train_loader = get_data_loader()

# 2. 构建模型
model = MLP(input_size=784, hidden_size=256, output_size=10)

# 3. 定义损失函数和优化器
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)

# 4. 训练循环
for epoch in range(100):
    for batch_x, batch_y in train_loader:
        # 前向传播
        outputs = model(batch_x)
        
        # 计算损失
        loss = criterion(outputs, batch_y)
        
        # 反向传播
        optimizer.zero_grad()
        loss.backward()
        
        # 更新参数
        optimizer.step()
    
    print(f"Epoch {epoch}, Loss: {loss.item():.4f}")

五、CNN:图像处理的王者

5.1 CNN的核心思想

CNN核心思想
局部感受野
权重共享
池化降维
只关注局部区域

模拟人眼视觉
同一卷积核扫描全图

减少参数量
保留重要特征

减少计算量

5.2 CNN架构详解

输出
全连接层
池化层
卷积层
输入
图像

224×224×3
Conv1

提取边缘
Conv2

提取形状
Conv3

提取纹理
MaxPool

降维
MaxPool

降维
FC1
FC2
分类结果

5.3 卷积操作详解

计算过程
卷积核在图像上滑动

逐元素相乘后求和
卷积操作
输入图像

5×5
卷积核

3×3
特征图

3×3

卷积计算示例

复制代码
输入图像(5×5):           卷积核(3×3):
┌───┬───┬───┬───┬───┐     ┌───┬───┬───┐
│ 1 │ 2 │ 3 │ 4 │ 5 │     │ 1 │ 0 │-1 │
├───┼───┼───┼───┼───┤     ├───┼───┼───┤
│ 6 │ 7 │ 8 │ 9 │10 │     │ 1 │ 0 │-1 │
├───┼───┼───┼───┼───┤     ├───┼───┼───┤
│11 │12 │13 │14 │15 │     │ 1 │ 0 │-1 │
├───┼───┼───┼───┼───┤     └───┴───┴───┘
│16 │17 │18 │19 │20 │
├───┼───┼───┼───┼───┤
│21 │22 │23 │24 │25 │
└───┴───┴───┴───┴───┘

第一个位置的卷积结果:
1×1 + 2×0 + 3×(-1) +
6×1 + 7×0 + 8×(-1) +
11×1 + 12×0 + 13×(-1)
= 1 - 3 + 6 - 8 + 11 - 13 = -6

5.4 池化操作详解

示例
┌───┬───┬───┬───┐

│ 1 │ 3 │ 2 │ 4 │

├───┼───┼───┼───┤

│ 5 │ 6 │ 7 │ 8 │

├───┼───┼───┼───┤

│ 9 │10 │11 │12 │

├───┼───┼───┼───┤

│13 │14 │15 │16 │

└───┴───┴───┴───┘

┌───┬───┐

│ 6 │ 8 │

├───┼───┤

│14 │16 │

└───┴───┘
最大池化
输入

4×4
2×2窗口

步长2
输出

2×2

5.5 CNN代码实现

python 复制代码
import torch
import torch.nn as nn

class SimpleCNN(nn.Module):
    """
    简单的CNN网络
    
    结构:
    Conv -> ReLU -> Pool -> Conv -> ReLU -> Pool -> FC
    """
    def __init__(self, num_classes=10):
        super(SimpleCNN, self).__init__()
        
        # 卷积层1
        self.conv1 = nn.Conv2d(
            in_channels=3,      # 输入通道数(RGB图像)
            out_channels=32,    # 输出通道数(卷积核数量)
            kernel_size=3,      # 卷积核大小
            stride=1,           # 步长
            padding=1           # 填充
        )
        self.pool1 = nn.MaxPool2d(kernel_size=2, stride=2)
        
        # 卷积层2
        self.conv2 = nn.Conv2d(32, 64, kernel_size=3, stride=1, padding=1)
        self.pool2 = nn.MaxPool2d(kernel_size=2, stride=2)
        
        # 全连接层
        self.fc1 = nn.Linear(64 * 56 * 56, 512)  # 假设输入图像为224×224
        self.fc2 = nn.Linear(512, num_classes)
        
        self.relu = nn.ReLU()
        self.dropout = nn.Dropout(0.5)
    
    def forward(self, x):
        # 卷积块1
        x = self.conv1(x)
        x = self.relu(x)
        x = self.pool1(x)
        
        # 卷积块2
        x = self.conv2(x)
        x = self.relu(x)
        x = self.pool2(x)
        
        # 展平
        x = x.view(x.size(0), -1)
        
        # 全连接层
        x = self.fc1(x)
        x = self.relu(x)
        x = self.dropout(x)
        x = self.fc2(x)
        
        return x

# 使用示例
model = SimpleCNN(num_classes=10)
x = torch.randn(32, 3, 224, 224)  # batch=32, channels=3, height=224, width=224
output = model(x)
print(output.shape)  # torch.Size([32, 10])

5.6 经典CNN架构演进

1998 LeNet-5 手写数字识别 5层网络 2012 AlexNet ImageNet冠军 8层网络,ReLU 2014 VGGNet 小卷积核堆叠 16-19层 2014 GoogLeNet Inception模块 22层 2015 ResNet 残差连接 152层 2017 DenseNet 密集连接 特征复用 2020 EfficientNet 复合缩放 效率最优 CNN架构演进史


六、RNN与LSTM:序列数据的利器

6.1 为什么需要RNN?

传统神经网络的问题
输入固定长度
无法处理序列
忽略时序信息
RNN的优势
处理变长序列
记忆历史信息
捕捉时序依赖

RNN的典型应用

应用场景 输入 输出
机器翻译 源语言句子 目标语言句子
语音识别 音频序列 文字序列
文本生成 前文 后续文字
股票预测 历史价格 未来价格

6.2 RNN架构详解

展开形式
x1
h1
x2
h2
x3
h3
y1
y2
y3

RNN核心公式

复制代码
ht = tanh(Wxh × xt + Whh × ht-1 + bh)
yt = Why × ht + by

其中:
- xt: t时刻的输入
- ht: t时刻的隐藏状态(记忆)
- yt: t时刻的输出
- W: 权重矩阵

6.3 RNN的问题:梯度消失

小于1
大于1
梯度反向传播
链式法则
连续相乘
梯度大小
梯度消失

长距离依赖丢失
梯度爆炸

参数更新过大

6.4 LSTM:解决长距离依赖

信息流
上一时刻状态
LSTM单元
当前时刻状态
下一时刻
LSTM单元
输入门

决定哪些信息存入细胞
遗忘门

决定丢弃哪些信息
细胞状态

长期记忆
输出门

决定输出哪些信息

LSTM三大门控

门控 作用 取值范围
遗忘门 决定丢弃哪些旧信息 0-1
输入门 决定存入哪些新信息 0-1
输出门 决定输出哪些信息 0-1

6.5 LSTM代码实现

python 复制代码
import torch
import torch.nn as nn

class SimpleLSTM(nn.Module):
    """
    LSTM网络
    
    用于序列数据处理
    """
    def __init__(
        self,
        input_size,      # 输入特征维度
        hidden_size,     # 隐藏层维度
        num_layers=2,    # LSTM层数
        num_classes=10   # 分类数
    ):
        super(SimpleLSTM, self).__init__()
        
        self.hidden_size = hidden_size
        self.num_layers = num_layers
        
        # LSTM层
        self.lstm = nn.LSTM(
            input_size=input_size,
            hidden_size=hidden_size,
            num_layers=num_layers,
            batch_first=True,
            dropout=0.5
        )
        
        # 全连接层
        self.fc = nn.Linear(hidden_size, num_classes)
    
    def forward(self, x):
        # x shape: (batch_size, seq_len, input_size)
        
        # 初始化隐藏状态
        h0 = torch.zeros(
            self.num_layers,
            x.size(0),
            self.hidden_size
        ).to(x.device)
        
        c0 = torch.zeros(
            self.num_layers,
            x.size(0),
            self.hidden_size
        ).to(x.device)
        
        # LSTM前向传播
        # out shape: (batch_size, seq_len, hidden_size)
        out, (hn, cn) = self.lstm(x, (h0, c0))
        
        # 取最后一个时间步的输出
        out = out[:, -1, :]
        
        # 分类
        out = self.fc(out)
        
        return out

# 使用示例
model = SimpleLSTM(input_size=128, hidden_size=256, num_classes=10)
x = torch.randn(32, 50, 128)  # batch=32, seq_len=50, input_size=128
output = model(x)
print(output.shape)  # torch.Size([32, 10])

6.6 RNN vs LSTM vs GRU

序列模型对比
RNN
LSTM
GRU
简单快速
长距离依赖差
长距离依赖好
参数多,计算慢
简化版LSTM
参数少,速度快

对比总结

模型 参数量 训练速度 长距离依赖 适用场景
RNN 短序列
LSTM 长序列
GRU 长序列(效率优先)

七、Transformer:自然语言处理的革命

7.1 Transformer的诞生

2014 Seq2Seq 编码器-解码器 2015 Attention机制 Bahdanau注意力 2017 Transformer 《Attention Is All You Need》 2018 BERT 双向编码器 2018 GPT 单向解码器 2020 GPT-3 1750亿参数 2022 ChatGPT RLHF对齐 2023 GPT-4 多模态 NLP架构演进

7.2 Transformer核心架构

解码器
编码器
输入嵌入
位置编码
多头注意力
前馈网络
输出嵌入
位置编码
掩码多头注意力
编码器-解码器注意力
前馈网络
输出

7.3 自注意力机制详解

自注意力机制
Query Q
Key K
Value V
Q × K^T

计算相似度
Softmax

归一化
× V

加权求和
输出

自注意力公式

复制代码
Attention(Q, K, V) = softmax(Q × K^T / √dk) × V

其中:
- Q: Query矩阵(查询)
- K: Key矩阵(键)
- V: Value矩阵(值)
- dk: Key的维度(用于缩放)

7.4 多头注意力

输入
多头注意力
Head 1
Head 2
Head 3
Head 4
Concat
Linear
输出

多头注意力的优势

  • 每个头关注不同的语义信息
  • 捕捉多种类型的依赖关系
  • 增强模型表达能力

7.5 Transformer代码实现

python 复制代码
import torch
import torch.nn as nn
import math

class MultiHeadAttention(nn.Module):
    """
    多头自注意力机制
    """
    def __init__(self, d_model, num_heads):
        super(MultiHeadAttention, self).__init__()
        
        assert d_model % num_heads == 0
        
        self.d_model = d_model
        self.num_heads = num_heads
        self.d_k = d_model // num_heads
        
        # Q, K, V的线性变换
        self.W_q = nn.Linear(d_model, d_model)
        self.W_k = nn.Linear(d_model, d_model)
        self.W_v = nn.Linear(d_model, d_model)
        
        # 输出线性变换
        self.W_o = nn.Linear(d_model, d_model)
    
    def forward(self, x, mask=None):
        batch_size = x.size(0)
        
        # 线性变换
        Q = self.W_q(x)
        K = self.W_k(x)
        V = self.W_v(x)
        
        # 分割多头
        Q = Q.view(batch_size, -1, self.num_heads, self.d_k).transpose(1, 2)
        K = K.view(batch_size, -1, self.num_heads, self.d_k).transpose(1, 2)
        V = V.view(batch_size, -1, self.num_heads, self.d_k).transpose(1, 2)
        
        # 计算注意力分数
        scores = torch.matmul(Q, K.transpose(-2, -1)) / math.sqrt(self.d_k)
        
        # 应用掩码(可选)
        if mask is not None:
            scores = scores.masked_fill(mask == 0, -1e9)
        
        # Softmax归一化
        attention = torch.softmax(scores, dim=-1)
        
        # 加权求和
        output = torch.matmul(attention, V)
        
        # 合并多头
        output = output.transpose(1, 2).contiguous().view(batch_size, -1, self.d_model)
        
        # 输出线性变换
        output = self.W_o(output)
        
        return output


class TransformerEncoderLayer(nn.Module):
    """
    Transformer编码器层
    """
    def __init__(self, d_model, num_heads, d_ff, dropout=0.1):
        super(TransformerEncoderLayer, self).__init__()
        
        self.attention = MultiHeadAttention(d_model, num_heads)
        self.feed_forward = nn.Sequential(
            nn.Linear(d_model, d_ff),
            nn.ReLU(),
            nn.Linear(d_ff, d_model)
        )
        
        self.norm1 = nn.LayerNorm(d_model)
        self.norm2 = nn.LayerNorm(d_model)
        
        self.dropout = nn.Dropout(dropout)
    
    def forward(self, x, mask=None):
        # 多头注意力 + 残差连接 + LayerNorm
        attention_output = self.attention(x, mask)
        x = self.norm1(x + self.dropout(attention_output))
        
        # 前馈网络 + 残差连接 + LayerNorm
        ff_output = self.feed_forward(x)
        x = self.norm2(x + self.dropout(ff_output))
        
        return x


class TransformerEncoder(nn.Module):
    """
    Transformer编码器
    """
    def __init__(
        self,
        vocab_size,
        d_model,
        num_heads,
        num_layers,
        d_ff,
        max_seq_len,
        dropout=0.1
    ):
        super(TransformerEncoder, self).__init__()
        
        # 词嵌入
        self.embedding = nn.Embedding(vocab_size, d_model)
        
        # 位置编码
        self.positional_encoding = self._create_positional_encoding(
            max_seq_len, d_model
        )
        
        # 编码器层
        self.layers = nn.ModuleList([
            TransformerEncoderLayer(d_model, num_heads, d_ff, dropout)
            for _ in range(num_layers)
        ])
        
        self.dropout = nn.Dropout(dropout)
    
    def _create_positional_encoding(self, max_seq_len, d_model):
        """创建位置编码"""
        pe = torch.zeros(max_seq_len, d_model)
        position = torch.arange(0, max_seq_len, dtype=torch.float).unsqueeze(1)
        div_term = torch.exp(
            torch.arange(0, d_model, 2).float() * (-math.log(10000.0) / d_model)
        )
        
        pe[:, 0::2] = torch.sin(position * div_term)
        pe[:, 1::2] = torch.cos(position * div_term)
        
        return pe.unsqueeze(0)
    
    def forward(self, x, mask=None):
        # 词嵌入 + 位置编码
        x = self.embedding(x)
        x = x + self.positional_encoding[:, :x.size(1), :].to(x.device)
        x = self.dropout(x)
        
        # 通过编码器层
        for layer in self.layers:
            x = layer(x, mask)
        
        return x


# 使用示例
model = TransformerEncoder(
    vocab_size=10000,
    d_model=512,
    num_heads=8,
    num_layers=6,
    d_ff=2048,
    max_seq_len=512
)

x = torch.randint(0, 10000, (32, 100))  # batch=32, seq_len=100
output = model(x)
print(output.shape)  # torch.Size([32, 100, 512])

7.6 Transformer vs RNN

Transformer
并行计算
训练快
全局注意力
长距离依赖好
RNN
串行计算
训练慢
长距离依赖差
梯度消失

核心优势对比

维度 RNN/LSTM Transformer
计算方式 串行 并行
训练速度
长距离依赖
参数量
内存占用

八、YOLOv8:目标检测的SOTA

8.1 目标检测任务

目标检测任务
定位
分类
边界框

Bounding Box
类别标签

Class Label
输出: 物体位置 + 类别

8.2 YOLO系列演进

2016 YOLOv1 开创性工作 单阶段检测 2017 YOLOv2/YOLO9000 Batch Normalization Anchor Boxes 2018 YOLOv3 多尺度检测 Darknet-53 2020 YOLOv4 CSPDarknet 数据增强 2020 YOLOv5 PyTorch实现 易用性提升 2022 YOLOv6/YOLOv7 工业优化 速度提升 2023 YOLOv8 Anchor-Free 性能最优 YOLO系列演进史

8.3 YOLOv8架构详解

检测头Head
颈部网络Neck
骨干网络Backbone
输入图像

640×640×3
CSPDarknet

特征提取
PANet

特征融合
小目标检测

80×80
中目标检测

40×40
大目标检测

20×20
检测结果

边界框 + 类别

8.4 YOLOv8核心创新

YOLOv8创新点
Anchor-Free
解耦头
Mosaic增强
Task Aligned Assigner
无需预设锚框

减少超参数
分类和回归分离

提高精度
数据增强

提高泛化能力
动态样本匹配

提高正样本质量

8.5 YOLOv8代码实现

python 复制代码
from ultralytics import YOLO
import cv2

# 1. 加载预训练模型
model = YOLO('yolov8n.pt')  # nano版本,速度快

# 2. 训练模型
results = model.train(
    data='coco.yaml',      # 数据集配置
    epochs=100,            # 训练轮数
    imgsz=640,             # 图像大小
    batch=16,              # 批大小
    name='yolov8_custom'   # 实验名称
)

# 3. 验证模型
metrics = model.val()
print(f"mAP50: {metrics.box.map50}")
print(f"mAP50-95: {metrics.box.map}")

# 4. 推理
results = model('image.jpg')

# 5. 可视化结果
for result in results:
    # 获取边界框
    boxes = result.boxes
    for box in boxes:
        # 边界框坐标
        x1, y1, x2, y2 = box.xyxy[0]
        
        # 类别和置信度
        cls = int(box.cls[0])
        conf = float(box.conf[0])
        
        print(f"类别: {cls}, 置信度: {conf:.2f}, 位置: ({x1:.0f}, {y1:.0f}, {x2:.0f}, {y2:.0f})")

# 6. 保存结果
result.save('result.jpg')

8.6 YOLOv8与其他检测器对比

目标检测器
两阶段
单阶段
R-CNN系列
精度高

速度慢
YOLO系列
SSD
RetinaNet
速度快

精度高

性能对比

模型 mAP50-95 FPS (V100) 参数量
YOLOv8n 37.3% 330 3.2M
YOLOv8s 44.9% 170 11.2M
YOLOv8m 50.2% 90 25.9M
YOLOv8l 52.9% 60 43.7M
YOLOv8x 53.9% 40 68.2M

8.7 YOLOv8中的CNN架构

YOLOv8使用的技术
CNN骨干网络
特征金字塔FPN
注意力机制
CSPDarknet

残差连接
PANet

多尺度融合
SPPF

空间金字塔池化


九、技术选型指南

9.1 架构选择决策树

图像
分类
检测
分割
序列/文本
分类
生成
理解
时间序列


很长
选择架构
数据类型?
任务类型?
CNN
YOLOv8
U-Net
任务类型?
Transformer
GPT
BERT
序列长度?
RNN
LSTM/GRU
Transformer

9.2 各架构适用场景总结

YOLO适用场景
实时检测
自动驾驶
安防监控
工业检测
Transformer适用场景
大语言模型
机器翻译
文本理解
多模态任务
RNN/LSTM适用场景
语音识别
机器翻译
文本生成
时间序列预测
CNN适用场景
图像分类
目标检测
图像分割
人脸识别

9.3 技术栈关系总结

AI技术栈
机器学习
监督学习
无监督学习
强化学习
深度学习
神经网络
CNN
图像处理
YOLOv8
RNN
序列处理
LSTM
Transformer
注意力机制
GPT/BERT
应用领域
计算机视觉
图像分类
目标检测
自然语言处理
文本分类
机器翻译
语音处理
语音识别
语音合成

9.4 学习路径建议

入门
Python基础
机器学习基础
深度学习基础
神经网络
CNN
RNN/LSTM
Transformer
计算机视觉
序列建模
NLP/LLM
YOLOv8
GPT/BERT


总结

核心概念关系回顾

人工智能
机器学习
深度学习
神经网络
CNN

图像处理
RNN/LSTM

序列处理
Transformer

注意力机制
YOLOv8

目标检测
GPT/BERT

大语言模型

关键要点

  1. 层级关系:AI ⊃ ML ⊃ DL ⊃ NN
  2. CNN:图像处理的王者,核心是卷积和池化
  3. RNN/LSTM:序列数据的利器,LSTM解决长距离依赖
  4. Transformer:NLP的革命,核心是自注意力机制
  5. YOLOv8:目标检测的SOTA,融合CNN和最新技术

面试加分话术

  1. 展示深度理解

    "CNN的核心思想是局部感受野和权重共享,这大大减少了参数量。Transformer通过自注意力机制实现了全局依赖建模,解决了RNN的串行计算问题。"

  2. 展示实践能力

    "我在项目中使用YOLOv8进行目标检测,通过数据增强和模型微调,将mAP从70%提升到85%。同时使用Transformer构建了文本分类模型。"

  3. 展示学习能力

    "我持续关注最新的技术发展,如Vision Transformer将Transformer应用于图像领域,以及YOLOv8的Anchor-Free设计。"


文档版本 : v1.0
最后更新 : 2024年
作者: E教千问技术团队


参考资料

经典论文

开源项目

学习资源

相关推荐
陈天伟教授10 小时前
人工智能应用- 天文学家的助手:08. 星系定位与分类
前端·javascript·数据库·人工智能·机器学习
放下华子我只抽RuiKe510 小时前
算法的试金石:模型训练、评估与调优的艺术
人工智能·深度学习·算法·机器学习·自然语言处理·数据挖掘·线性回归
深圳季连AIgraphX15 小时前
UROVAs 端到端自动驾驶模型训练、开闭环测试与上车联调
人工智能·机器学习·自动驾驶
这张生成的图像能检测吗15 小时前
(论文速读)基于深度学习的电动汽车直流充电桩开路故障精确诊断多特征融合模型
人工智能·深度学习·计算机视觉·故障诊断
RuiBo_Qiu16 小时前
【LLM进阶-后训练&部署】2. 常见的全参数微调SFT方法
人工智能·深度学习·机器学习·ai-native
FluxMelodySun16 小时前
机器学习(二十三) 密度聚类与层次聚类
人工智能·机器学习·聚类
WiSirius17 小时前
LLM:基于 AgentScope + Streamlit 的 AI Agent脑暴室
人工智能·深度学习·自然语言处理·大模型·llama
进击ing小白18 小时前
OpenCv之图像的仿射和透视变化
人工智能·opencv·机器学习