- 博客(89)
- 资源 (7)
- 问答 (1)
- 收藏
- 关注
原创 ITK ERROR: ImageFileReader(0000017CCB9E7130): An empty string can‘t be used as an input identifier“
写入了环境变量,导致在Release模式下,没有设置运行配置,会直接读取环境变量里面的值,所以运行时候是正确的。但是到了Debug模式下,在没有添加。文件,一直都没有发现问题。直到在另一个工程下面,使用相同的代码,没有任何问题,查看项目配置的时候,无意发现。的配置,还是读取的Release模式下的dll文件,所以导致了出错。起初一直没有搞明白为什么,在检查。这才发现,我已经把ITK的。
2024-09-10 16:25:31
204
原创 whisper.cpp在Windows VS的编译
是OpenAI开源的一款语音识别的模型,包含有英语和多国语言的模型,根据实际情况来看,其支持的90多种语言的准确率着实表现惊艳,英文甚至可以做到3%左右的误词率,官方图表显示中文的误词率大约是14%,但是实际使用的情况来看,误词率也是相当低,几乎也在3%左右。在对比了CPU与GPU版本发现,GPU的时间更长,主要是GPU版本在加载模型的load time更长了,实际的推理时间约500ms相比GPU的800ms要短一些的。这个编译参数也会带到nvcc编译器的编译过程中,但是nvcc并不支持这个参数,
2023-05-30 16:03:53
3727
8
原创 CMAES优化方法测试--python
进行配准的时候发现有些研究说CMAES优化方法算是status-of-art的方法,找了一下相关的CMAES实现。在python中可以直接使用cma库,通过。由于CMAES是通过协方差优化,优化变量至少是2D的。example中都是使用。中的目标函数,如果是自定义的目标函数需要参照以下写,目标函数带一个参数。注意输入初始化的参数,数据大小与木目标函数的输入一致。中传入这个目标函数即可。
2023-05-11 11:14:55
843
原创 R-CNN系列目标检测算法对比
ItemRCNNFast RCNNMask R-CNN提取候选框RPNRPN提取特征每个候选区域用CNN提取一次CNN-ROIPooling只提取一次同Fast RCNN使用ROIAlign获取特征图特征分类SVMCNN进行分类和回归同Fast RCNN同Fast RCNN分割---像素级掩码分类。
2022-12-10 20:38:54
1913
原创 OpenCV滑块控制参数进行addWeighted
的形式,然而如果想要使用滑块来动态调整weight的时候,如果直接使用OpenCV给的示例的话,需要使用道很多的全局变量,赵成代码比较混乱。是数据信息,所以使用一片内存地址分别存入两个图片的数据,然后在CallBack中将数据取出来。进行数据传输,实现两个图片的数据传入回调函数,然后进行带权重的相加。由于滑动条的回调函数只有两个参数。
2022-09-20 09:48:02
442
原创 使用互信息进行图像配准
熵是描述一个事件的不确定性的,在英文中的描述是disorder,也就是无序,杂乱。写一个事件的熵可以表示为:E(A)=−∑Apilog2piE(A)= -\sum_{A} p_i \log_2 p_iE(A)=−A∑pilog2pi也就是事件所有可能情况的概率与其对应对数的乘积就和的相反数。假设一个事件A(X)A(X)A(X)存在{x=1,x=2,x=3,x=4}\{x=1,x=2,x=3,x=4\}{x=1,x=2,x=3,x=4}这几种情况,并且经过多次实验,发现这几种情况出现的频数分别为:
2022-06-18 15:13:29
1799
原创 TensorRT入门(Windows上安装与VisualStudio项目配置)
安装TensorRT的Document这里有,可以按照这个实现Getting Start。这里将在Windows上安装的主要步骤记录下来。下载地址:NVIDIA TensorRT 8.x Download,选择对应的版本下载下来解压出来得到TensorRT-8.x.x.x,并放置到一个目录下作为安装目录<install_path>将<install_path>/lib写入PATH变量,如D:\deploy_tools\TensorRT-8.4.0.6\lib
2022-03-02 18:37:02
2151
原创 tensorflow模型的量化与剪枝
1. float32 -> float16的量化import tensorflow as tfsaved_model_dir="/path/to/mobilenet_v1_224"converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)converter.optimizations = [tf.lite.Optimize.DEFAULT]converter.target_spec.supported_type
2022-03-01 16:52:23
1490
原创 RPI安装软件
安装opencv安装依赖sudo apt-get install libjpeg8-devsudo apt-get install libtiff5-devsudo apt-get install libjasper-devsudo apt-get install libpng12-devsudo apt-get install libqt4-testsudo apt-get install libqtgui4通过pip安装opencvpip3 install opencv-py
2021-07-23 09:40:02
420
1
原创 树莓派开机自启动Python后台服务
通过Python的flask框架搭建了一个服务,在树莓派上运行,希望可以开机自动启动。查看可以通过修改/etc/rc.local文件来开机自启动。在exit 0之前加入自己的启动代码,如:......sudo python3 /home/pi/path_for_file/server.py &exit 0最后的&一定需要,因为服务是一直等待的,通过&表达开启一个线程来运行这个服务,否则一直在主线程运行,导致无法正常开机。然而事实上发现服务并没有成功启动,通过sudo sy
2021-07-10 21:33:05
888
1
原创 Pyinstaller打包问题
打包过程在pip中安装pyinstaller:pip install pyinstaller切换到需要打包的目录中,执行pyinstaller -F xxx.py命令,其中xxx.py文件即为需要打包的文件。其他可选的指令:-w 打桌面程序,去掉cmd窗口-i 设置图标,图标后缀为.ico如:pyinstaller -F -w -i gen.ico xxx.py打包完成以后,打开dist/xxx.exe文件执行即可。issue打包过程中报错:pyinstaller Unicod
2021-07-01 17:04:49
369
原创 使用pyQt创建GUI进行绘图
环境配置安装在python环境中使用pip安装PyQt5和PyQt5-tools。pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyqt5pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyqt5-toolsPycharm配置启动pycharm后新建一个项目,打开File->Setting->Tools->External Tools->(+
2021-05-19 11:35:49
2049
原创 在Keras下使用Tensorboard写入图片
在Keras中调用Tensorboard可以直接创建一个Tensorboard对象,在model.fit的callbacks里面就好了,但是有的时候需要添加图片到Tensorboard里面去,直接使用Tensorboard就不行了,需要重写一下Tensorboard。比如在下图中,需要将验证数据集的第一个数据绘制出来并显示结果,那么import tensorflow as tfimport matplotlib.pyplot as pltimport ioclass CustomTensorBoa
2021-05-13 16:12:22
502
1
原创 使用手机摄像头链接电脑使用OpenCV
电脑没有摄像头,想着使用手机链接到电脑上使用OpenCV。首先下载APP,直接搜索IP 摄像头,找到图标如下图的:打开软件,点击右上方的设置,找到用户名和密码,默认分别是admin和123456,可以按照自己需要修改,也可以不修改,使用默认的。然后点击下方的打开IP摄像头服务器。然后在下一个页面中将RTSP勾上,可以看到相关链接地址:这个时候,手机端就操作好了。打开电脑端写一个Python脚本:import cv2vid = cv2.VideoCapture('rtsp://admin
2020-09-16 14:07:19
1874
原创 matlab与C/C++混合编程——在Windows/Linux上调用Matlab编译的动态库文件
主要是想使用MATLAB的m文件,生成可以使用C/C++调用的文件,两种方式生成dll文件,在Windows下调用,使用VS构建调用的工程生成so文件在Linux下调用,调用代码使用g++编译MATLAB生成.so文件生成.so文件需要在Linux环境下安装MATLAB。Linux安装MatlabMatlab下载地址:https://ww2.mathworks.cn/downloa...
2020-07-23 18:02:20
3934
12
原创 如何使用keras_yolo训练自己的数据
训练下载需要的文件:在qqwweee/keras-yolo3下载整个项目在YOLO下载一个weight文件下载一个数据集Train/Validation Data (439 MB)然后把数据集压缩包解压,并把qqwweee/keras-yolo3里面的voc_annatation.py复制过去,由于之前下载的是VOC2007的Train/Validation数据集,所以voc_annatation.py文件做了小修改,把第四行的sets=[('2007', 'train'), ('2007'
2020-06-01 16:25:14
385
原创 Python语音基础操作--12.4基于LDA,PCA的语音情感识别
LDA线性鉴别分析(Linear Discriminant Analysis, LDA)的基本思想是将高维的模式样本投影到最佳鉴别矢量空间,以达到抽取分类信息和压缩特征空间维度的效果,投影后保证模式样本在新的子空间有最大的类间距离和最小的类内距离。假设有一组属于两个类的n个d维样本x1,...,xn∈Rdx_1,...,x_n\in R^dx1,...,xn∈Rd,其中前n1n_1n1个样本属于类w1w_1w1,后n2n_2n2个样本属于类w2w_2w2,均值从同协方差矩阵的高斯分布。各类样本
2020-05-30 14:37:36
1878
原创 Python语音基础操作--12.3基于支持向量机SVM的语音情感识别
20 个世纪90 年代Vapnik等人提出了支持向量机(SVM) 算法,它是一种基于统计理论的学习方法,其日的是为了改善神经网络学习方法的不足。目前SVM已经广泛应用于数据挖掘、模式识别等领域。支持向量机在机器学习领域有着重要的地位,其集最大间隔的超平面、凸二次规划问题、核分析方法等多种技术于一身,具有广阔的发展和应用前景。支持向量机从当初被提出,经过Dual、Smith等人的逐步完善,Vapnik在《统计学习理论》的论著中论证了SVM算法优于归纳推理给出的误差率的界。大量研究表明SVM 算法是一种非常有效
2020-05-30 14:34:45
3055
7
原创 Python语音基础操作--12.2基于神经网络的情感识别
人工神经网络(Artificial Neural Network , ANN) 是一种由大量简单处理单元构成的并行分布式数学模型。在人类意识到人脑计算与传统计算机处理方式的区别时,神经网络就成了科学家们探究信息处理任务的关注对象。人工神经网络主要从两方面模仿大脑工作:从外界环境中学习,用突触权值存储知识。人类大脑接收外界剌激,感受器转换为电冲击传递给神经元构成的网络,再经由效应器把电冲击转换为可识别的效应输出。神经元是神经网络处理信息的基本单位,是由突触权值、加法器、激活函数三部分构成的非线性模型。神经
2020-05-30 14:33:14
2086
3
原创 Python语音基础操作--12.1基于KNN的情感识别
基于KNN的语音情感识别情感识别的框图如下,主要就是特征提取建模,然后在待测样本中提取相同的特征,送到模型中计算进行识别。特征短时能量:En=∑m=0N−1xn2(m)E_n=\sum_{m=0}^{N-1}x_n^2(m)En=m=0∑N−1xn2(m)短时抖动能量:Es=1M−1∑n=1M−1∣En−En+1∣1M∑n=1MEn×100E_s=\frac{\frac{1}{M-1}\sum_{n=1}^{M-1}|E_n-E_{n+1}|}{\frac{1}{M}\sum_{n=1}
2020-05-30 14:30:03
2541
1
原创 Python语音基础操作--11.2基于GMM的说话人识别模型
高斯混合模型(Gaussian Mixture Model, GMM)可以看做一种状态数为1的连续分布隐马尔科夫模型。一个MMM阶混合高斯模型的概率密度函数是MMM个高斯概率密度函数加权求和得到的:P(X∣λ)=∑i=1Mwibi(X)P(X|\lambda)=\sum_{i=1}^Mw_ib_i(X)P(X∣λ)=i=1∑Mwibi(X)其中XXX是D维随机向量,为说话人识别算法提取的特征矢量,wiw_iwi是混合权重,满足∑i=1Mwi=1\sum_{i=1}^Mw_i=1∑i=1Mwi
2020-05-30 14:25:51
2828
4
原创 Python语音基础操作--11.1矢量量化(VQ)的说话人情感识别
VQ基本原理矢量量化(VQ)的基本原理是将若干个标量数据组成一个矢量(或者从一帧语音数据中提取的特征矢量)在多维空间给予整体量化,从而可以在信息量损失最小的情况下压缩数据量。假设有N个K维的特征向量X={X1,X2,...,XN}X=\{X_1,X_2,...,X_N\}X={X1,X2,...,XN},(XXX在K维欧几里得空间RKR^KRK中),其中第i个矢量可写为:Xi={x1,x2,...,xK},i=1,2,...,NX_i=\{x_1,x_2,...,x_K\},i=1,2,...,N
2020-05-30 14:24:33
1918
2
原创 Python语音基础操作--10.2隐马尔科夫模型的孤立字识别
隐马尔科夫模型(Hidden Markov Models, HMM)作为语音信号的一种统计模型,在语音处理中得到广泛应用。一个用于语音识别的HMM通常用三组模型参数M={A,B,π}\bold{M=\{A,B,\pi\}}M={A,B,π}来定义,假设某HMM一共有N个状态{Si}i−1N\{S_i\}_{i-1}^N{Si}i−1N,那么参数的定义为:A\bold{A}A:状态转移概率矩阵;A=[a11...a1N.........aN1...aNN]A=\begin{bmatrix}
2020-05-30 14:20:50
2559
4
原创 Python语音基础操作--10.1基于动态时间规整(DTW)的孤立字语音识别试验
基于动态时间规整(DTW)的孤立字语音识别试验模板匹配法语音识别系统用户将词汇表中每个词依次说一遍,并且将其特征矢量时序作为模板存入模板库,在识别阶段,将输入语音的特征矢量时间序列依次与模板库中每个模板进行相识度比较,将相识度最高者作为识别的结果输出。特征使用MFCC系数以及一阶和二阶差分作为特征参数。MFCC是将人耳的听觉特征与语音参数相结合的一种特征参数。MFCC的计算可以参考3.4节。动态时间规整(DTW)在识别阶段的模式匹配中,不能简单地将输入模板与词库中模板相比较实现识别,因为语音信号
2020-05-30 14:18:32
3983
6
原创 Python语音基础操作--7.2LPC的语音合成
对于线性预测器s^(n)=∑i=1pais(n−i)\hat s(n)=\sum\limits_{i=1}^pa_is(n-i)s^(n)=i=1∑pais(n−i),其误差为e(n)=s(n)−s^(n)e(n)=s(n)-\hat s(n)e(n)=s(n)−s^(n),那么在预测误差e(n)e(n)e(n)和预测系数aia_iai已知的情况下,就可以求出合成语音。from chapter2_基础.soundBase import *from chapter7_语音合成.flipframe i
2020-05-30 14:15:11
2862
2
原创 Python语音基础操作--7.1帧合并
语音合成主要可分为波形合成法,参数合成法,规则合成法。波形合成法波形编码合成,直接把需要合成的语音通过编码的形式进行存储,称为PCM合成。波形编辑合成,通过在音库中采取语音的合成单元波形,对这些波形进行编辑拼接后输出。参数合成法分析法:提取语音参数,压缩存储量,然后人工控制这些参数的生成。规则法通过语音学规则产生语音。系统中最小语音单位的声学参数,以及由音素组成音节,由音节组成词,由词组成句子。帧合并分帧处理后,需要将多个帧合并起来,涉及的操作有去创函数和去交叠操作。
2020-05-30 14:13:39
1728
原创 Python语音基础操作--6.3ADPCM编码
自适应差分脉冲编码调制(Adaptive Differential Pulse Code Modulation, ADPCM)结合了ADM的差分信号与PCM的二进制编码的方法,采用预测编码来压缩数据量。体现在使用预测技术减少量化编码器输入信号的冗余度,将差值信号编码以提高效率,降低编码信号速率,广泛应用与语音和图像信号的数字化。自适应量化在语音信号量化器中,为了适应信号的动态范围,需要把量化阶距选的足够大,另外为了减少量化噪声,有希望减小量化阶距。语音信号在很宽的范围内幅值变化,为了适应这样的变化,就是
2020-05-30 14:11:14
2329
原创 Python语音基础操作--6.2LPC编码
线性预测编码(linear predictive coding, LPC) 是运用于音频信号处理与语音处理的压缩编码方式,根据线性预测模型的信息表示数字语音信号谱包络。它是最有效的语音分析技术之一,也是低位速高质量语音编码的最有用的方法之一,能够提供非常精确的语音参数预测。线性预测编码通过估计共振峰剔除它们在语音信号中的作用,估计保留的蜂鸣音强度与频率来分析语音信号;同时,使用蜂呜参数与残余信号生成源信号,使用共振峰生成表示声道的滤波器,源、信号经过滤坡器的处理来逆向合成语音信号。由于语音信号随着时间变化这
2020-05-30 14:09:50
4356
原创 Python语音基础操作--6.1PCM编码
脉冲编码调制(Pulse Code Modulation, PCM)是语音信号的重要编码方式之一。语音编码是将模拟信号转为数字信号的语音通信技术,分为波形编码、参量编码和混合编码等类型。波形编码针对语音波形进行,在降低量化样本比特数的同时保持了良好的语音质量。PCM编码就是一种波形编码方法,通过每隔一段时间对模拟语音信号采样,将其取整量化,用二进制码表示抽样量化的隔值,实现将语音数字化的编码调制。PCM是现代数字传输系统普遍采用的调制方式。PCM可以向用户提供多种业务,包括2M-155Mbit/s速率的数
2020-05-30 14:08:29
3891
3
原创 Python语音基础操作--5.4小波分解
在传统的傅里叶分析中,信号完全是在频域展开的,不包含任何时频的信息。因为丢弃的时域信息对某些应用同样重要,所以出现很多能表征时域和频域信息的信号分析方法,如短时傅里叶变换、Gabor 变换、时频分析、小波变换等。其中,短时傅里叶变换是在傅里叶分析基础上引入时域信息的最初尝试,在假定一定长度时间窗内的信号是平稳的前提下,短时傅里叶变换可以通过将每个时间窗内的信号展开到频域的方法来获得局部的频域信息。但是,短时傅里叶变换的时域区分度只能依赖于大小不变的时间窗,对某些瞬态信号来说还是粒度太大。所以,对很多应用来说
2020-05-30 14:06:14
4934
10
原创 Python语音基础操作--5.2谱减法
谱减法对于任何一帧信号xi(m)x_i(m)xi(m)做FFT变换后:Xi(k)=∑m=1Nxi(m)exp(j2πmkN)X_i(k)=\sum_{m=1}^Nx_i(m)\exp(j\frac{2\pi mk}{N})Xi(k)=m=1∑Nxi(m)exp(jN2πmk)对于Xi(k)X_i(k)Xi(k)的幅值为∣Xi(k)∣|X_i(k)|∣Xi(k)∣,角度为Xanglei(k)=arctan[Im(Xi(k))Re(Xi(k))]X^i_{angle}(k)=\arcta
2020-05-30 14:04:13
3439
1
原创 Python语音基础操作--5.1自适应滤波
语音降噪主要研究如何利用信号处理技术消除信号中的强噪声干扰,从而提高输出信噪比以提取出有用信号的技术。消除信号中噪声污染的通常方法是让受污染的信号通过二个能抑制噪声而让信号相对不变的滤波器,此滤波器从信号不可检测的噪声场中取得输入,将此输入加以滤波,抵消其中的原始噪声,从而达到提高信噪比的目的。然而,由于干扰通常都是随机的,从带噪语音巾提取完全纯净的语音几乎不可能。在这种情况下,语音增强的目的主要有两个:一是改进语音质量,消除背景噪声,使昕者乐于接受,不感觉疲劳,这是一种主观度量;二是提高语音可懂度,这是
2020-05-30 14:02:17
4970
10
原创 keras中Conv2D,SeparableConv2D,DepthwiseConv2D实现与参数数量区别
Conv2D对于一个普通卷积来说,通常卷积核的大小,上一层的channel与本层的channel对应了参数的数量。使用了bias的话,普通卷积(Conv2d)的参数为:#params=(filter_size×filter_size×channellast+1)×channelthis\#params=(filter\_size\times filter\_size\times channel_{last}+1)\times channel_{this}#params=(filter_size×filt
2020-05-18 18:41:09
3016
2
原创 Python语音基础操作--4.3共振峰估计
声道可以被看成一根具有非均匀截面的声管,在发音时将起共鸣器的作用。当声门处准周期脉冲激励进入声道时会引起共振特性,产生一组共振频率,这一组共振频率称为共振峰频率或简称为共振峰。共振峰参数包括共振峰频率、频带宽度和幅值,共振峰信息包含在语音频谱的包络中。因此共振峰参数提取的关键是估计语音频谱包络,并认为谱包络中的最大值就是共振峰。利用语音频谱傅里叶变换相应的低频部分进行逆变换,就可以得到语音频谱的包络曲线。依据频谱包络线各峰值能量的大小确定出第1-4共振峰.在经典的语音信号模型中,共振峰等效为声道传输函数的
2020-05-09 13:53:54
6333
8
原创 Python语音基础操作--4.2基音周期检测
人在发声时候,根据声带是否振动可以将语音信号分为清音和浊音。浊音:有声语音,携带语言中大部分能量,在时域上有明显的周期性清音:类似于白噪声,没明显周期性在发浊音时候,声门使声带产生张弛震荡式振动,产生准周期激励冲激串。这种声带振动的频率被称为基音频率,相应的周期就是基音周期。基音频率在很大程度上反应了个人的特征。比如,男性的基音频率范围在70-200Hz范围内,女性和小孩的基音频率在200-450Hz之间。基音周期的估计就是基音检测,基音检测的最终目的是为了找出和声带振动频率完全一致或者尽可能相
2020-05-09 13:52:23
5630
7
原创 Python语音基础操作--4.1语音端点检测
双门限法所谓的端点检测其实就是将语音进行分段,分为轻音,浊音,静音等。主要依据的短时能量以及短时过零率。短时能量表示为:En=∑m=1Nxn2(m)E_n=\sum\limits_{m=1}^Nx_n^2(m)En=m=1∑Nxn2(m)短时过零率表示为:Zn=12∑m=1N∣sgn[xn(m)]−sgn[xn(m−1)]∣Z_n=\frac{1}{2}\sum\limits_{m=1}^N|sgn[x_n(m)]-sgn[x_n(m-1)]|Zn=21m=1∑N∣sgn[xn(m)
2020-05-09 13:49:37
9147
13
原创 Android运行Keras/TF模型
建模与转化在Android Studio中使用深度学习模型的话,有一种方式是使用tflite,但如果模型本来就比较小的话,可以直接使用tensorflow的.pd文件,不用转化为tflite模型。如果是使用pytorch或者keras建模的模型文件,可以通过函数转化为tensorflow的.pd文件。如下文件就是keras模型转化为tf的代码(convert_keras_to_tf.py)。#...
2020-04-28 18:53:26
1434
7
原创 时序信号的模型使用tflite的示例
tflite图像的Demo官方已经给了,下载下来看了,其实写的比较复杂,如果需要改成时序信号的使用,需要改的东西挺多的,也不叫耗时间,还不如自己新建一个。模型转化由于我并不是直接使用tensorflow来进行训练的,是使用keras训练的,由于Tensorflow也使用了Keras的API所以,Keras的模型(.h5/.hdf5)文件是可以直接转化为tflite的。import tenso...
2020-04-28 18:44:14
1114
2
使用pyQt创建GUI进行绘图.rar
2021-05-19
CPPDebug.zip
2019-10-13
第三周浅层神经网络.rar
2019-08-11
第二周 神经网络基础-1逻辑回归.rar
2019-08-11
Python异步编程详解【305263】回顾多线程,多进程,生成器概念.zip
2019-07-30
Python 京东登录优惠券
2019-01-13
C# 串口波形4通道显示以及频谱分析
2017-05-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人