【深度学习实战(12)】训练之模型参数初始化
一、初始化方式 在常见的CNN深度学习模型中,最常出现的是Conv卷积和BatchNorm算子。 (1)对于Conv卷积,权重初始化的方式有‘normal’,‘xavier’,‘kaiming’,‘orthogonal’ 以‘normal’方式为例:对Conv卷积的weight通常是以均值为0,标准差为0.02的正态分布进行参数初始化 (2)对于BatchNorm算子,通常是使用‘normal’方式进行初始...
【深度学习实战(13)】训练之加载预训练权重
一、代码 import configimport torchimport numpy as np device = 'cpu'# ------------------------------------------------------## 创建你的模型# ------------------------------------------------------#model = YourMo...
【深度学习实战(9)】三种保存和加载模型的方式
一、state_dict方式(推荐) torch.save(model.state_dict(), PATH) model = YourModel()model.load_state_dict(torch.load(PATH))model.eval() 记住一定要使用model.eval()来固定dropout和归一化层,否则每次推理会生成不同的结果。 二、整个模型(结构+state_dict)方式 t...
【深度学习实战(6)】搭建通用的语义分割推理流程
一、代码 #---------------------------------------------------## 检测图片#---------------------------------------------------#def detect_image(self, image, count=False, name_classes=None): #---------------------...
【深度学习实战(7)】搭建自己的交叉熵(cross_entropy)函数
一、cross_entry介绍 交叉熵(cross_entropy)函数是一个非常重要的函数,常用于分类问题。 公式为: 二、相关的函数有: log_softmax,nll_loss, cross_entropy 1.log_softmax log_softmax就是log和softmax合并在一起执行,log_softmax=log+softmax 2. nll_loss nll_loss函数全称是neg...
【深度学习实战(25)】搭建训练框架之ModelEMA
一、什么是ModelEMA: 在深度学习中,经常会使用EMA(指数移动平均)这个方法对模型的参数做平均,以求提高测试指标并增加模型鲁棒。 指数移动平均(Exponential Moving Average)也叫权重移动平均(Weighted Moving Average),是一种给予近期数据更高权重的平均方法。 二、如何实现ModelEMA 创建EMA eval mode,去并行化 self.ema = d...
【深度学习实战(17)】计算语义分割的性能指标mIOU
一、指标介绍 在训练语义分割模型时,我们不仅需要知道训练,验证损失,还想要知道性能指标。 二、计算流程 (1)读取验证集的图片和标签(mask图) (2)对模型预测的特征图进行解码,获得预测的mask图 (3)创建num_class x num_class尺寸的混淆矩阵hist (4)将标签mask图和预测mask图转换为numpy数组 (5)将两个numpy数组展平为一维数组,使用np.bincount逐...
【深度学习实战(5)】使用OPENCV库实现自己的letter_box操作
一、letter_box 深度学习模型输入图片的尺寸为正方形,而数据集中的图片一般为长方形,粗暴的resize会使得图片失真,采用letterbox可以较好的解决这个问题。该方法可以保持图片的长宽比例,剩下的部分采用灰色填充。 二、代码 本例中,模型输入尺寸为604x640,而我们读取的图片的实际尺寸为128x384,通过letter_box操作,实现将原始图像以不失真的方式调整为640x640。 impo...
《PyTorch 深度学习实战》- 第一章 深度学习回顾和PyTorch简介
《PyTorch 深度学习实战》- 第一章 深度学习回顾和PyTorch简介 1.1 PyTorch的历史 pytorch前身是Torch,Torch使用Lua和C语言,而后因为python的兴起,演变成为PyTorch。事实上,pytorch是提供动态图功能的chainer分支。 pytorch与2017年发布。 1.2 PyTorch 是什么 基于磁带的自动求导系统使Pytorch具有动态图功能。 关于...
PyTorch深度学习实战(39)——小样本学习
PyTorch深度学习实战(39)——小样本学习 0. 前言1. 小样本学习简介2. 孪生网络2.1 模型分析2.2 数据集分析2.3 构建孪生网络 3. 原型网络3. 关系网络小结系列链接 0. 前言 小样本学习 (Few-shot Learning) 旨在解决在训练集中只有很少样本的情况下进行分类和推理的问题。传统的机器学习方法通常要求大量的标记样本来训练模型,但在现实世界中,很多场景下我们只能获得非常...