最近突發奇想要把無人機的圖像數據拿來做目標跟蹤,因為實在不滿意大疆不推送軟件更新的做法,只好自己來實現下,在幾個機器學習框架中挑選了一個caffe ,比較好上手的。。另外幾個Torch,TensorFlow也不錯。只是最開始直接干Caffe 了,所以TensorFlow之后再弄吧。 結果就是在云服務器上,筆記本電腦上,安卓手機上分別搞了機器學習的環境和APP,可以支持圖像分類,目標識別。但離實用還差得比較遠,慢慢來
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相關的代碼都注釋掉,再makeCaffe 和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
一些關于機器學習與GIS應用結合的思考
看了些gis公司關于這方面的研究,主要有幾類應用方向:
基于圖像的對象識別
例如基于高分影像的道路對象識別,用于更新道路信息,當然也可用于城市空間中道路擁堵的分析,車輛的識別和追蹤。基于大數據的,不僅限于圖像。維度更多,異構,應用難度大。例如,基于用戶反饋數據的道路擁堵分析。
結合硬件,可以賦予無人機,無人車自動駕駛的功能。。那么其中要求控制器(例如手機或者pc)具有圖像識別算法的運行環境(caffe2和tensorflow 都實現了,包括較早的opencv都可以做到)和基礎設施,在讀取無人機回傳圖像的同時做對象識別,匹配事先制定的規則,自行調整飛行方向。
初步環境已經搭好了,后面繼續研究如何實時對框選樣本進行識別。