深度学习
huang_nansen
这个作者很懒,什么都没留下…
展开
-
pytorch 多卡机器中使用单卡训练
假设当前设备有两块gpu,gpu0, gpu1仅想使用1号gpu时1.在程序前添加os.environ['CUDA_VISIBLE_DEVICES'] = '1' 2. torch.load时要记得指定device torch.load(array, map_location=device)3. to('cuda:0')这里的0号gpu指的就是物理机的1号gpu暂时只看到这些地方需要改...原创 2021-01-28 15:13:07 · 1646 阅读 · 0 评论 -
scp无法传输文件到docker容器中
由于需要远程scp到docker容器中,将docker容器的端口映射出来后,使用scp传输文件到docker容器中。一直报一个乱码\033[1;31m一开始以为是编码问题,找了很久,发现有人在使用tensorflow镜像时出现过这个问题:https://github.com/tensorflow/tensorflow/issues/30495原来是因为ssh进入docker容器中时,会自动打印一些信息:ssh时没出问题,但是scp时,由于会报错,无法传输。解决方法是:将/原创 2021-01-25 20:58:13 · 2223 阅读 · 0 评论 -
部分GANs简介(二)
CGANPix2PixBicycleGANcVAE-GAN参考:https://zhuanlan.zhihu.com/p/62139750AE传统的(AE)将图片编码为隐变量(latent variable),可以看做是一个降维,解码器可以通过隐变量还原输入图片。但是存在的问题是,我们无法通过构造隐变量来生成图片,因为隐变量是通过encoder编码生成的。VAE变分自动编码器(VAE)通过添加限制,将隐变量粗略遵循一个标准正态分布,这样我们就可以通过标准正态分布去采样,再通过解码器生成新图片原创 2020-08-25 18:47:11 · 573 阅读 · 0 评论 -
部分GANs简介(一)
最近在训练GANs的时候遇到挺多问题,想系统的看一下GANs发展进程中遇到的问题和解决方案,顺便总结一下。原创 2020-07-27 09:29:51 · 281 阅读 · 0 评论 -
深度学习Normalization技术简介
Batch NormalizationBN主要解决了Internal Covariate Shift问题,该问题的意思是在深度神经网络中,每层的参数都在不断的更新,导致了隐含层的输入分布一直不断的变化,不符合监督学习的IID条件。同时,分布的不断变化,会导致收敛的难度增大,收敛速度变慢。BN的思想,是把mini-batch输入的分布尽量保持一致,降低收敛难度,提升收敛速度。同时,当同一个样本处在不同mini-batch中时,会经过不同的转换,变相进行了数据增强。在测试时,使用的是训练集得到的统...原创 2020-07-08 11:38:41 · 566 阅读 · 0 评论 -
【Tensorflow】Tensorflow gradient clipping梯度裁剪
Tensorflow中使用tf.clip_by_value(x, min, max)限制一个tensor在一定值域https://stackoverflow.com/questions/36498127/how-to-apply-gradient-clipping-in-tensorflow训练过程中,若遇到梯度爆炸问题,可以对gradient进行clip来防止梯度爆炸问题1. tf....原创 2019-12-26 14:29:58 · 861 阅读 · 1 评论 -
【Tensorflow】Tensorflow训练过程中使用边缘提取
在使用GANs生成图片时,由于边缘模糊,所以想单独提取边缘信息作为额外输入。由于是在训练过程中使用,所以不适合用opencv提取。Tensorflow中自带了Sobel算子边缘提取函数tf.image.sobel_edges下面展示一下使用效果image = tf.image.sobel_edges(targets)image = image**2image = tf....原创 2019-12-24 18:16:33 · 2911 阅读 · 1 评论 -
【Tensorflow】tensorflow张量操作
在深度学习中,我们通常是对张量进行操作,矩阵可以看成是二阶张量,而一张RGB图片,可以看成是三阶张量(长、宽、颜色)。Tensorflow中的数据都以张量(tensor)的形式流动,本篇博客中记录一下最近用到的一些在tensorflow中的张量操作,会持续更新。1. 创建值为0的张量shape_1 = 1shape_2 = shape_3 = 600shape_4 = 3...原创 2019-11-26 17:15:36 · 440 阅读 · 0 评论 -
【Tensorflow】Tensorflow checkpoint导入导出pb文件
为了把能够把tensorflow的模型放到tensorflow serving上,需要把checkpoint转换为pb文件导出pb模型这里踩了不少坑,首先需要获取输入和输出的tensor,在训练/测试文件之外重新写脚本来导出的话,需要重新定义输入输出对应的tensor,这样会比较麻烦,建议直接在test后面进行转换。代码如下:prediction_signature_dict ...原创 2019-10-24 21:24:54 · 1450 阅读 · 1 评论 -
python xml常见操作
目标检测任务中,输入为一张图片以及目标框的坐标,在标注工具标注完成后,通常坐标会保存在xml文件中。当我们根据自己的业务需求,需要修改标注数据时,由于重新标注的成本较高,所以直接修改xml文件较为合适。当前我使用的标注工具是LableImg的Ubuntu版本:github:https://github.com/chinakook/labelImg2 https:...原创 2019-05-12 16:35:16 · 681 阅读 · 0 评论 -
Unbuntu 16.04 Tensorflow重新安装
1. 卸载原CUDA版本https://blog.csdn.net/u012074597/article/details/80317275?utm_source=blogxgwz2这里以CUDA10卸载为例子sudo apt-get autoremove --purge cudasudo dpkg -l |grep cudasudo dpkg -P cuda-repo-ubunt...原创 2019-04-12 09:45:27 · 665 阅读 · 0 评论 -
轻量级检测网络Pelee和DenseNet
提到轻量级神经网络,大家都会提到MobileNet V1 V2 和 ShuffleNet V1 V2,似乎较少看到大家提到PeleeNet,网上搜到的结果也不多,这篇博客会简单介绍一下PeleeNet以及以它为backbone的检测网络Pelee,还有它的前身DenseNet。1. DenseNet这里推荐一篇博文,讲解DenseNet很详细:https://blog.csdn.net...原创 2019-02-13 22:18:27 · 3641 阅读 · 0 评论 -
目标检测基础
一. NMS(非极大值抑制)在目标检测网络中,会生成许多重复地目标框,使用NMS去除冗余的目标框,保留置信度高的目标框。(1)在Bounding Box列表中,首先选择置信度最高的目标框A。(2)将与A的IoU超过阈值的目标框从Bounding Box中去除,并将A标记并移入保留框列表中。(3)重复(1)和(2),知道Bounding Box列表清空为止。对每个分类,都需要使用...原创 2018-10-28 21:49:29 · 5979 阅读 · 2 评论 -
MobileNet学习笔记
MobileNet v1论文中提到,MobileNet的创新点在于使用深度可分离卷积代替传统卷积用于提取特征,达到减少计算资源损耗和减小模型大小的目的。传统卷积中,G为下一层特征图,F为输入的特征图,K为kernel,M为输入通道数,N为输出通道数。 所需要的计...原创 2018-11-05 23:58:54 · 577 阅读 · 0 评论 -
shuffleNet v1 v2笔记
ShuffleNet v1ShuffleNet v1是由旷视科技在2017年底提出的轻量级可用于移动设备的卷积神经网络。该网络创新之处在于,使用pointwise group convolution还有channel shuffle,保证网络准确率的同时,大幅度降低了所需的计算资源。在近期的网络中,pointwise convolution的出现使得所需计算量极大的增多,于是作者提出了...原创 2018-11-14 22:53:38 · 11752 阅读 · 2 评论 -
目标分割
FCN传统CNN做分割(Lecun学生做的)时,使用该像素周围的一个图像块作为CNN的输入。缺点:一、 储蓄开销很大。二、 计算效率低,相邻像素重复计算。三、 像素块大小限制了感知区域大小。FCN使用卷积层代替最后的全连接层,使用1x1的卷积核。经过多次卷积后,图像越来越小,分辨率越来越低,使用上采样从分辨率低的粗略图像恢复到原图的分辨率。分别通过对第五层卷积池化后...原创 2018-11-23 23:49:21 · 1309 阅读 · 0 评论 -
卷积神经网络通道剪枝裁剪
论文来自旷视科技2017年的论文Channel Pruning for Accelerating Very Deep Neural Network论文地址:https://arxiv.org/abs/1707.06168代码地址:https://github.com/yihui-he/channel-pruning(还没跑过) 卷积通道剪枝论文的主要思想是,通过最小化裁剪后特征...原创 2018-11-30 22:11:31 · 16726 阅读 · 3 评论 -
卷积神经网络压缩参数加速(一)---网络剪枝
卷积神经网络的加速主要包括两类,硬件加速和软件加速,本篇将总结一下软件加速中网络剪枝所使用的方法。软件加速可以分为压缩结构和压缩参数两种,压缩结构就是将模型结构简化,设计结构更小、参数更小的网络后,从头开始训练,之前博文中提到的MobileNet及ShuffleNet系列网络就是模型压缩的一种。压缩参数是在已训练完模型的基础上,对参数进行筛选、转换已达到更少参数和更小结构的结果,包括网络剪...原创 2019-01-06 15:56:02 · 7496 阅读 · 5 评论 -
卷积神经网络压缩参数加速(二)---低秩估计
上篇讲述了卷积神经网络网络压缩的理论基础,包含filter层面、channel层面、group层面和稀疏矩阵。本篇博客将总结一下低秩估计的方法,低秩估计主要分为矩阵分解和张量分解。一、矩阵分解 如上图中两个矩阵相乘,每个向量相乘所需要的计算次数为b个乘法,b-1个加法,共a*c*(2b-1),通常情况下加法的速度比乘法的速度快很多,并且后面求比例时可以约掉,为了方便计算,计算为...原创 2019-01-06 22:59:21 · 4319 阅读 · 1 评论 -
常用深度学习优化算法简介
梯度下降法是基于泰勒展开式的,为了保证每一步优化都在领域内,设置了很小的学习率,但固定的学习率产生的问题是很难收敛到最优点,于是出现了一些改进的方法。1. 动量项梯度下降法Momentum积累了以前的梯度信息,但是如果如果简单的累积,会导致动量越来越大,于是需要有一个衰减的过程。 ...原创 2019-01-17 23:50:15 · 387 阅读 · 0 评论 -
卷积操作数组实现
自己尝试实现了一次数组模拟卷积过程代码如下//// main.cpp// CNN//// Created by HuangZhennan on 2019/1/12.// Copyright © 2019 HuangZhennan. All rights reserved.//#include <iostream>using namespace std...原创 2019-09-18 19:02:14 · 472 阅读 · 1 评论 -
ReLU和BN层简析
卷积神经网络中,若不采用非线性激活,会导致神经网络只能拟合线性可分的数据,因此通常会在卷积操作后,添加非线性激活单元,其中包括logistic-sigmoid、tanh-sigmoid、ReLU等。sigmoid激活函数应用于深度神经网络中,存在一定的局限性,当数据落在左右饱和区间时,会导致导数接近0,在卷积神经网络反向传播中,每层都需要乘上激活函数的导数,由于导数太小,这样经过几次传播后,靠...原创 2019-01-23 23:47:50 · 21308 阅读 · 0 评论 -
SegNet网络简析及caffe工程应用
最近在工作的业务中需要应用到图像分割,在这里总结一下在应用中遇到的一些问题。一、SegNet简介自2015年FCN的提出后,使用卷积层替代全连接层成为了解决像素级分类种where和what的一种有效办法。在最初的的FCN网络中,作者将最后用于分类的卷积层结果通过双线性差值扩大分辨率后,与前面pooling层之后的feature map进行结合,在提高分类准确率的同时,增加了更多的位置信息。...原创 2018-09-19 23:33:50 · 3959 阅读 · 0 评论