小小甜菜Movidius爬坑记

小小甜菜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模型在树莓派上运行效果
小小甜菜Movidius爬坑记_第1张图片
yolov3在笔记本电脑实际运行效果截屏
小小甜菜Movidius爬坑记_第2张图片
两者对比可以看出yolov3比SSD在小物体检测上有了明显的提升,虽然两者都是8帧左右,但是由于运行环境不同,树莓派+神经计算棒和笔记本+4GGPU在算力上还是相差巨大的,目前yolov3还没法在嵌入式板卡中很好的运用,期待大神发力。

参考资料

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

你可能感兴趣的:(tensorflow,神经计算棒,嵌入式开发)