Duang!用Python来实现唱歌、跳舞、写字、画画?无所不能的python_python虚拟人唱歌(1)

最后

🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。
🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。
🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。
🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

那个…不是人脸。让我们再试一次。我修改了参数设置,发现将scaleFactor设置成1.2可以将识别错识的人脸过滤掉。

发生了什么?好吧,第一张相片使用了一个高相素相机在较近的距离进行拍摄。第二张相片貌似是使用的手机在较远距离进行的拍摄。这就是参数scaleFactor需要修改的原因。就像我说过的,你需要根据不同测试案例对算法进行不同的参数设置从而避免误识别的发生。

需要注意的是,由于采用了基于机械学习的算法,检测结果永远无法达到100%精确。大多数案例中你都能得到较好的结果,但偶尔算法也会检测到错误的对象,就像检测到错误的人脸一样。

OpenCV是计算机视觉领域最受欢迎的库。OpenCV最早是使用C/C++语言进行编写的,现已支持Python语言捆绑使用。

OpenCV使用机械学习算法对图像中的人脸进行搜索。由于有着与人脸一样复杂的原因,不存在一项简便的测试可以告知人们是否能够识别出人脸。相反,算法需要对成千上万细小的模式和特征进行匹配。面部识别算法被分解成成千上万很小的、易理解的任务,每一个任务较易实现。这些任务被称为分类器。

像人脸一样,你可能有6,000个基于更多的分类器在进行人脸检测过程中,每一个分类器都需要进行匹配(当然要在一定的误差范围内)。但这其中就有问题了。在人脸识别过程中,算法从图片的左上角开始向右下角按小块逐步进行匹配,对每一个小块的识别过程中,算法都会持续的问:“这是人脸么?这是人脸么?这是人脸么?”由于在每个小块有着6000甚至更多的匹配项需要进行匹配,你可能会有无数的计算要执行,这些计算将引发你的电脑发生死机。

2.机器自己学唱歌一首

现在我们可以开始了解这样一个系统是如何工作了。一种音频指纹识别系统做到两点:

  1. 1.通过指纹标记学习一首新歌2.通过在数据库中搜索已经学习过的歌曲来识别一首未知歌曲

为此,我们将用到以上的所有知识和MySQL数据库功能。我们的数据库将包含两个表:

  1. 1.指纹记录2.歌曲记录

音频指纹记录表

音频指纹记录表有如下字段:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

首先,注意到我们不仅有一个hash和song_id 字段,还有一个offset 字段。这对应于哈希来源的谱图上的时间偏移量。这会在后面我们在通过匹配哈希值来过滤时用到。只有哈希值与真实信息一致才是我们真正要识别出的(更多看下面音频指纹比对)。

其次,我们有很好的理由把hash 设置成INDEX。因为所有的查询都将需要做匹配操作,所以这里我们需要一个真正的快速检索。

然后,UNIQUE只是确保我们没有重复。无需浪费空间或者因为重复的音频影响匹配查询速度。

如果你在绞尽脑汁地想我为什么把 hash 设置成 binary(10),原因是,哈希值通常太长,设置少点有得于减少存储。下面是每首歌的音频指纹数图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

最前面的是Justin Timberlake 的"Mirrors" ,音频指纹数超过240K,其次Robin Thicke 的"Blurred Lines" 也有180k。底部是acapella演艺的”Cups”, 是一首乐器很少,仅有人声和和声的歌曲。 做个对比,听听 “Mirrors”。你会发现明显的乐器声组成的“噪音墙”并且填充的频谱数从高到低分类,即频谱丰富与否与峰的频率高低是一致的。这个数据集里每首歌平均超过100k个音频指纹数。

有这么多的指纹,我们需要从哈希值水平上减少不必要的硬盘存储。对于指纹哈希,我们将开始使用SHA-1哈希,然后减少一半大小(只有前20个字符)。这使我们每个哈希值减少了一半的字节数:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

下一步,我们将采取十六进制编码,并将其转换为二进制,再次大幅削减空间:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在好多了。我们把hash字段从320 bits降到了80 bits,减少了75%。

我在系统中第一次尝试时,我把hash字段设置成了char(40)-这导致了单单音频指纹表就占据超过了1GB的空间。设置成binary(10)后,我们把表的大小降低到只需377M就成存储520万个音频指纹。

我们确实丢失了一些信息——从统计学的角度来说我们的哈希值现在碰撞的更频繁。我们降低了哈希相当多的“信息熵”。然而,重要的是要记住,我们的熵(或信息)也包括offset字段,这有4个字节。这使得我们每个音频指纹的总信息熵为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

就说,我们已经节省了自己75%的空间,但仍然有一个巨大无比的指纹空间要处理。要保证每个字段的理想分布是很困难的,但是我们已经有足够的信息熵进行接下来的工作了。

3.使用python基于Tensorflow设计手写数字识别算法,并编程实现GUI界面,构建手写数字识别系统。

本文实现的系统其实是基于卷积神经网络的手写数字识别系统。该系统能快速实现手写数字识别,成功识别率高。缺点:只能正确识别单个数字,图像预处理还不够,没有进行图像分割,读者也可以自行添加,进行完善。

本文采编自:Python(TensorFlow框架)实现手写数字识别系统 - louishao的博客 - CSDN博客

写了一些辅助函数,可以查看部分识别错误的图片,

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

还可以查看混淆矩阵,

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

系统中还添加了一点图像预处理的操作,比如灰度化,图像信息的归一化等,更贴近实际应用。 系统可进行快速识别,如下图

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

4.python 画图–简单开始及折线图

相关参考资料:

matplotlib官方文档:http://matplotlib.org/api/pyplot_summary.html (api的调用及一些示例代码)

一个中文版的文档(不全):http://old.sebug.net/paper/books/scipydoc/matplotlib_intro.html

matplotlib较详细的剖析:http://www.cnblogs.com/vamei/archive/2013/01/30/2879700.html

三种图的绘制:http://www.cnblogs.com/hustlx/p/5264562.html

多张图的绘制:http://www.2cto.com/kf/201407/317115.html

一、环境准备

linux ubuntu 下需安装下面三个包: Numpy, Scipy,Matplotlib

分别输入下面的代码进行安装:

pip install numpy 
pip install scipy 
sudo apt-get install python-matplotlib 

测试是否安装成功

python 
>>> import pylab 

如果没有报错则安装成功

二、开始画图

  1. 画最简单的直线图

代码如下:

import numpy as np 
import matplotlib.pyplot as plt 
x=[0,1] 
y=[0,1] 
plt.figure() 
plt.plot(x,y) 
plt.savefig("easyplot.jpg") 

结果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

代码解释:

#x轴,y轴 
x=[0,1] 
y=[0,1] 
#创建绘图对象 
plt.figure() 
#在当前绘图对象进行绘图(两个参数是x,y轴的数据) 
plt.plot(x,y) 
#保存图象 
plt.savefig("easyplot.jpg") 

  1. 给图加上标签与标题

上面的图没有相应的X,Y轴标签说明与标题

在上述代码基础上,可以加上这些内容

代码如下:

import numpy as np 
import matplotlib.pyplot as plt 
x=[0,1] 
y=[0,1] 
plt.figure() 
plt.plot(x,y) 
plt.xlabel("time(s)") 
plt.ylabel("value(m)") 
plt.title("A simple plot") 

结果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

代码解释:

现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。

分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

https://i-blog.csdnimg.cn/blog_migrate/98c5857428d568b2753fcc95f0b326ed.png)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值