one-stage 目标检测——M2Det源码运行测试
github地址:https://github.com/qijiezhao/M2Det
Preparation
the supported version is pytorch-0.4.1
- Prepare python environment using Anaconda3.
- Install deeplearning framework, i.e., pytorch, torchvision and other libs.
準備工作,支持pytorch版本是0.4.1
推薦使用anaconda進行配置,用以下指令安裝pytorch,torchvision,opencv-python,tqdm等包;
conda install pytorch torchvision -c pytorch pip install opencv-python,tqdm- Clone this repository.
- 下載M2Det工程
- Compile the nms and coco tools:
- 使用如下指令編譯nms和coco工具。
以下是編譯結(jié)果
chensq@chensq-Ciky:~/M2Det$ sh make.sh running build_ext cythoning nms/cpu_nms.pyx to nms/cpu_nms.c /home/chensq/anaconda3/lib/python3.7/site-packages/Cython/Compiler/Main.py:367: FutureWarning: Cython directive 'language_level' not set, using 2 for now (Py2). This will change in a later release! File: /home/chensq/M2Det/utils/nms/cpu_nms.pyxtree = Parsing.p_module(s, pxd, full_module_name) building 'nms.cpu_nms' extension creating build creating build/temp.linux-x86_64-3.7 creating build/temp.linux-x86_64-3.7/nms {'gcc': ['-Wno-cpp', '-Wno-unused-function']} gcc -pthread -B /home/chensq/anaconda3/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/chensq/anaconda3/lib/python3.7/site-packages/numpy/core/include -I/home/chensq/anaconda3/include/python3.7m -c nms/cpu_nms.c -o build/temp.linux-x86_64-3.7/nms/cpu_nms.o -Wno-cpp -Wno-unused-function nms/cpu_nms.c: In function ‘__pyx_pf_3nms_7cpu_nms_2cpu_soft_nms’: nms/cpu_nms.c:3459:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]__pyx_t_8 = ((__pyx_v_pos < __pyx_v_N) != 0);^ nms/cpu_nms.c:3970:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]__pyx_t_8 = ((__pyx_v_pos < __pyx_v_N) != 0);^ gcc -pthread -shared -B /home/chensq/anaconda3/compiler_compat -L/home/chensq/anaconda3/lib -Wl,-rpath=/home/chensq/anaconda3/lib -Wl,--no-as-needed -Wl,--sysroot=/ build/temp.linux-x86_64-3.7/nms/cpu_nms.o -o /home/chensq/M2Det/utils/nms/cpu_nms.cpython-37m-x86_64-linux-gnu.so cythoning nms/gpu_nms.pyx to nms/gpu_nms.cpp /home/chensq/anaconda3/lib/python3.7/site-packages/Cython/Compiler/Main.py:367: FutureWarning: Cython directive 'language_level' not set, using 2 for now (Py2). This will change in a later release! File: /home/chensq/M2Det/utils/nms/gpu_nms.pyxtree = Parsing.p_module(s, pxd, full_module_name) building 'nms.gpu_nms' extension {'gcc': ['-Wno-unused-function'], 'nvcc': ['-arch=sm_52', '--ptxas-options=-v', '-c', '--compiler-options', "'-fPIC'"]} /usr/local/cuda-10.1/bin/nvcc -I/home/chensq/anaconda3/lib/python3.7/site-packages/numpy/core/include -I/usr/local/cuda-10.1/include -I/home/chensq/anaconda3/include/python3.7m -c nms/nms_kernel.cu -o build/temp.linux-x86_64-3.7/nms/nms_kernel.o -arch=sm_52 --ptxas-options=-v -c --compiler-options '-fPIC' ptxas info : 0 bytes gmem ptxas info : Compiling entry function '_Z10nms_kernelifPKfPy' for 'sm_52' ptxas info : Function properties for _Z10nms_kernelifPKfPy0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads ptxas info : Used 24 registers, 1280 bytes smem, 344 bytes cmem[0], 12 bytes cmem[2] {'gcc': ['-Wno-unused-function'], 'nvcc': ['-arch=sm_52', '--ptxas-options=-v', '-c', '--compiler-options', "'-fPIC'"]} gcc -pthread -B /home/chensq/anaconda3/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/chensq/anaconda3/lib/python3.7/site-packages/numpy/core/include -I/usr/local/cuda-10.1/include -I/home/chensq/anaconda3/include/python3.7m -c nms/gpu_nms.cpp -o build/temp.linux-x86_64-3.7/nms/gpu_nms.o -Wno-unused-function cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++ In file included from /home/chensq/anaconda3/lib/python3.7/site-packages/numpy/core/include/numpy/ndarraytypes.h:1823:0,from /home/chensq/anaconda3/lib/python3.7/site-packages/numpy/core/include/numpy/ndarrayobject.h:18,from /home/chensq/anaconda3/lib/python3.7/site-packages/numpy/core/include/numpy/arrayobject.h:4,from nms/gpu_nms.cpp:627: /home/chensq/anaconda3/lib/python3.7/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:15:2: warning: #warning "Using deprecated NumPy API, disable it by " "#defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp]#warning "Using deprecated NumPy API, disable it by " \^ g++ -pthread -shared -B /home/chensq/anaconda3/compiler_compat -L/home/chensq/anaconda3/lib -Wl,-rpath=/home/chensq/anaconda3/lib -Wl,--no-as-needed -Wl,--sysroot=/ build/temp.linux-x86_64-3.7/nms/nms_kernel.o build/temp.linux-x86_64-3.7/nms/gpu_nms.o -L/usr/local/cuda-10.1/lib64 -Wl,-R/usr/local/cuda-10.1/lib64 -lcudart -o /home/chensq/M2Det/utils/nms/gpu_nms.cpython-37m-x86_64-linux-gnu.so cythoning pycocotools/_mask.pyx to pycocotools/_mask.c /home/chensq/anaconda3/lib/python3.7/site-packages/Cython/Compiler/Main.py:367: FutureWarning: Cython directive 'language_level' not set, using 2 for now (Py2). This will change in a later release! File: /home/chensq/M2Det/utils/pycocotools/_mask.pyxtree = Parsing.p_module(s, pxd, full_module_name) building 'pycocotools._mask' extension creating build/temp.linux-x86_64-3.7/pycocotools {'gcc': ['-Wno-cpp', '-Wno-unused-function', '-std=c99']} gcc -pthread -B /home/chensq/anaconda3/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/chensq/anaconda3/lib/python3.7/site-packages/numpy/core/include -Ipycocotools -I/home/chensq/anaconda3/include/python3.7m -c pycocotools/maskApi.c -o build/temp.linux-x86_64-3.7/pycocotools/maskApi.o -Wno-cpp -Wno-unused-function -std=c99 {'gcc': ['-Wno-cpp', '-Wno-unused-function', '-std=c99']} gcc -pthread -B /home/chensq/anaconda3/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/chensq/anaconda3/lib/python3.7/site-packages/numpy/core/include -Ipycocotools -I/home/chensq/anaconda3/include/python3.7m -c pycocotools/_mask.c -o build/temp.linux-x86_64-3.7/pycocotools/_mask.o -Wno-cpp -Wno-unused-function -std=c99 gcc -pthread -shared -B /home/chensq/anaconda3/compiler_compat -L/home/chensq/anaconda3/lib -Wl,-rpath=/home/chensq/anaconda3/lib -Wl,--no-as-needed -Wl,--sysroot=/ build/temp.linux-x86_64-3.7/pycocotools/maskApi.o build/temp.linux-x86_64-3.7/pycocotools/_mask.o -o /home/chensq/M2Det/utils/pycocotools/_mask.cpython-37m-x86_64-linux-gnu.so?Prepare dataset (e.g., VOC, COCO), refer to?sss.pytorch for detailed instructions.
如果需要訓練,則需要參考對應鏈接,準備數(shù)據(jù)集
Demo展示
作者目前(20190325)提供了 M2Det512_vgg 預訓練模型作為驗證測試(支持結(jié)果可視化):
首先,下載預訓練模型 m2det512_vgg.pth (baidu cloud) 文件. 然后新建一個文件夾 weights/. 將模型文件移至該目錄下;
運行如下指令即可對它自帶的圖片做測試了。
python demo.py -c=configs/m2det512_vgg.py -m=weights/m2det512_vgg.pth --show如果彈出如下錯誤:?
chensq@chensq-Ciky:~/M2Det$ python demo.py -c=configs/m2det512_vgg.py -m=weights/m2det512_vgg.pth --show Traceback (most recent call last):File "demo.py", line 8, in <module>from configs.CC import ConfigFile "/home/chensq/M2Det/configs/CC.py", line 7, in <module>from addict import Dict ModuleNotFoundError: No module named 'addict'表示你未安裝addict庫,用下面指令進行安裝(基于我用anaconda來配置的方式)
pip install addict
再次運行,如果彈出如下錯誤;
chensq@chensq-Ciky:~/M2Det$ python demo.py -c=configs/m2det512_vgg.py -m=weights/m2det512_vgg.pth --show Traceback (most recent call last):File "demo.py", line 11, in <module>from m2det import build_netFile "/home/chensq/M2Det/m2det.py", line 24, in <module>from utils.core import print_infoFile "/home/chensq/M2Det/utils/core.py", line 14, in <module>from termcolor import cprint ModuleNotFoundError: No module named 'termcolor'表示你未安裝termcolor,同理用如下指令安裝即可;
pip install termcolor
如下,運行成功了!
chensq@chensq-Ciky:~/M2Det$ python demo.py -c=configs/m2det512_vgg.py -m=weights/m2det512_vgg.pth --show---------------------------------------------------------------------- | M2Det Demo Program |---------------------------------------------------------------------- The Anchor info: {'feature_maps': [64, 32, 16, 8, 4, 2], 'min_dim': 512, 'steps': [8, 16, 32, 64, 128, 256], 'min_sizes': [30.72, 76.8, 168.96, 261.12, 353.28, 445.44], 'max_sizes': [76.8, 168.96, 261.12, 353.28, 445.44, 537.6], 'aspect_ratios': [[2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3]], 'variance': [0.1, 0.2], 'clip': True} ===> Constructing M2Det model Loading resume network... ===> Finished constructing and loading model pos:(2.0,146.5,36.2,273.8), ids:person, score:0.972 pos:(41.9,124.6,118.1,344.2), ids:person, score:0.913 pos:(123.3,142.2,181.3,355.8), ids:person, score:0.667 pos:(94.8,148.4,134.6,264.5), ids:person, score:0.506 pos:(43.7,141.8,70.7,191.0), ids:person, score:0.447 pos:(94.2,145.9,111.8,166.7), ids:person, score:0.128 pos:(38.6,127.3,111.5,342.4), ids:person, score:0.124 pos:(32.5,146.8,65.7,286.9), ids:person, score:0.120 ..... pos:(878.1,82.3,891.9,146.8), ids:tie, score:0.006 pos:(578.5,96.9,595.2,142.5), ids:tie, score:0.003測試中其中一張圖片檢測效果如下;終端打印出目標物的坐標,id,置信度等信息;?
你也可以運行實時的demo,它會調(diào)用你的攝像頭,如果有多個相機,你可以通過傳入?yún)?shù)--cam=相機ID 來指定相機;如下指令是調(diào)用攝像頭的,我指定了相機ID=0;
python demo.py -c=configs/m2det512_vgg.py -m=weights/m2det512_vgg.pth --show --cam=0測試效果如上,大致FPS : 約為4.5吧,這是GPU上的結(jié)果~~~~我的電腦是GeForce 1050ti的GPU
pos:(179.8,146.8,665.3,473.3), ids:person, score:0.002 pos:(324.1,302.9,372.3,368.0), ids:cell_phone, score:0.372 pos:(325.1,302.0,375.9,370.7), ids:cell_phone, score:0.035 pos:(321.7,304.2,366.5,366.8), ids:cell_phone, score:0.006 pos:(148.5,94.4,628.4,475.8), ids:person, score:0.992 pos:(208.2,119.8,650.3,469.3), ids:person, score:0.089 pos:(128.1,101.0,622.1,472.6), ids:person, score:0.011 pos:(176.7,158.0,613.0,487.2), ids:person, score:0.002 pos:(121.1,94.4,623.6,471.6), ids:person, score:0.994 pos:(116.6,103.3,621.6,468.5), ids:person, score:0.041 pos:(151.7,103.7,597.4,467.2), ids:person, score:0.002 ...............?
總結(jié)
以上是生活随笔為你收集整理的one-stage 目标检测——M2Det源码运行测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 最新php在线扒站程序源码分享
- 下一篇: linux下c语言队列,C语言队列的实现
