小小甜菜Movidius爬坑记

我是在神经计算棒+树莓派3B上看到实际效果后决定使用本方案的,实际项目中使用树莓派CM3作为核心板卡,使用Movidius 2或Movidius X(具体版本看项目需求决定)作为加速芯片,扩展板自己制作的方式,集成到项目中。官网最新发布
本项目使用YoloV2-tiny应用于神经计算棒,YOLOV2在测试时查看整个图像,因此其预测由图像中的全局上下文提供信息。它还使用单一网络评估进行预测,而不像R-CNN这样的系统需要数千个单个图像。这使得它非常快,比R-CNN快1000倍以上,比 Fast R-CNN快 100倍。个人感觉与SSD最大的区别在于输入图像不固定,提高了其泛活化,所以精度上有提高(可能有不足,小白见谅)。超级崇拜Joseph Chet Redmon大神的中二风格,堪称技术宅的指路灯。

  • 树莓派配置:
  1. 使用2018-10-09的系统镜像,按引导就能设置好中文。
//输入法黑框处理
killall fcitx-qimpanel
sudo mv /etc/xdg/autostart/fcitx-qimpanel-autostart.desktop /etc/xdg/autostart/fcitx-qimpanel-autostart.desktop.bak
reboot
//使用树莓派摄像头
cd /etc/modules-load.d
sudo nano modules.conf
添加:bcm2835-v4l2
reboot
  1. 神经计算棒1代安装环境
git clone http://github.com/Movidius/ncsdk.git
git clone https://github.com/movidius/ncappzoo.git
在ncsdk文件夹下
修改ncsdk.conf中INSTALL_TENSORFLOW=no,#去掉(限速防止卡死)
sudo make install
make examples
sudo nano ~/.bashrc
export PYTHONPATH=:"${PYTHONPATH}:/opt/movidius/caffe/python"
sudo reboot
cd /home/pi/workspace/ncappzoo/apps/video_objects
make
python3 video_objects.py
cd /home/pi/workspace/ncappzoo/apps/live-image-classifier-PiCam
python3 live-image-classifier-picam.py --graph ../../caffe/AlexNet/graph --dim 227 227
python3 live-image-classifier-picam.py --graph ../../tensorflow/mobilenets/model/graph --labels ../../tensorflow/mobilenets/model/labels.txt --mean 127.5 --scale 0.00789 --dim 224 224 --colormode="RGB"(需安装tensorflow)
//安装python2版tensorflow
sudo pip install astor funcsigs termcolor protobuf markdown futures numpy mock tensorboard==1.9.0 grpcio absl-py gast
sudo aptitude install libatlas-base-dev
sudo pip install --no-cache-dir tensorflow==1.9.0
安装位置:/usr/local/lib/python2.7/dist-packages/tensorflow
sudo gedit ~/.bashrc
export PYTHONPATH=:"${PYTHONPATH}:/usr/local/lib/python2.7/dist-packages/tensorflow/python"
sudo reboot
//安装python3版tensorflow(推荐只装3)
sudo pip3 install astor funcsigs termcolor protobuf markdown futures numpy mock tensorboard==1.9.0 grpcio absl-py gast
sudo aptitude install libatlas-base-dev
sudo pip3 install numpy==1.15.1
sudo pip3 install --no-cache-dir tensorflow==1.9.0
在/home/pi/workspace/ncappzoo/tensorflow/tf_src下修改Makefile
$(eval TF_SRC_PATH=/usr/local/lib/python3.5/dist-packages/tensorflow)
之后在终端make
cd /home/pi/workspace/ncappzoo/tensorflow/mobilenets
修改Makefile: (cd model; python3 /usr/local/lib/python3.5/dist-packages/tensorflow/python/tools/freeze_graph.py \
make
  1. 神经计算棒2代安装环境
mkdir workspace
cd workspace
git clone -b ncsdk2 http://github.com/Movidius/ncsdk.git
git clone -b ncsdk2 https://github.com/movidius/ncappzoo.git
在ncsdk文件夹下
sudo pip3 install scikit-image==0.11.3
修改ncsdk.conf中INSTALL_TENSORFLOW = NO,#去掉(限速防止卡死)
make install
make examples
//安装python3版tensorflow
sudo pip3 install astor funcsigs termcolor protobuf markdown futures numpy mock tensorboard==1.9.0 grpcio absl-py gast
sudo aptitude install libatlas-base-dev
sudo pip3 install numpy==1.15.1
sudo pip3 install --no-cache-dir tensorflow==1.9.0
在/home/pi/workspace/ncappzoo/tensorflow/tf_src下修改Makefile
$(eval TF_SRC_PATH=/usr/local/lib/python3.5/dist-packages/tensorflow)
之后在终端make
cd /home/pi/workspace/ncappzoo/tensorflow/tf_models
make

官网最新发布

  • Ubuntu使用darkflow训练YoloV2-tiny-voc
    依赖:至少需安装Python3,tensorflow 1.0,numpy,opencv 3(具体参考小小甜菜深度学习爬坑记)
//安装环境
git clone https://github.com/thtrieu/darkflow.git
cd darkflow
python3 setup.py build_ext --inplace
//下载数据集
curl -O https://pjreddie.com/media/files/VOCtest_06-Nov-2007.tar
tar xf VOCtest_06-Nov-2007.tar
从darknet下载yolov2-tiny.cfg,yolov2-tiny-voc.cfg
//修改labels.txt
//使用数据集训练
./flow --model cfg/yolov2-tiny-voc.cfg --train --gpu 1.0 --dataset "VOCdevkit/VOC2007/JPEGImages" --annotation "VOCdevkit/VOC2007/Annotations"
//完全初始化yolo-new并使用ADAM优化器(未测试)
./flow --model cfg/yolo-new.cfg --train --trainer adam
//恢复最近的训练检查点
./flow --train --model cfg/yolov2-tiny-voc.cfg --load -1 --gpu 1.0 --dataset "VOCdevkit/VOC2007/JPEGImages" --annotation "VOCdevkit/VOC2007/Annotations"
//保存模型转pb格式(生成两文件复制到树莓派model下)
./flow --model cfg/yolov2-tiny-voc.cfg --load -1 --savepb
//保存图表和权重(权重为初始权重,在官网下载的)
./flow --model cfg/yolov2-tiny-voc.cfg --load bin/yolov2-tiny-voc.weights --savepb
  • 树莓派下使用YoloV2-tiny
//克隆我的开源项目
git clone https://github.com/17702513221/Movidius.git
//将darkflow训练的yolov2-tiny-voc.pb文件复制到model文件夹下,模型格式转换
cd Movidius/ncs_objection/model
mvNCCompile -o tiny_yolo_v2.graph yolov2-tiny-voc.pb -s 12
//测试模型
cd ncs_objection
//默认为测试test文件夹下图片,置信度0.3
python3 test.py
//测试视频(默认为测试test文件夹下视频,置信度0.3)
python3 test.py -m video
//使用摄像头
python3 test.py -m video -v 0
//修改置信度0.1(修改图片,视频地址不列出-i -v)
python3 test.py -c 0.1
//使用树莓派摄像头
cd /etc/modules-load.d
sudo nano modules.conf
添加:bcm2835-v4l2
reboot
//目前效果:神经计算棒2代识别一次要0.25秒,更新0.3秒一帧
python3 video_objects_scalable_yolov2_tiny.py
  1. 在ubuntu上安装OpenVINO
//要安装在ubuntu16.04上,ubuntu18.04依赖出错。目前提供的例子比较少。坐等官方支持数莓派(以列入优先表)

官方说明
6. 训练COCO的数据集(数据集就懒得制作了,能用的数据集制作起来太费力,具体参考小小甜菜深度学习爬坑记)

//Ubuntu下,下载coco2014数据集及其标注[下载地址](http://cocodataset.org/#download)
curl -O http://images.cocodataset.org/zips/train2014.zip
curl -O http://images.cocodataset.org/annotations/annotations_trainval2014.zip
//解压缩后将train2014(里面是图片),annotations文件夹放在一起,将我的项目中tools文件夹拷贝过来,安装依赖
sudo apt-get install python3-tk
pip3 install scikit-image
pip3 install lxml
pip3 install tqdm
cd tools
python3 coco_voc.py

安装cocoapi

效果分析

SSD模型在树莓派上运行效果

yolov3在笔记本电脑实际运行效果截屏

两者对比可以看出yolov3比SSD在小物体检测上有了明显的提升,虽然两者都是8帧左右,但是由于运行环境不同,树莓派+神经计算棒和笔记本+4GGPU在算力上还是相差巨大的,目前yolov3还没法在嵌入式板卡中很好的运用,期待大神发力。

参考资料

YOLO v2训练自己的数据
YoloV2之TensorFlow版源码解析

小小甜菜Movidius爬坑记相关推荐

  1. 小小甜菜keras爬坑记

    小小甜菜keras爬坑记 前言 安装(参考深度学习爬坑记安装ubuntu16.04+cuda9+cudnn+tensorflow1.9.0) 视频资料 相关模型资料 学习笔记 ssd模型 yolov3 ...

  2. 小小甜菜深度学习爬坑记

    小小甜菜深度学习爬坑记 主要目的是整理一路学习的技术分享贴.我的电脑是笔记本联想拯救者R720,显卡是GTX1050Ti.其它环境仅供参考. 安装ubuntu+win10双系统 详情见技术贴用 Eas ...

  3. 小小甜菜百度AI爬坑记

    小小甜菜百度AI爬坑记 作为国内较好的深度学习平台,我是在2018百度开发者大会拉入坑的.其可分为语音识别,语音合成,文字识别,图像识别,人体分析,人脸识别,理解与互交技术,AR增强现实等多个方向.我 ...

  4. 我在「小米爬坑记」里,看到的 3 个创业真相

    小米把10年的创业经历,做了一次「开源」. 就在昨晚,雷军做了小米十周年的公开演讲.在演讲中,雷军对小米10年的发展做了一次大梳理,既有成绩,也有反思,还有小米历史上一些非常关键的发展节点.其实上个月 ...

  5. Spring Cloud Contract 爬坑记

    前言:spring-cloud-starter-contract-verifier:2.1.1.RELEASE. spring-cloud-contract-maven-plugin:2.2.1.RE ...

  6. npm run build 打包爬坑记(1)

    npm run build 打包爬坑记 先说说打包过程,npm run build 后放入phpstudy里面,访问本地ip,查看phpstudy的端口号,就能访问页面了(访问地址:http://19 ...

  7. 小白爬坑记:C语言学习点滴——我对单、双引号的理解

    小白爬坑记:C语言学习点滴--我对单.双引号的理解 一.单引号的作用: 二.双引号的作用: 三.字符或字符串容易犯的错误: 三.做个小题: 一.单引号的作用: 将单引号中间的所有符号直接转换为ASCI ...

  8. linux mono jexus性能,docker运行jexus+mono爬坑记,

    docker运行jexus+mono爬坑记, 新的.net core都已经支持docker.手头有一些原来开发的asp.net旧项目,用的asp.net mvc开发的,跑在.net formwork ...

  9. python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)

    简介 有些 post 的请求参数是 json 格式的,这个前面发送post 请求里面提到过,需要导入 json模块处理.现在企业公司一般常见的接口因为json数据容易处理,所以绝大多数返回数据也是 j ...

最新文章

  1. 蓝牙写入数据库_蓝牙 数据写入 简单易懂版(适合没写过蓝牙的看)
  2. 一个技术人的2016成长和2017小目标
  3. Tries and Ternary Search Trees in Python and Javascript
  4. word如何发布博客到博客园
  5. PHP两种不同的快递运单号查询
  6. linux内核设计与实现 中文第三版 pdf_大牛推荐的5本 Linux 经典必读书
  7. mysql 如何用一条SQL将一张表里的数据插入到另一张表 3个例子
  8. 2021牛客第一场 K.Knowledge Test about Match
  9. php数据库中统计人数用什么方法,在PHP中处理用户统计信息的最佳方法是什么
  10. 正则表达式提取器_C++11新特性7 - 正则表达式
  11. 现代软件工程讲义 个人项目和结对项目练习 地铁
  12. Find a way BFS
  13. layui fixbar 返回顶部_卖在顶部(四)
  14. gstreamer插件开发_测评丨高性能多媒体处理器—飞凌OKMX8MM-C开发板
  15. 你所知的最有价值(最有效)的思维方法是什么?
  16. 上下定高 中间自适应_B站微服务框架Kratos详细教程(3)中间件
  17. Python黑帽子:取代netcat
  18. 台式计算机怎么安装无线网卡,台式机装无线网卡,详细教您台式机怎么使用无线网卡上网...
  19. 效率至上 计算机使用规范
  20. OpenCV图像处理——阈值处理/二值化(python实现和c++实现)

热门文章

  1. date java string 转换,Java Date转String
  2. 流量卡之家:三个用例可以帮助消除制造商对AI功能的疑虑
  3. 怎样去调整摄影作品的背景颜色
  4. 利用符号执行去除控制流平坦化
  5. 华为android9.0升级,华为安卓9.0升级名单 EMUI9.0升级支持机型汇总
  6. Java实现 LeetCode 658 找到 K 个最接近的元素(暴力)
  7. 华为C8650+刷机体会
  8. 第十一章——电子商务网站用户行为分析及服务推荐
  9. 办公本推荐计算机专业,适合设计师的轻薄办公笔记本电脑,我只推荐这几款
  10. kindeditor(富文本编辑器)的使用