Caffe, PyCaffe 上手实践(1)

最近突发奇想要把无人机的图像数据拿来做目标跟踪,因为实在不满意大疆不推送软件更新的做法,只好自己来实现下,在几个机器学习框架中挑选了一个caffe ,比较好上手的。。另外几个Torch,TensorFlow也不错。只是最开始直接干Caffe 了,所以TensorFlow之后再弄吧。 结果就是在云服务器上,笔记本电脑上,安卓手机上分别搞了机器学习的环境和APP,可以支持图像分类,目标识别。但离实用还差得比较远,慢慢来

Caffe, PyCaffe 上手实践(1)_第1张图片
这张识别效果还是可以的

Caffe 和PyCaffe 环境搭建和demo运行

主要问题集中在编译这一块,首先是caffe (C++ 项目)的依赖项,另外pycaffe 依赖项问题较多.
参考官网的安装说明,我这里重点只说坑, 环境基于Ubuntu16,Ubuntu14,都试过了。

首先简单说明下,Caffe 是基于C++源码(github)编译,在这个基础上再通过git clone py-faster-rcnn 这个项目来编译Python 的接口。
如下几个坑给后人查阅

  • Cython 编译
    在py-faster-rcnn 项目中首先需要搞定Cython 的环境和编译,在 RepoRoot/lib 的setup.py 中,把GPU相关的代码都注释掉,再make

  • Caffe 和PyCaffe 编译
    在faster-rcnn.. 中配置 Makefile.config, 然后make && make pycaffe, 在编译caffe时,可能会遇到某些库找不到,比如在ubuntu15,16上面 hdf5相关的库不在Makefile.config 默认指定的位置,参考hdf5 issue,在make文件中加上lib 的位置。

  • 另外再编译pycaffe接口之前,要搞定python先关的依赖项

将caffe-fast-rcnn/python目录下的requirements下的依赖都装一遍,for req in $(cat requirement.txt); do pip install $req; done

  • 可能还会遇到找不到numpy ,这个要自己查一下numpy是放到 /usr/bin 下面的python/dist-package/下了,还是/usr/local/bin/python/.. 替换下MakeFile.config中的 python 依赖包地址

  • 最后还可能遇到个pyyaml 的问题,把这个库用pip 装一下。不然import yaml 找不到module

  • 因为暂时采用CPU模式,GPU相关的都要注释掉,包括demo.py 中的 gpu nms_wrapper 相关的语句。

  • 最终还可能遇到机器内存不够的情况。。SWAP 把云服务器或者虚拟机的虚拟内存提高点,一般实体机不会遇到这个情况。

以上过程中找到的一些博文,作为填坑的参考
纯CPU环境下装Caffe
CPU环境下装Caffe2
github上关于CPU运行的几个issue

Caffe, PyCaffe 上手实践(1)_第2张图片
目标就是要借助无人机图传识别并且跟踪指定对象

一些关于机器学习与GIS应用结合的思考

看了些gis公司关于这方面的研究,主要有几类应用方向:

  • 基于图像的对象识别
    例如基于高分影像的道路对象识别,用于更新道路信息,当然也可用于城市空间中道路拥堵的分析,车辆的识别和追踪。

  • 基于大数据的,不仅限于图像。维度更多,异构,应用难度大。例如,基于用户反馈数据的道路拥堵分析。

  • 结合硬件,可以赋予无人机,无人车自动驾驶的功能。。那么其中要求控制器(例如手机或者pc)具有图像识别算法的运行环境(caffe2和tensorflow 都实现了,包括较早的opencv都可以做到)和基础设施,在读取无人机回传图像的同时做对象识别,匹配事先制定的规则,自行调整飞行方向。

初步环境已经搭好了,后面继续研究如何实时对框选样本进行识别。

参考资料:

caffe github项目
caffe2 项目地址
opencv 官网

你可能感兴趣的:(Caffe, PyCaffe 上手实践(1))