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工程
git clone https://github.com/qijiezhao/M2Det.git
  • Compile the nms and coco tools:
  • 使用如下指令编译nms和coco工具。

以下是编译结果

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.

如果需要训练,则需要参考对应链接,准备数据集


Demo展示

作者目前(20190325)提供了 M2Det512_vgg 预训练模型作为验证测试(支持结果可视化):

首先,下载预训练模型 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,它会调用你的摄像头,如果有多个相机,你可以通过传入参数--cam=相机ID 来指定相机;如下指令是调用摄像头的,我指定了相机ID=0;

python demo.py -c=configs/m2det512_vgg.py -m=weights/m2det512_vgg.pth --show --cam=0

测试效果如上,大致FPS : 约为4.5吧,这是GPU上的结果~~~~我的电脑是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
...............

one-stage 目标检测——M2Det源码运行测试相关推荐

  1. 单目3D目标检测DEVIANT源码解析

    目前文档只包含outputs = model(inputs,coord_ranges,calibs,K=50,mode='test')之后,前向推理的源码解析,附带有测试程序 DEVIANT: Dep ...

  2. 目标检测——detr源码复现【 End-to-End Object Detection with Transformers】

    1.环境 2.文档 detr源码地址 detr论文地址 3.数据集 自定义coco数据集 4.模型 在github上面下载 链接:https://pan.baidu.com/s/1fmOYAOZ4yY ...

  3. 基于Pytorch的从零开始的目标检测 | 附源码

    01. 引言 目标检测是计算机视觉中一个非常流行的任务,在这个任务中,给定一个图像,你预测图像中物体的包围盒(通常是矩形的) ,并且识别物体的类型.在这个图像中可能有多个对象,而且现在有各种先进的技术 ...

  4. 目标检测 最新源码大放送

    最新yolov3 代码 pytorch版,实时监测,准确率高,coco数据集map高达61.89% 源码地址: https://github.com/jacke121/YOLOv3_PyTorch

  5. YOLO&Deepsort的车速&车流量检测系统(源码&部署教程)

    1.研究内容: 基于车辆行驶异常事件检测研究主要包括检测检测车辆的行驶速度异常.检测到流量异常行为的处理两个部分. 2.研究目标: 检测车辆违规变道:熟练运用图像处理的相关工具,可对车辆的异常变道行为 ...

  6. Python基于OpenCV的异常行为检测系统[源码&部署教程]

    1.项目背景 智能视频监控(Intelligent Video Surveillance , IVS)[1.2·3.4是计算机视觉技术5l在安防领域的应用,实现了由"被动监控"到& ...

  7. Python基于YOLOv7的火灾检测系统(源码&教程)

    1.项目背景 为解决传统传感器在检测火灾的过程中受到环境.安装距离等因素影响导致适应性差的缺点,本文基于视觉传 感器,通过视觉目标检测技术对火灾进行检测,从而实现火灾的预警. 2.识别效果展示 3.视 ...

  8. [YOLOv7]基于YOLOv7的食物卡路里检测系统(源码&部署教程&数据集)

    1.识别效果展示 2.视频演示 [YOLOv7]基于YOLOv7的食物卡路里检测系统(源码&部署教程&数据集)_哔哩哔哩_bilibili 3.YOLOv7算法简介 YOLOv7 在 ...

  9. MATLAB视频运动目标检测参考源码

    MATLAB视频运动目标检测参考源码 将视频截取成帧 fileName = 'q.avi'; %此处输入视频名称,要带后缀,注意好像只有wmv和avi格式 obj = VideoReader(file ...

  10. YOLOv7的食物卡路里检测系统(源码&部署教程&数据集)

    1.识别效果展示 2.视频演示 [YOLOv7]基于YOLOv7的食物卡路里检测系统(源码&部署教程&数据集)_哔哩哔哩_bilibili 3.YOLOv7算法简介 YOLOv7 在 ...

最新文章

  1. jzoj3462-休息【归并排序,逆序对】
  2. LEADTOOLS概览
  3. 思维方式是看待事物的角度、方式和方法,它对人的言行起到决定性作用
  4. 「管理数学基础」4.2 模糊数学:扩张原理、模糊数、可能性分布与模糊概率
  5. Win10系统怎么注销微软账户
  6. 基于单片机的水壶自动加热系统_基于单片机的智能热水壶设计 -
  7. 自制简单CUP第一篇(异或门)
  8. 第一章 银联8583报文解析
  9. python爬取支付宝基金数据_python爬取支付宝账单
  10. vue部署后饿了么组件的图片不见了
  11. 【计算机网络】实验3:虚拟机配置测试实验
  12. React.createElement()的使用
  13. 成功解决502 Bad Gateway错误。
  14. SwipeRefreshLayout+CoordinatorLayout+AppBarLayout+TabLayout+ViewPager+RecyclerView 嵌套,最后一项显示全
  15. Fvxadvvcssxcvhbnbsaqwerhnvdcnmklllppppppppoooooootretyhgftjhhhfrttyhrxz
  16. 理解:商业模式探索 - 概念基础篇(附思维导图)
  17. 使用Linux环境变量
  18. 计算机网络之第3章 数据链路层
  19. 远程答题的稳定与速度同样重要
  20. 日语教程 早安日语 名古屋日语 日语mp3 日语教程word版

热门文章

  1. switchHost管理员身份运行出错问题
  2. 算法第四版书的C++版本代码
  3. 餐厅扫码点餐系统源码 外卖订餐小程序源码
  4. SuperMap IClient for Leaflet 加载高斯克吕格投影三度分带CGCS2000大地坐标系WMTS服务
  5. 恩智浦智能车入门——一定避免那些坑
  6. Linux中vdbench的安装与使用
  7. 计算机运行命令定时关机,电脑定时关机命令 使用系统命令定时关机 - 云骑士一键重装系统...
  8. 软考高项-了解软考高项
  9. Win11桌面便签小工具下载 支持与手机同步的桌面便签工具下载
  10. 计算机图形学--全局光照RSM