1、安裝anaconda
2、更新gcc到4.9以上
gcc -std=c++11 test.cpp
測試代碼test.cpp
#include<iostream> #include<memory> using namespace std; int main(){ shared_ptr<int> p = make_shared<int>(42); cout<<"p = "<<*p<<endl; return 0; }
3、安裝mmdetection
1)創建conda虛擬環境並激活,然后安裝cpython
conda create -n open-mmlab python=3.7 -y conda activate open-mmlab conda install cython
2)查看本機是否支持GPU
lspci | grep -i nvidia
安裝pytorch(>=1.0) # 可以直接通過pytorch的官網查看安裝命令
3)克隆mmdetection倉庫
git clone https://github.com/open-mmlab/mmdetection.git cd mmdetection
# 2019年7月27日更新后的mmdetection,將compile和install放在一個腳本中
# 編譯cuda
# ./compile.sh
4)安裝mmdetection
# 之前使用的是
python setup.py install # 或 pip install .
出現問題,不能將.c文件成功轉譯成py文件,導致引用的很多由.c文件定義的conv與pool無法使用。出現ImportError的相關錯誤:
python setup.py develop # or “pip install -e .”
# 在使用過程中遇到的問題可以在mmdetection的github中的issues中詢問或查找
4、mmdetection的使用
對於mmdetection框架的使用,可以直接參考github上給出的樣例,提取出需要使用的代碼即可,我是用的是demo文件夾下的圖片,同時
Test.py
測試結果
訓練:
python tools/train.py <config_filepath> [--gpus num]
在進行數據集的訓練時,可以看tools文件夾下的train.py代碼,一般需要自己配置的只有work_dirs,以及gpus:
--work_dirs:結果保存路徑。也可以在config文件中進行配置
--gpus:訓練時使用的gpu的數量。
使用config文件中包含使用的框架、數據集信息,以及訓練中的一些參數配置。
使用config文件中包含使用的框架、數據集信息,以及訓練中的一些參數配置。可以直接使用mmdetection的configs文件夾下的配置文件,需要針對性修改一些信息,如數據庫的類型dataset_type以及數據庫的路徑data_root,其次train與test數據信息中的標注文件的路徑ann_file,圖片路徑img_prefix。
訓練完成后,在work_dirs定義的文件夾下會出現每次迭代輸出的信息,以及每次epoch完成后的參數結果:

此時在測試時,就可以直接使用自己訓練好的checkpoints(就是.pth文件)了。
我使用的是faster_rcnn_r50_fpn_1x的相應配置,使用coco2017的數據集,此次只使用了4個epoch得到結果,下圖使用tools/analyze_logs.py文件對一些數據plot,其中包括loss_rpn_cls、loss_rpn_bbox、loss_cls、loss_bbox以及loss:

使用參考mmdetection的github中給出的方法:
python tools/analyze_logs.py plot_curve <json文件> --keys <parameters list> --legend <legends>
其中:
<json文件>:就是訓練過程中生成的json文件的路徑 <parameters list>:需要plot的數據名稱,需要時json文件中存在的 <legends>:對應parameters list的標簽
測試:
使用官方提供的測試命令:
python tools/test.py <config_filepath> <checkpoint> [...]
在測試過程中,使用tools/test.py文件,test.py文件必須要參數包括config、checkpoint,以及(--out, --show, --json_out)三個中的一個,其中:
--config:配置文件,使用訓練使用的配置文件 --checkpoint:參數數據,使用work_dirs下的任一.pth文件 --out:輸出路徑,使用.pkl結尾的文件名 --json_out:輸出為json類型的數據
使用show結果會被一張張的顯示出來,因為此次結果我僅使用了4次epochs,所以對於小的區域的檢測結果可能不太准確。

最后使用當前訓練結果重新進行demo.jpg的測試

補充說明:
我直接使用tools文件夾下的train.py與test.py文件,會出現之前的ImportError,無法找到deform_conv_cuda等一系列的文件,所以我直接將train.py和test.py文件復制到mmdetection項目文件夾下,之后運行就沒有問題了。
如果想要在本地上直接跑mmdetection的測試代碼,使用軟件為Pycharm,可以參見另一篇博客:Pycharm配置服務器中conda創建的虛擬python環境
完成Python環境的配置后,不過此時直接測試test.py仍然會出現問題,”cannot connect to X server.” 這是由於Linux的圖形顯示通過X server實現,在客戶端進行訪問時,需要server對其賦予權限。我將圖形結果不顯示,直接保存下來:
