查看“2016013201”的源代码
←
2016013201
跳转至:
导航
、
搜索
因为以下原因,你没有权限编辑本页:
您刚才请求的操作只对以下1个用户组开放:
用户
。
您可以查看并复制此页面的源代码:
==2017年6月29日== *安装并配置python *安装并试用TensorFlow 配置过程中出现的最大问题是找不到Python,因为Python2都是直接安装在根目录下的,而Python3却安装在c盘的Users文件夹下,找到它费了很大劲,不过一边找也一边重新熟悉了cmd的一些基础操作,算是一点额外的收获。 ==2017年6月30日== *配置PYNQ板 *阅读Python示例代码 *完成教程实验pAudio_playback <gallery> 文件:Pynq_LEDs.png|LED项目 文件:Max_Operation.png|录入代码 文件:Pynq_Spectrogram.png|频谱图 </gallery> 配置PYNQ板时需要先设置本机IP,这一步很容易,但有一点很关键,就是ip的第三段必须要设为2,这样才能够正确识别,另外也要注意PYNQ不支持IE和edge浏览器,推荐使用chrome。 今天的主要困难是由于不熟悉xilinx的操作,在结束进程的时候直接把PYNQ的开关关掉了,或许是这个原因,导致PYNQ的sd卡中的文件部分损坏了,包括教程要用的pAudio_playback,使得我们不得不手工输入代码。当然这在客观上也让我们有机会更加细致地了解代码。通过研究代码,发现了一个很关键的滤波函数,它将样本采样率从3Mhz降低到32khz,几乎降了100倍,使得PYNQ能够从容应付数据的处理,也提高了效率。进行的处理主要是傅里叶变换,这是图像和音频处理最常用的手段,Python通过fft函数就能很容易实现。 ==2017年7月1日== *完成教程实验usb_webcam *完成教程实验opencv_filter_webcam *熟悉PIL库 *了解cv2库 <gallery> 文件:rotation.png|图像旋转 文件:Edge_detection.png|边缘识别 </gallery> 今天上午的两个实验吸取昨天的经验,依旧采用一段一段手输的方法,并且每输入一个Cell就运行它,这样虽然感觉上进度比较慢,但是能够学到很多东西。通过第一个实验usb_webcam了解到了PIL库,这是Python常用的图像处理库,功能也很强大,几行代码就能做到裁剪、旋转、颜色转换等。第二个实验是opencv_filter_webcam,顾名思义,肯定要用到opencv的东西。这是一个跨平台的计算机视觉库,功能也很强大,今天主要用到了它的实时图像处理的模块,对摄像头获取的图像进行线条化,然后在通过HDMI连接的显示器上进行实时输出。以上两个实验都是在PYNQ板上进行主要计算的。 *完成实验tfExample 由于下午有事,所以没有赶上上课,晚上抽空又去实验室把落下的任务补上了。任务很简单,从gitlab上下载一个压缩包,然后通过命令行打两句命令运行一个TensorFlow的程序,基本上就完成了,难就难在环境总是残缺不全,大部分时间还是都花在环境的配置上了,也许这就是这门课程的挑战性所在。首先用工作站运行,发现工作站连Python都没有(那时候还不知道任杰已经在上面装了anaconda,当然也不知道anaconda是Python的一个很强大的发行版),然后就先找Python,找到了Python,安装的时候又失败了,具体的原因忘记了,反正总是不行。然后想到反正也不用连板子,我自己的笔记本上也装了Python和TensorFlow,何不在它上面试试呢。可是试了一下又出现另外的问题,我的Python缺了两个很关键的库,一个是PIL,另外一个是SciPy,发现问题就要解决问题,我就开始在网上找这两个库。PIL一开始没有找到对应版本的,后来通过Pillow解决了,SciPy真的是一块硬骨头。一开始装的时候总是fail,发现好像缺了它依赖的numpy,装了之后还是不行。上网又搜了一下看到有人推荐用anaconda,可以一劳永逸解决这些乱七八糟的库的问题,然后才终于想起来工作站的桌面上好像是有一个anaconda,才意识到为什么工作站上没有Python任杰也没说啥了,因为他用了anaconda。在工作站上用anaconda跑了那两条命令,很顺利就出来了,但是最后打开那个网页上的Embedding页面的时候速度奇慢,这个时候动了第三次换机器的主意。当然也不是换,算是一边等结果一边解决笔记本的问题。然后就是继续搜SciPy,终于找到了一个解决方法,就是把numpy卸载了,重新装一个numpy+mkl,装上之后就能装SciPy了。通过这个还掌握了pip卸载软件的语法,就是把install换成uninstall。不得不说pip真是好用,既能直接输口令让它自己找,一些比较麻烦的还能下载下来原地通过安装包安装。都装好之后运行了那个程序,一切正常,除了那个embedding获取数据同样奇慢无比。不过这个无关紧要,今天的任务就基本完成了。 ==2017年7月2日== *了解神经网络概念 *训练语音识别网络 今天上午正式开始神经网络的内容,这也是我们这次挑战性课程的主题。首先老师讲了神经网络的发展历史,分类,一些典型代表,包括谷歌的CLDNN,CTC模型还有LSTM等等,我们的网络主要就有CLDNN和LSTM还有一些其他部分构成。用到的函数库是keras,这是一个TensorFlow的封装版,使用更加方便,更加傻瓜化。 <gallery> 文件:CPU_Run.png|训练开始(CPU) 文件:CPU_Engaged.png|满负荷运转 文件:CPU_Frequency.png|超频 </gallery> 操作上的主要内容就是训练网络了。首先到git上找到并下载一个项目,将其中两个脚本涉及到地址的内容改成当前所用地址,然后跑这两个脚本,开始训练。样本来自我们前几天自己录的音,不同的是被老师加上了很多背景白噪声,大幅度增加了样本量,实现了“增强学习”。将样本分割成两部分,分别放在两个不同的文件夹里,一部分用作训练,另一部分用作测试。在工作站上运行之后出现了很多问题,最主要的是10054和10061错误,都是和计算机连接有关的,通过关闭防火墙和提升权限都得到了解决,正常开始训练,不过速度奇慢,因为是用到cpu版本的TensorFlow。笔记本上也遇到了同样的10054和10061问题,但是用相同的办法却没办法解决,最后不得不先搁置起来。 下午除了等训练结果之外没有其他进展。网络正确率已经从早上开始时候的0.1提高到了0.6,相信经过一个晚上就可以达到0.9甚至0.99。 ==2017年7月3日== *配置Android Studio *在手机上部署离线语音识别app 今天早上出了一点意外,就是我们刚去的时候电脑屏幕是黑着的,然后我下意识按了一下电源键,才想起来电脑昨天一直在跑数据没有关。还好最后又想办法把它重新打开了,程序也还在运行。但是查看训练好的模型发现从昨天晚上到现在只训练了5个epoch,按照正常速度至少得有三四十个甚至五六十个。想必一定是电脑设置了自动休眠。在电源选项里查了一下果然是这样,如果没有任何操作半小时后休眠。不要说一台服务器,就是一台普通的台式机也不应该有这样的设置,这真是太奇怪了。好在gpu的速度够快,我们用一个上午的时间就把神经网络的准确率提高到0.95了,同时还下载并安装了Android Studio。Android Studio也是bug不断,有两个sdk始终没法下载,原因竟然是目标网站被墙了。不过快中午的时候老师给了另一个精简版的手册,按照那个手册终于把sdk下下来了。同时还把以前有人训练好的网络也下下来了,我们就先用这个网络来部署apk。 老师给的文件里面都设置好了,只要通过Android Studio打开,然后点击build就行了。这里也是助教教了我们一个小技巧,就是因为我的手机虽然支持Android 7.0也支持开发者模式,但是不允许通过usb安装。助教就教我们先build一个apk,再把这个apk复制到手机上,通过手机来安装,顺利解决了无法通过usb安装的问题。之后就没有什么问题了,app虽然界面比较简陋,但是功能还是足够的,毕竟我们只是做了识别的部分。不过根据实际测试情况来看,准确率完全没有达到0.9这么高,虽然有可能是之前训练这个网络的人没有好好训练,但更有可能是我们所处的机房噪声太大,而且说话的状态也和录音者有很大不同,所以才会经常出现识别错误的情况。 下午接近尾声的时候,另外一位老师为我们介绍了FPGA的相关知识,感觉这会是未来硬件设计的发展趋势,毕竟现在电子产品对功能要求越来越多,科技集成度越来越高,完全从底层开始做一个完整的产品成本巨大也丝毫没有必要。 ==2017年7月4日== *“冻图” *重新部署app 今天的主要任务是将自己训练出来的.h5文件转换成pb文件,替换Android包中原来的pb文件,重新生成app。这样就可以看到训练的效果是怎样的。在转换的过程中先要生成一个.pb文件,在生成一个.ckpt文件。根据我的理解,.pb文件只保存graph,.ckpt文件只保留weights,要两个文件合二为一才能被别的网络调用,这就是“冻图”freeze_graph函数所要完成的工作。在生成.pb和.ckpt文件时我们遇到了很大的麻烦,主要是今天需要我们自己写Python代码,而我们不知道keras和tensorflow中各个类和对象的关系,也不知道如何直接建立新的网络模型。通过查找大量的资料和询问助教,我们终于解决了这两个问题。冻图的过程也很不容易,这次虽然提供了代码,但是我们一开始没有看,而是找了网上的例子,在输入路径的时候加了引号,结果总是报错,“文件不存在”。后来把引号去掉又加了另一个必要参数之后终于能够顺利冻图了。另一个有趣的地方是我们一直以为我们的准确率很高,达到0.9以上,今天才知道acc是训练准确率,val_acc才是测试准确率,而我们的val_acc甚至不到0.1.这解释了为什么换上自己的.pb文件之后识别准确率呈断崖式下降。 最后,今天是我们这次挑战单元的最后一天,下午4点的时候我们六位同学和所有老师在实验室一起合了影,算是给这五六天的辛苦画上一个句号。这次挑战一方面我们自己摸索,一方面请教老师和助教,算是完整地经历了一次智能硬件和人工智能软件的开发过程,至少对智能硬件和人工智能的开发有了一个感性的认识。当再次需要进行这方面的工作的时候我们学习和掌握知识的速度一定会很快。人工智能即将迎来爆发的元年,它将开启一个时代,这个时代人类社会产生怎样的变化尚不了解,但一定是颠覆式的。只有更多地了解人工智能、利用人工智能才能让我们更好地适应这个时代,不被这个时代、或者说不被人工智能所淘汰。
返回
2016013201
。
导航菜单
个人工具
创建账户
登录
名字空间
页面
讨论
变种
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
实践教学
个性化3D设计与实现
人工智能实践教学
区块链技术及应用
虚拟现实技术与内容制作
超越学科界限的认知基础课程
电子工艺实习
Nand2Tetris Engine Curriculum
TULLL Creative Learning Group
Wiki上手说明
Wiki账户创建
最近更改
工具
链入页面
相关更改
特殊页面
页面信息