更改

2016013201

添加2,561字节2017年7月5日 (三) 01:21
/* 2017年7月1日 */
文件:Pynq_Spectrogram.png|频谱图
</gallery>
 
配置PYNQ板时需要先设置本机IP,这一步很容易,但有一点很关键,就是ip的第三段必须要设为2,这样才能够正确识别,另外也要注意PYNQ不支持IE和edge浏览器,推荐使用chrome。
*熟悉PIL库
*了解cv2库
 
 
<gallery>
文件:rotation.png|图像旋转
文件:Edge_detection.png|边缘识别
</gallery>
由于下午有事,所以没有赶上上课,晚上抽空又去实验室把落下的任务补上了。任务很简单,从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由于下午有事,所以没有赶上上课,晚上抽空又去实验室把落下的任务补上了。任务很简单,从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问题,但是用相同的办法却没办法解决,最后不得不先搁置起来。
下午接近尾声的时候,另外一位老师为我们介绍了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文件之后识别准确率呈断崖式下降。
 
 
<gallery>
文件:Low_Accuracy.png|极低的val_acc
</gallery>
 
 
 
最后,今天是我们这次挑战单元的最后一天,下午4点的时候我们六位同学和所有老师在实验室一起合了影,算是给这五六天的辛苦画上一个句号。这次挑战一方面我们自己摸索,一方面请教老师和助教,算是完整地经历了一次智能硬件和人工智能软件的开发过程,至少对智能硬件和人工智能的开发有了一个感性的认识。当再次需要进行这方面的工作的时候我们学习和掌握知识的速度一定会很快。人工智能即将迎来爆发的元年,它将开启一个时代,这个时代人类社会产生怎样的变化尚不了解,但一定是颠覆式的。只有更多地了解人工智能、利用人工智能才能让我们更好地适应这个时代,不被这个时代、或者说不被人工智能所淘汰。
行政员管理员
6,105
个编辑