第1章  概述:深度学习让计算机“看懂”图像

第2章 环境:安装Anaconda、PyTorch、Jupyter

第3-4章 数据:用Dataset和DataLoader加载图像

第5章 CNN(卷积神经网络):卷积/池化/批归一化提取图像特征

第6章 训练:损失函数 + 优化器 + 反向传播,让模型学习

第7章 分类:整图输出一个标签,回答“这是什么?”(猫/狗)

第8章 检测:画边界框 + 告诉类别,回答“东西在哪?”(YOLO为代表)

第9章 分割:像素级分类,抠出精确轮廓,回答“每个像素是什么?”

输入一张图片:

  • 第7章 分类 → 输出:一个标签,例如“猫”

  • 第8章 检测 → 输出:多个框 + 类别,例如“猫 位于 [100,200,50,60]”

  • 第9章 分割 → 输出:每个像素的类别,猫的轮廓被精确标出

分类知道“有猫”,检测知道“猫在哪”,分割知道“猫长什么样”。

  • 表情识别 则是(分类+检测识别)

第10章 人脸识别:检测人脸 → 提取特征 → 比对身份,回答“这是谁?”

第11章 生成模型:GAN/VAE生成新图像,回答“能创造吗?”

目录

引

图像增广 (Image Augmentation)

微调 (Fine-Tuning)

目标检测。 锚框 (Anchor) 与 边界框 (Bounding Box)

NumPy

引

       1. 先学OpenCV - 图像数据增强、预处理 import cv2 >

                 # 学习:读取图像、颜色空间、滤波、边缘检测 > >

       2. 再学PyTorch基础 - 模型训练、调优 深度学习 import torch

                 # 学习:张量操作、自动微分、简单网络 > >

       3. 最后结合使用 > # OpenCV处理 + PyTorch深度学习

【通用深度学习技术】
├── 数据层面:图像增广 (翻转、旋转、裁剪、亮/对比度/噪声调整。(防止过拟合)
└── 模型层面:微调/迁移学习 (用于分类、检测、分割等任何任务)

【特定任务:目标检测】
├── 核心概念1:边界框 (Bounding Box) - 描述“物体在哪”
├── 核心概念2:交并比 (IoU) - 边框重叠程度
└── 核心机制:锚框 (Anchor Box) - 一种“猜测物体位置”的高效方法

图像增广 (Image Augmentation)

翻转、旋转、裁剪、亮度/对比度调整、添加噪声。(防止过拟合、模拟现实场景变化)

微调 (Fine-Tuning)

“站在巨人的肩膀上”,利用已训练好的模型。当你的数据集较小,但有一个在大数据集上预训练好的模型时。
流程:下载预训练模型 -> 替换最后一层(分类头)-> 选择冻结哪些层 -> 用你的数据训练

目标检测。 锚框 (Anchor) 与 边界框 (Bounding Box)

模型的任务就是 “调整最接近的锚框,使其匹配真实的边界框”

交并比
在这里插入图片描述在这里插入图片描述

NumPy

数组来存储和处理图像

一维数组:线

[100, 150, 200, 180, 120]
可以理解为一条线上的像素(比如一行图像)

二维数组:面

[[100, 150, 200],
 [180, 120, 90],
 [60, 80, 110]]
可以理解为一个平面上的像素:
    行号 = 图像的 y 坐标(高度)
    列号 = 图像的 x 坐标(宽度)
    每个数值 = 该点的亮度/颜色
数值矩阵:                对应的图像(灰度):
[100, 150, 200]    →    ■   ■   ■  (越大的数越亮)
[180, 120,  90]    →    ■   ■   ■
[ 60,  80, 110]    →    ■   ■   ■

三维数组:立体/彩色

[
  [R通道],    → 红色亮度矩阵
  [G通道],    → 绿色亮度矩阵  
  [B通道]     → 蓝色亮度矩阵
]
可以理解为多个平面叠在一起,每个平面对应一个颜色通道。
np.array(list)从 Python 列表创建数组将图像数据转换为可处理的数组格式
np.zeros(shape)创建全0数组生成黑色图像、初始化掩码
np.ones(shape)创建全1数组生成白色图像、初始化卷积核
np.arange(start, stop, step)创建等差数列      (步长 公差d)生成坐标序列、遍历像素
np.linspace(start, stop, num)创建等间隔数列(点个数)生成渐变色、采样点

np.arange(start, stop, step)      用途:从 start 开始,每次增加 step,直到不超过 stop

np.linspace(start, stop, num) 用途:从 start 到 stop 生成 num 个均匀间隔的点

更多推荐