小小甜菜深度学习爬坑记

小小甜菜深度学习爬坑记

主要目的是整理一路学习的技术分享贴。我的电脑是笔记本联想拯救者R720,显卡是GTX1050Ti。其它环境仅供参考。

安装ubuntu+win10双系统

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

  • 备用下载地址EasyUEFI
  • WIN10系统下格式化FAT32,需要用格式化工具。
  • 我的显卡太新会出现兼容性问题,需在启动F2中禁掉显卡后再安装系统,安装驱动后解我的显卡太新会出现兼容性问题,需在启动F2中禁掉显卡后再安装系统,安装驱动后解禁
  • sudo apt-get install nvidia-384
  • sudo apt-get install nvidia-driver-418
  • WIFI开机会出现无法正常打开命令行设置
  • sudo gedit /etc/rc.local
  • modprobe -r ideapad_laptop//在exit 0前加上
  • 使用国内源: pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple django

谷歌Tensorflow

sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt-get update
sudo apt-get install python3.6
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
sudo update-alternatives --config python3
sudo apt-get install python3.6-dev
//缺少依赖库解决办法:
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++
//使配置生效
source ~/.bashrc
//安装tensorflow—gpu和models
sudo apt install python3-pip
pip3 install tensorflow-gpu==1.9.0
ln -s /home/xs/.local/lib/python3.6/site-packages/tensorflow
sudo apt install git
git clone https://github.com/tensorflow/models.git
//将models文件夹复制到tensorflow下,在/home/xs/.local/lib/python3.6/site-packages下创建tensorflow_model.pth,内容为如下两行:
/home/xs/.local/lib/python3.6/site-packages/tensorflow/models/research
/home/xs/.local/lib/python3.6/site-packages/tensorflow/models/research/slim
pip3 install matplotlib
pip3 install opencv-python
  • TensorFlow Object Detection API:
  • ubuntu16.04安装时protobuf编译出错解决办法
  • 原理解析
  • 在ubuntu上配置
  • 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见附件。
    关于batch_size:一般设置越大,一次训练的就越多,loss收敛越快,但一般GPU内存有限,过大会内存爆炸;设置越小,反向回传容易出现weights都大于1的情况,连着乘容易炸。
    参考资料
  • Mask Rcnn
    我是根据链接例程走的,由于我的笔记本电脑显卡4G,跑不动Mask Rcnn,在训练后无法验证实际效果。不得不吐槽AI是显卡战争,P100太贵了。
    用Tensorflow Object Detection API 训练自己的mask R-CNN模型
  • 语音识别
    运行官方例程
    如果是单独识别中文说话,做语音互交等内容,没必要自己做模型,主要是数据集需求太大,情感识别和模糊匹配难度太大。我选择使用腾讯翻译了谷歌官网的项目介绍主要用来识别如狗叫,背景音等定制化内容。
    由于我是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。
  • 将pb模型和speech_commands_train文件夹下的conv_labels.txt复制到之前的APP工程中简单修改代码就能调用。
    测试模型:在speech_commands文件夹下python label_wav.py --graph=my_frozen_graph.pb --labels=speech_commands_train/conv_labels.txt --wav=speech_dataset/dog/0a2b400e_nohash_0.wav
    做自己的中文语音识别
    首先下载中文语音数据集,这个比较难暂时弃坑,填坑时间未知。
    利用例程识别其它音频
    实际体验不佳,使用谷歌语音数据集的dog可以正确识别,但是上网下载的狗叫声音由于数据集太小,狗的声音太离散,无法识别。感觉做AI必须要掌握爬虫工具,音频数据剪辑等能力。音频数据集自己制作难度比图片数据集大,普通下载的或录音需要修改后才能使用,故暂时弃坑,等有具体项目再精心准备数据集。
    直接使用官方语音数据集只需要在train.py中改变要识别的单词就行,我主要希望识别特定音频,需要涉及到制作自己的语音数据集。
    Google同时还开源了制作这个数据集的工具
  • yolov3
pip3 install keras==2.1.5
pip3 install --upgrade h5py

Keras/Tensorflow+python+yolo3训练自己的数据集
Tensorflow实现YOLO v3(TF-Slim)

  • Tlite模型
    个人理解主要原理主要是对特定模型进行量化处理,把参数数据类型为float32的模型量化成int8,int16等,使模型size变小,同时配合代码上的优化使运算速度加快。Tlite模型目前支持的模型种类有限,初学者尽量选择已经确定支持的模型做迁移学习,使用官方接口更容易使用,高手请无视。
    强调算法学习主要目的是做模型的剪枝,压缩等工作。个人理解剪枝:减少模型中非零参数,让模型更稀疏。在这过程中可以调整算法让剪枝结构化,使的运算速度可以得到实质加快。
    模型调整是我接下来学习重点,暂时先挖坑。
  • tensorflow C++ 环境搭建及实战

百度AI平台

转帖到小小甜菜百度AI爬坑记

神经计算棒

转帖到小小甜菜Movidius爬坑记

模型处理

目前有人工手动处理和自动处理两种,我了解的有tensorflow lite和pocketflow两种。先挖坑,填坑时间未知。

安装caffe(GPU)

//CUDA,CUDNN参照前,其他参照下面
sudo apt-get install python-opencv
sudo apt-get install python-pip
make all
make test
make runtest
wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py
sudo apt-get install python-protobuf

ubuntu18.04安装caffe
SSD配置
错误1

小结

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

  • 百度AI入门门槛最低,功能种类丰富,但是由于开源不彻底,实际项目中受到很多制约。实际开发过程中并不涉及多少深度学习内容,只适合急需项目和入门初学者。AI studio非常适合初学者学习,提供大量教学视频和丰富案例,不过由于才建立不久,有一定不足之处,不太适合企业级开发。
  • 谷歌tensorflow是学习和研究深度学习最好的平台之一,完全开源且有谷歌技术支持,对于有志于学习深度学习的入门初学者是最理想的平台。大多资料是英文的,推荐和百度AI studio结合学习。企业大多是使用tensorflow平台开发。
  • 神经计算棒是致力于解决嵌入式设备没GPU,大型模型本地化部署难的问题所推出的产品,可以使用caffe和tensorflow两种框架的大部分模型。由于推出时间短,还没形成完善的系统,再加上想要在实际项目中使用必须有一定硬件功底(芯片要集成到嵌入式板卡),实际开发难度最大,不太适合初学者。

小贴士

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb 
sudo dpkg -i VNC-Viewer-6.18.907-Linux-x64.deb
使用WinSCP登录后,打开终端输入:
vncserver
之后用VNCviewer打开
//输入法解决办法:在xstartup添加
fcitx &
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值