函数用法
文章平均质量分 57
numpy/pandas/tf/pytorch等等api函数的使用方法
Kun Li
自古山高水远路,无一不为风尘苦。
展开
-
opencv形状目标检测
fill:#333;1 相比较霍夫找直线算法, 霍夫找圆心算法极其复杂 现在还没弄懂,等弄懂了来补充算法过程 2 记录霍夫找直线的算法过程: 对于图上任意一点, 所有经过这个点的函数可以表示为: x0 cosO + y0sinO = p 其中, p 为…教你用OpenCV 和 Python实现圆物检测_opencv检测物体半径的代码_码农的后花园的博客-CSDN博客。OpenCV图像处理中“找圆技术”的使用-图像处理-双翌视觉。原创 2023-09-17 15:59:58 · 320 阅读 · 1 评论 -
git操作
前段时间入了小乌龟的坑,最近项目需要多人合作,就需要使用分支提交项目,这里刚好就使用到了创建分支功能,就记录一下使用的完整过程。本地commit相当于有了历史记录,拉下来的代码可以自动merge本地代码,如果不更改同一函数的话,若改统一函数,则涉及到人工merge,处理冲突。使用Git小乌龟初始化本地仓库并且创建新的分支提交(超详细图文教程,手把手教你做)_小乌龟新建分支_当C罗来敲代码时的博客-CSDN博客。自己的代码在提交前一定要commit,commit之后再pull,pull之后再push。原创 2023-03-28 15:14:47 · 83 阅读 · 0 评论 -
opengl,opengl es,egl,glfw,glew
opengl定义了一个跨编程语言,跨平台的应用程序接口,opengl es是opengl的嵌入式版本,用于ios和android,后来一些追求高性能的设备也开始用这种api,opengl es是opengl的子集,区别在于opengl es删减了opengl一切低效能的操作方式,有高性能的绝不留低效能的,即只求效能不追求兼容性,opengl es能实现的,opengl也能实现,opengl部分api,opengl es不支持。OpenGL 是跨平台的、专业的图形编程接口,而接口的实现是由厂商来完成的。原创 2022-11-30 11:05:44 · 2390 阅读 · 0 评论 -
cv2.matchShape()
函数cv2.matchShape()可以比较两个形状或轮廓的相似度。如果返回值越小,匹配越好。它是根据Hu矩来计算的,Hu矩是归一化中心矩的线性组合,之所以这么做是为了能够获取代表图像的某个特征的矩函数,这些矩函数对某些变换如缩放,旋转,镜像映射(除了h1)具有不变性。double cv::matchShapes ( InputArray contour1,InputArray contour2,int method,double parameter ) Py...原创 2022-05-02 11:58:44 · 2428 阅读 · 0 评论 -
cv2.contourArea、cv2.arcLength、cv2.approxPolyDP、cv2.convexHull、cv2.boundingRect、cv2.minAreaRect
这里面相对比较核心的是cv2.boundingRect和cv2.minAreaRect,后者用的非常多,上述所有方法的输入都是点集,对于minAreaRect,输入的是findContours找到的点集,然后获取一个完整的边界矩形,这个边界矩形通常会作为检测的结果,在文本检测中是常用的。我这里先给一个任务,然后来看一下以上这些方法是如何作用的?任务本身还简单,就是将下面这张图做一些切分,分成上下横版和竖版两张图。import osimport cv2import nu...原创 2022-05-02 11:15:35 · 8638 阅读 · 0 评论 -
cv2.findContours、cv2.drawContours
cv2.findContours()是非常常用的方法,在文字检测例如dbnet的后处理中,通常预测产生的概率图或者二值图要产生检测的边界,通常使用findContours方法找出边界在还原,除此之外一些对边缘的监督学习制作的标签也往往使用findContours方法。这个方法也有个缺点就是速度很慢,如果一次检测的二值图有很多的话,每个二值化都要找所有的边界点的话会很慢,虽然可以控制是否存储所有点,但是找的过程是针对所有点而言的。void cv::findContours ( Inpu...原创 2022-05-01 17:42:56 · 1894 阅读 · 0 评论 -
cv2.warpAffine、cv2.warpPerspective
opencv提供了两个变换函数,cv2.warpAffine和cv2.warpPerspective,使用这两个函数你可以实现所有类型的变换,cv2.warpAffine接收的参数2x3的变换矩阵,而cv2.warpPerspective接收的3x3的变换矩阵。1.扩展缩放import cv2import numpy as npimg=cv2.imread('messi5.jpg')# 下面的None 本应该是输出图像的尺寸,但是因为后边我们设置了缩放因子# 因此这里...原创 2022-04-30 22:28:11 · 2401 阅读 · 1 评论 -
cv2.copyMakeBorder()
数据处理的padding中经常用到,通常一张图送入到网络中,可以通过透视变换变成目标图,或者等比变换,两边padding,像yolov3的预处理一样。原创 2022-04-30 16:21:11 · 1665 阅读 · 0 评论 -
cv2.rectangle()
cv2.rectangle()void cv::rectangle ( InputOutputArray img,Point pt1,Point pt2,const Scalar & color,int thickness = 1,int lineType = LINE_8,int shift = 0 ) Python:img = cv.rectangle( img, pt1, pt2, color[, thickness[, lineType[, shif原创 2022-04-10 21:10:30 · 9380 阅读 · 2 评论 -
opencv_python
第一章:走进opencv第二章:opencv中的gui特性2.1 图片2.1.1 使用opencv读入图片;显示图片;保存图片2.1.2 使用matplotlib2.2 视频2.2.1 用摄像头捕获视频2.2.2 从文件中播放视频2.2.3 保存视频2.3 opencv中的绘图函数2.3.1 画线2.3.2 画矩形...原创 2022-04-10 19:33:47 · 3688 阅读 · 0 评论 -
Numpy 数据处理函数
np.mean/max/min/average/median/var(方差)/std(标准差)/sqrt/dot/cov(协方差矩阵)np.ptp() 可以返回数组中最大和最小值的差值np.where() ,where函数可以根据指定的条件返回所有满足条件的数组元素的索引值。np.take(),take函数获取这些索引值相应的元素值。np.argmax()/argmin() 返回数组中最大/最小元素的索引值np.apply_along_axis():函数会调用另外一个由我们定义.原创 2020-11-22 21:31:08 · 322 阅读 · 0 评论 -
Numpy 数据处理基础
一.Numpy 基础1.Numpy 数组是有数据类型的,更确切的说,Numpy数组中的每一个元素均为相同的数据类型。2.reshape(4点把坐标转成22一对)3.切片4.ravel/flatten/transpose原创 2020-11-22 16:13:44 · 260 阅读 · 0 评论 -
prelu()的 tf 代码
def prelu(self, _x): alphas = tf.get_variable('alpha', _x.get_shape()[-1], initializer=tf.constant_initializer(0.0), dtype=tf.float32) pos = tf.nn...原创 2019-01-21 20:30:32 · 2333 阅读 · 1 评论 -
tf.nn.moments( ) 的用法
def moments( x, axes, shift=None, # pylint: disable=unused-argument name=None, keep_dims=False)x: 形如:[batch_size, height, width, kernels]axes: 求解的维度,如 [1,2,3]keep_dims: 是否保...原创 2019-01-21 20:07:36 · 16978 阅读 · 0 评论 -
tf.map_fn( )的用法
map_fn(fn, elems, dtype=None, parallel_iterations=None, back_prop=True, swap_memory=False, infer_shape=True, name=None)其中 fn 是一个可调用函数,可以使用 lambda 来表示,elems 是需要处理的 tensors, tf 将会从第一维开始展开,...原创 2019-01-20 20:42:08 · 28716 阅读 · 0 评论 -
tf.pad( )的用法
pad(tensor, paddings, mode="CONSTANT", name=None, constant_values=0)pad 在网络结构设计中可以说是很常见的操作了。paddings是[N,2] 的形式,N代表是张量的阶,2代表是2列,列必须是2. t = tf.constant([[1, 2, 3], [4, 5, 6]]) paddings = tf.con...原创 2019-01-20 20:09:55 · 4649 阅读 · 0 评论 -
sparse_to_dense()和sparse_tensor_to_dense()的用法
Sparsetensor(indices=[[0, 0], [1, 2]], values=[1, 2], dense_shape=[3, 4])dense tensor:[[1, 0, 0, 0] [0, 0, 2, 0] [0, 0, 0, 0]]tensorflow 使用三个dense tensor来表达一个sparse tensor:indices、value、dense_...原创 2019-01-20 16:12:19 · 15796 阅读 · 0 评论 -
tf.slice()和 tf.gather()的对比
之前讲过 tf.gather 根据索引去找相应维度的子集tf.slice(input,begin,size,name=None) 按照指定的下标范围抽取连续区域的子集tf.gather(input,begin,size.name=None) 按照指定的下标集合从 axis=0 中抽取子集,适合抽取不连续区域的子集。 t = tf.constant([[[1, 1, 1], [2...原创 2019-01-20 15:44:14 · 2017 阅读 · 0 评论 -
tf.image.crop_and_resize( )的用法
tf.image.crop_and_resize(image,boxes,box_ind,crop_size,methpd='bilinear',extrapolation_value=0,name=None)image: 表示特征图boxes:指需要划分的区域,输入格式为[ymin,xmin,ymax,xmax]设crop的区域坐标是[y1,x1,y2,x2],那么想要得到相应正确的...原创 2019-01-17 16:12:32 · 7703 阅读 · 0 评论 -
tf.gather( )的用法
tf.gather(params,indices,axis=0 )从params的axis维根据indices的参数值获取切片如上图所示,params一共6个维度,indices为[2,1,3,4]被取了出来。原创 2019-01-16 22:29:49 · 59745 阅读 · 0 评论 -
tf.logging.set_verbosity(tf.logging.INFO)
在tensorflow中函数可以直接log打印tensorflow使用5个不同级别的日志消息。按照上升的顺序,他们是debug,info,warn,error和fatal。在任何级别配置日志记录时,tf将输出与该级别相对用的所有日志信息。在跟踪模型训练时,将级别调整为info,将提供适合操作正在进行的其他反馈。比如可以在tensorboard中看训练过程的loss,acc的变化情况。比如在...原创 2018-12-17 16:23:02 · 5638 阅读 · 2 评论 -
cv2.threshold( ) 函数
像素高于阈值时,给像素赋予新值。cv2.threshold(src,thresh,maxval,type[,dst])该功能将固定级阈值应用于多通道阵列。 该函数通常用于从灰度图像中获取二进制图像(v :: compare也可用于此目的)或用于消除噪声,即滤除太小或太小的像素,很大的价值。 函数支持几种类型的阈值处理。 它们由类型参数确定。此外,特殊值cv :: THRESH_OTSU或c...原创 2018-11-08 22:07:21 · 17387 阅读 · 1 评论 -
tf.data.Dataset.from_tensor_slices( )
我们在转化数据集时经常会使用这个函数,他的所用是切分传入的 Tensor 的第一个维度,生成相应的 dataset 。1.对传入的(5,2)进行切分,最终产生的dataset有5个元素,每个元素的形状都是(2,)2.在图像识别中可能出现的字典或者元组的矩阵情况,因为将图像数字化之后,会产生矩阵和对应的标签。比如:{”image”:image_tensor,”label”:label...原创 2018-11-04 20:55:53 · 33590 阅读 · 7 评论 -
tf.reduce_sum( ) 函数用法
reduce_sum( ) 是求和函数,在 tensorflow 里面,计算的都是 tensor,可以通过调整 axis =0,1 的维度来控制求和维度。原创 2018-10-24 19:21:48 · 78728 阅读 · 4 评论 -
.cast( )函数的使用
tf.cast( ) 或者K.cast( ) 是执行 tensorflow 中的张量数据类型转换,比如读入的图片是int8类型的,一定要在训练的时候把图片的数据格式转换为float32.这样就能够将其转换成 0 或 1 的序列,进行one-hot encoding。 ...原创 2018-10-24 15:55:24 · 13597 阅读 · 0 评论 -
boxcox1p变换参数lambda估算方法
Box-Cox 变换是常见的一种数据变换,用 于连续的响应变量不满足正态分布的情况。Box-Cox变换之后,可以一定程度上减小不可观测的误差和预测变量的相关性。比如在使用线性回归的时候,由于残差 epsilon 不符合正态分布而不满足建模的条件,这时候要对响应变量Y进行变换,把数据变成正态的。这是一种根据数据自动寻找「最佳」变换函数的方法...原创 2018-10-20 19:33:09 · 4863 阅读 · 0 评论 -
np.log1p( ) 函数的应用
数据平滑处理 -- log1p( ) 和 exmp1( )1. 数据预处理时首先可以对偏度比较大的数据用og1p函数进行转化,使其更加服从高斯分布,此步处理可能会使我们后续的分类结果得到一个好的结果。2. 平滑问题很容易处理掉,导致模型的结果达不到一定的标准,log1p( )能够避免复值得问题 — 复值指一个自变量对应多个因变量log1p( ) 的使用就像是一个数据压缩到了一个区间,...原创 2018-10-20 10:21:10 · 31946 阅读 · 3 评论 -
QQ图,stats.probplot
The quantitle-quantile(q-q) plot is a graphical technique for determining if two data sets come from populations with a common distribution.它主要是直观的表示观测与预测值之间的差异。一般我们所取得数量性状数据都为正态分布数据。预测的线是一条从原点出发的45...原创 2018-10-20 09:50:38 · 9674 阅读 · 0 评论 -
pandas中的set_index( )函数
set_index( ) 将 DataFrame 中的列转化为行索引。如下图所示:默认的,当列变成行索引之后,原来的列就没了,但是可以通过设置drop来保留原来的列。原创 2018-10-18 20:56:36 · 75889 阅读 · 1 评论 -
tf.nn.embedding_lookup的用法
tf.nn.embedding_lookup函数是选取一个张量表中对应索引的元素。第一个参数对应张量,第二个参数对应索引原创 2018-04-04 15:16:57 · 559 阅读 · 0 评论 -
np.unique( )的用法
该函数是去除数组中的重复数字,并进行排序之后输出。原创 2018-03-23 21:10:19 · 123719 阅读 · 3 评论 -
np.argwhere()的用法
np.argwhere( a ) Find the indices of array elements that are non-zero, grouped by element.返回非0的数组元组的索引,其中a是要索引数组的条件。返回数组中所有大于1的数字的索引值。...原创 2018-03-23 20:51:02 · 106261 阅读 · 2 评论 -
利用python中matplotlib打印混淆矩阵
前面说过混淆矩阵是我们在处理分类问题时,很重要的指标,那么如何更好的把混淆矩阵给打印出来呢,直接做表或者是前端可视化,小编曾经就尝试过用前端(D5)做出来,然后截图,显得不那么好看。。代码:import itertoolsimport matplotlib.pyplot as pltimport numpy as npdef plot_confusion_matrix(cm, classe...原创 2018-03-07 13:40:57 · 6884 阅读 · 0 评论 -
从混淆矩阵中计算每一类的分类精度和总体平均精度
计算每一类的分类精度,进而求总体的平均精度是分类问题很常用的评价指标,当我们计算出混淆矩阵之后,需要对混淆矩阵进行量化分析,最明显的指标就是计算分类精度,下面提供一种计算方面,使用sk-learn的apinp.diag是将对角线的值取出来,也就是正确分类的样本数的分布,axis=1,是行维度,实际就是预测样本数分布,np.sum就是将预测的每类样本数进行求和。nan_to_num是将部分真除之后会...原创 2018-03-06 10:18:26 · 18403 阅读 · 8 评论 -
confusion_matrix 混淆矩阵的用法
混淆矩阵被用于在分类问题上对准确率的一种评估形式,我们经常通过观察混淆矩阵的对角线来评估出模型的分类效果,最理想的结果就是所有的数据都在对角线上,那么说明分类精度最高,下面看一个例子:可以看到预测数据集是["ant", "ant", "cat", "cat", "ant", "cat"],标签数据集是["cat", "ant", "cat&原创 2018-03-06 09:40:06 · 6971 阅读 · 0 评论 -
overall accuracy 总体精度的计算
总体精度是在分类问题上常用的指标,通常都是使用基于sk-learn的api来计算模型最终在测试数据集上的总体精度,总体精度(OA)与平均精度(AA)不同,总体精度是模型在所有测试集上预测正确的与总体数量之间的比值,平均精度是每一类预测正确的与每一类总体数量之间的比值,最终再取每一类的精度的平均值。normalize = False,这个参数表示返回正确的个数...原创 2018-03-05 21:54:48 · 23828 阅读 · 4 评论 -
Multi class log loss 多分类的对数损失
在kaggle比赛中,经常需要提交log loss,对数损失是经常用到的一个评价指标。其定义为给定概率分类器预测的真实标签的负对数似然率。每一个样本的对数损失就是在给定真实样本标签的条件下,分类器的负对数似然函数: -log P(yt|yp) = -(yt log(yp) + (1 - yt) log(1 - yp))当某个样本的真实标签y=1时,loss=-log原创 2018-02-20 15:35:06 · 11613 阅读 · 0 评论 -
sk-learn中StratifiedShuffleSplit()函数 实现对数据集的划分
sk-learn中提供了对数据集进行打乱划分的函数,StratifiedShuffleSplit()是非常实用的函数,数据集在进行划分之前,首先是需要进行打乱操作,否则容易产生过拟合,模型泛化能力下降。sklearn.model_selection.StratifiedShuffleSplit(n_splits=10, test_size=’default’, train_size=None, r...原创 2018-02-11 23:13:11 · 14010 阅读 · 0 评论 -
openvc中morphologyEx()函数
openvc中morphologyEx()函数是一种心态学变化函数。数学形态学可以理解为一种滤波行为,因此也称为形态学滤波。滤波中用到的滤波器(kernal),在形态学中称为结构元素。结构元素往往是由一个特殊的形状构成,如线条、矩形、圆等。 开运算(open):先腐蚀后膨胀的过程。开运算可以用来消除小黑点,在纤细点处分离物体、平滑较大物体的边界的同时并不明显改变其面积。原创 2018-02-11 20:23:23 · 8920 阅读 · 1 评论 -
opencv中的cv2.getStructuringElement()
cv2.getStructuringElement( ) 返回指定形状和尺寸的结构元素。这个函数的第一个参数表示内核的形状,有三种形状可以选择。矩形:MORPH_RECT;交叉形:MORPH_CROSS;椭圆形:MORPH_ELLIPSE;第二和第三个参数分别是内核的尺寸以及锚点的位置。一般在调用erode以及dilate函数之前,先定义一个Mat类型的变量来获得getSt...原创 2018-02-11 20:06:31 · 52426 阅读 · 0 评论