
DL
Frank(Zhiyang-Dou)
A Ph.D. candidate at HKU. Mainly focus on CG.
展开
-
pytorch加载部分模型权重
综述pytorch load模型部分权重:checkpoint= torch.load('checkpoint.pth'))model_dict = model.state_dict()pretrained_dict = {k: v for k, v in checkpoint['state_dict'].items() if k in model_dict} model_dict.update(pretrained_dict)model.load_state_dict(model_dict原创 2021-08-08 18:13:49 · 800 阅读 · 0 评论 -
fatal error: cublas_v2.h
我在stackoverflow中回答了该问题:https://stackoverflow.com/a/66044636/12838403Here I put the final solution:Step1: Run findfind /usr/local/ -name cublas_v2.hAnd we find the path of the file:/usr/local/cuda-10.2/targets/x86_64-linux/include/cublas_v2.hStep原创 2021-02-04 19:35:39 · 2536 阅读 · 1 评论 -
报错 OSError: CUDA_HOME environment variable is not set. Please set it to your CUDA install root.
综述报错OSError: CUDA_HOME environment variable is not set. Please set it to your CUDA install root.解决export CUDA_HOME=/usr/local/cuda-X.X原创 2021-02-04 11:29:07 · 57379 阅读 · 19 评论 -
python2.7 安装opencv
说明python2.7支持的opencv-python有限。应该安装指定版本。代码pip2 install opencv-python==4.2.0.32原创 2021-01-14 10:36:17 · 624 阅读 · 0 评论 -
opencv绘制透明的点
def plot_vertices(image, vertices): vertices = np.round(vertices).astype(np.int32) overlay = image.copy() for i in range(0, vertices.shape[0], 2): st = vertices[i, :2] overlay = cv2.circle(overlay,(st[0], st[1]), 1, (200,0,0), -原创 2021-01-12 17:39:33 · 1638 阅读 · 0 评论 -
Numpy拓展维度
综述备份记录。有时候我们处理单个channel图片数据希望对其进行升维。[1,640,640] -> [3,640,640]代码img = np.ascontiguousarray(img)img = img.repeat(3,axis=0)即可。原创 2020-12-30 11:57:36 · 546 阅读 · 0 评论 -
GPU训练 数据并行与模型并行
数据并行 Data Parallelism每块GPU上都有完整的模型(每个GPU上的模型参数是一样的)。将原来的训练数据切分为多份,分别投喂到每个GPU上的模型。每个GPU并行运行,随后进行模型的梯度汇总更新以及不同GPU的通信/状态同步。模型并行 Model Parallelism模型并行就是:我们把模型切分,分布在不同的GPU上,随后将完整的数据送到这些切分后的不同模块中进行运算,最后将运算结果进行合并。模型切分: 我们知道一个网络有不同的层,我们可以将网络层切割分布到不同的GPU上。事实上,原创 2020-12-01 10:43:48 · 1244 阅读 · 0 评论 -
Pytorch dataloader加载指定的数据
综述pytorch dataloader加载指定的数据方法import itertools实现 target_3d_vd = next(itertools.islice(self.test_loader, test_index, None))假设self.test_loader是数据loader.test_index是需求的数据index。ps:如果testdata的batch不是1test_index = int(np.floor(test_index/batc原创 2020-11-10 17:40:56 · 2259 阅读 · 2 评论 -
conda安装库所在路径
综述conda安装库所在路径例子要定位conda环境下的test_env中的安装包mypkg 编译器:python3.6位置:anaconda3/envs/test_env/lib/python3.6/site-packages/mypkg原创 2020-11-09 10:31:54 · 8865 阅读 · 0 评论 -
csr 矩阵 转为 tensor
综述有时候我们会遇到稀疏矩阵: 他们表达为csr matrix.import numpy as npfrom scipy.sparse import csr_matriximport torch__author__ = 'Andrea Esuli'Acsr = csr_matrix([[1, 2, 0], [0, 0, 3], [4, 0, 5]])print('Acsr',Acsr)Acoo = Acsr.tocoo()print('Acoo',Acoo)Apt = torch原创 2020-10-28 10:44:33 · 4086 阅读 · 0 评论 -
reshape函数
综述reshape可以控制我们tensor或者矩阵的形状。常用的就不说了,直接输入目标矩阵的形状即可。代码reshape(1,-1)转化成1行:reshape(2,-1)转换成两行:reshape(-1,1)转换成1列:reshape(-1,2)转化成两列...原创 2020-10-28 09:14:51 · 6202 阅读 · 0 评论 -
tensorflow 矩阵复制 tile()
介绍将矩阵从(1, 24, 3, 3)变为(2, 24, 3, 3)。步骤: pose = tf.tile(MAT, multiples=[2, 1, 1, 1])MAT 是一个(1, 24, 3, 3)矩阵.原创 2020-10-28 00:39:13 · 577 阅读 · 0 评论 -
数据的优雅加载- glob与sorted
数据加载很多时候我们使用的原始数据是基于文件夹组织。这样会有两个很大的问题:很多时候基于文件结构的数据处理(网络的上传下载)会慢很多。数据不够紧致这里记录一下自己的处理方案: pattern = os.path.join(imgs_path, '*.jpg') img_list = sorted(glob.glob(pattern)) for item i in img_list:原创 2020-10-23 16:34:05 · 1042 阅读 · 0 评论 -
异构数据
关于异构数据异构数据是数据类型和格式具有高度可变性的任何数据。 由于缺少值,高数据冗余性和不真实性,它们可能是模棱两可且质量低下。一些处理三维扫描数据的工作 的输入就可以被看做异构数据。一般来说网络处理regular的data是完全可以的。但是考虑一些现实中的数据是需要考虑能够handle minibatches of hetereogenous data.定义出处:'Heterogeneous data are any data with high variability of data typ原创 2020-10-04 22:06:06 · 3771 阅读 · 0 评论 -
RGB与BRG opencv颜色
问题今天处理一个UV map的问题. 在颜色上,发现人体都变蓝了. 本来应该是肌肤的颜色.原因这是因为我们使用了RGB格式处理BGR的图像.事实上opencv就是这样子搞得.处理方法RGB2BGRbgr = rgb[...,::-1]BGR2RGBrgb = bgr[...,::-1]RGB2GBRgbr = rgb[...,[2,0,1]]Refhttps://blog.youkuaiyun.com/weixin_41813620/article/details/93197954原创 2020-06-06 20:10:27 · 1672 阅读 · 0 评论 -
EM算法
一般来说,如果我们要估计一个模型参数,很多情况下极大似然估计就可以满足我们。EM出现的原因,是因为很多时候无法直接使用极大似然。网上流传比较多的例子是:男生,女生的身高各自服从自己的分布(假设是正态分布)。如果数据没有混合在一起,那么MLE直接分别对男生数据和女生数据应用即可。现在的问题是:男生女生的身高数据混合在一起了。此时该怎么办?此时,我们除了识别这两个分布各自的均值、方差我们其实还面临着一个问题这个数据是来自男生还是女生?(我们将其看作一个隐含参数)(而且这里当然也有一个鸡生蛋)下面就原创 2020-06-05 21:19:43 · 490 阅读 · 0 评论 -
过拟合与欠拟合
Goodfellow的解释感觉很精辟:我们在训练网络的时候往往有两大目标:降低训练误差缩小训练误差与测试误差的差距这两点其实分别对应着: 欠拟合与过拟合。对于欠拟合,如果模型的容量(拟合各种函数的能力)过低则会导致网络难以拟合训练集-> 训练误差难以下降。对于过拟合,就是模型的学习能力过强,很好的fit了训练数据,但是却没有对测试集的泛化能力。(train loss低,test loss高)...原创 2020-05-28 15:28:51 · 410 阅读 · 0 评论 -
tensorflow tensor转numpy
sess = tf.Session() with sess.as_default(): change = tf.expand_dims( tf.reshape(batch_rodrigues((np.array(gt_data['pose_0']).flatten()).reshape(-1, 3).astype(np.float32)), (24, 3, 3)), 0) gt_data['po.原创 2020-05-17 14:11:01 · 1201 阅读 · 0 评论 -
K.int_shape函数
综述K.int_shape用于查看shape: from keras import backend as K input = K.placeholder(shape=(2, 4, 5)) K.int_shape(input) (2, 4, 5)原创 2020-05-09 21:56:47 · 4425 阅读 · 0 评论 -
OSError: `pydot` failed to call GraphViz.Please install GraphViz (https://www.graphviz.org/) and ens
综述OSError: pydot failed to call GraphViz.Please install GraphViz (https://www.graphviz.org/) and ensure that its executables are in the $PATH.环境Ubuntu 16解决安装graphviz sudo apt-get install graphvi...原创 2020-05-02 18:06:29 · 340 阅读 · 0 评论 -
Tensorflow1.13.1+cuda10.0+cudnn7+Nvidia驱动 安装记录
版本由于需要cuda10.0和cuda10.1都在用。后来各种出错,所以最后换成了10.0.cuda10.0 + cudnn7.5 + 驱动410Nvidia驱动410安装:这里是引用https://www.nvidia.com/content/DriverDownload-March2009/confirmation.php?url=/XFree86/Linux-x86_64/410....原创 2020-04-15 13:06:48 · 570 阅读 · 0 评论 -
神经网络的容量问题
综述一般来说,使用WN的网络容量是要大于普通神经网络的。如何理解网络的容量:一般来说,神经网络的参数对应着一组函数:函数集。我们之所以能够使用一个神经网络来逼近(拟合)某个目标函数是因为这个函数集包含了我们想要拟合的目标函数。这里容量就是**神经网络表示函数集要包含目标函数。**显然大的容量才让我们的搜索有保障。理论上已经证明足够多层的神经网络是可以拟合任何函数的。但是,实践中,我们网络的层...原创 2020-04-13 13:05:31 · 1328 阅读 · 0 评论 -
三维中的卷积行为
杂记一些成熟的2D图像处理深度学习方法(例如,语义分割,2D关节检测等)都需要利用了**“卷积”结构**,结构可以保留图像和输出之间的空间对应关系 。但是其实在3D领域,应用这种“结构”是有挑战性的。 一些工作为了可以利用完全卷积的方式,采用了体素voxel的表达方式,但是这种表示方法是内存密集型的,这种与生俱来的限制,制约了其生成精细尺度的三维表面的能力。...原创 2020-04-09 12:55:02 · 533 阅读 · 0 评论 -
PR,AP,mAP
首先是PR曲线: Precision-Recall曲线基本定义: precision和recall的含义, preicision是在你认为(模型预测的)的正样本中, 有多大比例真的是正样本, recall则是在真正的正样本中, 有多少被你找到了(预测对了)。问题核心: 我们需要一个对于score的threshold, 为什么呢? 比如在一个bounding box里, 我识别出来鸭子的s...原创 2020-03-08 14:31:51 · 651 阅读 · 0 评论 -
流形学习
概念流型学习(Manifold Learning)流型学习主要思想是将高维的数据映射到低维,同时能够保持原数据的本质特征。一个重要的观察是:许多真实世界的数据集具有较低的固有维数,即使它们嵌入在高维空间中。想象一下,你正在用你的相机拍摄全景,同时你自己也在旋转。我们可以把每一张照片看作是16,000000维空间中的一个点(假设是一个1600万像素的相机)。然而,这组图像大致处于一个三维空间中(...原创 2020-01-03 18:42:13 · 463 阅读 · 0 评论 -
DL-学习笔记
Training tipsRef机器学习,李宏毅(相当清楚):https://b23.tv/av35932863/p1原创 2020-01-01 14:25:28 · 686 阅读 · 0 评论 -
DL-Deconvolution与Upsample
DeconvolutionDeconvolution又叫做transposed convolution。其实就是卷积操作的逆过程。比如卷积操作使用2 x 2的滤波器对这个patch进行处理,那么这个patch经过卷积以后就变成了1 x 1像素块。Deconvolution就是将整个过程倒过来。容易想象这样拓展后的区域容易出现棋盘效益。就是一块一块不够自然地效果。因此人们会在配合Upsample...原创 2019-12-10 20:48:00 · 399 阅读 · 0 评论 -
DL-pytorch初步自定义网络
综述使用pytorch定义一个简单的网络import numpy as npimport torch.nn as nnimport torch.optim as optimclass SubclassModel (nn.Module): def __init__(self): super().__init__() self.hidden_linea...原创 2019-12-06 09:58:41 · 206 阅读 · 0 评论 -
onehot 编码
综述在数据处理时我们可能会处理分类型变量(categorical value)的特征。即:当我们讨论分类型数据时,我们不区分其取值是否有序。例如:衣服的颜色:红、黄、蓝。onehot编码就将:["红","黄","蓝"](N=3):红 -> 100黄 -> 010蓝 -> 001为什么呢?因为这样计算的欧氏距离是等距的。“如果使用one-hot编码...原创 2019-12-05 13:21:20 · 673 阅读 · 0 评论 -
DL-semantic segmentation/Classification+Localization/Object Detection/Instance Segmentation
综述算是笔记吧!计算机视觉主要任务划分:Semantic segmentation是pixel oriented。也就是面向像素的,事实上这种训练数据需要在每一个pixel上提供label。Classification+Localization 识别单个物品并且识别位置(E.g, draw box)Object Detection容易与前者混淆,事实上Object Detection是一...原创 2019-06-03 22:00:06 · 799 阅读 · 0 评论 -
DL-sigmoid激活函数性质与缺陷
综述Sigmoid函数是学习DL中activation function的必学经典。f(x)=1e−x+1f(x) = \frac{1}{e^{-x}+1}f(x)=e−x+11他的图像note: this pic is from here.他的一些好的性质简单带过:可微(这是使用chain rule所必须的)单调性对变量的scaling 能力问题问题一事实上sigm...原创 2019-05-23 17:12:56 · 896 阅读 · 3 评论