目標檢測框架——Dtectron2

前言

目標檢測的模型還是很多的,要挨個挨個學還是有點喫力(精力旺盛可忽略),所以這裏總結一下當前流行的目標檢測的框架:darknet yolov4,mmdetection2.0,detectron2.0。至於這三個框架怎麼去選擇,我的答案是隻有你真正懂了,上手試了這幾個框架之後你才能比較它們之間的優劣。

1. Dtectron2 配置

我的環境:WIN10,CUDA10.1,cuDNN7.6.4,Anaconda,VS2019(這個必須有),OpenCV3.4.10,GTX1660(6G內存)

1.1 虛擬環境

至於爲什麼要創建一個虛擬環境,起作用主要有以下幾個:

  1. 虛擬環境可以搭建獨立的python運行環境, 使得單個項目的運行環境與其它項目互不影響。
  2. 可以避免一個環境造成得安裝包過的多,導致環境加載緩慢。

創建一個沒有存在過的虛擬環境:

conda create -n detectron2 python=3.7

激活虛擬環境:

conda activate detectron2

1.2 安裝pytorch

conda install pytorch=1.4 torchvision cudatoolkit=10.1

這裏pytorch只能是1.4版本的,太低會運行不成功,這也是爲什麼要創建虛擬環境的原因。

1.3 安裝一些依賴包

pip install cython opencv-python pillow  matplotlib termcolor cloudpickle tabulate tensorboard termcolor tqdm yacs mock fvcore pydot wheel future

1.4 修改文件內部的一些參數(非常重要)

  1. 修改C:\Users\lee\Anaconda3\envs\mmd2\Lib\site-packages\torch\utils\cpp_extension.py185行:match = re.search(r'(\d+)\.(\d+)\.(\d+)', compiler_info.decode("utf8","ignore").strip())

  2. 修改C:\Users\lee\Anaconda3\envs\detectron\Lib\site-packages\torch\include\torch\csrc\jit\argument_spec.h文件中的static constexpr size_t DEPTH_LIMIT = 128; 改成 static const size_t DEPTH_LIMIT = 128;

  3. 修改C:\Users\lee\Anaconda3\envs\detectron\Lib\site-packages\torch\include\pybind11\cast.h中的explicit operator type&() { return *(this->value); } (大約在1449行)改成 explicit operator type&() { return ((type)this->value); }

1.5 安裝pycocotools

這個庫就不用我多說了,做目標檢測沒人不知道他吧
兩種辦法:(我用的第二種)

pip install git+https://github.com/philferriere/cocoapi.git#subdirectory=PythonAPI

或者https://github.com/philferriere/cocoapi下載源碼,並進行解壓。以管理員身份打開 CMD 終端,並切換到 cocoapi\PythonAPI目錄。運行以下指令:

python setup.py build_ext install

1.7 安裝Dtectron2

  1. GitHub下載Dtectron2
  2. 進入detectron2-0.1.3,執行:執行python setup.py build develop

1.8 測試

測試一張圖(記得自己改圖片地址)

python demo/demo.py --config-file configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml  --input 1.jpg  --opts MODEL.WEIGHTS detectron2://COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x/137849600/model_final_f10217.pkl

測試攝像頭

python demo/demo.py --config-file configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml  --webcam  --opts MODEL.WEIGHTS detectron2://COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x/137849600/model_final_f10217.pkl 

根據GitHub給的說明,可以進行以下替換:

  • 要在你的網絡攝像頭上運行,請把–input files 替換爲–webcam

  • 要播放視頻,請把–input files替換爲–video-input video.mp4

  • 要在cpu上運行,請在 -opts之後添加MODEL.DEVICE cpu-。

  • 要將輸出保存到目錄(用於圖像)或文件(用於網絡攝像頭或視頻),請使用–output。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章