黑马程序员技术交流社区

标题: 【上海校区】深度学习爬坑记 [打印本页]

作者: 不二晨    时间: 2018-10-19 09:41
标题: 【上海校区】深度学习爬坑记
主要目的是整理一路学习的技术分享贴。我的电脑是笔记本联想拯救者R720,显卡是GTX1050Ti。其它环境仅供参考。

安装ubuntu+win10双系统

详情见技术贴用 EasyUEFI 在 Win8/10 中硬盘安装 Ubuntu16.04图文教程,注意事项如下:

备用下载地址EasyUEFI
WIN10系统下格式化FAT32,需要用格式化工具。
我的显卡太新会出现兼容性问题,需在启动F2中禁掉显卡后再安装系统,安装驱动后解我的显卡太新会出现兼容性问题,需在启动F2中禁掉显卡后再安装系统,安装驱动后解禁
sudo apt-get install nvidia-384
WIFI开机会出现无法正常打开命令行设置
sudo modprobe -r ideapad_laptop
安装环境

参考ubuntu安装Tensorflow安装CUDA和cudnn:
缺少依赖库解决办法:
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
CUDA9.0问题解决办法:
sudo apt install gcc-6 g++-6
sudo ln -s /usr/bin/gcc-6 /usr/local/bin/gcc
sudo ln -s /usr/bin/g++-6 /usr/local/bin/g++
转到anaconda3安装Tensorflow
最好安装python3.6对应版本的anaconda3(Anaconda3-4.3.1-Linux-x86_64.sh)
如果没Anaconda的信息,在终端执行:
nano .bashrc
最后一行添加export PATH="/home/xs/anaconda3/bin:$PATH"
source ~/ .bashrc
pip安装Tensorflow1.9
conda create -n tensorflow python=3.6
激活tensorflow环境:source activate tensorflow
pip install tensorflow-gpu==1.9.0
关闭tensorflow环境:source deactivate tensorflow
sudo rm -rf ~/anaconda3/lib/python3.6/site-packages
sudo cp -r ~/.conda/envs/tensorflow/lib/python3.6/site-packages ~/anaconda3/lib/python3.6/site-packages
TensorFlow Object Detection API

在ubuntu上配置
ubuntu sudo: pip:找不到命令
AttributeError: module ‘pip’ has no attribute ‘main’:sudo python -m pip install --upgrade pip==9.0.3
anaconda3修改权限:sudo chmod -R 777 anaconda3
将models复制到/home/xs/anaconda3/lib/python3.6/site-packages/tensorflow目录下
Object Detection API使用教学
xml_to_csv出错解决办法:sudo pip install pandas -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
训练文件出错解决办法:sudo pip install pycocotools
TypeError: can’t pickle dict_values objects解决办法:在model_lib.py中将category_index.values()改为list(category_index.values())即可(414行)
在object_detection目录下:python model_main.py --pipeline_config_path=training/ssd_mobilenet_v1_coco.config --model_dir=training --num_train_steps=50000 --num_eval_steps=2000 --alsologtostderr
有时内存不够出错,重启恢复,原因未知。
使用tensorboard查看模型情况python /home/xs/anaconda3/lib/python3.6/site-packages/tensorboard/main.py --logdir=training
使用Tensorboard分析模型
基于教程的工程

比较有效的数据集是真实环境下,相同采集器搜集的不同情况下的数据组成的数据集。模型的识别率与数据集的大小,模型的好坏,迭代的次数有关。如图的模型我使用的是真实场景下,手机拍摄的20张照片组成的数据集,ssd_mobilenet_v1_coco_2017_11_17模型通过迁移学习,迭代次数为35000次的实际效果。工程和APK见附件。
语音识别

如果是单独识别中文说话,做语音互交等内容,没必要自己做模型,主要是数据集需求太大,情感识别和模糊匹配难度太大。我选择使用腾讯翻译了谷歌官网的项目介绍主要用来识别如狗叫,背景音等定制化内容。
由于我是PIP安装,需要先在github中tensorflow上下载工程源码,再将tensorflow/examples/speech_commands文件夹解压缩至/home/xs/anaconda3/lib/python3.6/site-packages/tensorflow/models/samples中,在modles文件夹中运行python samples/speech_commands/train.py,在根目录下tmp文件夹中会生成数据集和模型。
在tmp/retrain_logs文件夹下终端python /home/xs/anaconda3/lib/python3.6/site-packages/tensorboard/main.py --logdir=validation可看到图形化模型效果。
生成模型:将tmp文件夹下speech_commands_train复制到speech_commands文件夹下(方便地址调用),在samples文件夹下打开终端python speech_commands/freeze.py --start_checkpoint=speech_commands/speech_commands_train/conv.ckpt-18000 --output_file=speech_commands/my_frozen_graph.pb,会生成my_frozen_graph.pb。
百度AI平台

作为国内较好的深度学习平台,我是在2018百度开发者大会拉入坑的。其可分为语音识别,语音合成,文字识别,图像识别,人体分析,人脸识别,理解与互交技术,AR增强现实等多个方向。我主要研究了其下的人脸识别,人机交互,图像识别。百度AI平台有开发难度低,种类完善等优点,但受限较大,只适合于入门或开发周期短的项目。

人脸识别
因离线模式实际效果一般,我选择了在线人脸识别。通过认证后百度提供了开发例程SDK,拥有一定java开发能力的人都能开发。附件中有我的单人人脸识别和多人人脸识别的安装包,我集成了语音合成,安装即可体验效果。工程文件需要授权验证,附件中的工程无法正常运行,只能作为参考,有需求的可以去官网认证开发者后申请授权,通过简单修改就能跑我的工程。
DourOS
附件中有工程和APK安装包,可直接运行,主要有以下功能:
语音识别:通过麦克风录音可以识别人说的话并转为文字,在线离线皆可
语音合成:可以将文字转为可以播放的音频文件,在线离线皆可,可方便集成到其它项目中
人机互交:通过语义分析和关键词提取,智能作出判断。目前只基于在线模式。
关键词唤醒:通过训练关键词语音,可在低功耗待机状态下通过语音开机,离线模式
Easydl
附件工程是离线版,用于识别黄色安全帽,由于绑定硬件,APK安装后是无法使用的,仅做参考。

如图所示,是我现场拍照的20张照片作为数据集生成的模型的实际效果,支持本地和在线两种模式。Easydl也有定制语音识别的内容,不过本地部署还没上线,目前只有在线识别。
Easydl,是自己寻找数据集,打标签后生成SDK,优点在于开发简单,无需安装平台,模型训练免费使用百度服务器。缺点在于模型不开放,需申请激活码且与硬件,包名绑定,很难集合到实际项目中。
百度AI studio
中国人自己的深度学习平台,有大量学习视频,在线编程平台也非常方便。不过由于社区不是特别完善,全球影响力较低。对新手非常友好,强力推荐,高手可以无视。
基于paddle框架下的百度AI平台,不得不说在线式平台真心好评(想想之前苦哈哈装环境,训练时各种担心笔记本吃不消重启)。但是不得不吐槽优质项目真心太少了,基于paddle教程,不是AI studio,此博主答应写AI studio教程,本萌新就偷懒坐等了。
神经计算棒


如图是我在树莓派上使用神经计算棒是效果,由于我只有一个神经计算棒,我只跑了一个人脸检测模型,效果是检测到人脸标出人脸框,理论上只要另一个跑facenet模型就能实现人脸识别。芯片有单卖的,可以集成到硬件板卡上。由于神经计算棒的开发还处于起始阶段,没有完善的编译纠错系统,开发难度较大。

小结

由于我的工作是嵌入式开发,对于服务器端的在线部署不是很了解,所研究的主要是嵌入式端的本地识别。对以上3个平台进行对比:

百度AI入门门槛最低,功能种类丰富,但是由于开源不彻底,实际项目中受到很多制约。实际开发过程中并不涉及多少深度学习内容,只适合急需项目和入门初学者。
谷歌tensorflow是学习和研究深度学习最好的平台之一,完全开源且有谷歌技术支持,对于有志于学习深度学习的入门初学者是最理想的平台。
神经计算棒是致力于解决嵌入式设备没GPU,大型模型本地化部署难的问题所推出的产品,可以使用caffe和tensorflow两种框架的大部分模型。由于推出时间短,还没形成完善的系统,再加上想要在实际项目中使用必须有一定硬件功底(芯片要集成到嵌入式板卡),实际开发难度最大,不太适合初学者。
---------------------
【转载】
作者:小小甜菜
原文:https://blog.csdn.net/oZhiZhuXia12/article/details/82994945


作者: 不二晨    时间: 2018-10-25 10:46

作者: 魔都黑马少年梦    时间: 2018-11-1 16:22





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2