本文是上一篇文章的续文。
微软于2017年6月底发布了一个主要用于嵌入式系统(例如,树莓派,ARM Cortex-M0等)的机器学习库ELL(Embedded Learning Library,嵌入式学习库)。
要在树莓派上使用pre-trained的模型,我们先要在PC上对其进行测试,这个测试说白了就是运行一些Python的demo程序看它们是否能正常工作。而上一篇文章,正是介绍了在Ubuntu PC上的准备工作——如果没有那些准备工作,你连测试的基础条件都不具备。
注:本文的所有操作,都是在台式机上运行的。
- 选择模型
至此,我们终于到模型这一步了。
由于训练机器学习模型的时间通常较长,所以,训练模型这个工作肯定不能放在树莓派上干。我们可以使用别人已经预先训练好的模型来节省时间,ELL文档里推荐了两个:CNTK和Darknet。
本文在PC上测试ELL时,将主要使用CNTK;而在树莓派上测试ELL时,出于运行速度等种种原因考虑,不得不使用Darknet(和Darknet相比,CNTK不够轻量级)。
- 安装CNTK相关的软件
在前面的conda环境下,安装CNTK的Python package:
pip install https://cntk.ai/PythonWheel/CPU-Only/cntk-2.0-cp36-cp36m-linux_x86_64.whl
输出类似于:
Collecting cntk==2.0 from https://cntk.ai/PythonWheel/CPU-Only/cntk-2.0-cp36-cp36m-linux_x86_64.whlDownloading https://cntk.ai/PythonWheel/CPU-Only/cntk-2.0-cp36-cp36m-linux_x86_64.whl (109.5MB)
......Successfully installed cntk-2.0
这一步耗时较长,耐心等待吧。
然后回到ELL代码根目录,切换到gettingStarted目录并下载CNTK的ImageNet推断模型:
cd build/tutorials/vision/gettingStarted
curl -O https://www.cntk.ai/Models/Caffe_Converted/VGG16_ImageNet_Caffe.model
- 测试模型
下面可以测试一下模型了:
(py36) [codelast@ gettingStarted]$ python cntkDemo.py
如果此时报错:
Traceback (most recent call last):File "cntkDemo.py", line 4, in <module>import cv2ImportError: /home/codelast/.miniconda3/envs/py36/lib/python3.6/site-packages/../../libopencv_dnn.so.3.2: undefined symbol: openblas_get_num_threads
conda install openblas
然后再试。
文章来源:https://www.codelast.com/
如果遇到“ImportError: libmpi_cxx.so.1: cannot open shared object file: No such file or directory”这种错误,说明系统里没有安装Open MPI开发包,理论上应该用下面的命令安装:
sudo apt-get install libopenmpi-dev
解决了那么那么多的问题,现在总可以了吧?再次执行 cntkDemo.py,等待它运行了一段时间之后,一开始看上去还挺正常的,执行到后面又出错了:
...Finished constructing ELL layers.OpenCV Error: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script) in cvShowImage, file /feedstock_root/build_artefacts/opencv_1490907195496/work/opencv-3.2.0/modules/highgui/src/window.cpp, line 583Traceback (most recent call last):File "cntkDemo.py", line 68, in <module>main()File "cntkDemo.py", line 61, in maincv2.imshow('frame', frameToShow)......
文章来源:https://www.codelast.com/
当在PC上成功地跑起来了CNTK的demo之后,我们就可以认为这个model是work的,然后就要准备把它弄到树莓派上去跑了。
文章来源:https://www.codelast.com/
➤➤ 版权声明 ➤➤
转载需注明出处:codelast.com
感谢关注我的微信公众号(微信扫一扫):