最近突發(fā)奇想要把無人機的圖像數(shù)據(jù)拿來做目標跟蹤,因為實在不滿意大疆不推送軟件更新的做法,只好自己來實現(xiàn)下,在幾個機器學(xué)習(xí)框架中挑選了一個caffe ,比較好上手的。。另外幾個Torch,TensorFlow也不錯。只是最開始直接干Caffe 了,所以TensorFlow之后再弄吧。 結(jié)果就是在云服務(wù)器上,筆記本電腦上,安卓手機上分別搞了機器學(xué)習(xí)的環(huán)境和APP,可以支持圖像分類,目標識別。但離實用還差得比較遠,慢慢來
Caffe 和PyCaffe 環(huán)境搭建和demo運行
主要問題集中在編譯這一塊,首先是caffe (C++ 項目)的依賴項,另外pycaffe 依賴項問題較多.
參考官網(wǎng)的安裝說明,我這里重點只說坑, 環(huán)境基于Ubuntu16,Ubuntu14,都試過了。
首先簡單說明下,Caffe 是基于C++源碼(github)編譯,在這個基礎(chǔ)上再通過git clone py-faster-rcnn 這個項目來編譯Python 的接口。
如下幾個坑給后人查閱
Cython 編譯
在py-faster-rcnn 項目中首先需要搞定Cython 的環(huán)境和編譯,在 RepoRoot/lib 的setup.py 中,把GPU相關(guān)的代碼都注釋掉,再makeCaffe 和PyCaffe 編譯
在faster-rcnn.. 中配置 Makefile.config, 然后make && make pycaffe, 在編譯caffe時,可能會遇到某些庫找不到,比如在ubuntu15,16上面 hdf5相關(guān)的庫不在Makefile.config 默認指定的位置,參考hdf5 issue,在make文件中加上lib 的位置。另外再編譯pycaffe接口之前,要搞定python先關(guān)的依賴項
將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相關(guān)的都要注釋掉,包括demo.py 中的 gpu nms_wrapper 相關(guān)的語句。
最終還可能遇到機器內(nèi)存不夠的情況。。SWAP 把云服務(wù)器或者虛擬機的虛擬內(nèi)存提高點,一般實體機不會遇到這個情況。
以上過程中找到的一些博文,作為填坑的參考:
純CPU環(huán)境下裝Caffe
CPU環(huán)境下裝Caffe2
github上關(guān)于CPU運行的幾個issue
一些關(guān)于機器學(xué)習(xí)與GIS應(yīng)用結(jié)合的思考
看了些gis公司關(guān)于這方面的研究,主要有幾類應(yīng)用方向:
基于圖像的對象識別
例如基于高分影像的道路對象識別,用于更新道路信息,當(dāng)然也可用于城市空間中道路擁堵的分析,車輛的識別和追蹤。基于大數(shù)據(jù)的,不僅限于圖像。維度更多,異構(gòu),應(yīng)用難度大。例如,基于用戶反饋數(shù)據(jù)的道路擁堵分析。
結(jié)合硬件,可以賦予無人機,無人車自動駕駛的功能。。那么其中要求控制器(例如手機或者pc)具有圖像識別算法的運行環(huán)境(caffe2和tensorflow 都實現(xiàn)了,包括較早的opencv都可以做到)和基礎(chǔ)設(shè)施,在讀取無人機回傳圖像的同時做對象識別,匹配事先制定的規(guī)則,自行調(diào)整飛行方向。
初步環(huán)境已經(jīng)搭好了,后面繼續(xù)研究如何實時對框選樣本進行識別。