功能代码积累
NuerNuer
这个作者很懒,什么都没留下…
展开
-
OpenMMLab之Registry机制
OpenMMLab之Registry机制原创 2022-09-29 20:47:39 · 4872 阅读 · 0 评论 -
OpenMMLap之Hook机制详解
openmmlab中的hook分析原创 2022-09-29 19:58:55 · 3000 阅读 · 0 评论 -
python修饰函数用法,结合mmcv中的Registry类说明
修饰函数原创 2022-09-27 22:03:04 · 431 阅读 · 0 评论 -
记录之mmdet新增数据集
mmdet 中的 Registry原创 2022-09-27 21:19:12 · 719 阅读 · 0 评论 -
LeTax记录\documentclass{},authoryear属性使用
关于elsevier期刊中引用格式的一些记录原创 2022-07-26 20:29:15 · 655 阅读 · 0 评论 -
.h5文件忘记数据库名字,使用h5py打印
h5py读取文件因忘记数据库名称而失败的解决办法原创 2022-06-19 15:01:47 · 351 阅读 · 0 评论 -
图像重建生成领域指标之Sharpness Difference(SD)计算方法
该指标在2016年的leCunn的一篇文章中有详细的解释,https://arxiv.org/abs/1511.05440具体的实现方式:import numpy as npimport osimport cv2import tensorflow as tffrom tensorflow.keras import layersimport tensorflow.compat.v1 as tf1tf1.disable_v2_behavior()def log10(t): .原创 2022-04-07 22:19:10 · 1235 阅读 · 1 评论 -
tensorflow实现梯度累计,再回传
由于主机显卡只有12g的显存,且只装了一块30系列的卡,因此在跑代码时难免会遇到batch_size不能太大的尴尬,因此可以通过,梯度累计的方式进行优化,来变相扩大batch_size。上代码,解释:def train(): ... ... trainable_vars = tf.trainable_variables() # set trainable variables vit_trainable_vars = [var for var原创 2022-01-16 22:18:39 · 3526 阅读 · 0 评论 -
记录之tensorflow和pytorch中的取范数归一化操作
最近在将tensorflow翻译成torch的时候遇到了一个问题,就是有一个函数 tf.nn.l2_normalize没有找到相应的替换函数,无奈自己手写了一个这样的操作,最近在阅读令一个torch源码时发现了,就及时记录tf:import tensorflow as tftf.nn.l2_normalize(x, dim, epsilon=1e-12, name=None)参数:x:输入;dim:为l2范化的维数epsilon:范化的最小值边界torch:import.原创 2022-01-16 21:24:09 · 1015 阅读 · 0 评论 -
AssertionError: Invalid device id 和RuntimeError: CUDA error: invalid device ordinal
我在使用torch多卡并行时出现了这个两个问题。##问题一:AssertionError: Invalid device id,即无效的设备id出现的原因:结合代码解释:import ...os.environ["CUDA_VISIBLE_DEVICES"] = "2,3"model = model(...)torch.cuda.set_device(2)model = torch.nn.DataParrel(model, device_ids=[2,3])错误原因:o原创 2022-01-14 17:27:40 · 12549 阅读 · 0 评论 -
pytorch选出数据中的前k个最大(最小)值及其索引
选择最大值及其索引,大家都知道使用max(),argmax()函数。那么如何返回前k个最大值呢,这在我们计算topK准确率的时候很有必要:在torch中,我们可以使用sort函数来实现:a, idx1 = torch.sort(data, descending=True)idx = idx1[:k]Return:a:排好序的数据idx1:对应排序数据的索引因此只需设置k的大小,就可以截取到前k个最大值的索引。这里若数据是tensor则用torch,若是list或ndarray,可原创 2021-12-13 16:50:30 · 10770 阅读 · 5 评论 -
opencv+pythons相机标定源码解析
相机标定原理,这里不再赘述,一般使用张友正相机标定法。这里只介绍了标定相机内参的方法,即3x3的matrix。import cv2import numpy as npimport glob# 设置寻找亚像素角点的参数,采用的停止准则是最大循环次数30和最大误差容限0.001criteria = (cv2.TERM_CRITERIA_MAX_ITER | cv2.TERM_CRITERIA_EPS, 30, 0.001)# 获取标定板角点的位置objp = np.zeros((5 * 7原创 2021-09-22 22:19:30 · 623 阅读 · 0 评论 -
matplotlib.pyplot分区绘图
这里没有过多强调细节,这里只给出使用方法方法一:使用plt.subplot函数plt.figureplt.subplot(1,2,1) #表示1行2列的第一个区域plt.plot(..)plt.legend(..)plt.xlabel(..)plt.ylabel(..)plt.subplot(1,2,2) #表示1行2列的第二个区域plt.plot(..)plt.legend(..)plt.xlabel(..)plt.ylabel(..)plt.show()方法二:使原创 2021-09-13 17:45:09 · 2084 阅读 · 0 评论 -
python 之 click 包,设置命令行参数
click包一般用于带参数的python脚本运行,是通过装饰器来把一个函数方法装饰成命令行接口的,常见的装饰器有:1. @click.command():将其下面的函数方法装饰为命令行接口选项,(我们称为一个command实例或子命令),实现在命令行运行时可选2. @click.option(’--xxx’, '-x', default=1,prompt=‘Your name’,type=int,nargs=1,help=‘Number of greetings) 参数释义:--xxx:即下列..原创 2021-08-10 20:09:31 · 4101 阅读 · 0 评论 -
Numpy中求向量和矩阵的范数
import numpy as np函数: np.linalg.norm(x, ord=None, axis=None, keepdims=False)参数释义:x:向量或矩阵 ord:范数类型,默认二范数,ord1=1,求一范数,即元素绝对值和,ord=2,求二范数,ord=np.inf,求无穷范数,即max(|x_i|) axis:维度处理,axis=1表示按行向量处理,求多个行向量的范数;axis=0表示按列向量处理,求多...原创 2021-08-05 22:56:47 · 856 阅读 · 0 评论 -
skimage函数记录之measure.label和measure.regionprops
这两个函数可以用来处理图(一般是二值图)中出现的连通区域,我们来分别分析。一.skimage.measure.label(input,background= None,return_num= False,connectivity= None)功能:标记图中的连通区域参数解释:input:输入二值图 background:指定北京元素像素值,默认为0 return_num:bool变量,True:返回(label...原创 2021-07-31 22:52:43 · 5455 阅读 · 1 评论 -
记录 之 不同的Normalization方式
Normalization是加速神经网络训练的一种重要方法,随着深度学习的发展以及各种任务的出现,催生出了一系列的Normalization方式,现在主流的正则化方式有Batch Normalization,Group Normalization,Instance Normalization,Layer Normlization,Positional Normalization五种。批规范化 (Batch Normalization) 方法用于计算机视觉任务的深度神经网络。如上图...原创 2021-07-12 00:15:53 · 281 阅读 · 3 评论 -
plot 绘制 混淆矩阵,通过plt.figure调整画布大小和图片清晰度
因为函数较多,所以直接上代码,并在代码中进行函数注释。def plot_confusion_matrix(cm, labels_name, title): # cm = cm / cm.sum(axis=1)[:, np.newaxis] # 归一化 plt.imshow(cm, interpolation='nearest') # 在特定的窗口上显示图像 plt.title(title, fontsize = 50) # 图像标题 plt.colorbar(原创 2021-05-14 12:17:52 · 8120 阅读 · 1 评论 -
使用 plot 绘制折线图,关于如何让坐标轴纵向显示和显示图例的一点技巧
这是比较基本的操作,我们就直接讲解代码了import matplotlib.pyplot as pltimport matplotlib.ticker as tickerinput_value = ['aaaaaaaaaaaaaab','bbbbbbbbbbbbbbc','cccccccccccccccccd','dddddddddddddddde','eeeeeeeeef','ffpp']squares_1 = [1,5,3,2,6,4]squares_2 = [2,6,1,8,6,1]原创 2021-05-11 20:41:35 · 3273 阅读 · 0 评论 -
记录 之 跨服务器上传和下载文件
例 A.192.168.161.75,B.132.49.34.73。1.下载:在A服务器上操作,将B远程服务器上/home/lk/目录下所有的文件全部复制到本地的/root目录下,命令为:scp -r root@132.49.34.73:/home/zjw /root2.上传:在A服务器上操作,将/root下的a.txt复制到B远程服务器的/home/zjw目录下,命令为:scp a.txt root@132.49.34.73:/home/zjw...原创 2021-04-23 00:56:48 · 361 阅读 · 0 评论 -
记录 之 cat 和 awk gsub 的使用
cat : 用于连接文件并打印到屏幕上;awk中gsub可以进行匹配替换;gsub:gsub(A,B)利用B替换A gsub(A,B,C)在指定的C中用B替换Aexample:ABCD abcd HJIKEL AbDE SGWAawk -F "\t" '{gsub("A","DA");print $0}' example输出:DABCD abcd HJIKEL DAbDE SGWDA//------------------...原创 2021-04-23 00:45:05 · 628 阅读 · 0 评论 -
记录 之 numpy查看数据类型和类型转换
1.查看某个ndarray的数据类型,只需使用.dtype即可查看例:a.dtype2.类型转换,将某个数组转换为另一种类型的数组,只用astype即可例:a.astype(np.int64)在tensorflow中,我们使用tf.cast(tensor, dtype=?)函数来实现对tensor的强制类型转换...原创 2020-12-24 16:54:05 · 576 阅读 · 1 评论 -
tensorflow 之 最近用到的几个小操作tf.reshape,tf.convert_to_tensor,tf.where
1.tf.reshape() #调整tensor的形状img = ....img_res = tf.reshape(img, [-1])着重记录是shape=[-1]时,相当于flatten操作,与此对应的是在tf.placeholder()中shape=None时,要求输入为一维。2.tf.convert_to_tensor() #将ndarray等转换为tensorx = np.array([[1,1],[2,2]])tx = tf.convert_to_tensor(x)3原创 2020-12-24 16:48:38 · 185 阅读 · 1 评论 -
坑 之 You must feed a value for placeholder tensor ‘label_input‘ with dtype float and shape
首先检查图中的tf.placeholder(),你在sess.run的时候是否feed满足dtype和shape的数据。如果你这两项都没错的话,那么你极有可能犯了重命名的错误,这里指的是使用占位符生成的变量和图中某个图操作节点的名称相同,也会报这个错误,例:pred = tf.placeholder(tf.int64, shape = None, name='img_input')gt = tf.placeholder(tf.int64, shape = None, name='label_inpu原创 2020-12-24 16:34:11 · 6717 阅读 · 11 评论 -
坑 之 使用numpy的tofile和fromfile读取数据
这里关于两种方法如何使用的博文已经很多了,具体用法可以参考这两篇博客:https://blog.csdn.net/kebu12345678/article/details/54837245和https://www.jb51.net/article/143411.htm这里我要讲的是我遇到的坑,就是我发现我读取的数据(shape=[321,321,1])和保存的数据(正常来说应该有321*321个元素)数据元素个数不一致,这是什么原因导致的?就是我在使用fromfile读取的时候未使用保存时的类型读..原创 2020-12-24 16:14:00 · 4331 阅读 · 1 评论 -
坑 之 tensorflow使用sess.run处理图片时越来越慢,占用内存越来越大的问题
最近在项目中需要使用tensorflow来对图片进行预处理,但是使用sess.run时代码越来越慢,知道最后几分钟才能处理一张图片,这可怎么能行,我的数据集有数万张图片......原始代码def process(img, .. , .. ,): ....... return imgdef main(): ....... with tf.Session() as sess: for i in range(len(dataset)):原创 2020-12-24 15:32:21 · 677 阅读 · 3 评论 -
记录 之 tensorflow常见的数据预处理操作
今天我们简单的介绍几个比较常用的函数:一.裁剪及pad操作0.tf.image.random_crop(image, shape)#按shape随机裁剪#原始图像#裁剪形状,[a,b,..]1.tf.image.central_crop(image, 0.6)# 原始图像# 裁剪比例2.tf.image.crop_to_bounding_box(image, offset_height, offeset_width, target_height, target_width)#裁剪#原创 2020-12-14 17:15:29 · 315 阅读 · 0 评论 -
记录 之 tf.placeholder() 函数的意义及用法
函数原型:tf.placeholder(dtype, shape=None, name=None)参数释义:1.dtype:数据类型。常用的是tf.float32,tf.float64等数值类型 2.shape:数据形状。默认是None,就是一维值,也可以是多维(比如[2,3], [None, 3]表示列是3,行不定) 3.name:名称在编写程序时,首先构筑整个系统的graph,此时图中的节点是未经初始化的,代码并未生效...原创 2020-12-05 15:26:46 · 2829 阅读 · 1 评论 -
python 利用pandas库实现 读写 .csv文件
最近在处理ILSVRC12数据集,有一个需求就是将图片路径和标签写入.csv文件中,这里我们用到了pandas库,当然也有不用pandas库的方法,这里不再介绍,因为pandas处理起来是真的香啊1.写入CSV文件。话不多说,我们直接在上代码,并在代码里解释def create_csv_for_val(): image_path = 'G:\\ILSVRC2012\\ImageNet\\ILSVRC2012_img_val' label_path = 'G:\\ILSVRC201原创 2020-11-25 16:55:27 · 1046 阅读 · 0 评论 -
记录 之 tf.data进行数据集处理常用的几个函数介绍
1.tf.data.Dataset.from_tensor_slices(),前面的文章我们有介绍过。2.tf.data.Dataset.shuffle(buffer_size = n)这里的shuffle函数是将数据集进行混洗,已达到次序的优化,这里的buffer_size的作用是先从原数据集中预取n个数据,然后每次从缓冲区中抽取一个元素,来达到输入数据无序的目的,buffer_size的大小设置也会影响实验结果,一般将buffer_sizeshe设置为len(your_dataset),即buf原创 2020-11-23 21:45:20 · 664 阅读 · 0 评论 -
记录 之 tensorflow函数:tf.data.Dataset.from_tensor_slices
tf.data.Dataset.from_tensor_slices(),是常见的数据处理函数,它的作用是将给定的元组(turple)、列表(list)、张量(tensor)等特征进行特征切片。切片的范围是从最外层维度开始的。更具体的,假设我们有一组特征集合(features),以及这组数据集合所对应的标签集合(labels),那么我们如何将每个数据与其对应的标签进行组合,构成一个个完整训练数据集合([feature_1, label_1],[feature_2, label_2],........).讲原创 2020-11-23 20:42:00 · 1959 阅读 · 0 评论 -
记录 之 tensorflow 常用函数:tf.split(),tf.clip_by_value() 和 tf.cond()
1.tf.split(axis, num_or_size_splits,value)该函数是通道拆分函数,将原来的的多通道tensor,拆分为单通道axis:拆分的维度num_or_size_splits:拆分为几份value:需要拆分的tensor实例:import tensorflow as tfa = tf.random_uniform((4,2,3))c1,c2,c3 = tf.split(axis = 2, num_or_size_splits = 3, value =原创 2020-11-23 17:48:09 · 207 阅读 · 0 评论 -
记录 之 tensorflow中几个常用的函数:tf.unstack,tf.concat() 和 tf.stack() 等
1.tf.to_int32();tf.to_float()等 函数,主要是强制类型转换函数;2.tf.shape(tensor);获取tensor的尺寸3.tf.round(a);四舍五入函数,张量的值四舍五入为最接近的整数4.tf.unstack(matrix, axis = ‘ ’);矩阵分解函数matrix:需要拆解的矩阵axis:沿某一维度进行拆解,值得注意的是,在使用的时候,axis = 不可缺省,axis 取值范围是[-a,a),a是matrx的维度例:impor...原创 2020-11-23 16:57:17 · 576 阅读 · 0 评论 -
记录 之 整形数除整形数 产生的数据依然是整形,难搞哦
我的问题就是,我用整形数a去除另一个整形数b,产生的c = a / b ,这里是自动下取整的,所以有时候会产生不必要的错误。于是我,天真的这样用了即,c = float(a / b),这样是將下取整后的整形数转化为了float型,即0-> 0.0。依然有问题正确用法:1.c = float(a)/ b2.c = c * 1.0 / b当然还有许多其他办法,这里就列举这两个啦。另外,將一个整形数组转换为指定数据类型时,可以用.astype("xxxx")函数来实现。...原创 2020-11-17 00:22:31 · 715 阅读 · 0 评论 -
latex中bibtex中引用会议和期刊论文时的写法及规则
首先,新建一个文件夹ref,并新建一个xxx.bib文件(不熟悉这个操作的同学,可以查看这篇文章),接下来就只需要来对.bib文件来进行编辑。期刊论文:@article{leiserson1985fat, title="{Fat-trees: Universal Networks for Hardware-efficient Supercomputing}", author={Leiserson, Charles E}, journal={IEEE Trans. on Computer原创 2020-09-10 11:10:06 · 17624 阅读 · 1 评论 -
关于LeTax中图形放置的参数理解
图形或表格环境有一个可选参数项允许用户来指示图形有可能 被放置的位置。这一可选参数项可以是下列字母的任意组合。h当前位置。 将图形放置在 正文文本中给出该图形环境的地方。如果本页所剩的页面不够, 这一参数将不起作用。t顶部。 将图形放置在页面的顶部。b底部。 将图形放置在页面的底部。p浮动页。 将图形放置在一张允许有浮动对象的页面上。参考...原创 2020-09-05 19:30:01 · 257 阅读 · 0 评论 -
LeTax如何多行注释
单行注释:直接使用 % 即可多行注释:1.引入verbatim宏包(\usepackage{verbatim}),然后:需要注释的段落:\begin{comment}.....\end{comment}2.使用ifflase,需要注释的段落\ifflase.....\fi原创 2020-09-05 19:22:39 · 186 阅读 · 0 评论 -
记录 之 numpy扩充某一维度,并重复填充
这是一个非常有用的功能,例如我们相用一个一维数组来填充一个二维数组,我们应该怎么做呢,首先先来了解两个函数:1.numpy.expand_dims(data,axis) #data,表示数据,axis表示需要扩展的维度2.numpy.repeat(data,k,axis) 或 data.repeat(k,axis) #data,表示数据,k 表示扩充的倍数,axis表示要扩充的维度值得注意的是,上述函数的执行都需要用一个新的值来承接变化之后的data。即data_ =numpy.expand_.原创 2020-08-25 18:32:54 · 10117 阅读 · 1 评论 -
pytorch 之 冻结某层参数,即训练时不更新
首先,我们知道,深度学习网络中的参数是通过计算梯度,在反向传播进行更新的,从而能得到一个优秀的参数,但是有的时候,我们想固定其中的某些层的参数不参与反向传播。比如说,进行微调时,我们想固定已经加载预训练模型的参数部分,指向更新最后一层的分类器,这时应该怎么做呢。首先我们的模型定义为:class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Con原创 2020-08-07 13:27:08 · 16848 阅读 · 7 评论 -
python 之 del() 函数
del用于list列表操作,删除一个或者连续几个元素。例:定义一个list型数据,data = [1,2,3,4,5,6]1.del(data):删除整个list。2.del(data[i]):删除data中索引为i个数据3.del(data[i:j]):删除data中第i个数据到第j个数据之前(不含j)的数据...原创 2020-08-06 13:47:13 · 24972 阅读 · 6 评论