Python
文章平均质量分 55
老光头_ME2CS
机械转计算机视觉的光头老僧
展开
-
Python 连续分布离散化,计算熵
总的流程:划分一个连续分布为离散分布,计算每个区间内的统计频数,并计算分布的熵两种方法实现:pandas.cutpd.cut方法对分布按照bins的区间划分,对每个区间的频数进行统计,除以总数得到概率,最后计算熵bins=np.linspace(0, 1, 51)group = pd.cut(accum_pd[sub_name], bins=bins)group_count = accum_pd[sub_name].groupby(group).count()sub_count = np.ar原创 2022-01-18 21:33:12 · 1846 阅读 · 0 评论 -
panda 修改行名字 报错 Index does not support mutable operations
在进行panda数据操作,扩充时出现两个tricks:使用data_pd.append(),进行行扩充数据时,行名需要相同,才能实现自动扩充使用data_pd.columns= [], 修改行名时,不允许切片操作,只能按照原数据长建立一个列表赋值修改# 遍历不同个体数据,进行数据拼接response_pd = pd.DataFrame() #建立一个空pandafor ii in range(100, 106): sub = 'Sub%d'%ii index = np.wher原创 2021-08-18 23:23:33 · 5755 阅读 · 0 评论 -
python 线性相关 与 线性拟合
文章目录线性相关皮尔逊相关系数(stats.pearsonr)斯皮尔曼相关系数(stats.spearmanr)线性拟合/回归最小二乘法(optimize.least_squares)R方(R squared)代码实现线性相关线性相关分析是描述两变量间直线相关,常用相关系数来描述。根据数据的分布特性不同可以分为:皮尔逊相关系数(Pearson correlation coefficient )和斯皮尔曼相关系数(Spearman‘s rank correlation coefficient )皮尔原创 2021-06-26 22:41:52 · 3936 阅读 · 2 评论 -
Python 数值计算库scipy 统计模块stats用法入门
文章目录statis模块概述连续概率分布正态分布(norm)概率检验/假设检验(Statistical tests)K-S检验(Kolmogorov-Smirnov test )scipy.stats.ksteststatis模块概述模块包括了大量的概率分布,可以根据分为数量分为单变量与单变量。单变量又可根据变量类型分为:连续概率分布和离散概率分布。具体包括了如下几大类统计方法:模块名Continuous distributions连续概率分布Multivariate d原创 2021-06-16 17:03:46 · 10828 阅读 · 0 评论 -
基于python 自写Tobii VI-T滤波器
官网介绍https://www.tobiipro.com/learn-and-support/learn/steps-in-an-eye-tracking-study/data/how-are-fixations-defined-when-analyzing-eye-tracking-data/GITHUB c代码https://github.com/uxifiit/GazeToolkit原创 2021-04-12 09:45:40 · 1380 阅读 · 7 评论 -
python numpy 找出第二大/小的数/索引
对于numpy我们很容易通过np.max或者np.argmax找到最大的数,但是如何定位第n大的数呢?百度一下,python找第二大的数方法,居然是将找到最大值复制为最小值后,再找出最大值。显然这个方法也太不智能了。正解如下:import numpy as nparr=np.random.rand(10)# 第2大数值max2 = np.sort(arr)[-2]# 第2大索引max_index2 = np.argsort(arr)[-2]...原创 2021-04-11 10:39:45 · 19198 阅读 · 5 评论 -
反正切函数的求解 math.atan2
相比 math.atan以180°为周期,math.atan2适用范围更广,得到结果范围为[-pi, pi]使用方法很简单,传入一个矢量即可,但注意有点怪的是第一个形参是y,第二个是xmath.atan2(y, x)参考https://www.tutorialgateway.org/python-atan2/...原创 2021-03-05 15:49:43 · 1255 阅读 · 0 评论 -
最小二乘法拟合圆心和半径 python实现
代码实现scipy.optimize.leastsq最小二乘法拟合圆心和半径 ,转化为所有点到圆心(xc, yc)距离与半径Rc的差最小问题,表达式如下,再通过scipy中的最小二乘算法进行求解即可。因为圆半径等于所有点到圆心的平均距离,所以一旦圆心得到了,就可以直接求得半径Ri = sqrt( (x - xc)**2 + (y - yc)**2)residu = sum( (Ri - Rc)**2)展示一个例子from numpy import *# Coordinates of th原创 2021-03-04 15:32:27 · 4565 阅读 · 1 评论 -
最小覆盖圆(smallest enclosing circle)算法 python 实现
百度一圈没有找到合适的博客,通过外网找到了python实现,所以整理记录一下。最小圆问题The smallest-circle problem (also known as minimum covering circle problem, bounding circle problem, smallest enclosing circle problem)有多种算法求解实现,具体参见维基百科。最容易理解,使用最多的是一些计算几何算法,大家可以参考这篇博文最小圆覆盖(经典算法【三点定圆)进行理论学习原创 2021-03-04 14:51:06 · 3180 阅读 · 2 评论 -
Python Matplotlib 颜色名 与默认color_list获取
绘制图像的时候需要选择美化的曲线,网上的图有很多,但是不少颜色的关键字并不支持。所以还是多参考官方的颜色名表参考https://matplotlib.org/3.1.0/gallery/color/named_colors.html转载 2021-02-05 10:39:53 · 5335 阅读 · 1 评论 -
Pytorch 随机种子设置 不可控因素
为确保模型训练过程中,需要设置模型的随机种子,具体操作如下:主程序def torch_seed(seed): torch.manual_seed(seed) torch.cuda.manual_seed(seed) torch.cuda.manual_seed_all(seed) np.random.seed(seed) # Numpy module. random.seed(seed) # Python random module. torch.原创 2020-12-12 17:59:58 · 897 阅读 · 0 评论 -
python 删除文件与非空文件夹
删文件和空文件夹imgs = glob.glob(file_path+'/*.png')for img in imgs: os.remove(img)os.rmdir(file_path)直接删非空文件夹shutil.rmtree(file_path)原创 2020-12-12 17:17:54 · 183 阅读 · 0 评论 -
python 继承类 super() 程序执行顺序
一直困惑于python继承类的程序执行顺序,看了这段代码后理解得到了加深,跟大家分享一下学习心得。单继承class FooParent(object): def __init__(self): self.parent = 'I\'m the parent.' print ('Parent') def bar(self,message): print ("%s from Parent" % message) class FooC原创 2020-10-31 12:20:02 · 1766 阅读 · 1 评论 -
vs code python高效编程的trciks
函数折叠和展开折叠所有函数Ctrl + K, Ctrl + 0 # 0表示函数的层级另外 折叠到某一级的函数是 Ctrl + K, Ctrl + n。例如,我想折叠到第二级的函数,就输入Ctrl + K, Ctrl + 2即可。展开所有函数Ctrl + K, Ctrl + J折叠查看完毕后可以通过上述快捷键展开所有折叠的内容。十分方便。...原创 2020-10-07 20:25:44 · 257 阅读 · 0 评论 -
python split() rsplit() 对比
之前一直没有弄懂split()和rsplit()的差别,直到有一天发现两者的关系后才恍然大悟str.split(str="", num=string.count(str)).str − This is any delimeter, by default it is space.num − this is number of lines minus one直接上代码,大家应该就很好理解了。In [1]: str = "Line1-abcdef \nLine2-abc \nLine4-abcd";原创 2020-10-05 22:48:19 · 3182 阅读 · 0 评论 -
Tobii眼动仪 python SDK 时间同步的技巧
time_synchronization首先官方Python - SDK reference guide中有一个time_synchronization_data.py的例子。官方注解如下:You will get a callback when the computer and the eye trackers clocks gets synchronized. To handle normal drifts between clocks the clocks are checked on regu原创 2020-09-01 16:46:01 · 1539 阅读 · 5 评论 -
t-SNE 多类数据降维的小技巧
在用t-SNE聚类算法时,发现一个小问题,值得注意。问题在对有标签的数据进行分类时,网上一些参考案例的算法如下,即每一类标签先经过t-SNE算法降维,最后再统一画到一个散点图上。ts = TSNE(n_components=2, init = 'pca', random_state = 0)features2 = np.zeros((sample_num*4, feature_len))for ii, dataset in enumerate (datasets): frame_li原创 2020-09-01 11:28:25 · 2232 阅读 · 8 评论 -
眼动仪 python SDK tobii_research 操作笔记
最近在使用Tobii眼动设备的时,需要使用SDK。按照官网指导的方法安装时,发现找不到库。pip install tobii_research解决方案:这个库在python3.7以上的版本不支持,需要重新建立一个小于3.6的环境进行安装。...原创 2020-08-14 19:59:47 · 4364 阅读 · 10 评论 -
python 实现视频播放器 pygame+opencv
由于pygame.movie.Movie.play() 只支持MPEG格式的视频,且 pygame版本大于1.9.5好像已经不支持这个模块了,所以决定使用与opencv读取视频帧的画面,利用pygame的surface刷新窗口。有基础的小伙伴,代码还是很好理解,直接上代码import pygamefrom pygame.locals import *import cv2import sysimport timeFPS = 30FramePerSec = pygame.time.Clock(原创 2020-08-04 21:17:43 · 3024 阅读 · 0 评论 -
python cv2读写灰度(黑白)视频的技巧
最近发现一个opencv的trick,记录一下cv2读取灰度视频cap = cv2.VideoCapture(video_name) while True: status, data = cap.read() if not status: break cv2.resize(data,(nw, nh)) cv2.imwrite(img_path, data) cap.release()注意读取灰度视原创 2020-07-21 22:02:48 · 3992 阅读 · 0 评论 -
Python3 VScode parser参数解析 lanuch.json文件 args:[]设置
问题如图在GITHUB上clone代码到本地时,并使用VS code进行debug时,即使设置default,仍会出现如下错误。解决方法lanuch.json首先需要打开一个可编辑的lanuch.json文件,如下在debug模式下就有提示,选择python模式在可以目录下建立一个.vscode目录,并生成一个lanuch.json文件,内容如下。此操作也可以在菜单栏run=>add configuration实现根据代码中的参数分别建立args:[]传入参数即可,注意分割符之间不原创 2020-06-29 15:43:00 · 1646 阅读 · 0 评论 -
Tensorflow一机多版本 Anaconda python虚拟环境 VS code环境切换
已经安装完成tensorflow2.x版本后,当需要运行tensorflow1.x版本的程序时试用一下代码后(参考博文),仍出现无法识别的API时,就真需要tensorflow1.x的运行环境了,为避免不必要的的卸载和装载程序包的过程,我们可使用虚拟环境实现多版本。import tensorflow.compat.v1 as tftf.disable_v2_behavior()基于Anaconda的python虚拟环境该方案可以保证已有的环境不受影响,只要存储空间充足可以建立不同的虚拟环境配置不原创 2020-06-26 22:58:49 · 496 阅读 · 0 评论 -
python tensorflow 多进程或多线程批量读取图像 数据读取加速 multiprocessing.pool concurrent.futures
需求格式为(batch, frames, h, w, c)的视频输入需要使用生成器,自定义网络的输入,但是重复大量重复batch*frames次数据的读取操作,如果默认读取方式,读取速度100frames/s,严重影响训练进程。电脑CPU核心数充沛,需要使用多进程方案,每一个batch分配一个进程,并行读取数据。multiprocessing.pool百度搜网上基本是这段程序import concurrent.futures start_time1 = time.time() def原创 2020-06-22 13:15:34 · 1650 阅读 · 0 评论 -
Tensorflow2.1.0或2.2.0 Pytorch1.x GPU版本安装 Windows10环境配置 ImportError: DLL load failed解决方案
查看显卡驱动版本桌面右键=>NVDIA控制面板=>帮助=>系统信息=>显示页面中的驱动程序版本如果没有也没关系,只要保证你的电脑是NVDIA显卡,后续CUDA安装包中包含了显卡驱动记住该版本,一方面驱动版本要满足以下要求CUDA版本和显卡驱动版本对应关系下载CUDA安装包我们要安装TensorFlow 2.1.0 及更高版本,参考。就需要安装 CUDA 10.1,在官网下载对应的版本。点选电脑对应的操作系统版本,进行下载安装CUDA下载完后进行安装,安装原创 2020-06-17 21:30:29 · 961 阅读 · 0 评论 -
tf.reduce_* 应用理解
比如第一张高5, 宽4,3色的图img1 = tf.random.normal([5,4,3])在3色通道(axis=2)求平均后tf.reduce_mean(w1, axis=2)<tf.Tensor: shape=(5, 4), dtype=float32, numpy=array([[-0.9854448 , -1.0194012 , 1.4945674 , -3.3110707 ],[ 1.5118184 , 1.2675568 , -0.02910066, -2.933原创 2020-06-13 10:15:29 · 440 阅读 · 0 评论 -
Tensorflow2.* 熵 相对熵(KL散度)(交叉熵) 互信息 (信息增益)代码实现
基本的理论请参考博文随机定义两组向量表示真实分类标签和预测输出目录标题一维随机变量熵相对熵(relative entropy)或(Kullback-Leibler)KL散度交叉熵(cross entropy)三者关系二维随机变量熵相对熵(relative entropy)或(Kullback-Leibler)KL散度交叉熵(cross entropy)三维随机变量熵相对熵(relative entropy)或(Kullback-Leibler)KL散度交叉熵(cross entropy)一维随机变量原创 2020-06-03 23:54:13 · 1433 阅读 · 0 评论 -
python os.walk os.path glob.glob 遍历目录/文件夹 下所有文件/目录 的若干方法
比如我电脑上的一个文件下的内容如下,两个子文件中只有文件无文件夹:目录os.walk遍历所有子目录和文件遍历所有子目录遍历所有子文件os.path遍历所有子目录遍历所有子文件glob.glob明确的文件类型os.walk遍历所有子目录和文件首先需要理解os.walk返回的三个值的含义root, dirnames, filenames = os.walk(filepath)root 所指的是当前正在遍历的这个文件夹的本身的地址dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不原创 2020-05-26 21:56:22 · 9748 阅读 · 1 评论 -
python 图片改变尺寸 resize(二) cv2 tensorflow PIL
目录cv2TensorflowPIL小结随便找一张图img_path=r'.keras\datasets\flower_photos\daisy\5673551_01d1ea993e_n.jpg'cv2import cv2img = cv2.imread(img_path)print(img.shape)img = cv2.resize(img, dsize=(160,106), interpolation=cv2.INTER_LINEAR)print(img.shape)(212原创 2020-05-25 22:31:23 · 615 阅读 · 1 评论 -
python 图片读取和显示的不同方法比较(一) cv2 matplotlib tensorflow PIL
随便找一张图img_path=r'.keras\datasets\flower_photos\daisy\5673551_01d1ea993e_n.jpg'cv2import cv2img = cv2.imread(img_path)print(type(img))print(img.shape)cv2.imshow('imgname', img)cv2.waitKey(0)cv2.destroyAllWindows()<class ‘numpy.ndarray’>原创 2020-05-25 21:58:44 · 695 阅读 · 0 评论 -
python 不连续的列表随机抽取元素 np.random.choice()
numpy.random.choice(a, size=None, replace=True, p=None)#从a(只要是ndarray都可以,但必须是一维的)中随机抽取数字,并组成指定大小(size)的数组#replace:True表示可以取相同数字,False表示不可以取相同数字#数组p:与数组a相对应,表示取数组a中每个元素的概率,默认为选取每个元素的概率相同。方法一import numpy as npb = list(range(1,30))+list(range(70,95))n原创 2020-05-25 16:27:23 · 1102 阅读 · 0 评论 -
Tensorflow keras.preprocessing.image.ImageDataGenerator 自定义图像数据集 (三)
主要以Keras的ImageDataGenerator图像生成器方式讲解如何定义数据集关于生成器函数的介绍,请参考:https://blog.csdn.net/Forrest97/article/details/106317598优点:针对大样本的图像数据集,生成器函数可以节约内存资源import tensorflow as tffrom tensorflow.keras.preprocessing.image import ImageDataGeneratorimport osimport原创 2020-05-24 17:40:32 · 1867 阅读 · 0 评论 -
Python 生成器 迭代器 对比
生成器和迭代器是两个容易混淆的函数,因此分别介绍一下生成器,迭代器,再对比两者的区别迭代器迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器有两个基本的方法:iter() 和 next()。list=[1,2,3,4]it = iter(list)for _ in range(5): print(next(it))生成器函数生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器在调用生成器运行的过程中,每次遇到 yield 时函数会原创 2020-05-24 17:38:02 · 267 阅读 · 0 评论 -
Tensorflow2.0 keras MobileNetV2 代码实现
目录迁移学习自编程序BlockDepthwise Separable block参考网络介绍请参看:博文keras搭建深度学习模型的若干方法:博文直接上网络结构迁移学习依旧看看标准答案import tensorflow as tffrom tensorflow import kerasbase_model = keras.applications.MobileNetV2(weights='imagenet')base_model.summary()自编程序Block原创 2020-05-20 09:50:35 · 3737 阅读 · 2 评论 -
Tensorflow2.0 keras MobileNet 代码实现
目录迁移学习自编程序Depthwise Separable blockDepthwise Separable block参考网络介绍请参看:博文keras搭建深度学习模型的若干方法:博文直接上网络结构迁移学习依旧看看标准答案import tensorflow as tffrom tensorflow import kerasbase_model = keras.applications.MobileNet(weights='imagenet')base_model.summar原创 2020-05-19 21:04:33 · 1666 阅读 · 0 评论 -
Tensorflow2.* keras padding=valid or same ZeroPadding 边界填充设置
目录边界填充目的计算公式layers.ZeroPadding2Dpadding='valid' or 'same''valid''same'边界填充目的在卷积操作中有效控制特征层的size计算公式h'=|(h+p-k)/s| +1其中,h’表示卷积后特征层的高p表示上下填充的行数k表示卷积核在高度方向上的大小s表示滑动补上| |表示取整同理可得到w’=|(w+p-k)/s| +1layers.ZeroPadding2Dlayers.ZeroPadding2D可以定义padding原创 2020-05-19 10:22:05 · 1122 阅读 · 1 评论 -
Tensorflow2.0 keras DenseNet121 系列 代码实现
目录迁移学习自编代码参考模型介绍请参看:博文keras搭建深度学习模型的若干方法:博文迁移学习import tensorflow as tffrom tensorflow import kerasbase_model = keras.applications.DenseNet121(weights='imagenet')base_model.summary()自编代码在这里插入代码片参考https://github.com/titu1994/DenseNethttp原创 2020-05-17 11:25:42 · 6823 阅读 · 2 评论 -
Tensorflow2.0 keras InceptionResNetV2代码实现
目录迁移学习自编代码定义卷积单元Stem模块InceptionRes A模块InceptionRes B模块InceptionRes C模块Reduction AReduction BBuild Inception-ResNet补充:模型介绍请参看:博文出处:Google AI迁移学习首先还是看看标准答案import tensorflow as tffrom tensorflow import kerasbase_model = keras.applications.Incept原创 2020-05-16 15:07:15 · 3210 阅读 · 8 评论 -
tensorflow2.0 Keras VGG16 VGG19 系列 代码实现
模型介绍参看:博文VGG16迁移模型先看看标准答案import tensorflow as tffrom tensorflow import kerasbase_model = keras.applications.VGG16(weights='imagenet')base_model.summary()自建模型import tensorflow as tffrom tensorflow import kerasfrom tensorflow.keras原创 2020-05-15 10:16:10 · 5177 阅读 · 0 评论 -
Tensorflow 2.0 视频分类(四) C3D 3D convolutional Networks
论文学习摘要开篇明义,三点结论:3D 卷积网络比2D卷积更适合提取时空特征;3x3x3的卷积核是最好的filter结构;C3D与线性分类器的组合有在UCF101数据集上很好的分类效果介绍视频分类在动作识别、非常规动作识别、活动理解、视频内容描述等领域;视频描述器的四个特点:通用、有竞争力、高效、简洁;卷积网络并不适用于处理视频数据,因此提出 C3D.不同数据集上的表现:除Sport 1M上,其他数据比之前最好的都要好。优秀!相关研究传统机器视觉领域的SIFTs(spatio-t原创 2020-05-14 22:08:36 · 2136 阅读 · 5 评论 -
Tensorflow 2.0 视频分类(二) UCF-101数据集预处理
关于UCF-101介绍请参看:数据下载下载路径:http://crcv.ucf.edu/data/UCF101/UCF101.rar解压后就是分类数据集的标准目录格式,二级目录名为人类活动类别,二级目录下就是对应的视频数据。每个视频长度为4s,大小320*240, 帧率25HZ需要注意是相同的活动下,参考https://blog.coast.ai/five-video-classifi...原创 2020-05-14 20:25:22 · 3852 阅读 · 12 评论