作者文章归档:justlin_01

动手学习深度学习系列笔记——转置卷积


47-转置卷积

本节目录

1.转置卷积

  • 转置卷积和卷积的区别:
    • 卷积不会增大输入的高宽,通常要么不变、要么减半
    • 转置卷积则可以用来增大输入高宽
  • 转置卷积的具体实现:

如图所示,input里的每个元素和kernel相乘,最后把对应位置相加,相当于卷积的逆变换

  • 为什么称之为“转置:
    • 对于卷积Y=X*W
      • 可以对W构造一个V,使得卷积等价于矩阵乘法Y'=VX'
      • 这里Y',X'是Y,X对应的向量版本
    • 转置卷积等价于Y'=VTX'
    • 如果卷积将输入从(h,w)变成了(h‘,w’)
      • 同样超参数的转置卷积则从(h‘,w’)变成为(h,w)

2.

Read more

动手学习深度学习系列笔记——语义分割


46 语义分割

目录

1.语义分割

有时只能实现框选的目标检测还是太粗糙了,无法得到更精细的信息。语义分割将图片中的每个像素分类到对应的类别。

分割这一概念在计算机视觉中由来已久。最早的图片分割对给定图片使用聚类等方法把语义上比较像的像素放在一起,但通常不会告诉我们这些像素到底是什么。而语义分割可以告诉我们每个像素对应的label是什么。

这也意味着我们需要对图片的每一个像素都做label,使得语义分割成为了一个比较精细且大的任务。语义分割的数据集成本也较高,往往规模小像素高。常用的数据集之一是Pascal VOC2012。

2.应用

背景

Read more

动手学习深度学习系列笔记——目标检测算法


44.物体检测算法:R-CNN,SSD,YOLO

目录

1.区域卷积神经网络

1.1.R-CNN

  • 使用启发式搜索算法来选择锚框
  • 使用预训练模型来对每个锚框抽取特征(每个锚框当作一个图片,用CNN)
  • 训练一个SVM来类别分类(神经网络之前,category pre

Read more

动手学习深度学习系列笔记——物体检测和数据集


- 41 物体检测和数据集

- 物体检测

- 边缘框实现

- 数据集

41 物体检测和数据集

物体检测

  1. 图片分类和目标检测在任务上的区别:图片分类已知有一个确定目标,任务是识别该目标属于何种分类,而目标检测不仅需要检测出图片中所有感兴趣的目标类别,并确定其位置,所以目标检测要比图片分类更复杂应用场景更广。
  2. 图片分类和目标检测在数据集上的区别:由于目标检测中每一张图片可能存在多个目标,每个目标我们不仅需要分类,还需要确定边缘框以给出目标位置信息,因此目标检测数据集的标注成本要显著高于图片分类,也就导致了目标检测数据集较小。
  3. 边缘框:用一个尽量小矩形框将目标物体大体框起来,边框的位置信息就可以表

Read more

动手学习深度学习系列笔记——实战Kaggle竞赛:CIFAR-10


CIFAR-10

1.目录

首先,导入竞赛所需要的包和模块:

import collections
import math
import os
import shutil
import pandas as pd
import torch
import torchvision
from torch import nn
from d2l import torch as d2l

2.1 下载数据集:

#@save
d

Read more

动手学习深度学习系列笔记——微调


微调

背景

  • 很多时候,例如我们想对家具进行分类,但是往往在努力收集数据得到的数据集也比较小假如我们想识别图片中不同类型的椅子,然后向用户推荐购买链接。 一种可能的方法是首先识别100把普通椅子,为每把椅子拍摄1000张不同角度的图像,然后在收集的图像数据集上训练一个分类模型。 尽管这个椅子数据集可能大于Fashion-MNIST数据集,但实例数量仍然不到ImageNet中的十分之一。 适合ImageNet的复杂模型可能会在这个椅子数据集上过拟合。 此外,由于训练样本数量有限,训练模型的准确性可能无法满足实际要求。为了避免这种情况,我们可以有两种方法:
    • 显然的想

Read more

动手学习深度学习系列笔记——数据增广


36 数据增广

目录

数据增广不仅用于处理图片,也可用于文本和语音,这里只涉及到图片。

1. 使用增强数据训练

采集数据得到的训练场景与实际部署场景不同是常见的问题,这种变化有时会显著影响模型表现。在训练集中尽可能模拟部署时可能遇到的场景对模型的泛化性十分重要。

数据增强是指在一个已有数据集上操作使其有更多的多样性。对语音来说可以加入不同的背景噪音,对图片而言可以改变其颜色,形状等。

一般来说不会先将数据集做增广后存下来再用于训练;而是直接在线生成,从原始数据中读图片

Read more

动手学习深度学习系列笔记——分布式训练


35-分布式训练

本节目录

1.分布式计算

  • 本质上来说和之前讲的单机多卡并行没有区别。二者之间的区别是分布式计算是通过网络把数据从一台机器搬到另一台机器

2. GPU机器架构

  • 总的来说,gpu到gpu的通讯是很快的,gpu到cpu慢一点。机器到机器更慢。因而总体性能的关键就是尽量在本地做通讯而少在机器之间做通讯
2.1 样例:计算一个小批量
  • 每个worker从参数服务器那里获取模

Read more

动手学习深度学习系列笔记——单机多卡并行


单机多卡并行

一台机器可以安装多个GPU(一般为1-16个),在训练和预测时可以将一个小批量计算切分到多个GPU上来达到加速目的,常用的切分方案有数据并行,模型并行,通道并行。

数据并行

将小批量的数据分为n块,每个GPU拿到完整的参数,对这一块的数据进行前向传播与反向传播,计算梯度。

数据并行通常性能比模型并行更好,因为对数据进行划分使得各个GPU的计算内容更加均匀。

数据并行的大致流程

主要分为五部

  • 1:每个GPU读取一个数据块(灰色部分)
  • 2:每个GPU读取当前模型的参数(橙色部分)
  • 3:每个GPU计算自己拿到数据块的梯度(绿色部分)
  • 4:GPU将计算得到的梯度传给内存(CPU)(绿

Read more

动手学习深度学习系列笔记——深度学习硬件


32-深度学习硬件

目录

1.DSP:数字信号处理

  • 为数字信号处理算法设计:点积、卷积、FFT

  • 低功耗,高性能

    • 比移动GPU快5倍,功耗更低
  • VLIW:very long instruction word
    • 频率低,核少,但是一条指令可以进行上百次的累加,便于重复
  • 缺点:编程和调试困难,编译器良莠不齐(做的人少,工具不是很好用)

2.可编程阵列(F

Read more