机器学习与深度学习:从基础概念到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教千问技术团队


参考资料

经典论文

开源项目

学习资源

相关推荐
用户080775907855 小时前
昇腾 NPU 从零部署推理模型 · 完整决策与操作指南
深度学习
十方空烬5 小时前
我的 LoRA 更会选路由了,JSON 却更不可靠了
机器学习
AliCloudROS5 小时前
5~7 分钟跑通第一个 Agentic RL 训练:我们把 verl 全链路做成了计算巢一键服务
深度学习·强化学习
小蒋观天下6 小时前
厂区人员徘徊游荡判别——基于时序轨迹速度的逗留行为分级算法落地
大数据·人工智能·深度学习·算法·机器学习·ai大模型
ITOM运维行者6 小时前
WAN监控怎么做?从链路质量指标到路径级定位的完整方法
数据库·人工智能·机器学习
Rocky Ding*7 小时前
DeepSeek-Bot技术拆解:持久化Agent团队如何管理记忆、上下文与协作成本
论文阅读·人工智能·深度学习·机器学习·aigc·ai-native·智能体
在所不辞兄7 小时前
为什么物理嵌入神经网络要把物理方程残差加入损失函数,而不是直接作为网络结构的硬约束?
人工智能·深度学习·神经网络·机器学习·有限元
嫂子开门我是_我哥8 小时前
敏感性分析
算法·机器学习·论文笔记
有Li8 小时前
EEG脑电图数据处理基础
人工智能·算法·机器学习·语言模型·医学生