![](https://img-blog.csdnimg.cn/direct/bec54ddd585a4e3193c210c7f82e1412.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
PyTorch深度学习项目实战1000例
文章平均质量分 94
专栏刚刚上线,现价9.9,后面更新至200篇时会逐量涨价。本专栏甄选了深度学习实战知识(内附源码及项目原理介绍),预计更新至1000篇博客。订阅后可免费领取3000多本国内外精品IT书籍和名著(链接放在了专栏的置顶博客里)。
IT狂飙
勤学如春起之苗,不见其增,日有所长。
展开
-
深度学习1 数学基础总结
导数(derivative)代表了在自变量变化趋于无穷小的时候,函数值的变化与自变量的变化的比值。几何意义是这个点的切线。物理意义是该时刻的(瞬时)变化率。注意:在一元函数中,只有一个自变量变动,也就是说只存在一个方向的变化率,这也就是为什么一元函数没有偏导数的原因。在物理学中有平均速度和瞬时速度之说。平均速度有。原创 2023-12-19 23:42:42 · 995 阅读 · 0 评论 -
动手学CV-Pytorch计算机视觉 使用transformer实现OCR字符识别
本文OCR实验使用的数据集基于中的,这是一个单词识别任务,我们去掉了其中一些图片,来简化这个实验的难度,马上会提到。百度云盘,密码: a5rr该数据集包含了众多自然场景图像中出现的文字区域,原始数据中训练集含有4468张图像,测试集含有2077张图像,他们都是从原始大图中依据文字区域的bounding box裁剪出来的,图像中的文字基本处于图片中心位置。数据集中图像类似如下样式:trainvalid。原创 2023-12-19 09:26:09 · 1122 阅读 · 0 评论 -
动手学CV-Pytorch计算机视觉 Transformer介绍和实战案例
6.1.1 模型结构概览6.1.2 模型输入1. Embedding层3. Encoder和Decoder都包含输入模块1. 编码器2. 编码器层3. 注意力机制4. 多头注意力机制5. 前馈全连接层6. 规范化层7. 掩码及其作用1. 解码器整体结构2. 解码器层6.1.5 模型输出6.1.6 模型构建6.1.7 实战案例6.1.8 小结。原创 2023-12-18 11:35:33 · 1002 阅读 · 0 评论 -
动手学CV-Pytorch计算机视觉 DCGAN实战:深度卷积生成对抗网络
而右边是微步幅度卷积,用 3*3 的卷积核把 3*3 的矩阵卷积成 5*5 的矩阵,二者的差别在于,宽卷积是在整个输入矩阵周围添 0,而微步幅度卷积会把输入矩阵拆开,在每一个像素点的周围添 0。可以看出,生成器的输入是一个 100 维的噪声,中间会通过 4 层卷积层,每通过一个卷积层通道数减半,长宽扩大一倍 ,最终产生一个 64*64*3 大小的图片输出。最后,我们将进行一些统计报告,并在每个Epoch结束时,将我们的fixed_noise batch输入到到生成器中,来直观地跟踪G的训练进度。原创 2023-12-18 11:08:17 · 822 阅读 · 0 评论 -
动手学CV-Pytorch计算机视觉 ConditionGAN实战 再战手写数字生成
make_grid用于把几个图像按照网格排列的方式绘制出来#每行的图片数量为10#normalize如果为True,则把图像的像素值通过range指定的最大值和最小值归一化到0-1。#fig代表绘图窗口(Figure);ax代表这个绘图窗口上的坐标系(axis),一般会继续对ax进行操作。#表示figure 的大小为宽、长(单位为inch)#grid.permute(1, 2, 0)将tensor的维度换位,原来的顺序是(0,1,2)原创 2023-12-18 10:57:55 · 753 阅读 · 0 评论 -
动手学CV-Pytorch计算机视觉 GAN实战 手写数字生成
动手学CV-Pytorch计算机视觉 GAN实战: 手写数字生成原创 2023-12-18 10:46:25 · 374 阅读 · 0 评论 -
动手学CV-Pytorch计算机视觉 初识生成对抗网络
是通过对抗训练的方式来使得生成网络产生的样本服从真实数据分布。而其网络的关键在于生成网络和判别网络的对抗学习。判别网络,目标是尽量准确地判断一个样本是来自于真实数据还是由生成网络产生;生成网络,目标是尽量生成判别网络无法区分来源的样本。这两个目标相反的网络不断地进行交替训练。当最后收敛时,如果判别网络再也无法判断出一个样本的来源,那么也就等价于生成网络可以生成符合真实数据分布的样本。生成对抗网络的流程图如下所示。判别网络(Discriminator Network)$$𝐷(𝒙;\phi)$$原创 2023-12-18 10:42:40 · 821 阅读 · 0 评论 -
动手学CV-Pytorch计算机视觉 模型训练与测试
以分类模型中最简单的二分类为例,对于这种问题,我们的模型最终需要判断样本的结果是0还是1,或者说是positive还是negative。我们通过样本的采集,能够直接知道真实情况下,哪些数据结果是positive,哪些结果是negative。同时,我们通过用样本数据跑出分类模型的结果,也可以知道模型认为这些数据哪些是positive,哪些是negative。原创 2023-12-18 10:21:27 · 862 阅读 · 0 评论 -
动手学CV-Pytorch计算机视觉 损失函数
注意:第二个原则一定在第一个原则之后进行,仔细考虑一下这种情况,如果某个ground truth所对应最大IOU的prior bbox小于阈值,并且所匹配的prior bbox却与另外一个ground truth的IOU大于阈值,那么该prior bbox应该匹配谁,答案应该是前者,首先要确保每个ground truth一定有一个prior bbox与之匹配。因为负样本先验框过多,我们要按一定的预设比例,一般是1:3,将loss最高的那部分负样本先验框拿出来,其余的负样本忽略,重新计算分类loss。原创 2023-12-18 01:15:13 · 759 阅读 · 0 评论 -
动手学CV-Pytorch计算机视觉 模型结构
对于网络的输入尺寸的确定,由于vgg16的ImageNet预训练模型是使用224x224尺寸训练的,因此我们的网络输入也固定为224x224,和预训练模型尺度保持一致可以更好的发挥其作用。也就是说,最终回归头的输出有36个通道,其中每4个值就对应了一个anchor的编码后偏移量的预测,这样的4个值的预测共有9组,因此通道数是36。下一小节,我们将会学习和模型训练相关的内容,看看如何通过定义损失函数和一些相关的训练技巧,来让模型向着正确的方向学习,从而预测出我们想要的结果。原创 2023-12-18 00:59:54 · 831 阅读 · 0 评论 -
动手学CV-Pytorch计算机视觉 锚框 or 先验框
这里我们一般用图片尺寸将越界的先验框进行截断,比如某个先验框左上角坐标是(-5, -9),那么就截断为(0,0),某个先验框右下角坐标是(324,134),当我们的图片大小为(224,224)时,就将其截断为(224,134)。而且,通过建立这种映射关系,我们可以通过特征图,直接一次性的输出所有先验框的类别信息以及坐标信息,而不是想前面一直描述的那样,每个候选框都去独立的进行一次分类的预测,这样太慢了(阅读后面的章节后,你将会深刻理解这段话的含义,以及建立这种一一映射的重要意义)。原创 2023-12-18 00:51:28 · 893 阅读 · 1 评论 -
动手学CV-Pytorch计算机视觉 目标检测数据集VOC
VOC数据集是目标检测领域最常用的标准数据集之一,几乎所有检测方向的论文,如faster_rcnn、yolo、SSD等都会给出其在VOC数据集上训练并评测的效果。因此我们我们的教程也基于VOC来开展实验,具体地,我们使用VOC2007和VOC2012这两个最流行的版本作为训练和测试的数据。数据集类别VOC数据集在类别上可以分为4大类,20小类,其类别信息如图3-5所示。图3-5 VOC数据集目标类别划分数据集量级图3-6 VOC数据集数据量级对比其中,Images表示图片数量,Objects表示目标数量。原创 2023-12-18 00:43:55 · 778 阅读 · 1 评论 -
动手学CV-Pytorch计算机视觉 目标检测基本概念
目标检测是计算机视觉中的一个重要任务,近年来传统目标检测方法已经难以满足人们对目标检测效果的要求,随着深度学习在计算机视觉任务上取得的巨大进展,目前基于深度学习的目标检测算法已经成为主流。相比较于基于深度学习的图像分类任务,目标检测任务更具难度。具体区别如图3-1所示。图像分类:只需要判断输入的图像中是否包含感兴趣物体。目标检测:需要在识别出图片中目标类别的基础上,还要精确定位到目标的具体位置,并用外接矩形框标出。图3-1 分类和目标检测任务示意图。原创 2023-12-18 00:35:55 · 905 阅读 · 1 评论 -
动手学CV-Pytorch计算机视觉 torchvision中自带图像预处理方法进行了分类总结和介绍,主要涉及裁剪、反转和旋转、其他图像变换等19种方法
动手学CV-Pytorch计算机视觉 torchvision中自带图像预处理方法进行了分类总结和介绍,主要涉及裁剪、反转和旋转、其他图像变换等19种方法原创 2023-12-18 00:29:46 · 1054 阅读 · 1 评论 -
动手学CV-Pytorch计算机视觉 天池赛题思路与上分技巧汇总
具体地,体现在测试集最终的分数反而要比验证集高一些,如果你直接观察数据,也可以看出来,测试集的图片中字符在图片中的占比更大,而训练集中图片的字符占比更小。更详细来说,根据我的训练日志的记录,训练时第3个字符的loss是相对比较小的,而预测时长度为3的图片出现的预测错误是比较多的,主要是漏检。方案一是更标准的字符识别类问题的解决方案,如果我们的问题不是数字之间无关联的门牌号识别,而是比如场景文字识别,那么方案一由于可以对不同字符间的关联进行建模,效果将会显著优于其它方案,但是本赛题这种优势无法发挥出来。原创 2023-12-18 00:26:29 · 864 阅读 · 1 评论 -
动手学CV-Pytorch计算机视觉:天池计算机视觉字符识别比赛流程结构完整分析
继承nn.Module,重写init函数,定义网络的各层结构。重写fordward函数,定义前传播过程。有以下几点需要注意:(1)如果网络的上一层的输入直接传递到下一层,可以用nn.Sequential快速定义网络。从而不需要在forward函数中写前向传递过程,默认是一层一层直接向前传递。(2)对于图像分类分类网络,用CNN进行特征提取,用全连接网络把特征维度映射到标签维度,进行分类。中间需要经过维度转换,即把所有通道的特征展开为一维向量。原创 2023-12-18 00:11:28 · 930 阅读 · 1 评论 -
动手学CV-Pytorch计算机视觉 天池上的一个字符识别比赛mchar 解决方案和实验总结
实践总结代码使用baseline图像分类ResNet18 学习率调节ResNet18 数据增强ResNet34改变学习任务:4字符改变数据集:样本加权集成学习SSD 目标检测项目代码链接放在了文章最下方这次实践是天池上的一个字符识别比赛mchar,数据集使用的是Google街景图像门牌号数据集SVHM,任务是识别不定长街景门牌字符。解决这个问题的思路可以有多种。一是当作图像分类问题,首先固定字符的长度,然后在CNN后添加多个全连接分支进行多字符分类,按顺序把多个分支的结果连接,作为最终的结果输出。原创 2023-12-18 00:01:04 · 939 阅读 · 1 评论 -
动手学CV-Pytorch计算机视觉 天池计算机视觉入门赛SVHN数据集实战
该比赛以SVHN街道字符为赛题数据,数据集报名后可见并可下载,该数据来自收集的SVHN街道字符,并进行了匿名采样处理,详细的介绍见赛事官网。注:以下代码均默认已将比赛数据的根文件夹命名为并放置于下我们要做的就是识别图片中的数字串,赛题给定的数据图片中不同图片中包含的字符数量不等,如下图所示。看起来好像有点棘手,和本章介绍的图像分类还并不一样。这里我们利用一个巧妙的思路,将赛题转化为一个分类问题来解。赛题数据集大部分图像中字符个数为2-4个,最多的字符个数为6个。因此可以对于所有的图像都抽象为6个字。原创 2023-12-17 22:44:34 · 1057 阅读 · 1 评论 -
动手学CV-Pytorch计算机视觉 基于Cifar10的图像分类入门学习
本节以常用数据集Cifar10为例,用PyTorch训练了一个简单的图像分类器。介绍训练分类器的小目标,结合小目标给出具体步骤,并给出相关知识点及代码。原创 2023-12-17 22:30:45 · 1099 阅读 · 1 评论 -
动手学CV-Pytorch计算机视觉 经典图像分类模型介绍
介绍卷积神经网络基础输入层二维卷积层卷积(convolution)填充(padding)步长(itride)激活函数ReluSoftmax池化层经典图像分类模型介绍LeNet网络架构代码实战总结AlexNet网络架构代码实战实验结果总结VGG网络架构代码实战总结网络中的网络(NiN)网络架构代码实战总结含并行连结的网络(GoogLeNet)网络架构代码实战总结批量归一化(Batch Normalization)为什么要进行批量归一化怎样进行批量归一化代码实战残差网络(ResNet)网络结构代码实战参考文献。原创 2023-12-17 22:23:56 · 1302 阅读 · 1 评论 -
动手学CV-Pytorch计算机视觉 数据读取与数据扩增
学习CV,最重要的就是先有图像数据集,现在互联网中也已经有很多开源的图像数据集供我们学习选择。MNISTCIFARPASCAL VOCImageNetMS COCO等。这些数据集都是根据具体的应用场景(如分类、检测、分割等),为了更好的促进学术研究的进展,耗费大量人力进行标注的。除此之外,当然还有很多特定领域的数据集,这里不再一一罗列,感兴趣的读者可以自行检索。下面将对分类任务常见的数据集进行介绍。我们已经了解了部分分类任务的常用数据集,下面我们来介绍在pytorch中是如何定义和读取这些数据集的。原创 2023-12-17 20:50:59 · 944 阅读 · 1 评论 -
动手学CV-Pytorch计算机视觉 战初识图像分类:MNIST分类实战
关于MNIST数据集,大部分同学一定不会陌生,它是一个手写数字数据集,包含了0 ~ 9这10个数字,一共有7万张灰度图像,其中6w张训练接,1w张测试集,并且每张都有标签,如标签0对应图像中数字0,标签1对应图像中数字1,以此类推…。另外,在 MNIST 数据集中的每张图片由 28 x 28 个像素点构成, 每个像素点用一个灰度值表示,灰度值在0 ~ 1 或 0 ~ 255之间,MINIST数据集图像示例如下:在Pytorch中已经集成了MNIST数据集,所以使用非常方便,几行代码即可解决。原创 2023-12-16 23:18:44 · 815 阅读 · 1 评论 -
动手学CV-Pytorch计算机视觉 Pytorch基础使用介绍
Pytorch是什么?Pytorch是一个基于python的科学计算包,主要面向两部分受众:一个为了充分发挥GPU能力而设计的Numpy的GPU版本替代方案一个提供更大灵活性和速度的深度学习研究平台本节将会介绍Pytorch的一些基本使用和操作,帮助你熟悉和上手Pytorch,让我们开始吧~原创 2023-12-16 22:29:19 · 386 阅读 · 1 评论 -
动手学CV-Pytorch计算机视觉 自动求梯度原理介绍
在深度学习模型训练中,在完成一次前向推理后,我们需要使用反向传播,依据每个参数的梯度,调整参数的取值来让模型往正确的方向前进。PyTorch提供的能力能够帮我们实现这一过程,极大的简化了模型训练的难度。其可以根据输入和前向传播过程自动构建计算图,并执行反向传播。本文将简单介绍pytorch中与自动求导相关的内容。原创 2023-12-16 22:34:20 · 772 阅读 · 0 评论 -
动手学CV-Pytorch计算机视觉 线性回归实战
简单来说,就是假定因变量关于自变量呈线性关系,即满足ywxby = wx+bywxb那么对于明显的呈线性条带状分布的数据,我们认为这是线性关系的数据参杂了一定噪声之后呈现出的情形,便可以尝试使用线性回归模型对这批数据进行建模。此时我们想用线性函数,根据已有数据拟合分布曲线,之后便可以通过xxx来得到yyy的预测值。梯度下降算法是一种通过迭代找到目标函数的极小值的方法,属于最优化算法中的一种。这里我们不去深究它的数学原理梯度下降法如何更新参数?原创 2023-12-16 22:43:57 · 774 阅读 · 1 评论 -
动手学CV-Pytorch计算机视觉 GPU环境配置
进行CV的学习,配置好实验环境就是第一步。本小节就带大家简单的过一下如何配置深度学习GPU环境。主要分为4个部分如何获取GPU资源CUDA安装Cudnn安装Anaconda安装及环境管理Pytorch安装。原创 2023-12-16 22:26:22 · 1045 阅读 · 1 评论